mirror of
https://github.com/penpot/penpot.git
synced 2026-11-13 21:40:33 +00:00
Several CJK passes had a copy per writing direction. Merge them without changing their results: - allocate_bounded_expansion and bounded_expansion divide justify and distribute slack for both axes. Each axis still collects its own gaps; the horizontal one checks no-break controls over the source range and the vertical one at cell edges, as before. - PolicyBoundaries holds the break and emergency rules at each grapheme of a paragraph. The horizontal overlong-word and atomic-overflow passes and the vertical pairwise column planner read it. relax_overlong_words moves next to retain_atomic_overflow and shares annotation_ranges. - TextLayoutPolicy::pair_spacing_em gives the compression and script gap that both axes apply with their own caps. - cjk_chars keeps the Han, kana, hangul and punctuation ranges. Ranges that differ on purpose stay separate there, with a note on why. - OverhangClaims tracks the ruby overhang an earlier reading takes. - horizontal_zhuyin_glyphs places Zhuyin for position data and painting. - paint_horizontal_annotations paints warichu, emphasis and ruby; the emoji overlay keeps its place between the marks and the ruby. AI-assisted-by: claude-opus-5-5