749 |
|
|
750 |
if ( !error ) |
if ( !error ) |
751 |
{ |
{ |
752 |
TT_SBit_Strike strike = face->sbit_strikes + strike_index; |
/* XXX: TODO: move this code to the SFNT module where it belongs */ |
753 |
|
#ifdef FT_OPTIMIZE_MEMORY |
754 |
|
FT_Byte* strike = face->sbit_table + 8 + strike_index*48; |
755 |
|
|
756 |
|
sbit_metrics->ascender = (FT_Char)strike[16] << 6; /* hori.ascender */ |
757 |
|
sbit_metrics->descender = (FT_Char)strike[17] << 6; /* hori.descender */ |
758 |
|
|
759 |
|
/* XXX: Is this correct? */ |
760 |
|
sbit_metrics->max_advance = ( (FT_Char)strike[22] + /* min_origin_SB */ |
761 |
|
strike[18] + /* max_width */ |
762 |
|
(FT_Char)strike[23] /* min_advance_SB */ |
763 |
|
) << 6; |
764 |
|
|
765 |
|
#else /* !OPTIMIZE_MEMORY */ |
766 |
|
TT_SBit_Strike strike = face->sbit_strikes + strike_index; |
767 |
|
|
|
sbit_metrics->x_ppem = metrics->x_ppem; |
|
|
sbit_metrics->y_ppem = metrics->y_ppem; |
|
|
#if 0 |
|
|
/* |
|
|
* sbit_metrics->?_scale |
|
|
* are not used now. |
|
|
*/ |
|
|
sbit_metrics->x_scale = 1 << 16; |
|
|
sbit_metrics->y_scale = 1 << 16; |
|
|
#endif |
|
768 |
|
|
769 |
sbit_metrics->ascender = strike->hori.ascender << 6; |
sbit_metrics->ascender = strike->hori.ascender << 6; |
770 |
sbit_metrics->descender = strike->hori.descender << 6; |
sbit_metrics->descender = strike->hori.descender << 6; |
771 |
|
|
772 |
/* XXX: Is this correct? */ |
/* XXX: Is this correct? */ |
|
sbit_metrics->height = sbit_metrics->ascender - |
|
|
sbit_metrics->descender; |
|
|
|
|
|
/* XXX: Is this correct? */ |
|
773 |
sbit_metrics->max_advance = ( strike->hori.min_origin_SB + |
sbit_metrics->max_advance = ( strike->hori.min_origin_SB + |
774 |
strike->hori.max_width + |
strike->hori.max_width + |
775 |
strike->hori.min_advance_SB ) << 6; |
strike->hori.min_advance_SB ) << 6; |
776 |
|
#endif /* !OPTIMIZE_MEMORY */ |
777 |
|
|
778 |
|
/* XXX: Is this correct? */ |
779 |
|
sbit_metrics->height = sbit_metrics->ascender - |
780 |
|
sbit_metrics->descender; |
781 |
|
|
782 |
size->strike_index = (FT_UInt)strike_index; |
sbit_metrics->x_ppem = metrics->x_ppem; |
783 |
|
sbit_metrics->y_ppem = metrics->y_ppem; |
784 |
|
size->strike_index = (FT_UInt)strike_index; |
785 |
} |
} |
786 |
else |
else |
787 |
{ |
{ |