diff options
-rw-r--r-- | pango2/meson.build | 1 | ||||
-rw-r--r-- | pango2/pangodwrite-fontmap.cpp | 35 | ||||
-rw-r--r-- | pango2/pangowin32-utils-private.h | 29 | ||||
-rw-r--r-- | pango2/pangowin32-utils.c | 59 |
4 files changed, 91 insertions, 33 deletions
diff --git a/pango2/meson.build b/pango2/meson.build index 0a3e8d32..e0f0626d 100644 --- a/pango2/meson.build +++ b/pango2/meson.build @@ -170,6 +170,7 @@ if host_system == 'windows' pango_sources += [ 'pangodwrite-fontmap.cpp', + 'pangowin32-utils.c', ] if cairo_dep.found() diff --git a/pango2/pangodwrite-fontmap.cpp b/pango2/pangodwrite-fontmap.cpp index 532c3a38..7f4ead15 100644 --- a/pango2/pangodwrite-fontmap.cpp +++ b/pango2/pangodwrite-fontmap.cpp @@ -29,13 +29,12 @@ #include <hb-directwrite.h> #include "pangodwrite-fontmap.h" -#include "pango-hbfamily-private.h" #include "pango-fontmap-private.h" #include "pango-hbface-private.h" #include "pango-hbfont-private.h" #include "pango-context.h" -#include "pango-impl-utils.h" #include "pango-trace-private.h" +#include "pangowin32-utils-private.h" /** @@ -333,37 +332,7 @@ pango2_direct_write_font_map_populate (Pango2FontMap *map) collection->Release (); collection = NULL; - /* Add generic aliases */ - struct { - const char *alias_name; - const char *family_name; - } aliases[] = { - { "Monospace", "Consolas" }, - { "Sans-serif", "Arial" }, - { "Sans", "Arial" }, - { "Serif", "Times New Roman" }, - { "System-ui", "Segoe UI" }, - { "Emoji", "Segoe UI Emoji" } - }; - -#if 0 - if (IsWindows11OrLater ()) - aliases[0].family_name = "Cascadia Mono"; -#endif - - for (gsize i = 0; i < G_N_ELEMENTS (aliases); i++) - { - Pango2FontFamily *family = pango2_font_map_get_family (map, aliases[i].family_name); - - if (family) - { - Pango2GenericFamily *alias_family; - - alias_family = pango2_generic_family_new (aliases[i].alias_name); - pango2_generic_family_add_family (alias_family, family); - pango2_font_map_add_family (map, PANGO2_FONT_FAMILY (alias_family)); - } - } + pango2_win32_font_map_add_aliases_and_fallbacks (map); } /* }}} */ diff --git a/pango2/pangowin32-utils-private.h b/pango2/pangowin32-utils-private.h new file mode 100644 index 00000000..9acebec9 --- /dev/null +++ b/pango2/pangowin32-utils-private.h @@ -0,0 +1,29 @@ +/* Pango + * pangowin32-utils-private.h: Miscellaneous Windows-related utils + * + * Copyright (C) 2022 the GTK team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "pango-fontmap-private.h" + +G_BEGIN_DECLS + +void +pango2_win32_font_map_add_aliases_and_fallbacks (Pango2FontMap *map); + +G_END_DECLS diff --git a/pango2/pangowin32-utils.c b/pango2/pangowin32-utils.c new file mode 100644 index 00000000..b44bf476 --- /dev/null +++ b/pango2/pangowin32-utils.c @@ -0,0 +1,59 @@ +/* Pango + * pangowin32-utils.c: Miscellaneous Windows-related utils + * + * Copyright (C) 2022 the GTK team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "pango-impl-utils.h" +#include "pangowin32-utils-private.h" + +void +pango2_win32_font_map_add_aliases_and_fallbacks (Pango2FontMap *map) +{ + /* Add generic aliases */ + struct { + const char *alias_name; + const char *family_name; + } aliases[] = { + { "Monospace", "Consolas" }, + { "Sans-serif", "Arial" }, + { "Sans", "Arial" }, + { "Serif", "Times New Roman" }, + { "System-ui", "Segoe UI" }, + { "Emoji", "Segoe UI Emoji" } + }; + +#if 0 + if (IsWindows11OrLater ()) + aliases[0].family_name = "Cascadia Mono"; +#endif + + for (gsize i = 0; i < G_N_ELEMENTS (aliases); i++) + { + Pango2FontFamily *family = pango2_font_map_get_family (map, aliases[i].family_name); + + if (family) + { + Pango2GenericFamily *alias_family; + + alias_family = pango2_generic_family_new (aliases[i].alias_name); + pango2_generic_family_add_family (alias_family, family); + pango2_font_map_add_family (map, PANGO2_FONT_FAMILY (alias_family)); + } + } +} |