-
fix: Fix hyphenation and rendering of decomposed characters (#1037)
Compile Release / build-release (push) Canceled after 0sreleased this
2026-02-22 02:11:37 +00:00 | 592 commits to develop since this releaseSummary
- This PR fixes decomposed diacritic handling end-to-end:
- Hyphenation: normalize common Latin base+combining sequences to
precomposed codepoints before Liang pattern matching, so decomposed
words hyphenate correctly - Rendering: correct combining-mark placement logic so non-spacing marks
are attached to the preceding base glyph in normal and rotated text
rendering paths, with corresponding text-bounds consistency updates. - Hyphenation around non breaking space variants have been fixed (and
extended) - Hyphenation of terms that already included of hyphens were fixed to
include Liang pattern application (eg "US-Satellitensystem" was
exclusively broken at the existing hyphen)
Additional Context
-
Note 1: the hyphenation fix is not a 100% bullet proof implementation.
It adds composition of common base+combining sequences (e.g. O +
U+0308 -> Ö) during codepoint collection. A complete solution would
require implementing proper Unicode normalization (at least NFC,
possibly NFKC in specific cases) before hyphenation and rendering,
instead of hand-mapping a few combining marks. That was beyond the scope
of this fix. -
Note 2: the render fix should be universal and not limited to the
constraints outlined above: it properly x-centers the compund glyph over
the previous one, and it uses at least 1pt of visual distance in y.
- This should resolve the issues described in #998
AI Usage
While CrossPoint doesn't have restrictions on AI tools in contributing,
please be transparent about their usage as it
helps set the right context for reviewers.Did you use AI tools to help write this code? PARTIALLY
Downloads