Jason, Great work using Claude to ferret out long-standing bugs in FOP,
especially as relate to complex scripts, fonts, and Unicode!

On Sun, Oct 4, 2026 at 10:19 PM plutext (via GitHub) <[email protected]> wrote:

>
> plutext commented on PR #116:
> URL:
> https://github.com/apache/xmlgraphics-fop/pull/116#issuecomment-5986995470
>
>    Pushed 6968306, a correction to this change found on a corpus of real
> documents.
>
>    The first glyph of a multiple substitution recorded the source
> character. Cambria Regular's `ccmp` decomposes
>    precomposed letters: ά into `alpha` and a tonos mark, ü into `u` and
> `uni0308`. So its base glyphs were
>    published as the precomposed letters. A plain letter reaches the same
> glyph through the cmap, so every plain α,
>    o, e, u, c and A drawn with that glyph read accented, a regression
> against 2.11, which publishes the base
>    glyph's own character.
>
>    Where one character is split into exactly as many glyphs as its
> canonical decomposition (NFD) has characters,
>    each glyph now records its own piece: the base its plain letter, and
> the mark its combining character. That
>    includes U+0301 for Cambria's tonos, which 2.11 published as a
> private-use code point. Any other split keeps the
>    first-glyph rule, so the Arabic cases (a dotless base and its dots;
> Arabic letters have no canonical
>    decomposition) are unchanged.
>
>    The line `à a é e ü u ά α ό ο ć c Å A` in Cambria Regular, read with
> pdftotext:
>    - 2.11: `à a é e ü u α α ο ο ć c A A`
>    - this PR before: `à̀ à é́ é ü̈ ü ά ά ό ό ć́ ć Å Å`
>    - this PR now: `à a é e ü u ά α ό ο ć c Å A`, decomposed; identical to
> the source after NFC.
>
>    The drawing is byte-identical; only the ToUnicode CMap changes.
> `MultiByteFontTestCase` gains three cases, and
>    the two decomposition cases fail without the change. The fop-core suite
> gives 3684 tests and 0 failures, and
>    checkstyle is clean.
>
>
>
> --
> This is an automated message from the Apache Git Service.
> To respond to the message, please log on to GitHub and use the
> URL above to go to the specific comment.
>
> To unsubscribe, e-mail: [email protected]
>
> For queries about this service, please contact Infrastructure at:
> [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to