summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Podtelezhnikov <apodtele@gmail.com>2022-10-03 17:13:30 +0000
committerAlexei Podtelezhnikov <apodtele@gmail.com>2022-10-03 17:13:30 +0000
commit8faf57dd17088c37fa947fd565870648bbdbad18 (patch)
tree2bd941d64bbc7cb263f515b7d97de3bf73d3cfa8
parentb93f20ab7ad610c986497243ca963ca79013411c (diff)
downloadfreetype2-8faf57dd17088c37fa947fd565870648bbdbad18.tar.gz
* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Avoid `FT_Set_Charmap`.
Set charmap aggressively without all validations of `FT_Set_Charmap` because we take it from the available array and only temporarily. Even CMap Format 14 will gracefully return 0.
-rw-r--r--src/cache/ftccmap.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/cache/ftccmap.c b/src/cache/ftccmap.c
index 8e97a7b57..25330596c 100644
--- a/src/cache/ftccmap.c
+++ b/src/cache/ftccmap.c
@@ -297,19 +297,17 @@
if ( cmap_index < face->num_charmaps )
{
- FT_CharMap old, cmap = NULL;
+ FT_CharMap old = face->charmap;
+ FT_CharMap cmap = face->charmaps[cmap_index];
- old = face->charmap;
- cmap = face->charmaps[cmap_index];
-
- if ( old != cmap && !no_cmap_change )
- FT_Set_Charmap( face, cmap );
+ if ( !no_cmap_change )
+ face->charmap = cmap;
gindex = FT_Get_Char_Index( face, char_code );
- if ( old != cmap && !no_cmap_change )
- FT_Set_Charmap( face, old );
+ if ( !no_cmap_change )
+ face->charmap = old;
}
FTC_CMAP_NODE( node )->indices[char_code -