358 |
cidglyph->linearHoriAdvance = decoder.builder.advance.x; |
cidglyph->linearHoriAdvance = decoder.builder.advance.x; |
359 |
cidglyph->internal->glyph_transformed = 0; |
cidglyph->internal->glyph_transformed = 0; |
360 |
|
|
361 |
/* make up vertical metrics */ |
/* make up vertical ones */ |
|
metrics->vertBearingX = 0; |
|
|
metrics->vertBearingY = 0; |
|
362 |
metrics->vertAdvance = 0; |
metrics->vertAdvance = 0; |
|
|
|
363 |
cidglyph->linearVertAdvance = 0; |
cidglyph->linearVertAdvance = 0; |
364 |
|
|
365 |
cidglyph->format = FT_GLYPH_FORMAT_OUTLINE; |
cidglyph->format = FT_GLYPH_FORMAT_OUTLINE; |
366 |
|
|
367 |
if ( size && cidsize->metrics.y_ppem < 24 ) |
if ( size && cidsize->metrics.y_ppem < 24 ) |
401 |
vec->y = FT_MulFix( vec->y, y_scale ); |
vec->y = FT_MulFix( vec->y, y_scale ); |
402 |
} |
} |
403 |
|
|
|
FT_Outline_Get_CBox( &cidglyph->outline, &cbox ); |
|
|
|
|
404 |
/* Then scale the metrics */ |
/* Then scale the metrics */ |
405 |
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); |
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); |
406 |
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 ); |
|
|
} |
|
407 |
} |
} |
408 |
|
|
409 |
/* compute the other metrics */ |
/* compute the other metrics */ |
410 |
FT_Outline_Get_CBox( &cidglyph->outline, &cbox ); |
FT_Outline_Get_CBox( &cidglyph->outline, &cbox ); |
411 |
|
|
|
/* grid fit the bounding box if necessary */ |
|
|
if ( hinting ) |
|
|
{ |
|
|
cbox.xMin = FT_PIX_FLOOR( cbox.xMin ); |
|
|
cbox.yMin = FT_PIX_FLOOR( cbox.yMin ); |
|
|
cbox.xMax = FT_PIX_CEIL( cbox.xMax ); |
|
|
cbox.yMax = FT_PIX_CEIL( cbox.yMax ); |
|
|
} |
|
|
|
|
412 |
metrics->width = cbox.xMax - cbox.xMin; |
metrics->width = cbox.xMax - cbox.xMin; |
413 |
metrics->height = cbox.yMax - cbox.yMin; |
metrics->height = cbox.yMax - cbox.yMin; |
414 |
|
|
415 |
metrics->horiBearingX = cbox.xMin; |
metrics->horiBearingX = cbox.xMin; |
416 |
metrics->horiBearingY = cbox.yMax; |
metrics->horiBearingY = cbox.yMax; |
417 |
|
|
418 |
|
/* make up vertical ones */ |
419 |
|
metrics->vertBearingX = 0; |
420 |
|
metrics->vertBearingY = 0; |
421 |
|
|
422 |
|
if ( hinting ) |
423 |
|
ft_glyphslot_grid_fit_metrics( cidglyph ); |
424 |
} |
} |
425 |
} |
} |
426 |
|
|