pango: update to 1.51.0
Remove upstream patches
This commit is contained in:
@@ -1,69 +0,0 @@
|
||||
From 6d8e0e28956840759553372fbe604ac7e93563c4 Mon Sep 17 00:00:00 2001
|
||||
From: Luca Bacci <luca.bacci982@gmail.com>
|
||||
Date: Tue, 18 Apr 2023 19:16:27 +0200
|
||||
Subject: [PATCH] DWrite: Check length of the font table
|
||||
|
||||
Improved patch
|
||||
|
||||
Fixes https://gitlab.com/inkscape/inkscape/-/issues/4224
|
||||
---
|
||||
pango/pangowin32-dwrite-fontmap.cpp | 24 +++++++++++++++++++-----
|
||||
1 file changed, 19 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/pango/pangowin32-dwrite-fontmap.cpp b/pango/pangowin32-dwrite-fontmap.cpp
|
||||
index 2db0972a..8aeee338 100644
|
||||
--- a/pango/pangowin32-dwrite-fontmap.cpp
|
||||
+++ b/pango/pangowin32-dwrite-fontmap.cpp
|
||||
@@ -499,7 +499,13 @@ pango_win32_dwrite_font_check_is_hinted (PangoWin32Font *font)
|
||||
|
||||
if (dwrite_font_face != NULL)
|
||||
{
|
||||
- UINT32 gasp_tag = DWRITE_MAKE_OPENTYPE_TAG ('g', 'a', 's', 'p');
|
||||
+ const UINT32 gasp_tag = DWRITE_MAKE_OPENTYPE_TAG ('g', 'a', 's', 'p');
|
||||
+ /* The The 'gasp' table consists of a header (4 bytes) followed
|
||||
+ * by a sequence of fixed-size entries (4 bytes each) */
|
||||
+ /* header: struct { ushort version; ushort numRanges; } */
|
||||
+ const UINT32 TABLE_HEADER_SIZE = 4;
|
||||
+ /* entry: struct { ushort rangeMaxPPEM; ushort rangeGaspBehavior; } */
|
||||
+ const UINT32 TABLE_ENTRY_SIZE = 4;
|
||||
UINT32 table_size;
|
||||
const unsigned short *table_data;
|
||||
void *table_ctx;
|
||||
@@ -512,22 +518,30 @@ pango_win32_dwrite_font_check_is_hinted (PangoWin32Font *font)
|
||||
&table_ctx,
|
||||
&exists)))
|
||||
{
|
||||
- if (exists)
|
||||
+ if (exists && table_size > TABLE_HEADER_SIZE)
|
||||
{
|
||||
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 - TABLE_HEADER_SIZE) / TABLE_ENTRY_SIZE;
|
||||
+ 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;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
--
|
||||
2.39.1.windows.1
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
From a31602144ff6fc05ff2a26e3c78d618896dc45e5 Mon Sep 17 00:00:00 2001
|
||||
From: Chun-wei Fan <fanchunwei@src.gnome.org>
|
||||
Date: Wed, 10 May 2023 12:33:14 +0800
|
||||
Subject: [PATCH] pangocairo-win32font.c: Work around Cairo API becoming C++
|
||||
|
||||
Without adding a small C++ source file in order to include cairo-dwrite.h,
|
||||
where cairo_dwrite_font_face_create_for_dwrite_fontface() now resides and have
|
||||
thus become a C++ API, work around this by adding a wrapper prototype for our
|
||||
own purposes so that we can continue to call that function directly from C.
|
||||
---
|
||||
pango/pangocairo-win32font.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/pango/pangocairo-win32font.c b/pango/pangocairo-win32font.c
|
||||
index 9d52dbcf3..74dfeab1e 100644
|
||||
--- a/pango/pangocairo-win32font.c
|
||||
+++ b/pango/pangocairo-win32font.c
|
||||
@@ -32,6 +32,19 @@
|
||||
|
||||
#include <cairo-win32.h>
|
||||
|
||||
+#if defined (HAVE_CAIRO_WIN32_DIRECTWRITE) && \
|
||||
+ ((CAIRO_VERSION_MAJOR > 1) || \
|
||||
+ (CAIRO_VERSION_MAJOR == 1 && CAIRO_VERSION_MINOR > 17) || \
|
||||
+ (CAIRO_VERSION_MAJOR == 1 && CAIRO_VERSION_MINOR == 17 && CAIRO_VERSION_MICRO > 6))
|
||||
+/*
|
||||
+ * We are using C here, so use a workaround as cairo-dwrite.h from 1.17.8
|
||||
+ * can only be used in C++, which replaces the C-friendly version of
|
||||
+ * cairo_dwrite_font_face_create_for_dwrite_fontface()
|
||||
+ */
|
||||
+extern cairo_font_face_t *
|
||||
+cairo_dwrite_font_face_create_for_dwrite_fontface (void *dwrite_font_face);
|
||||
+#endif
|
||||
+
|
||||
#define PANGO_TYPE_CAIRO_WIN32_FONT (pango_cairo_win32_font_get_type ())
|
||||
#define PANGO_CAIRO_WIN32_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_CAIRO_WIN32_FONT, PangoCairoWin32Font))
|
||||
#define PANGO_CAIRO_WIN32_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_CAIRO_WIN32_FONT, PangoCairoWin32FontClass))
|
||||
--
|
||||
GitLab
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
From b4c5e9ff7e5c0b70b8a4549fc89931b58034c426 Mon Sep 17 00:00:00 2001
|
||||
From: Seungha Yang <seungha@centricular.com>
|
||||
Date: Fri, 26 May 2023 20:23:47 +0900
|
||||
Subject: [PATCH] win32: Fix 32bit build crash on DeleteDC()
|
||||
|
||||
Calling convention mismatch will result in crash or so
|
||||
|
||||
Fixes: https://gitlab.gnome.org/GNOME/pango/-/issues/749
|
||||
---
|
||||
pango/pangowin32.c | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pango/pangowin32.c b/pango/pangowin32.c
|
||||
index 7b6325a5c..4e9dc6c44 100644
|
||||
--- a/pango/pangowin32.c
|
||||
+++ b/pango/pangowin32.c
|
||||
@@ -126,7 +126,15 @@ _pango_win32_font_init (PangoWin32Font *win32font)
|
||||
win32font->glyph_info = g_hash_table_new_full (NULL, NULL, NULL, g_free);
|
||||
}
|
||||
|
||||
-static GPrivate display_dc_key = G_PRIVATE_INIT ((GDestroyNotify) DeleteDC);
|
||||
+static void
|
||||
+_delete_dc (HDC dc)
|
||||
+{
|
||||
+ /* Don't pass DeleteDC func pointer to the GDestroyNotify.
|
||||
+ * 32bit build requires matching calling convention (__cdecl vs __stdcall) */
|
||||
+ DeleteDC (dc);
|
||||
+}
|
||||
+
|
||||
+static GPrivate display_dc_key = G_PRIVATE_INIT ((GDestroyNotify) _delete_dc);
|
||||
static GPrivate dwrite_items = G_PRIVATE_INIT ((GDestroyNotify) pango_win32_dwrite_items_destroy);
|
||||
|
||||
HDC
|
||||
--
|
||||
GitLab
|
||||
|
||||
@@ -5,8 +5,8 @@ _realname=pango
|
||||
pkgbase=mingw-w64-${_realname}
|
||||
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
|
||||
"${MINGW_PACKAGE_PREFIX}-${_realname}-docs")
|
||||
pkgver=1.50.14
|
||||
pkgrel=4
|
||||
pkgver=1.51.0
|
||||
pkgrel=1
|
||||
pkgdesc="A library for layout and rendering of text (mingw-w64)"
|
||||
arch=('any')
|
||||
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
|
||||
@@ -26,24 +26,12 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
|
||||
"${MINGW_PACKAGE_PREFIX}-harfbuzz"
|
||||
"${MINGW_PACKAGE_PREFIX}-fribidi"
|
||||
"${MINGW_PACKAGE_PREFIX}-libthai")
|
||||
options=('staticlibs' 'strip' 'emptydirs')
|
||||
source=("https://download.gnome.org/sources/pango/${pkgver:0:4}/${_realname}-${pkgver}.tar.xz"
|
||||
"0001-DWrite-Check-length-of-the-font-table.patch"
|
||||
"https://gitlab.gnome.org/GNOME/pango/-/merge_requests/693.patch"
|
||||
"https://gitlab.gnome.org/GNOME/pango/-/merge_requests/694.patch")
|
||||
sha256sums=('1d67f205bfc318c27a29cfdfb6828568df566795df0cb51d2189cde7f2d581e8'
|
||||
'9a21e1aa158610975922b355faa0a89908d5ad066284a749e05dda309d6f0776'
|
||||
'bcffc93e63b12c0d168e5694531e4122ff142dfbe475708573c1150b133c8636'
|
||||
'44c1233b81ecab73947836012ccaff1b1a7e73245ba05b2c1a5dd17fcdc035aa')
|
||||
source=("https://download.gnome.org/sources/pango/${pkgver:0:4}/${_realname}-${pkgver}.tar.xz")
|
||||
sha256sums=('74efc109ae6f903bbe6af77eaa2ac6094b8ee245a2e23f132a7a8f0862d1a9f5')
|
||||
|
||||
prepare() {
|
||||
cd "${srcdir}/${_realname}-${pkgver}"
|
||||
|
||||
# https://gitlab.gnome.org/GNOME/pango/-/merge_requests/689
|
||||
patch -p1 -i "${srcdir}/0001-DWrite-Check-length-of-the-font-table.patch"
|
||||
|
||||
patch -p1 -i "${srcdir}/693.patch"
|
||||
patch -p1 -i "${srcdir}/694.patch"
|
||||
}
|
||||
|
||||
build() {
|
||||
|
||||
Reference in New Issue
Block a user