Accepting request 907040 from GNOME:Factory

- Add 3ff6365.patch, reverse applied: fix build of e.g. g-c-c. This
  commit introduced a requirement to run X. (forwarded request 906179 from dimstar)

OBS-URL: https://build.opensuse.org/request/show/907040
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pango?expand=0&rev=131
This commit is contained in:
Dominique Leuenberger 2021-07-21 17:05:49 +00:00 committed by Git OBS Bridge
commit cb7636c763
7 changed files with 159 additions and 9 deletions

121
3ff6365.patch Normal file
View File

@ -0,0 +1,121 @@
From d4356779945855f7cc950dbe162285ccf21bcce9 Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Sun, 27 Jun 2021 11:31:13 -0400
Subject: [PATCH] shape: Bring back careful rounding code
When we added the round-glyph-positions option in
c43da2d3 and b5634799, we lost some code that was careful
to round in device coordinates.
The reason we lost it is that the rounding needs fontconfig-
specific data that is only available in the backend, and the
rounding now happens in the frontend.
Bringing it back is annoying, since we've run out of vfunc
slots to get info from the backend. This commit works around
that limitation in a hacky way.
Fixes: #562
---
pango/shape.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 73 insertions(+), 4 deletions(-)
diff --git a/pango/shape.c b/pango/shape.c
index 04407732..b870ecad 100644
--- a/pango/shape.c
+++ b/pango/shape.c
@@ -151,6 +151,32 @@ fallback_shape (const char *text,
pango_glyph_string_reverse_range (glyphs, 0, glyphs->num_glyphs);
}
+/* FIXME: This is very ugly. We are out of room for vfuncs, so we can't
+ * easily add api to get is_hinted and the matrix from the PangoFcFont.
+ *
+ * Keep in sync with pangofc-font.h!
+ */
+struct _PangoFcFont
+{
+ PangoFont parent_instance;
+
+ gpointer font_pattern; /* fully resolved pattern */
+ PangoFontMap *fontmap; /* associated map */
+ gpointer priv; /* used internally */
+ PangoMatrix matrix; /* used internally */
+ PangoFontDescription *description;
+
+ GSList *metrics_by_lang;
+
+ guint is_hinted : 1;
+ guint is_transformed : 1;
+};
+typedef struct _PangoFcFont PangoFcFont;
+
+#define PANGO_IS_FC_FONT(obj) \
+ g_type_is_a (((GTypeInstance*)obj)->g_class->g_type, \
+ g_type_from_name ("PangoFcFont"))
+
/**
* pango_shape_with_flags:
* @item_text: valid UTF-8 text to shape
@@ -294,11 +320,54 @@ pango_shape_with_flags (const gchar *item_text,
if (flags & PANGO_SHAPE_ROUND_POSITIONS)
{
- for (i = 0; i < glyphs->num_glyphs; i++)
+ if (PANGO_IS_FC_FONT (analysis->font))
{
- glyphs->glyphs[i].geometry.width = PANGO_UNITS_ROUND (glyphs->glyphs[i].geometry.width );
- glyphs->glyphs[i].geometry.x_offset = PANGO_UNITS_ROUND (glyphs->glyphs[i].geometry.x_offset);
- glyphs->glyphs[i].geometry.y_offset = PANGO_UNITS_ROUND (glyphs->glyphs[i].geometry.y_offset);
+ PangoFcFont *fc_font = (PangoFcFont *)analysis->font;
+ if (fc_font->is_hinted)
+ {
+ double x_scale_inv, y_scale_inv;
+ double x_scale, y_scale;
+
+ x_scale_inv = y_scale_inv = 1.0;
+ pango_matrix_get_font_scale_factors (&fc_font->matrix, &x_scale_inv, &y_scale_inv);
+ if (PANGO_GRAVITY_IS_IMPROPER (analysis->gravity))
+ {
+ x_scale_inv = -x_scale_inv;
+ y_scale_inv = -y_scale_inv;
+ }
+ x_scale = 1. / x_scale_inv;
+ y_scale = 1. / y_scale_inv;
+
+ if (x_scale == 1.0 && y_scale == 1.0)
+ {
+ for (i = 0; i < glyphs->num_glyphs; i++)
+ glyphs->glyphs[i].geometry.width = PANGO_UNITS_ROUND (glyphs->glyphs[i].geometry.width);
+ }
+ else
+ {
+ #if 0
+ if (PANGO_GRAVITY_IS_VERTICAL (analysis->gravity))
+ {
+ /* XXX */
+ double tmp = x_scale;
+ x_scale = y_scale;
+ y_scale = -tmp;
+ }
+ #endif
+ #define HINT(value, scale_inv, scale) (PANGO_UNITS_ROUND ((int) ((value) * scale)) * scale_inv)
+ #define HINT_X(value) HINT ((value), x_scale, x_scale_inv)
+ #define HINT_Y(value) HINT ((value), y_scale, y_scale_inv)
+ for (i = 0; i < glyphs->num_glyphs; i++)
+ {
+ glyphs->glyphs[i].geometry.width = HINT_X (glyphs->glyphs[i].geometry.width);
+ glyphs->glyphs[i].geometry.x_offset = HINT_X (glyphs->glyphs[i].geometry.x_offset);
+ glyphs->glyphs[i].geometry.y_offset = HINT_Y (glyphs->glyphs[i].geometry.y_offset);
+ }
+ #undef HINT_Y
+ #undef HINT_X
+ #undef HINT
+ }
+ }
}
}
}
--
GitLab

View File

@ -2,7 +2,7 @@
<service name="obs_scm" mode="disabled"> <service name="obs_scm" mode="disabled">
<param name="url">https://gitlab.gnome.org/GNOME/pango.git</param> <param name="url">https://gitlab.gnome.org/GNOME/pango.git</param>
<param name="scm">git</param> <param name="scm">git</param>
<param name="revision">refs/tags/1.48.5</param> <param name="revision">1.48.7</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">(.*)\+0</param> <param name="versionrewrite-pattern">(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param> <param name="versionrewrite-replacement">\1</param>

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bcd03268ec4fc5813e11e4cf360ef91589b030199ec4d88bee39137648a9b6ab
size 3303436

3
pango-1.48.7.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:75cfc2a22b159ceae580fec1f1b32d707019d1f6a68b95a6c9e478a5911ffffe
size 3360268

View File

@ -1,3 +1,28 @@
-------------------------------------------------------------------
Tue Jul 13 17:29:05 UTC 2021 - Dominique Leuenberger <dimstar@opensuse.org>
- Add 3ff6365.patch, reverse applied: fix build of e.g. g-c-c. This
commit introduced a requirement to run X.
-------------------------------------------------------------------
Mon Jul 5 10:18:45 UTC 2021 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 1.48.7:
+ Fix a thread-safety issue in fontmap initialization.
+ Small documentation improvements.
-------------------------------------------------------------------
Tue Jun 29 16:22:13 UTC 2021 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 1.48.6:
+ Avoid attribute index overflow.
+ Add a new pango-segmentation utility.
+ Documentation cleanups and fixes.
+ Update script property data for gravity.
+ Bring back careful glyph position rounding.
+ Add a few missing bidi types.
+ Add more tests.
------------------------------------------------------------------- -------------------------------------------------------------------
Tue May 18 16:16:14 UTC 2021 - Michael Gorse <mgorse@suse.com> Tue May 18 16:16:14 UTC 2021 - Michael Gorse <mgorse@suse.com>

View File

@ -1,5 +1,5 @@
name: pango name: pango
version: 1.48.5 version: 1.48.7
mtime: 1621345915 mtime: 1625320606
commit: 3940a1714e84b076d04d4638c88df3dba7d8014e commit: 467bda1e0bc2614b10e2edc46dccc9588388e045

View File

@ -17,7 +17,7 @@
Name: pango Name: pango
Version: 1.48.5 Version: 1.48.7
Release: 0 Release: 0
Summary: Library for Layout and Rendering of Text Summary: Library for Layout and Rendering of Text
License: LGPL-2.1-or-later License: LGPL-2.1-or-later
@ -26,6 +26,8 @@ URL: https://pango.gnome.org/
Source0: %{name}-%{version}.tar.xz Source0: %{name}-%{version}.tar.xz
Source2: macros.pango Source2: macros.pango
Source99: baselibs.conf Source99: baselibs.conf
# PATCH-FIX-UPSTREAM 3ff6365.patch dimstar@opensuse.org -- Revert upstream commit, introduces runtime dep on X
Patch0: https://gitlab.gnome.org/GNOME/pango/-/commit/3ff6365.patch
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: help2man BuildRequires: help2man
@ -117,7 +119,8 @@ This package contains all necessary include files and libraries needed
to develop applications that require these. to develop applications that require these.
%prep %prep
%autosetup -p1 %setup
%patch0 -p1 -R
%build %build
%meson \ %meson \
@ -154,6 +157,7 @@ cp %{SOURCE2} %{buildroot}%_rpmmacrodir
%files tools %files tools
%{_bindir}/pango-list %{_bindir}/pango-list
%{_bindir}/pango-segmentation
%{_bindir}/pango-view %{_bindir}/pango-view
%{_mandir}/man1/pango-view.1%{ext_man} %{_mandir}/man1/pango-view.1%{ext_man}