After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 101406 - Shape marks with base characters
Shape marks with base characters
Status: RESOLVED OBSOLETE
Product: pango
Classification: Platform
Component: general
1.1.x
Other Linux
: Normal normal
: Big fix
Assigned To: pango-maint
pango-maint
: 490414 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2002-12-17 02:06 UTC by Owen Taylor
Modified: 2018-05-22 12:02 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Owen Taylor 2002-12-17 02:06:01 UTC
The Hangul shaper uses fallback glyphs for the two tone-mark
glyphs if the font doesn't have the tone mark. But if the
font doesn't have the tone marks, it would normally get put
into a different run (different font) from the base glyphs
unless the Hangul font is the default font.

I put a hack into pangofc-fontmap.cI to deal with this,
but we really need some general mechanism, which might
involve new API of some sort.

(The get_coverage() method of PangoEngine was supposed to
handle this, but it is no longer used with current font 
backends)

===
  /* Awful hack so Hangul Tone marks get rendered with the same
   * font and in the same run as other Hangul characters. If a font
   * covers the first composed Hangul glyph, then it is declared to cover
   * the Hangul tone marks. This hack probably needs to be formalized
   * by choosing fonts for scripts rather than individual code points.
   */
  if (pango_coverage_get (coverage, 0xac00) == PANGO_COVERAGE_EXACT)
    {
      pango_coverage_set (coverage, 0x302e, PANGO_COVERAGE_EXACT);
      pango_coverage_set (coverage, 0x302f, PANGO_COVERAGE_EXACT);
    }
Comment 1 Owen Taylor 2003-09-26 16:05:02 UTC
The new itemization algorithm helps to some extent ...
now the Hangul shaper can implement a covers() method
that claims to cover thos characters, in which case they
will shape with the base characters.

However this problem is really pretty general and nasty;
given input inputs of:

 LATIN SMALL LETTER A  COMBINING ACUTE ACCENT
 LATIN SMALL LETTER A WITH ACUTE

A font could cover LATIN SMALL LETTER A WITH ACUTE
but not COMBINING ACUTE ACCENT, or it could cover
COMBINING ACUTE ACCENT and not LATIN SMALL LETTER A,
but we want really want Pango to give identical results
for all canonically identically sequences.

I'm thinking that we may need to switch the covers()
virtual function to take not a single character but
an entire sequence of base character plus combining
marks. Doing that without adverse effect on performance
is going to be challenging.


 Cover a and 
Comment 2 Owen Taylor 2004-02-21 17:28:44 UTC
Not going to solve this mess for Pango-1.4, which means we'll
need to rev the backend interface again for Pango-1.6.
Comment 3 Behdad Esfahbod 2009-11-17 05:00:28 UTC
*** Bug 490414 has been marked as a duplicate of this bug. ***
Comment 4 Behdad Esfahbod 2012-08-18 17:09:45 UTC
This should be properly fixed now by using the harfbuzz  normalizer during itemization...
Comment 5 GNOME Infrastructure Team 2018-05-22 12:02:16 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to GNOME's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/pango/issues/7.