Fix a bug in Small Caps handling
This commit is contained in:
parent
3fc2ae8314
commit
20b8bdf721
86
pango-fixes-small-caps.patch
Normal file
86
pango-fixes-small-caps.patch
Normal file
@ -0,0 +1,86 @@
|
||||
From 60f8171f062b4653a41cce02a582caa25331c68f Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Clasen <mclasen@redhat.com>
|
||||
Date: Sat, 13 Nov 2021 08:15:12 -0500
|
||||
Subject: [PATCH 1/2] Fix a bug in Small Caps handling
|
||||
|
||||
We were not passing the correct split_offset to
|
||||
pango_item_split().
|
||||
|
||||
Testcase included.
|
||||
|
||||
Fixes: #627
|
||||
---
|
||||
pango/itemize.c | 4 ++--
|
||||
tests/testmisc.c | 24 ++++++++++++++++++++++++
|
||||
2 files changed, 26 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: pango-1.49.3/pango/itemize.c
|
||||
===================================================================
|
||||
--- pango-1.49.3.orig/pango/itemize.c
|
||||
+++ pango-1.49.3/pango/itemize.c
|
||||
@@ -1380,7 +1380,7 @@ split_item_for_variant (const char *te
|
||||
/* p0 .. p is a lowercase segment */
|
||||
if (p < end)
|
||||
{
|
||||
- new_item = pango_item_split (item, p - p0, g_utf8_strlen (p, p - p0));
|
||||
+ new_item = pango_item_split (item, p - p0, g_utf8_strlen (p0, p - p0));
|
||||
list_item->data = new_item;
|
||||
list_item = g_list_insert_before (list_item, list_item->next, item);
|
||||
list_item = list_item->next;
|
||||
@@ -1429,7 +1429,7 @@ split_item_for_variant (const char *te
|
||||
/* p0 .. p is a uppercase segment */
|
||||
if (p < end)
|
||||
{
|
||||
- new_item = pango_item_split (item, p - p0, g_utf8_strlen (p, p - p0));
|
||||
+ new_item = pango_item_split (item, p - p0, g_utf8_strlen (p0, p - p0));
|
||||
list_item->data = new_item;
|
||||
list_item = g_list_insert_before (list_item, list_item->next, item);
|
||||
list_item = list_item->next;
|
||||
Index: pango-1.49.3/tests/testmisc.c
|
||||
===================================================================
|
||||
--- pango-1.49.3.orig/tests/testmisc.c
|
||||
+++ pango-1.49.3/tests/testmisc.c
|
||||
@@ -754,6 +754,35 @@ test_transform_rectangle (void)
|
||||
g_assert_cmpint (rect2.height, ==, rect.width);
|
||||
}
|
||||
|
||||
+/* Test the crash with Small Caps in itemization from #627 */
|
||||
+static void
|
||||
+test_small_caps_crash (void)
|
||||
+{
|
||||
+ PangoContext *context;
|
||||
+ PangoLayout *layout;
|
||||
+ PangoFontDescription *desc;
|
||||
+ int w, h;
|
||||
+
|
||||
+ if (strcmp (G_OBJECT_TYPE_NAME (pango_cairo_font_map_get_default ()), "PangoCairoCoreTextFontMap") == 0)
|
||||
+ {
|
||||
+ g_test_skip ("This test needs a fontmap that supports Small-Caps");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ context = pango_font_map_create_context (pango_cairo_font_map_get_default ());
|
||||
+ layout = pango_layout_new (context);
|
||||
+ desc = pango_font_description_from_string ("Cantarell Small-Caps 11");
|
||||
+ pango_layout_set_font_description (layout, desc);
|
||||
+
|
||||
+ pango_layout_set_text (layout, "Pere Ràfols Soler\nEqualiser, LV2\nAudio: 1, 1\nMidi: 0, 0\nControls: 53, 2\nCV: 0, 0", -1);
|
||||
+
|
||||
+ pango_layout_get_size (layout, &w, &h);
|
||||
+
|
||||
+ pango_font_description_free (desc);
|
||||
+ g_object_unref (layout);
|
||||
+ g_object_unref (context);
|
||||
+}
|
||||
+
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
@@ -787,6 +816,7 @@ main (int argc, char *argv[])
|
||||
g_test_add_func ("/layout/empty-line-height", test_empty_line_height);
|
||||
g_test_add_func ("/layout/gravity-metrics", test_gravity_metrics);
|
||||
g_test_add_func ("/matrix/transform-rectangle", test_transform_rectangle);
|
||||
+ g_test_add_func ("/itemize/small-caps-crash", test_small_caps_crash);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
@ -9,12 +9,13 @@
|
||||
|
||||
Name: pango
|
||||
Version: 1.49.3
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Summary: System for layout and rendering of internationalized text
|
||||
|
||||
License: LGPLv2+
|
||||
URL: http://www.pango.org
|
||||
Source0: https://download.gnome.org/sources/%{name}/1.49/%{name}-%{version}.tar.xz
|
||||
Patch0: pango-fixes-small-caps.patch
|
||||
|
||||
BuildRequires: pkgconfig(cairo) >= %{cairo_version}
|
||||
BuildRequires: pkgconfig(freetype2) >= %{freetype_version}
|
||||
@ -126,6 +127,9 @@ fi
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Nov 18 2021 Peng Wu <pwu@redhat.com> - 1.49.3-2
|
||||
- Fix a bug in Small Caps handling
|
||||
|
||||
* Tue Nov 09 2021 Kalev Lember <klember@redhat.com> - 1.49.3-1
|
||||
- Update to 1.49.3
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user