summaryrefslogtreecommitdiff
path: root/src/fontset.c
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-02-20 11:38:59 +0800
committerPo Lu <luangruo@yahoo.com>2023-02-20 11:38:59 +0800
commit34ba481c8ea86da7922129f684c18b7aba186947 (patch)
tree59a7d416cb2089cc958dca4a4a543d2efd61960e /src/fontset.c
parentb91396bace7e09ba1dc0430ce5e2b5b3000fe77a (diff)
downloademacs-34ba481c8ea86da7922129f684c18b7aba186947.tar.gz
emacs-34ba481c8ea86da7922129f684c18b7aba186947.tar.bz2
emacs-34ba481c8ea86da7922129f684c18b7aba186947.zip
Improve SFNT driver lookup efficiency
* src/fontset.c (fontset_find_font): Add compatibility test to registry strangeness case. * src/sfnt.c (sfnt_read_cmap_table): Don't read subtable data if DATA is NULL. * src/sfntfont.c (struct sfnt_font_desc): New field `registry'. (sfnt_registry_for_subtable): New function. (sfntfont_identify_cmap): Move above sfnt_grok_registry. (sfnt_grok_registry): New function. (sfnt_enum_font_1): Call it. (sfntfont_registries_compatible_p): New function. (sfntfont_list_1): Check registry compatibility. (sfntfont_registry_for_desc): New function. (mark_sfntfont): Mark desc->registry.
Diffstat (limited to 'src/fontset.c')
-rw-r--r--src/fontset.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/fontset.c b/src/fontset.c
index 8182d639299..bcf200aeae8 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -683,7 +683,13 @@ fontset_find_font (Lisp_Object fontset, int c, struct face *face,
&& !NILP (AREF (spec, FONT_REGISTRY_INDEX))
&& !NILP (AREF (font_object, FONT_REGISTRY_INDEX))
&& !EQ (AREF (spec, FONT_REGISTRY_INDEX),
- AREF (font_object, FONT_REGISTRY_INDEX)))
+ AREF (font_object, FONT_REGISTRY_INDEX))
+ /* See sfntfont_registries_compatible_p in
+ sfntfont.c. */
+ && !(EQ (AREF (spec, FONT_REGISTRY_INDEX),
+ Qiso8859_1)
+ && EQ (AREF (font_object, FONT_REGISTRY_INDEX),
+ Qiso10646_1)))
goto strangeness;
}