[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] harfbuzz a8a114a: Prefer HarfBuzz to Uniscribe on MS-Windo
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] harfbuzz a8a114a: Prefer HarfBuzz to Uniscribe on MS-Windows |
Date: |
Sat, 1 Jun 2019 07:50:31 -0400 (EDT) |
branch: harfbuzz
commit a8a114af4f965d3eedc69417e73c53fe782cb7c0
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>
Prefer HarfBuzz to Uniscribe on MS-Windows
* src/w32fns.c (Fx_create_frame, w32_create_tip_frame):
Register the Uniscribe font backend only if HarfBuzz is not
available, or if explicitly requested via frame parameters
or resources.
---
src/w32fns.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 72 insertions(+), 4 deletions(-)
diff --git a/src/w32fns.c b/src/w32fns.c
index 25fa1ac..8ebfc11 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -5844,11 +5844,45 @@ DEFUN ("x-create-frame", Fx_create_frame,
Sx_create_frame,
specbind (Qx_resource_name, name);
}
+ bool register_uniscribe = uniscribe_available;
#ifdef HAVE_HARFBUZZ
- if (harfbuzz_available)
+ /* Register Uniscribe only if HarfBuzz is not available or if
+ explicitly requested. If Uniscribe is registered, register
+ HarfBuzz only if explicitly requested. */
+ bool register_harfbuzz = harfbuzz_available;
+ if (register_harfbuzz)
+ register_uniscribe = false;
+ Lisp_Object dflt_backends
+ = gui_display_get_arg (dpyinfo, parameters, Qfont_backend,
+ "fontBackend", "FontBackend", RES_TYPE_STRING);
+ if (!EQ (dflt_backends, Qunbound))
+ {
+ bool harfbuzz_requested = false, uniscribe_requested = false;
+ if (CONSP (dflt_backends))
+ {
+ if (!NILP (Fmemq (Quniscribe, dflt_backends)))
+ uniscribe_requested = true;
+ if (!NILP (Fmemq (Qharfbuzz, dflt_backends)))
+ harfbuzz_requested = true;
+ }
+ else if (STRINGP (dflt_backends))
+ {
+ if (strcmp (SSDATA (dflt_backends), "uniscribe") == 0)
+ uniscribe_requested = true;
+ else if (strcmp (SSDATA (dflt_backends), "harfbuzz") == 0)
+ harfbuzz_requested = true;
+ }
+ if (uniscribe_requested)
+ {
+ register_uniscribe = uniscribe_available;
+ if (!harfbuzz_requested)
+ register_harfbuzz = false;
+ }
+ }
+ if (register_harfbuzz)
register_font_driver (&harfbuzz_font_driver, f);
#endif
- if (uniscribe_available)
+ if (register_uniscribe)
register_font_driver (&uniscribe_font_driver, f);
register_font_driver (&w32font_driver, f);
@@ -6901,11 +6935,45 @@ w32_create_tip_frame (struct w32_display_info *dpyinfo,
Lisp_Object parms)
specbind (Qx_resource_name, name);
}
+ bool register_uniscribe = uniscribe_available;
#ifdef HAVE_HARFBUZZ
- if (harfbuzz_available)
+ /* Register Uniscribe only if HarfBuzz is not available or if
+ explicitly requested. If Uniscribe is registered, register
+ HarfBuzz only if explicitly requested. */
+ bool register_harfbuzz = harfbuzz_available;
+ if (register_harfbuzz)
+ register_uniscribe = false;
+ Lisp_Object dflt_backends
+ = gui_display_get_arg (dpyinfo, parms, Qfont_backend,
+ "fontBackend", "FontBackend", RES_TYPE_STRING);
+ if (!EQ (dflt_backends, Qunbound))
+ {
+ bool harfbuzz_requested = false, uniscribe_requested = false;
+ if (CONSP (dflt_backends))
+ {
+ if (!NILP (Fmemq (Quniscribe, dflt_backends)))
+ uniscribe_requested = true;
+ if (!NILP (Fmemq (Qharfbuzz, dflt_backends)))
+ harfbuzz_requested = true;
+ }
+ else if (STRINGP (dflt_backends))
+ {
+ if (strcmp (SSDATA (dflt_backends), "uniscribe") == 0)
+ uniscribe_requested = true;
+ else if (strcmp (SSDATA (dflt_backends), "harfbuzz") == 0)
+ harfbuzz_requested = true;
+ }
+ if (uniscribe_requested)
+ {
+ register_uniscribe = uniscribe_available;
+ if (!harfbuzz_requested)
+ register_harfbuzz = false;
+ }
+ }
+ if (register_harfbuzz)
register_font_driver (&harfbuzz_font_driver, f);
#endif
- if (uniscribe_available)
+ if (register_uniscribe)
register_font_driver (&uniscribe_font_driver, f);
register_font_driver (&w32font_driver, f);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] harfbuzz a8a114a: Prefer HarfBuzz to Uniscribe on MS-Windows,
Eli Zaretskii <=