public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Takao Fujiwara <tfujiwar@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/ibus] autotool: Fix Bug 1490733 Emojier takes wrong fonts
Date: Sun, 31 May 2026 02:06:38 GMT	[thread overview]
Message-ID: <178019319811.1.13956163373011700238.rpms-ibus-04e7ce105aa9@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/ibus
Branch : autotool
Commit : 04e7ce105aa99fefdd7aeeed396490b14ff82d74
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date   : 2017-09-20T13:30:28+09:00
Stats  : +38/-17 in 2 file(s)
URL    : https://src.fedoraproject.org/rpms/ibus/c/04e7ce105aa99fefdd7aeeed396490b14ff82d74?branch=autotool

Log:
Fix Bug 1490733 Emojier takes wrong fonts

---
diff --git a/ibus-xx-emoji-harfbuzz.patch b/ibus-xx-emoji-harfbuzz.patch
index fbfe8dc..a2dcb2d 100644
--- a/ibus-xx-emoji-harfbuzz.patch
+++ b/ibus-xx-emoji-harfbuzz.patch
@@ -1,6 +1,6 @@
-From c5e3a76dc92ea967b138d43dc9ed7ecdb2e3fc7a Mon Sep 17 00:00:00 2001
+From f85ce71361d3d55eccc0bcc4fba1ccfb2a6c670f Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Thu, 14 Sep 2017 15:55:21 +0900
+Date: Wed, 20 Sep 2017 13:04:55 +0900
 Subject: [PATCH] Integrate custom rendering to use HarfBuzz glyph info
 
 IBusFontSet offers FcFontSet, glyph info with HarfBuzz and rendering
@@ -20,9 +20,9 @@ Need configure --enable-harfbuzz-for-emoji option to enable this feature.
  configure.ac                           |  29 +
  ui/gtk3/Makefile.am                    |  32 ++
  ui/gtk3/emojier.vala                   | 100 +++-
- ui/gtk3/ibusfontset.c                  | 932 +++++++++++++++++++++++++++++++++
+ ui/gtk3/ibusfontset.c                  | 950 +++++++++++++++++++++++++++++++++
  ui/gtk3/ibusfontset.h                  | 302 +++++++++++
- 8 files changed, 1478 insertions(+), 2 deletions(-)
+ 8 files changed, 1496 insertions(+), 2 deletions(-)
  create mode 100644 bindings/vala/IBusFontSet-1.0.metadata
  create mode 100644 bindings/vala/ibus-fontset-1.0.deps
  create mode 100644 ui/gtk3/ibusfontset.c
@@ -250,7 +250,7 @@ index 786b80e6..cd1e9c2c 100644
  man_seven_DATA =$(man_seven_files:.7=.7.gz)
  man_sevendir = $(mandir)/man7
 diff --git a/ui/gtk3/emojier.vala b/ui/gtk3/emojier.vala
-index 36ab4bab..7d5116fe 100644
+index 9cd98140..c581671e 100644
 --- a/ui/gtk3/emojier.vala
 +++ b/ui/gtk3/emojier.vala
 @@ -80,6 +80,9 @@ class IBusEmojier : Gtk.ApplicationWindow {
@@ -362,7 +362,7 @@ index 36ab4bab..7d5116fe 100644
  
      private ThemedRGBA m_rgba;
      private Gtk.Box m_vbox;
-@@ -1601,6 +1677,22 @@ class IBusEmojier : Gtk.ApplicationWindow {
+@@ -1609,6 +1685,22 @@ class IBusEmojier : Gtk.ApplicationWindow {
      }
  
  
@@ -385,7 +385,7 @@ index 36ab4bab..7d5116fe 100644
      public static bool has_loaded_emoji_dict() {
          if (m_emoji_to_data_dict == null)
              return false;
-@@ -1631,6 +1723,10 @@ class IBusEmojier : Gtk.ApplicationWindow {
+@@ -1639,6 +1731,10 @@ class IBusEmojier : Gtk.ApplicationWindow {
          int font_size = font_desc.get_size() / Pango.SCALE;
          if (font_size != 0)
              m_emoji_font_size = font_size;
@@ -398,10 +398,10 @@ index 36ab4bab..7d5116fe 100644
  
 diff --git a/ui/gtk3/ibusfontset.c b/ui/gtk3/ibusfontset.c
 new file mode 100644
-index 00000000..66090ecd
+index 00000000..d637d034
 --- /dev/null
 +++ b/ui/gtk3/ibusfontset.c
-@@ -0,0 +1,932 @@
+@@ -0,0 +1,950 @@
 +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
 +/* vim:set et sts=4: */
 +/* ibus - The Input Bus
@@ -444,6 +444,7 @@ index 00000000..66090ecd
 +#define SANS      "sans"
 +
 +
++static gboolean    m_color_supported;
 +static FT_Library  m_ftlibrary;
 +static FcFontSet  *m_fcfontset;
 +static gchar      *m_family;
@@ -485,7 +486,8 @@ index 00000000..66090ecd
 +static cairo_scaled_font_t *
 +                 ibus_fontset_cairo_scaled_font_new_with_font
 +                                            (const gchar           *family,
-+                                             guint                  size);
++                                             guint                  size,
++                                             gboolean               has_color);
 +
 +G_DEFINE_BOXED_TYPE (IBusCairoLine,
 +                     ibus_cairo_line,
@@ -505,6 +507,7 @@ index 00000000..66090ecd
 +    cairo_glyph_t dummy;
 +    IBusGlyph dummy2;
 +
++    m_color_supported = (FcGetVersion () >=  21205);
 +    gobject_class->constructor = ibus_fontset_constructor;
 +    gobject_class->get_property =
 +            (GObjectGetPropertyFunc) ibus_fontset_get_property;
@@ -596,7 +599,8 @@ index 00000000..66090ecd
 +    if (family != NULL && size > 0) {
 +        /* cache the font */
 +        ibus_fontset_cairo_scaled_font_new_with_font (family,
-+                                                      size);
++                                                      size,
++                                                      TRUE);
 +    }
 +    return object;
 +}
@@ -652,7 +656,8 @@ index 00000000..66090ecd
 +
 +static cairo_scaled_font_t *
 +ibus_fontset_cairo_scaled_font_new_with_font (const gchar *family,
-+                                              guint        size)
++                                              guint        size,
++                                              gboolean     has_color)
 +{
 +    gchar *font_name;
 +    cairo_scaled_font_t *scaled_font = NULL;
@@ -669,7 +674,13 @@ index 00000000..66090ecd
 +    g_return_val_if_fail (family != NULL, NULL);
 +    g_return_val_if_fail (m_scaled_font_table != NULL, NULL);
 +
-+    font_name = g_strdup_printf ("%s %u", family, size);
++    if (m_color_supported) {
++        font_name = g_strdup_printf ("%s %u:color=%s",
++                                     family, size,
++                                     has_color ? "TRUE" : "FALSE");
++    } else {
++        font_name = g_strdup_printf ("%s %u", family, size);
++    }
 +    scaled_font = g_hash_table_lookup (m_scaled_font_table, font_name);
 +    if (scaled_font != NULL) {
 +        g_free (font_name);
@@ -678,6 +689,8 @@ index 00000000..66090ecd
 +    pattern = FcPatternCreate ();
 +    FcPatternAddString (pattern, FC_FAMILY, (FcChar8*) family);
 +    FcPatternAddDouble (pattern, FC_SIZE, (double) size);
++    if (m_color_supported)
++        FcPatternAddBool (pattern, FC_COLOR, has_color);
 +    FcPatternAddDouble (pattern, FC_DPI, 96);
 +    FcConfigSubstitute(NULL, pattern, FcMatchPattern);
 +    font_options = cairo_font_options_create ();
@@ -850,7 +863,8 @@ index 00000000..66090ecd
 +        cairo_scaled_font_t  *unknown_font;
 +        unknown_font = ibus_fontset_cairo_scaled_font_new_with_font (
 +            (const gchar *) fallback_family,
-+            UNKNOWN_FONT_SIZE);
++            UNKNOWN_FONT_SIZE,
++            FALSE);
 +        (*cairo_lines)[n].scaled_font = unknown_font;
 +    }
 +    hb_buffer_destroy (hb_buffer);
@@ -864,6 +878,7 @@ index 00000000..66090ecd
 +{
 +    FcChar8 *family = NULL;
 +    FcChar8 *font_path = NULL;
++    gboolean has_color = TRUE;
 +    guint size = 0;
 +    cairo_scaled_font_t *scaled_font = NULL;
 +    PangoRectangle font_rect = { 0, };
@@ -874,6 +889,8 @@ index 00000000..66090ecd
 +
 +    FcPatternGetString (buff->fcfont, FC_FAMILY, 0, &family);
 +    g_return_if_fail (family != NULL);
++    if (m_color_supported)
++        FcPatternGetBool (buff->fcfont, FC_COLOR, 0, &has_color);
 +    size = m_size;
 +    if (size == 0) {
 +        g_warning ("Font size is not right for font %s.", family);
@@ -881,7 +898,8 @@ index 00000000..66090ecd
 +    }
 +    scaled_font = ibus_fontset_cairo_scaled_font_new_with_font (
 +            (const gchar *) family,
-+            size);
++            size,
++            has_color);
 +    g_return_if_fail (scaled_font != NULL);
 +    get_font_extents_with_scaled_font (scaled_font, &font_rect);
 +
@@ -1171,7 +1189,7 @@ index 00000000..66090ecd
 +    FcPatternAddInteger (pattern, FC_WEIGHT, FC_WEIGHT_NORMAL);
 +    FcPatternAddInteger (pattern, FC_WIDTH, FC_WIDTH_NORMAL);
 +    FcPatternAddInteger (pattern, FC_DPI, 96);
-+    if (FC_VERSION >= 21205 &&
++    if (m_color_supported &&
 +        (!g_ascii_strncasecmp (family, MONOSPACE, strlen (MONOSPACE)) ||
 +         !g_ascii_strncasecmp (family, SERIF, strlen (SERIF)) ||
 +         !g_ascii_strncasecmp (family, SANS, strlen (SANS)))) {

diff --git a/ibus.spec b/ibus.spec
index fc47167..4e93dc7 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -30,7 +30,7 @@
 
 Name:           ibus
 Version:        1.5.16
-Release:        9%{?dist}
+Release:        10%{?dist}
 Summary:        Intelligent Input Bus for Linux OS
 License:        LGPLv2+
 Group:          System Environment/Libraries
@@ -441,6 +441,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache &> /dev/null || :
 %{_datadir}/gtk-doc/html/*
 
 %changelog
+* Wed Sep 20 2017 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.16-10
+- Fix Bug 1490733 Emojier takes wrong fonts
+
 * Thu Sep 14 2017 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.16-9
 - Fix scaling factor, mouse events on switcher, c-s-u on im-ibus, 
   propertypanel position and menu 

                 reply	other threads:[~2026-05-31  2:06 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178019319811.1.13956163373011700238.rpms-ibus-04e7ce105aa9@fedoraproject.org \
    --to=tfujiwar@redhat.com \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox