From: Po Lu Date: Mon, 20 Jun 2022 10:57:17 +0000 (+0000) Subject: Fix initialization of Haiku font driver X-Git-Tag: emacs-29.0.90~1447^2~1591 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b5dd337ada80ec89651677cfd8630380afca6f91;p=emacs.git 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. --- diff --git a/src/font.c b/src/font.c index 702536c1cab..3846cfc1079 100644 --- a/src/font.c +++ b/src/font.c @@ -3589,8 +3589,8 @@ font_open_by_name (struct frame *f, Lisp_Object name) The second is with frame F NULL. In this case, DRIVER is globally registered in the variable `font_driver_list'. All font-driver - implementations must call this function in its syms_of_XXXX - (e.g. syms_of_xfont). */ + implementations must call this function in its + syms_of_XXXX_for_pdumper (e.g. syms_of_xfont_for_pdumper). */ void register_font_driver (struct font_driver const *driver, struct frame *f) 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);