Skip to content

Draw the p, f, k and kh ligatures with l and m, and release 3.103 - #50

Merged
simoncozens merged 2 commits into
notofonts:mainfrom
Kushim-Jiang:mongfontbuilder-0.15.3
Oct 13, 2026
Merged

simoncozens merged 2 commits into
notofonts:mainfrom
Kushim-Jiang:mongfontbuilder-0.15.3

Conversation

@Kushim-Jiang

@Kushim-Jiang Kushim-Jiang commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

What

The ligatures of p, f, k and kh with l and m: sixteen drawings (_PL, _PM, _FL, _FM, _KL, _KM, _K2L, _K2M, each .init and .medi), the twenty-four ligature glyphs the OTL composer builds from them, a rebuilt features.fea, and the version bumped to 3.103.

Input Before After
p l a u182B.P.init nirugu.extend u182F.L.medi u1820.A.fina u182B_u182F.PL.init u1820.A.fina
p m a u182B.P.init nirugu.extend u182E.M.medi u1820.A.fina u182B_u182E.PM.init u1820.A.fina
f l a u1839.F.init nirugu.extend u182F.L.medi u1820.A.fina u1839_u182F.FL.init u1820.A.fina
k l a u183B.K.init nirugu.extend u182F.L.medi u1820.A.fina u183B_u182F.KL.init u1820.A.fina
k2 l a u183A.K2.init nirugu.extend u182F.L.medi u1820.A.fina u183A_u182F.K2L.init u1820.A.fina

and the same in medial position. The word-final l and m keep the nirugu.extend insertion, as they do now: no ligature is drawn for them, following BL/BM.

These are a choice of this font rather than something the standard asks for — GB/T 25914—2023 does not list them — so the drawings are in the unified source and the ligatures are taken by the unified composer alone, not by the ligature table the standard fonts share.

Follows up on:

Also in the rebuilt features.fea

The marked form of o / u / oe / ue that an initial consonant asks for is now carried across a consonant cluster to the medial vowel only, as GB/T 25914—2023 tables B.13/B.14 have it. A word-final vowel after a word-initial consonant cluster keeps its default form (n n oe → u1825.U.fina, not u1825.Ue.fina), while a single initial consonant still marks it (n oe → u1825.Ue.fina). This is the fix for Kushim-Jiang/mongolian#60.

Verification

  • The source compiles, and each of the eight pairs ligates in initial and medial position.

  • Shaping the Mongolian suites, exactly four cases change — the ligature replacing the nirugu.extend insertion, and nothing else:

    Case Before After
    core-hud > syllabic-o/u-5 u183A.K2.init nirugu.extend u182F.L.medi … u183A_u182F.K2L.init …
    core-mag > pu2-bowed u183A.K2.init nirugu.extend u182F.L.medi … u183A_u182F.K2L.init …
    eac-hud > MPS11-51 u182B.P.init nirugu.extend u182F.L.medi … u182B_u182F.PL.init …
    eac-hud > XKS11-52 u183B.K.init nirugu.extend u182F.L.medi … u183B_u182F.KL.init …

    The stored expectations in qa/shaping_tests/ are updated for those four; every other case is unchanged.

  • Version bumped to 3.103 (both versionMinor and openTypeNameVersion).

Note

The rebuilt features.fea comes from the mongfontbuilder working tree, which carries the o/u/oe/ue fix beyond the pinned 0.15.3. requirements.txt still pins 0.15.3, so the pin needs the release that carries the fix before make shaping reproduces these locks. As before, scripts/gen_shaping_tests.py is not in the tree; the locks here were regenerated by replaying the shaping suites directly.

Take the ligatures the unified font draws but the standard does not ask for: the 16 drawings of _PL/_PM/_FL/_FM/_KL/_KM/_K2L/_K2M in initial and medial position, the ligature glyphs the OTL composer builds from them, and the rebuilt features.fea.

The rebuild also carries the fix for the o/u/oe/ue marking after a word-initial consonant cluster, which is now restricted to the medial form.
@simoncozens
simoncozens merged commit 774b86c into notofonts:main Oct 13, 2026
6 checks passed
@simoncozens

Copy link
Copy Markdown
Contributor

Thank you. I'll check the generated binaries for vmtx/vhea before we cut a release.

@Kushim-Jiang

Copy link
Copy Markdown
Contributor Author

Thank you. BTW please also notice notofonts/khitan-small-script#3

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.

2 participants