diff options
-rw-r--r-- | meson.build | 6 | ||||
-rw-r--r-- | pango.doap | 6 | ||||
-rw-r--r-- | pango/pangowin32-dwrite-fontmap.cpp | 16 |
3 files changed, 20 insertions, 8 deletions
diff --git a/meson.build b/meson.build index fcd0bee8..930f4108 100644 --- a/meson.build +++ b/meson.build @@ -363,7 +363,11 @@ cairo_dwrite_dep = disabler() # Only for Windows if cairo_dep.found() cairo_found_type = cairo_dep.type_name() if host_system == 'windows' - cairo_dwrite_dep = dependency('cairo-win32-dwrite-font', version: cairo_req_version, required: false) + cairo_dwrite_dep = dependency('cairo-dwrite-font', version: cairo_req_version, required: false) + # cairo < 1.17.8 used a different name + if not cairo_dwrite_dep.found() + cairo_dwrite_dep = dependency('cairo-win32-dwrite-font', version: cairo_req_version, required: false) + endif endif else if cc.get_id() == 'msvc' and cc.has_header('cairo.h') @@ -12,8 +12,8 @@ <homepage rdf:resource="http://www.pango.org/" /> - <mailing-list - rdf:resource="http://mail.gnome.org/mailman/listinfo/gtk-i18n-list" /> + <developer-forum + rdf:resource="https://discourse.gnome.org/tag/pango" /> <download-page rdf:resource="http://download.gnome.org/sources/pango/"/> <bug-database @@ -30,7 +30,7 @@ <foaf:Person> <foaf:name>Behdad Esfahbod</foaf:name> <foaf:mbox rdf:resource="mailto:behdad@gnome.org" /> - <gnome:userid>behdad</gnome:userid> +<!-- <gnome:userid>behdad</gnome:userid> --> </foaf:Person> </maintainer> <maintainer> diff --git a/pango/pangowin32-dwrite-fontmap.cpp b/pango/pangowin32-dwrite-fontmap.cpp index 2db0972a..7e712b57 100644 --- a/pango/pangowin32-dwrite-fontmap.cpp +++ b/pango/pangowin32-dwrite-fontmap.cpp @@ -512,22 +512,30 @@ pango_win32_dwrite_font_check_is_hinted (PangoWin32Font *font) &table_ctx, &exists))) { - if (exists) + if (exists && table_size > 4) { guint16 version = DWRITE_NEXT_USHORT (table_data); if (version == 0 || version == 1) { guint16 num_ranges = DWRITE_NEXT_USHORT (table_data); - guint16 i; + UINT32 max_ranges = (table_size - 4) / (sizeof (guint16) * 2); + guint16 i = 0; - for (i = 0; !result && i < num_ranges && i < (table_size / sizeof (guint16)); i ++) + if (num_ranges > max_ranges) + num_ranges = max_ranges; + + for (i = 0; i < num_ranges; i++) { + G_GNUC_UNUSED guint16 ppem = DWRITE_NEXT_USHORT (table_data); guint16 behavior = DWRITE_NEXT_USHORT (table_data); if (behavior & (GASP_GRIDFIT | GASP_SYMMETRIC_GRIDFIT)) - result = TRUE; + { + result = TRUE; + break; + } } } } |