v0.22.0 — Gurmukhi (Punjabi) + Japanese & Korean scripts
A minor release adding two more of the world's most-read scripts: Gurmukhi (Punjabi) and the Japanese and Korean members of the CJK family.
New: Gurmukhi (Punjabi) syllable shaping
Gurmukhi joins Devanagari and Bengali on texish's Indic-shaping framework, set a syllable at a time from ordinary Unicode text:
- Subjoined pairin forms — a virama-joined consonant hangs below the base (
ਪ੍ਰੇਮ,ਸ੍ਰੀ). Unlike Devanagari and Bengali, Gurmukhi has no reph: a joined ra always subjoins, never rising as a mark. - Pre-base sihari reordering — the i-sign is typed after its consonant but drawn before it (
ਦਿਨ,ਪਿਤਾ). - Addak, tippi and bindi placed as marks over the base by GPOS (
ਇੱਕ,ਪੰਜਾਬ,ਸਿੰਘ).
Select the bundled Noto Serif Gurmukhi with \font gurmukhi (or \font punjabi), regular and bold.
New: Japanese and Korean
The three CJK scripts share the Han characters but draw them with region-specific forms, and Korean adds its own Hangul — so each region gets its own cut of Noto Serif CJK, in regular and bold.
- Japanese —
\font japanese(alias\font cjkjp). Kanji set with their Japanese letterforms rather than the Chinese ones, plus hiragana and katakana. Sets like Chinese, with the same kinsoku inter-character breaking. - Korean —
\font korean(alias\font cjkkr). Renders the Hangul syllables the Chinese faces have no glyph for at all, plus Hanja.
Korean line breaking: Korean is written with spaces between words, so — unlike Chinese and Japanese — its lines break at those spaces the way Latin does, and a Korean word is never split across a line. Hangul is kept off the per-character break path (removed from CJK.isCJK).
{\font gurmukhi 14 regular ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ!}
{\font japanese 12 regular これは日本語の組版の例です。}
{\font korean 12 regular 이것은 한국어 조판의 예입니다.}
Engine
- New Gurmukhi Indic front end (U+0A00–U+0A7F), registered alongside Devanagari and Bengali;
startsWithRephoverridden tofalse. - New bundled CJK faces
\font cjkjp/japaneseand\font cjkkr/korean(Noto Serif CJK JP/KR), each regular and bold. CJK.isCJKno longer treats Hangul as break-anywhere, so spaced Korean breaks at its word spaces.
Tests
- Gurmukhi: font-free cluster tests (
GurmukhiTests) + font-level GSUB/GPOS tests (GsubGurmukhiFontTests) against the bundled face, confirmed withhb-shape --shaper=ot. - CJK:
CJKFontCoverageTests(JP kanji+kana, KR Hangul+Hanja, and that the Chinese face has no Hangul) +CJKLineBreakTests(Hangul off the break path; Japanese still breaks per character).
Demos & docs
scripts/gurmukhi-demo.scriptandscripts/japanese-korean-demo.script.- New guide pages Gurmukhi (Punjabi) and Chinese, Japanese & Korean, plus reference updates.
Native CLI binaries for Linux (x86_64, arm64) and macOS (arm64) attach below; other platforms use the JVM build.