summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meson.build6
-rw-r--r--pango.doap6
-rw-r--r--pango/pangowin32-dwrite-fontmap.cpp16
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')
diff --git a/pango.doap b/pango.doap
index 2138d5e7..676c7b73 100644
--- a/pango.doap
+++ b/pango.doap
@@ -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;
+ }
}
}
}