From b11074cf6dce78d0bc79ff7996dec70ca3abe4a9 Mon Sep 17 00:00:00 2001 From: Ben Wagner Date: Mon, 6 Jun 2022 15:59:56 -0400 Subject: [PATCH] [svg] Set linear advances when loading SVG glyphs * include/freetype/freetype.h (FT_GlyphSlotRec_): update doc * src/cff/cffgload.c (cff_slot_load): do it * src/truetype/ttgload.c (TT_Load_Glyph): do it Fixes: #1156 --- include/freetype/freetype.h | 4 ++-- src/cff/cffgload.c | 3 +++ src/truetype/ttgload.c | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h index aa1a4fe38..90e08881b 100644 --- a/include/freetype/freetype.h +++ b/include/freetype/freetype.h @@ -1892,13 +1892,13 @@ FT_BEGIN_HEADER * The advance width of the unhinted glyph. Its value is expressed in * 16.16 fractional pixels, unless @FT_LOAD_LINEAR_DESIGN is set when * loading the glyph. This field can be important to perform correct - * WYSIWYG layout. Only relevant for outline glyphs. + * WYSIWYG layout. Only relevant for scalable glyphs. * * linearVertAdvance :: * The advance height of the unhinted glyph. Its value is expressed in * 16.16 fractional pixels, unless @FT_LOAD_LINEAR_DESIGN is set when * loading the glyph. This field can be important to perform correct - * WYSIWYG layout. Only relevant for outline glyphs. + * WYSIWYG layout. Only relevant for scalable glyphs. * * advance :: * This shorthand is, depending on @FT_LOAD_IGNORE_TRANSFORM, the diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c index 7586b886f..d8fc31857 100644 --- a/src/cff/cffgload.c +++ b/src/cff/cffgload.c @@ -404,6 +404,9 @@ &dummy, &advanceY ); + glyph->root.linearHoriAdvance = advanceX; + glyph->root.linearVertAdvance = advanceY; + advanceX = (FT_UShort)FT_MulDiv( advanceX, glyph->root.face->size->metrics.x_ppem, diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c index 2ca63d65a..e2908d065 100644 --- a/src/truetype/ttgload.c +++ b/src/truetype/ttgload.c @@ -3005,6 +3005,9 @@ &topBearing, &advanceY ); + glyph->linearHoriAdvance = advanceX; + glyph->linearVertAdvance = advanceY; + advanceX = (FT_UShort)FT_MulDiv( advanceX, glyph->face->size->metrics.x_ppem, glyph->face->units_per_EM );