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] > >
