2510 |
glyph->root.linearHoriAdvance = decoder.glyph_width; |
glyph->root.linearHoriAdvance = decoder.glyph_width; |
2511 |
glyph->root.internal->glyph_transformed = 0; |
glyph->root.internal->glyph_transformed = 0; |
2512 |
|
|
2513 |
/* make up vertical metrics */ |
/* make up vertical ones */ |
|
metrics->vertBearingX = 0; |
|
|
metrics->vertBearingY = 0; |
|
2514 |
metrics->vertAdvance = 0; |
metrics->vertAdvance = 0; |
|
|
|
2515 |
glyph->root.linearVertAdvance = 0; |
glyph->root.linearVertAdvance = 0; |
2516 |
|
|
2517 |
glyph->root.format = FT_GLYPH_FORMAT_OUTLINE; |
glyph->root.format = FT_GLYPH_FORMAT_OUTLINE; |
2556 |
vec->y = FT_MulFix( vec->y, y_scale ); |
vec->y = FT_MulFix( vec->y, y_scale ); |
2557 |
} |
} |
2558 |
|
|
|
FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); |
|
|
|
|
2559 |
/* Then scale the metrics */ |
/* Then scale the metrics */ |
2560 |
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); |
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); |
2561 |
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale ); |
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale ); |
|
|
|
|
metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale ); |
|
|
metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale ); |
|
|
|
|
|
if ( hinting ) |
|
|
{ |
|
|
metrics->horiAdvance = FT_PIX_ROUND( metrics->horiAdvance ); |
|
|
metrics->vertAdvance = FT_PIX_ROUND( metrics->vertAdvance ); |
|
|
|
|
|
metrics->vertBearingX = FT_PIX_ROUND( metrics->vertBearingX ); |
|
|
metrics->vertBearingY = FT_PIX_ROUND( metrics->vertBearingY ); |
|
|
} |
|
2562 |
} |
} |
2563 |
|
|
2564 |
/* compute the other metrics */ |
/* compute the other metrics */ |
2565 |
FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); |
FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); |
2566 |
|
|
|
/* grid fit the bounding box if necessary */ |
|
|
if ( hinting ) |
|
|
{ |
|
|
cbox.xMin &= -64; |
|
|
cbox.yMin &= -64; |
|
|
cbox.xMax = ( cbox.xMax + 63 ) & -64; |
|
|
cbox.yMax = ( cbox.yMax + 63 ) & -64; |
|
|
} |
|
|
|
|
2567 |
metrics->width = cbox.xMax - cbox.xMin; |
metrics->width = cbox.xMax - cbox.xMin; |
2568 |
metrics->height = cbox.yMax - cbox.yMin; |
metrics->height = cbox.yMax - cbox.yMin; |
2569 |
|
|
2570 |
metrics->horiBearingX = cbox.xMin; |
metrics->horiBearingX = cbox.xMin; |
2571 |
metrics->horiBearingY = cbox.yMax; |
metrics->horiBearingY = cbox.yMax; |
2572 |
|
|
2573 |
|
/* make up vertical ones */ |
2574 |
|
metrics->vertBearingX = 0; |
2575 |
|
metrics->vertBearingY = 0; |
2576 |
|
|
2577 |
|
if ( hinting ) |
2578 |
|
ft_glyphslot_grid_fit_metrics( &glyph->root ); |
2579 |
} |
} |
2580 |
} |
} |
2581 |
|
|