support Unicode combining characters
Categories
(Core :: Layout: Text and Fonts, defect, P3)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox68 | --- | fixed |
People
(Reporter: gwalla, Assigned: jfkthame)
References
()
Details
(Keywords: intl)
Attachments
(1 file)
| Reporter | ||
Comment 2•23 years ago
|
||
Updated•22 years ago
|
Comment 3•22 years ago
|
||
Comment 4•22 years ago
|
||
Comment 5•22 years ago
|
||
Comment 6•22 years ago
|
||
Comment 7•21 years ago
|
||
Comment 9•19 years ago
|
||
Comment 10•18 years ago
|
||
Comment 11•17 years ago
|
||
Comment 12•17 years ago
|
||
Updated•16 years ago
|
Comment 13•15 years ago
|
||
Comment 14•12 years ago
|
||
| Assignee | ||
Comment 15•12 years ago
|
||
Comment 16•12 years ago
|
||
| Assignee | ||
Comment 17•12 years ago
|
||
Comment 18•11 years ago
|
||
Comment 19•11 years ago
|
||
Comment 20•11 years ago
|
||
Comment 21•11 years ago
|
||
Comment 22•7 years ago
|
||
Still valid =)
| Assignee | ||
Comment 23•7 years ago
|
||
In general, Firefox does support Unicode combining characters, but this is subject to suitable fonts being used. What doesn't work well is the use of combining characters when they are not supported in the font being used for the rest of the text; in that case, font fallback will kick in and generally yield a poor result, as noted in comment 17.
In the specific example mentioned in comment 20, where we see things like <MATHEMATICAL BOLD CAPITAL E, COMBINING RIGHT ARROW ABOVE>, the problem is that the font being used does not include OpenType positioning rules for the accent. So it appears at its default position as designed in the font, which clashes with tall letters.
If the font were TrueType, fallback diacritic positioning behavior would come into effect, which would raise the accent appropriately, but the current code in gfxHarfBuzzShaper.cpp[1] does not support this for OpenType/CFF fonts, which is the format used here.
So besides bug 543200, mentioned above in comment 17, another thing that would help certain cases (including the comment 20 example) would be to implement fallback positioning support for OpenType/CFF fonts.
| Assignee | ||
Comment 24•7 years ago
|
||
This provides glyph-extents support for these fonts, so that fallback diacritic positioning can work.
In principle we could try switching to the hb_ot_font functions for all fonts, but this carries
some risk of disrupting other issues: (1) on some platforms, our glyph-advance callbacks use platform
APIs rather than reading the font file directly, in order to respect hinting that may be in effect;
and (2) the hb_ot_font functions don't currently provide fallbacks for CJK Compatibility Ideographs
Standardized Variants, as implemented for Gecko in bug 989557, so that case would be regressed.
Hence, for the time being switching only for OpenType/CFF fonts, where the thebes callbacks are
known to be incomplete (no glyph-extents support) is the safer, more conservative approach.
Comment 25•7 years ago
|
||
Comment 26•7 years ago
|
||
| bugherder | ||
Updated•7 years ago
|
Updated•6 years ago
|
Description
•