From bcc74f4dafee25ea89f1d3144646cba7e30f9908 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Thu, 30 Mar 2017 13:14:43 +0200 Subject: [PATCH] [truetype] Allow linear scaling for unhinted rendering (#50470). * src/truetype/ttdriver.c (tt_size_request): Revert change from 2011-07-16; the intended metrics fix seems now to be implemented in a different way, making the patch unnecessary. Note that this change was usually patched out by all major GNU/Linux distributions due to heavy side effects. * src/truetype/ttgload.c (compute_glyph_metrics, TT_Load_Glyph): Refer to the metrics of the `TT_Size' object. --- ChangeLog | 13 +++++++++++++ src/truetype/ttdriver.c | 3 +-- src/truetype/ttgload.c | 10 +++++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9dc20c050..65c492e6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2017-03-30 Werner Lemberg + + [truetype] Allow linear scaling for unhinted rendering (#50470). + + * src/truetype/ttdriver.c (tt_size_request): Revert change from + 2011-07-16; the intended metrics fix seems now to be implemented in + a different way, making the patch unnecessary. Note that this + change was usually patched out by all major GNU/Linux distributions + due to heavy side effects. + + * src/truetype/ttgload.c (compute_glyph_metrics, TT_Load_Glyph): + Refer to the metrics of the `TT_Size' object. + 2017-03-29 Werner Lemberg [truetype] Fix thinko related to PS name of default named instance. diff --git a/src/truetype/ttdriver.c b/src/truetype/ttdriver.c index 4ec78e2f8..9bf0f84fc 100644 --- a/src/truetype/ttdriver.c +++ b/src/truetype/ttdriver.c @@ -356,8 +356,7 @@ if ( FT_IS_SCALABLE( size->face ) ) { - error = tt_size_reset( ttsize, 0 ); - ttsize->root.metrics = ttsize->metrics; + error = tt_size_reset( ttsize, 0 ); #ifdef TT_USE_BYTECODE_INTERPRETER /* for the `MPS' bytecode instruction we need the point size */ diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c index 35b62d0eb..b225190a6 100644 --- a/src/truetype/ttgload.c +++ b/src/truetype/ttgload.c @@ -2037,7 +2037,7 @@ y_scale = 0x10000L; if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 ) - y_scale = size->root.metrics.y_scale; + y_scale = size->metrics.y_scale; if ( glyph->format != FT_GLYPH_FORMAT_COMPOSITE ) FT_Outline_Get_CBox( &glyph->outline, &bbox ); @@ -2069,7 +2069,7 @@ widthp = tt_face_get_device_metrics( face, - size->root.metrics.x_ppem, + size->metrics.x_ppem, glyph_index ); #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY @@ -2636,11 +2636,11 @@ if ( !glyph->metrics.horiAdvance && glyph->linearHoriAdvance ) glyph->metrics.horiAdvance = FT_MulFix( glyph->linearHoriAdvance, - size->root.metrics.x_scale ); + size->metrics.x_scale ); if ( !glyph->metrics.vertAdvance && glyph->linearVertAdvance ) glyph->metrics.vertAdvance = FT_MulFix( glyph->linearVertAdvance, - size->root.metrics.y_scale ); + size->metrics.y_scale ); } return FT_Err_Ok; @@ -2736,7 +2736,7 @@ /* TrueType glyphs at all sizes using the bytecode interpreter. */ /* */ if ( !( load_flags & FT_LOAD_NO_SCALE ) && - size->root.metrics.y_ppem < 24 ) + size->metrics.y_ppem < 24 ) glyph->outline.flags |= FT_OUTLINE_HIGH_PRECISION; Exit: