aboutsummaryrefslogtreecommitdiffstats
path: root/surfaces/pixels.c
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-09-28 13:54:31 +0100
committereunhhu <[email protected]>2026-09-28 13:54:31 +0100
commit88e16d6f971287afd0ab15d1cde73608cde43b1b (patch)
tree28a3108bb10d1b5de9e9c5a3ca50b73660d82155 /surfaces/pixels.c
parenta914fce69d3f2b12422d214380bfe6a086a7718c (diff)
downloadvega-88e16d6f971287afd0ab15d1cde73608cde43b1b.tar.gz
vega-88e16d6f971287afd0ab15d1cde73608cde43b1b.zip
Shape Hangul, kern with kern tables, and place marks without GPOS, as HarfBuzz does
The planner now picks who positions as HarfBuzz 10.2 does: GPOS, the old kern table when GPOS has no kern feature, and marks placed by combining class and ink boxes when there is no GPOS; the Hangul shaper composes syllables the font has whole, takes apart those it lacks into jamo for ljmo, vjmo and tjmo, and moves tone marks before their syllable. The section grows to an 80-byte header (the kern table, and each glyph's ink box when a plan places marks without GPOS) and 88-byte plans (the kern mask, the jamo masks). Kern tables are applied pair subtable by pair subtable with HarfBuzz's own binary search; state machines, class subtables and cross-stream kerning, which no installed font has, are refused. The check spells Hangul syllables every way text does. Every installed font Vega accepts shapes as HarfBuzz does (209 fonts, 1,520 plans, a thousand runs each), and the fonts refused before at 20,000 runs a plan: Noto Sans CJK KR and Baekmuk for Hangul, IPA Gothic and Noto Mono for marks without GPOS, FreeSans, FreeSerif, Liberation and DejaVu Sans ExtraLight for kern tables, Unifont's Latin, Greek, Cyrillic, Hebrew and Hangul.
Diffstat (limited to 'surfaces/pixels.c')
0 files changed, 0 insertions, 0 deletions