summaryrefslogtreecommitdiff
path: root/src/haikufont.c
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-06-20 10:57:17 +0000
committerPo Lu <luangruo@yahoo.com>2022-06-20 10:58:45 +0000
commitb5dd337ada80ec89651677cfd8630380afca6f91 (patch)
treec19c37ae4f7740a55ff5f02ffcfe5f89b97a599f /src/haikufont.c
parent8400c59358c69574f3eeb2751b517f94abb28274 (diff)
downloademacs-b5dd337ada80ec89651677cfd8630380afca6f91.tar.gz
Fix initialization of Haiku font driver
* src/font.c (register_font_driver): Fix comment. * src/haikufont.c (haikufont_booleans): New list. (haikufont_filter_properties): New function. (haikufont_driver): Register new hook. (syms_of_haikufont_for_pdumper): Register font driver globally. (syms_of_haikufont): Call it in a pdumper hook.
Diffstat (limited to 'src/haikufont.c')
-rw-r--r--src/haikufont.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/haikufont.c b/src/haikufont.c
index 77aa4006310..e9a25c0d58b 100644
--- a/src/haikufont.c
+++ b/src/haikufont.c
@@ -1173,6 +1173,24 @@ haikufont_list_family (struct frame *f)
return list;
}
+/* List of boolean properties in font names accepted by this font
+ driver. */
+static const char *const haikufont_booleans[] =
+ {
+ ":antialias",
+ NULL,
+ };
+
+/* List of non-boolean properties. Currently empty. */
+static const char *const haikufont_non_booleans[1];
+
+static void
+haikufont_filter_properties (Lisp_Object font, Lisp_Object alist)
+{
+ font_filter_properties (font, alist, haikufont_booleans,
+ haikufont_non_booleans);
+}
+
struct font_driver const haikufont_driver =
{
.type = LISPSYM_INITIALLY (Qhaiku),
@@ -1187,7 +1205,8 @@ struct font_driver const haikufont_driver =
.encode_char = haikufont_encode_char,
.text_extents = haikufont_text_extents,
.shape = haikufont_shape,
- .list_family = haikufont_list_family
+ .list_family = haikufont_list_family,
+ .filter_properties = haikufont_filter_properties,
};
static bool
@@ -1270,6 +1289,12 @@ in the font selection dialog. */)
QCsize, lsize);
}
+static void
+syms_of_haikufont_for_pdumper (void)
+{
+ register_font_driver (&haikufont_driver, NULL);
+}
+
void
syms_of_haikufont (void)
{
@@ -1299,6 +1324,7 @@ syms_of_haikufont (void)
#ifdef USE_BE_CAIRO
Fput (Qhaiku, Qfont_driver_superseded_by, Qftcr);
#endif
+ pdumper_do_now_and_after_load (syms_of_haikufont_for_pdumper);
font_cache = list (Qnil);
staticpro (&font_cache);