Skip to content

Fix polytonic-Greek mid-word truncation in CI-built PDF - #17

Merged
jbkjr merged 2 commits into
masterfrom
fix-greek-pdf-rendering
Apr 27, 2026
Merged

Fix polytonic-Greek mid-word truncation in CI-built PDF#17
jbkjr merged 2 commits into
masterfrom
fix-greek-pdf-rendering

Conversation

@jbkjr

@jbkjr jbkjr commented Apr 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • Fixes the bug where Greek terms in Part XV of the deployed glossary PDF render only up through their first GreekExtended character (the σ in νοῦς, ν in τὸ ἕν, σία in οὐσία, etc.) — visible in the deployed PDF but not in local builds.
  • Root cause: in scripts/glossary/header.tex, two consecutive \setTransitionsFor calls (for GreekAndCoptic and GreekExtended) overwrite each other's cross-pair token registers via \XeTeXinterchartoks. Whichever runs second wins, so the GE→GAC boundary ends up firing \normalfont — and on CI the main font lacks polytonic Greek, so trailing GAC characters render as missing glyphs.
  • Fix: explicitly null both directions of the GAC↔GE pair after the \setTransitionsFor calls, so \greekfont (set by the Latin→Greek entry transition) stays active across the boundary.
  • Adds glossary.pdf artifact upload to ci-check.yml so the deployed-style PDF can be downloaded and visually inspected on each PR (kept permanently). Also adds a temporary fc-list diagnostic step (will be removed in a follow-up commit before merge).

Test plan

  • Confirm CI build succeeds on Ubuntu 22.04
  • Download the glossary-pdf artifact from this PR's checks page
  • Visually verify all Part XV Greek terms render fully:
    • Plotinian: to hen (τὸ ἕν), nous (νοῦς), psychē (ψυχή), hypostasis (ὑπόστασις), monad (μονάς), ousia (οὐσία)
    • Apophatic: hyperousia (ὑπερουσία / ὑπερούσιος), apophasis (ἀπόφασις)
    • Modes of knowing: noēsis (νόησις), gnosis (γνῶσις)
    • Contemplation: theōria (θεωρία), epistrophē (ἐπιστροφή), henōsis (ἕνωσις), theōsis (θέωσις)
    • Love: eros (ἔρως), agape (ἀγάπη)
    • Christian-mystical: plērōma (πλήρωμα), kenosis (κένωσις)
  • Confirm fc-list :lang=el output in the CI log shows Noto Serif (precondition: \greekfont resolves to a font with full polytonic coverage)
  • Drop the temporary Debug font availability step before merge

🤖 Generated with Claude Code

Jack Koch and others added 2 commits April 27, 2026 08:39
The two consecutive `\setTransitionsFor` calls for GreekAndCoptic and
GreekExtended overwrite each other's cross-pair token registers — the
second call wins, so the GE→GAC boundary ends up firing `\normalfont`.
On CI Linux the main font lacks polytonic Greek, so any GAC character
following a GE character within a word (σ in νοῦς, ν in τὸ ἕν, σία in
οὐσία) was being typeset in a font with no glyph for it and rendering
as a missing-glyph gap.

Null both directions of the GAC↔GE pair via \XeTeXinterchartoks so the
Latin→Greek-font transition stays active across the boundary. Add a
glossary-PDF artifact upload to ci-check.yml so the deployed PDF can
be visually verified before merge, plus a temporary fc-list diagnostic
step to record which fonts the CI runner actually resolves.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The fc-list output confirmed the precondition for the Greek-rendering
fix (\setmainfont resolves to Latin Modern Roman with no polytonic
Greek; \greekfont resolves to Noto Serif which has full coverage).
Verification done — drop the diagnostic step. Keep the artifact upload.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jbkjr
jbkjr merged commit a4ab7bd into master Apr 27, 2026
2 checks passed
@jbkjr
jbkjr deleted the fix-greek-pdf-rendering branch April 27, 2026 14:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant