• 1.1.0 c3093e3f71

    fix: Fix hyphenation and rendering of decomposed characters (#1037)
    Compile Release / build-release (push) Canceled after 0s

    bot released this 2026-02-22 02:11:37 +00:00 | 592 commits to develop since this release

    Summary

    • 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

    • Before
      2

    • After
      fix1
      fix2

    • 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.

    Before:
    Image

    After:
    Image

    • 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