From ecbc1abfa84c3076255619b394ad0075de42598e Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Fri, 4 Jul 2025 06:12:34 +0200 Subject: [PATCH] [cff] Support GPOS kerning. * src/cff/cffdrivr.c (cff_get_kerning) [TT_CONFIG_OPTION_GPOS_KERNING]: Add code similar to the one in `tt_get_kerning`. --- src/cff/cffdrivr.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c index ec271b71d..6f5afeaa4 100644 --- a/src/cff/cffdrivr.c +++ b/src/cff/cffdrivr.c @@ -121,7 +121,20 @@ kerning->y = 0; if ( sfnt ) - kerning->x = sfnt->get_kerning( cffface, left_glyph, right_glyph ); + { + /* Use 'kern' table if available since that can be faster; otherwise */ + /* use GPOS kerning pairs if available. */ + if ( cffface->kern_avail_bits ) + kerning->x = sfnt->get_kerning( cffface, + left_glyph, + right_glyph ); +#ifdef TT_CONFIG_OPTION_GPOS_KERNING + else if ( cffface->gpos_kerning_available ) + kerning->x = sfnt->get_gpos_kerning( cffface, + left_glyph, + right_glyph ); +#endif + } return FT_Err_Ok; }