diff options
author | Werner Lemberg <wl@gnu.org> | 2023-04-27 23:06:51 +0200 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2023-05-06 16:47:04 +0200 |
commit | ad6fad2888bd99685e4c03bd2c7d44734c608fdc (patch) | |
tree | 44e4018f198fc3b6dd1b7d84337cad95759e7d95 /src/truetype | |
parent | cc79174dce3f95d2a64066a9c425690a4a4aae70 (diff) | |
download | freetype2-ad6fad2888bd99685e4c03bd2c7d44734c608fdc.tar.gz |
[truetype] Fix style name handling for variation fonts.VF-fixes
* include/freetype/internal/tttypes.h (TT_FaceRec): New field
`non_var_style_name`.
* src/sfnt/sfobjs.c (sfnt_load_face): Initialize `non_var_style_name`.
(sfnt_done_face): Free `non_var_style_name`.
* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Restore non-VF style name
if switching back to non-VF mode.
Diffstat (limited to 'src/truetype')
-rw-r--r-- | src/truetype/ttgxvar.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c index aec43c851..249ef316a 100644 --- a/src/truetype/ttgxvar.c +++ b/src/truetype/ttgxvar.c @@ -3306,6 +3306,8 @@ GX_Blend blend; FT_MM_Var* mmvar; + FT_Memory memory = face->root.memory; + FT_UInt num_instances; @@ -3329,8 +3331,7 @@ if ( instance_index > 0 ) { - FT_Memory memory = face->root.memory; - SFNT_Service sfnt = (SFNT_Service)face->sfnt; + SFNT_Service sfnt = (SFNT_Service)face->sfnt; FT_Var_Named_Style* named_style; FT_String* style_name; @@ -3354,7 +3355,13 @@ named_style->coords ); } else + { + /* restore non-VF style name */ + FT_FREE( face->root.style_name ); + if ( FT_STRDUP( face->root.style_name, face->non_var_style_name ) ) + goto Exit; error = TT_Set_Var_Design( face, 0, NULL ); + } Exit: return error; |