Initial support for ligation in Kitty (#1007)

This commit is contained in:
be5invis 2021-06-02 19:17:49 -07:00
parent f0402d2d40
commit 8a69ab9179
13 changed files with 220 additions and 42 deletions

View file

@ -9,18 +9,21 @@ family = "Iosevka"
desc = "Default" desc = "Default"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" off' snapshotFeature = '"NWID" off'
export-glyph-names = true
[buildPlans.iosevka-term] [buildPlans.iosevka-term]
family = "Iosevka Term" family = "Iosevka Term"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on' snapshotFeature = '"NWID" on'
export-glyph-names = true
[buildPlans.iosevka-fixed] [buildPlans.iosevka-fixed]
family = "Iosevka Fixed" family = "Iosevka Fixed"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on' snapshotFeature = '"NWID" on'
export-glyph-names = true
# Slab # Slab
[buildPlans.iosevka-slab] [buildPlans.iosevka-slab]
@ -29,6 +32,7 @@ desc = "Slab-serif"
serifs = "slab" serifs = "slab"
snapshotFamily = 'iosevka-slab' snapshotFamily = 'iosevka-slab'
snapshotFeature = '"NWID" off' snapshotFeature = '"NWID" off'
export-glyph-names = true
[buildPlans.iosevka-term-slab] [buildPlans.iosevka-term-slab]
family = "Iosevka Term Slab" family = "Iosevka Term Slab"
@ -36,6 +40,7 @@ serifs = "slab"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka-slab' snapshotFamily = 'iosevka-slab'
snapshotFeature = '"NWID" on' snapshotFeature = '"NWID" on'
export-glyph-names = true
[buildPlans.iosevka-fixed-slab] [buildPlans.iosevka-fixed-slab]
family = "Iosevka Fixed Slab" family = "Iosevka Fixed Slab"
@ -43,6 +48,7 @@ serifs = "slab"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka-slab' snapshotFamily = 'iosevka-slab'
snapshotFeature = '"NWID" on' snapshotFeature = '"NWID" on'
export-glyph-names = true
# Curly # Curly
[buildPlans.iosevka-curly] [buildPlans.iosevka-curly]
@ -50,6 +56,7 @@ family = "Iosevka Curly"
desc = "Curly Style" desc = "Curly Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss20" on' snapshotFeature = '"ss20" on'
export-glyph-names = true
[buildPlans.iosevka-curly.variants] [buildPlans.iosevka-curly.variants]
inherits = "ss20" inherits = "ss20"
@ -58,6 +65,7 @@ family = "Iosevka Term Curly"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss20" on' snapshotFeature = '"NWID" on, "ss20" on'
export-glyph-names = true
[buildPlans.iosevka-term-curly.variants] [buildPlans.iosevka-term-curly.variants]
inherits = "ss20" inherits = "ss20"
@ -66,6 +74,7 @@ family = "Iosevka Fixed Curly"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss20" on' snapshotFeature = '"NWID" on, "ss20" on'
export-glyph-names = true
[buildPlans.iosevka-fixed-curly.variants] [buildPlans.iosevka-fixed-curly.variants]
inherits = "ss20" inherits = "ss20"
@ -76,6 +85,7 @@ desc = "Curly Style, Slab-serif"
serifs = "slab" serifs = "slab"
snapshotFamily = 'iosevka-slab' snapshotFamily = 'iosevka-slab'
snapshotFeature = '"ss20" on' snapshotFeature = '"ss20" on'
export-glyph-names = true
[buildPlans.iosevka-curly-slab.variants] [buildPlans.iosevka-curly-slab.variants]
inherits = "ss20" inherits = "ss20"
@ -85,6 +95,7 @@ serifs = "slab"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka-slab' snapshotFamily = 'iosevka-slab'
snapshotFeature = '"NWID" on, "ss20" on' snapshotFeature = '"NWID" on, "ss20" on'
export-glyph-names = true
[buildPlans.iosevka-term-curly-slab.variants] [buildPlans.iosevka-term-curly-slab.variants]
inherits = "ss20" inherits = "ss20"
@ -94,6 +105,7 @@ serifs = "slab"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka-slab' snapshotFamily = 'iosevka-slab'
snapshotFeature = '"NWID" on, "ss20" on' snapshotFeature = '"NWID" on, "ss20" on'
export-glyph-names = true
[buildPlans.iosevka-fixed-curly-slab.variants] [buildPlans.iosevka-fixed-curly-slab.variants]
inherits = "ss20" inherits = "ss20"
@ -104,6 +116,7 @@ family = "Iosevka SS01"
desc = "Andale Mono Style" desc = "Andale Mono Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss01" on' snapshotFeature = '"ss01" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss01.variants] [buildPlans.iosevka-ss01.variants]
inherits = "ss01" inherits = "ss01"
@ -113,6 +126,7 @@ family = "Iosevka Term SS01"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss01" on' snapshotFeature = '"NWID" on, "ss01" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss01.variants] [buildPlans.iosevka-term-ss01.variants]
inherits = "ss01" inherits = "ss01"
@ -122,6 +136,7 @@ family = "Iosevka Fixed SS01"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss01" on' snapshotFeature = '"NWID" on, "ss01" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss01.variants] [buildPlans.iosevka-fixed-ss01.variants]
inherits = "ss01" inherits = "ss01"
@ -132,6 +147,7 @@ family = "Iosevka SS02"
desc = "Anonymous Pro Style" desc = "Anonymous Pro Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss02" on' snapshotFeature = '"ss02" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss02.variants] [buildPlans.iosevka-ss02.variants]
inherits = "ss02" inherits = "ss02"
@ -141,6 +157,7 @@ family = "Iosevka Term SS02"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss02" on' snapshotFeature = '"NWID" on, "ss02" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss02.variants] [buildPlans.iosevka-term-ss02.variants]
inherits = "ss02" inherits = "ss02"
@ -150,6 +167,7 @@ family = "Iosevka Fixed SS02"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss02" on' snapshotFeature = '"NWID" on, "ss02" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss02.variants] [buildPlans.iosevka-fixed-ss02.variants]
inherits = "ss02" inherits = "ss02"
@ -160,6 +178,7 @@ family = "Iosevka SS03"
desc = "Consolas Style" desc = "Consolas Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss03" on' snapshotFeature = '"ss03" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss03.variants] [buildPlans.iosevka-ss03.variants]
inherits = "ss03" inherits = "ss03"
@ -169,6 +188,7 @@ family = "Iosevka Term SS03"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss03" on' snapshotFeature = '"NWID" on, "ss03" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss03.variants] [buildPlans.iosevka-term-ss03.variants]
inherits = "ss03" inherits = "ss03"
@ -178,6 +198,7 @@ family = "Iosevka Fixed SS03"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss03" on' snapshotFeature = '"NWID" on, "ss03" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss03.variants] [buildPlans.iosevka-fixed-ss03.variants]
inherits = "ss03" inherits = "ss03"
@ -188,6 +209,7 @@ family = "Iosevka SS04"
desc = "Menlo Style" desc = "Menlo Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss04" on' snapshotFeature = '"ss04" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss04.variants] [buildPlans.iosevka-ss04.variants]
inherits = "ss04" inherits = "ss04"
@ -197,6 +219,7 @@ family = "Iosevka Term SS04"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss04" on' snapshotFeature = '"NWID" on, "ss04" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss04.variants] [buildPlans.iosevka-term-ss04.variants]
inherits = "ss04" inherits = "ss04"
@ -206,6 +229,7 @@ family = "Iosevka Fixed SS04"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss04" on' snapshotFeature = '"NWID" on, "ss04" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss04.variants] [buildPlans.iosevka-fixed-ss04.variants]
inherits = "ss04" inherits = "ss04"
@ -216,6 +240,7 @@ family = "Iosevka SS05"
desc = "Fira Mono Style" desc = "Fira Mono Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss05" on' snapshotFeature = '"ss05" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss05.variants] [buildPlans.iosevka-ss05.variants]
inherits = "ss05" inherits = "ss05"
@ -225,6 +250,7 @@ family = "Iosevka Term SS05"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss05" on' snapshotFeature = '"NWID" on, "ss05" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss05.variants] [buildPlans.iosevka-term-ss05.variants]
inherits = "ss05" inherits = "ss05"
@ -234,6 +260,7 @@ family = "Iosevka Fixed SS05"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss05" on' snapshotFeature = '"NWID" on, "ss05" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss05.variants] [buildPlans.iosevka-fixed-ss05.variants]
inherits = "ss05" inherits = "ss05"
@ -244,6 +271,7 @@ family = "Iosevka SS06"
desc = "Liberation Mono Style" desc = "Liberation Mono Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss06" on' snapshotFeature = '"ss06" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss06.variants] [buildPlans.iosevka-ss06.variants]
inherits = "ss06" inherits = "ss06"
@ -253,6 +281,7 @@ family = "Iosevka Term SS06"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss06" on' snapshotFeature = '"NWID" on, "ss06" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss06.variants] [buildPlans.iosevka-term-ss06.variants]
inherits = "ss06" inherits = "ss06"
@ -262,6 +291,7 @@ family = "Iosevka Fixed SS06"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss06" on' snapshotFeature = '"NWID" on, "ss06" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss06.variants] [buildPlans.iosevka-fixed-ss06.variants]
inherits = "ss06" inherits = "ss06"
@ -272,6 +302,7 @@ family = "Iosevka SS07"
desc = "Monaco Style" desc = "Monaco Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss07" on' snapshotFeature = '"ss07" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss07.variants] [buildPlans.iosevka-ss07.variants]
inherits = "ss07" inherits = "ss07"
@ -281,6 +312,7 @@ family = "Iosevka Term SS07"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss07" on' snapshotFeature = '"NWID" on, "ss07" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss07.variants] [buildPlans.iosevka-term-ss07.variants]
inherits = "ss07" inherits = "ss07"
@ -290,6 +322,7 @@ family = "Iosevka Fixed SS07"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss07" on' snapshotFeature = '"NWID" on, "ss07" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss07.variants] [buildPlans.iosevka-fixed-ss07.variants]
inherits = "ss07" inherits = "ss07"
@ -300,6 +333,7 @@ family = "Iosevka SS08"
desc = "Pragmata Pro Style" desc = "Pragmata Pro Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss08" on' snapshotFeature = '"ss08" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss08.variants] [buildPlans.iosevka-ss08.variants]
inherits = "ss08" inherits = "ss08"
@ -309,6 +343,7 @@ family = "Iosevka Term SS08"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss08" on' snapshotFeature = '"NWID" on, "ss08" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss08.variants] [buildPlans.iosevka-term-ss08.variants]
inherits = "ss08" inherits = "ss08"
@ -318,6 +353,7 @@ family = "Iosevka Fixed SS08"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss08" on' snapshotFeature = '"NWID" on, "ss08" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss08.variants] [buildPlans.iosevka-fixed-ss08.variants]
inherits = "ss08" inherits = "ss08"
@ -328,6 +364,7 @@ family = "Iosevka SS09"
desc = "Source Code Pro Style" desc = "Source Code Pro Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss09" on' snapshotFeature = '"ss09" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss09.variants] [buildPlans.iosevka-ss09.variants]
inherits = "ss09" inherits = "ss09"
@ -337,6 +374,7 @@ family = "Iosevka Term SS09"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss09" on' snapshotFeature = '"NWID" on, "ss09" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss09.variants] [buildPlans.iosevka-term-ss09.variants]
inherits = "ss09" inherits = "ss09"
@ -346,6 +384,7 @@ family = "Iosevka Fixed SS09"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss09" on' snapshotFeature = '"NWID" on, "ss09" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss09.variants] [buildPlans.iosevka-fixed-ss09.variants]
inherits = "ss09" inherits = "ss09"
@ -356,6 +395,7 @@ family = "Iosevka SS10"
desc = "Envy Code R Style" desc = "Envy Code R Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss10" on' snapshotFeature = '"ss10" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss10.variants] [buildPlans.iosevka-ss10.variants]
inherits = "ss10" inherits = "ss10"
@ -365,6 +405,7 @@ family = "Iosevka Term SS10"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss10" on' snapshotFeature = '"NWID" on, "ss10" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss10.variants] [buildPlans.iosevka-term-ss10.variants]
inherits = "ss10" inherits = "ss10"
@ -374,6 +415,7 @@ family = "Iosevka Fixed SS10"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss10" on' snapshotFeature = '"NWID" on, "ss10" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss10.variants] [buildPlans.iosevka-fixed-ss10.variants]
inherits = "ss10" inherits = "ss10"
@ -384,6 +426,7 @@ family = "Iosevka SS11"
desc = "X Windows Fixed Style" desc = "X Windows Fixed Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss11" on' snapshotFeature = '"ss11" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss11.variants] [buildPlans.iosevka-ss11.variants]
inherits = "ss11" inherits = "ss11"
@ -393,6 +436,7 @@ family = "Iosevka Term SS11"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss11" on' snapshotFeature = '"NWID" on, "ss11" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss11.variants] [buildPlans.iosevka-term-ss11.variants]
inherits = "ss11" inherits = "ss11"
@ -402,6 +446,7 @@ family = "Iosevka Fixed SS11"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss11" on' snapshotFeature = '"NWID" on, "ss11" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss11.variants] [buildPlans.iosevka-fixed-ss11.variants]
inherits = "ss11" inherits = "ss11"
@ -412,6 +457,7 @@ family = "Iosevka SS12"
desc = "Ubuntu Mono Style" desc = "Ubuntu Mono Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss12" on' snapshotFeature = '"ss12" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss12.variants] [buildPlans.iosevka-ss12.variants]
inherits = "ss12" inherits = "ss12"
@ -421,6 +467,7 @@ family = "Iosevka Term SS12"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss12" on' snapshotFeature = '"NWID" on, "ss12" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss12.variants] [buildPlans.iosevka-term-ss12.variants]
inherits = "ss12" inherits = "ss12"
@ -430,6 +477,7 @@ family = "Iosevka Fixed SS12"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss12" on' snapshotFeature = '"NWID" on, "ss12" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss12.variants] [buildPlans.iosevka-fixed-ss12.variants]
inherits = "ss12" inherits = "ss12"
@ -440,6 +488,7 @@ family = "Iosevka SS13"
desc = "Lucida Style" desc = "Lucida Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss13" on' snapshotFeature = '"ss13" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss13.variants] [buildPlans.iosevka-ss13.variants]
inherits = "ss13" inherits = "ss13"
@ -449,6 +498,7 @@ family = "Iosevka Term SS13"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss13" on' snapshotFeature = '"NWID" on, "ss13" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss13.variants] [buildPlans.iosevka-term-ss13.variants]
inherits = "ss13" inherits = "ss13"
@ -458,6 +508,7 @@ family = "Iosevka Fixed SS13"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss13" on' snapshotFeature = '"NWID" on, "ss13" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss13.variants] [buildPlans.iosevka-fixed-ss13.variants]
inherits = "ss13" inherits = "ss13"
@ -468,6 +519,7 @@ family = "Iosevka SS14"
desc = "JetBrains Mono Style" desc = "JetBrains Mono Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss14" on' snapshotFeature = '"ss14" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss14.variants] [buildPlans.iosevka-ss14.variants]
inherits = "ss14" inherits = "ss14"
@ -477,6 +529,7 @@ family = "Iosevka Term SS14"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss14" on' snapshotFeature = '"NWID" on, "ss14" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss14.variants] [buildPlans.iosevka-term-ss14.variants]
inherits = "ss14" inherits = "ss14"
@ -486,6 +539,7 @@ family = "Iosevka Fixed SS14"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss14" on' snapshotFeature = '"NWID" on, "ss14" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss14.variants] [buildPlans.iosevka-fixed-ss14.variants]
inherits = "ss14" inherits = "ss14"
@ -496,6 +550,7 @@ family = "Iosevka SS15"
desc = "IBM Plex Mono Style" desc = "IBM Plex Mono Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss15" on' snapshotFeature = '"ss15" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss15.variants] [buildPlans.iosevka-ss15.variants]
inherits = "ss15" inherits = "ss15"
@ -505,6 +560,7 @@ family = "Iosevka Term SS15"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss15" on' snapshotFeature = '"NWID" on, "ss15" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss15.variants] [buildPlans.iosevka-term-ss15.variants]
inherits = "ss15" inherits = "ss15"
@ -514,6 +570,7 @@ family = "Iosevka Fixed SS15"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss15" on' snapshotFeature = '"NWID" on, "ss15" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss15.variants] [buildPlans.iosevka-fixed-ss15.variants]
inherits = "ss15" inherits = "ss15"
@ -524,6 +581,7 @@ family = "Iosevka SS16"
desc = "PT Mono Style" desc = "PT Mono Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss16" on' snapshotFeature = '"ss16" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss16.variants] [buildPlans.iosevka-ss16.variants]
inherits = "ss16" inherits = "ss16"
@ -533,6 +591,7 @@ family = "Iosevka Term SS16"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss16" on' snapshotFeature = '"NWID" on, "ss16" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss16.variants] [buildPlans.iosevka-term-ss16.variants]
inherits = "ss16" inherits = "ss16"
@ -542,6 +601,7 @@ family = "Iosevka Fixed SS16"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss16" on' snapshotFeature = '"NWID" on, "ss16" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss16.variants] [buildPlans.iosevka-fixed-ss16.variants]
inherits = "ss16" inherits = "ss16"
@ -552,6 +612,7 @@ family = "Iosevka SS17"
desc = "Recursive Mono Style" desc = "Recursive Mono Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss17" on' snapshotFeature = '"ss17" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss17.variants] [buildPlans.iosevka-ss17.variants]
inherits = "ss17" inherits = "ss17"
@ -561,6 +622,7 @@ family = "Iosevka Term SS17"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss17" on' snapshotFeature = '"NWID" on, "ss17" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss17.variants] [buildPlans.iosevka-term-ss17.variants]
inherits = "ss17" inherits = "ss17"
@ -570,6 +632,7 @@ family = "Iosevka Fixed SS17"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss17" on' snapshotFeature = '"NWID" on, "ss17" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss17.variants] [buildPlans.iosevka-fixed-ss17.variants]
inherits = "ss17" inherits = "ss17"
@ -580,6 +643,7 @@ family = "Iosevka SS18"
desc = "Input Mono Style" desc = "Input Mono Style"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"ss18" on' snapshotFeature = '"ss18" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-ss18.variants] [buildPlans.iosevka-ss18.variants]
inherits = "ss18" inherits = "ss18"
@ -589,6 +653,7 @@ family = "Iosevka Term SS18"
spacing = "term" spacing = "term"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss18" on' snapshotFeature = '"NWID" on, "ss18" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-term-ss18.variants] [buildPlans.iosevka-term-ss18.variants]
inherits = "ss18" inherits = "ss18"
@ -598,6 +663,7 @@ family = "Iosevka Fixed SS18"
spacing = "fixed" spacing = "fixed"
snapshotFamily = 'iosevka' snapshotFamily = 'iosevka'
snapshotFeature = '"NWID" on, "ss18" on' snapshotFeature = '"NWID" on, "ss18" on'
export-glyph-names = true
no-cv-ss = true no-cv-ss = true
[buildPlans.iosevka-fixed-ss18.variants] [buildPlans.iosevka-fixed-ss18.variants]
inherits = "ss18" inherits = "ss18"
@ -612,6 +678,7 @@ desc = "Sans-serif"
spacing = "quasi-proportional" spacing = "quasi-proportional"
snapshotFamily = 'iosevka-aile' snapshotFamily = 'iosevka-aile'
snapshotFeature = '"NWID" off' snapshotFeature = '"NWID" off'
export-glyph-names = true
[buildPlans.iosevka-aile.variants.design] [buildPlans.iosevka-aile.variants.design]
capital-i = "serifless" capital-i = "serifless"
@ -690,6 +757,7 @@ spacing = "quasi-proportional"
serifs = 'slab' serifs = 'slab'
snapshotFamily = 'iosevka-etoile' snapshotFamily = 'iosevka-etoile'
snapshotFeature = '"NWID" off' snapshotFeature = '"NWID" off'
export-glyph-names = true
[buildPlans.iosevka-etoile.variants.design] [buildPlans.iosevka-etoile.variants.design]
at = 'fourfold' at = 'fourfold'
@ -725,12 +793,14 @@ css = "normal"
family = "Iosevka QP" family = "Iosevka QP"
desc = "Customizer Preview Only Quasi-proportional Sans" desc = "Customizer Preview Only Quasi-proportional Sans"
spacing = "quasi-proportional" spacing = "quasi-proportional"
export-glyph-names = true
[buildPlans.iosevka-QP-slab] [buildPlans.iosevka-QP-slab]
family = "Iosevka QP Slab" family = "Iosevka QP Slab"
desc = "Customizer Preview Only Quasi-proportional Slab" desc = "Customizer Preview Only Quasi-proportional Slab"
serifs = 'slab' serifs = 'slab'
spacing = "quasi-proportional" spacing = "quasi-proportional"
export-glyph-names = true
################################################################################################### ###################################################################################################

View file

@ -13,7 +13,7 @@ const { copyFontMetrics } = require("../meta/aesthetics");
module.exports = async function (argv, para) { module.exports = async function (argv, para) {
const gs = buildGlyphs(para); const gs = buildGlyphs(para);
const baseFont = EmptyFont(); const baseFont = EmptyFont(argv);
assignFontNames(para, baseFont); assignFontNames(para, baseFont);
copyFontMetrics(gs.fontMetrics, baseFont); copyFontMetrics(gs.fontMetrics, baseFont);

View file

@ -2,12 +2,12 @@
const { Ot } = require("ot-builder"); const { Ot } = require("ot-builder");
module.exports = function () { module.exports = function (argv) {
let font = { let font = {
head: new Ot.Head.Table(), head: new Ot.Head.Table(),
hhea: new Ot.MetricHead.Hhea(), hhea: new Ot.MetricHead.Hhea(),
os2: new Ot.Os2.Table(4), os2: new Ot.Os2.Table(4),
post: new Ot.Post.Table(3, 0), post: new Ot.Post.Table(argv.featureControl.exportGlyphNames ? 2 : 3, 0),
maxp: Ot.Maxp.Table.TrueType(), maxp: Ot.Maxp.Table.TrueType(),
name: new Ot.Name.Table() name: new Ot.Name.Table()
}; };

View file

@ -1,5 +1,6 @@
const { Ot } = require("ot-builder"); const { Ot } = require("ot-builder");
const Point = require("../../support/point"); const Point = require("../../support/point");
const { Joining } = require("../../support/gr");
class MappedGlyphStore { class MappedGlyphStore {
constructor() { constructor() {
@ -62,10 +63,12 @@ class MappedGlyphStore {
} }
if (preferredName && !conflictSet.has(preferredName)) { if (preferredName && !conflictSet.has(preferredName)) {
conflictSet.add(preferredName); conflictSet.add(preferredName);
return preferredName; } else {
preferredName = `.gid${gid}`;
} }
return `.gid${gid}`; preferredName = Joining.amendOtName(preferredName, Joining.get(gSrc));
return preferredName;
} }
fillReferences(g, rs) { fillReferences(g, rs) {

View file

@ -2,6 +2,7 @@
$$include '../../meta/macros.ptl' $$include '../../meta/macros.ptl'
import [mix clamp fallback] from '../../support/utils' import [mix clamp fallback] from '../../support/utils'
import [Joining] from '../../support/gr'
import [DesignParameters] from '../../meta/aesthetics' import [DesignParameters] from '../../meta/aesthetics'
glyph-module glyph-module
@ -13,6 +14,12 @@ glyph-block Symbol-Ligation : begin
local arrowheadsKern : (2 / 3) * [clamp 0 (Width * 0.4) (Width - OperatorStroke * 3)] local arrowheadsKern : (2 / 3) * [clamp 0 (Width * 0.4) (Width - OperatorStroke * 3)]
define [SetJoiningKind lk rk] : glyph-proc
local k 0
if (lk !== 'f') : set k : k + Joining.Classes.Left
if (rk !== 'f') : set k : k + Joining.Classes.Right
Joining.set currentGlyph k
define arrowheadSlope : 1 / LessSlope define arrowheadSlope : 1 / LessSlope
define [ArrowBarConfig extend kern join doubleBar] : begin define [ArrowBarConfig extend kern join doubleBar] : begin
define cleft O define cleft O
@ -48,7 +55,7 @@ glyph-block Symbol-Ligation : begin
define result {} define result {}
foreach [l : items-of : Object.keys lk] : foreach [r : items-of : Object.keys rk] foreach [l : items-of : Object.keys lk] : foreach [r : items-of : Object.keys rk]
result.push { (l + r) lk.(l) rk.(r) } result.push { l r lk.(l) rk.(r) }
return result return result
local arrowExtend [clamp 0 Width (RightSB - OperatorStroke / 2 * arrowheadSlope)] local arrowExtend [clamp 0 Width (RightSB - OperatorStroke / 2 * arrowheadSlope)]
@ -57,12 +64,13 @@ glyph-block Symbol-Ligation : begin
define [HyphenNotch x] : union define [HyphenNotch x] : union
VBar x (SymbolMid + OperatorStroke / 3) (SymbolMid + OperatorStroke) OperatorStroke VBar x (SymbolMid + OperatorStroke / 3) (SymbolMid + OperatorStroke) OperatorStroke
VBar x (SymbolMid - OperatorStroke / 3) (SymbolMid - OperatorStroke) OperatorStroke VBar x (SymbolMid - OperatorStroke / 3) (SymbolMid - OperatorStroke) OperatorStroke
foreach [{subclass left right} : items-of [ArrowBarConfig arrowExtend arrowheadsKern arrowJ false]] : begin foreach [{lS rS left right} : items-of [ArrowBarConfig arrowExtend arrowheadsKern arrowJ false]] : begin
create-glyph "hyphen.lig.\(lS)\(rS)" : glyph-proc
create-glyph "hyphen.lig.\(subclass)" : glyph-proc include : SetJoiningKind lS rS
include : HBar left right SymbolMid OperatorStroke include : HBar left right SymbolMid OperatorStroke
set currentGlyph.autoRefPriority (-3) set currentGlyph.autoRefPriority (-3)
create-glyph "hyphen.lig.\(subclass).notched" : glyph-proc create-glyph "hyphen.lig.\(lS)\(rS).notched" : glyph-proc
include : SetJoiningKind lS rS
include : difference include : difference
HBar left right SymbolMid OperatorStroke HBar left right SymbolMid OperatorStroke
if (left < SB) [HyphenNotch 0] [glyph-proc] if (left < SB) [HyphenNotch 0] [glyph-proc]
@ -74,10 +82,12 @@ glyph-block Symbol-Ligation : begin
local dblExtend : clamp 0 Width (RightSB - (dblArrowD - dblArrowSw / 2) * arrowheadSlope) local dblExtend : clamp 0 Width (RightSB - (dblArrowD - dblArrowSw / 2) * arrowheadSlope)
local dblArrowJ : clamp 0 Width (SB + (dblArrowD - dblArrowSw / 2) * arrowheadSlope) local dblArrowJ : clamp 0 Width (SB + (dblArrowD - dblArrowSw / 2) * arrowheadSlope)
foreach [{subclass left right} : items-of [ArrowBarConfig dblExtend arrowheadsKern dblArrowJ true]] : create-glyph ('equal.lig.' + subclass) : glyph-proc foreach {lS rS left right} [items-of : ArrowBarConfig dblExtend arrowheadsKern dblArrowJ true]
include : HBarTop left right (SymbolMid + dblArrowD) dblArrowSw create-glyph "equal.lig.\(lS)\(rS)" : glyph-proc
include : HBarBottom left right (SymbolMid - dblArrowD) dblArrowSw include : SetJoiningKind lS rS
set currentGlyph.autoRefPriority (-3) include : HBarTop left right (SymbolMid + dblArrowD) dblArrowSw
include : HBarBottom left right (SymbolMid - dblArrowD) dblArrowSw
set currentGlyph.autoRefPriority (-3)
do "Waves" do "Waves"
glyph-block-import Shared-Symbol-Shapes : CreateWaveShape glyph-block-import Shared-Symbol-Shapes : CreateWaveShape
@ -109,6 +119,7 @@ glyph-block Symbol-Ligation : begin
j1 { J (Width + arrowJ + arrowheadsKern) true } j1 { J (Width + arrowJ + arrowheadsKern) true }
foreach [lS : items-of : Object.keys lk] : foreach [rS : items-of : Object.keys rk] : create-glyph"wave.lig.\(lS)\(rS)" : glyph-proc foreach [lS : items-of : Object.keys lk] : foreach [rS : items-of : Object.keys rk] : create-glyph"wave.lig.\(lS)\(rS)" : glyph-proc
include : SetJoiningKind lS rS
local {tL jL djL} lk.(lS) local {tL jL djL} lk.(lS)
local {tR jR djR} rk.(rS) local {tR jR djR} rk.(rS)
include : WaveShape include : WaveShape
@ -197,27 +208,32 @@ glyph-block Symbol-Ligation : begin
glyph-block-import Symbol-Math-Relation-Equal : EqualShape EqualHole IdentShape IdentHole glyph-block-import Symbol-Math-Relation-Equal : EqualShape EqualHole IdentShape IdentHole
define joiningOverlap (-Width / 6) define joiningOverlap (-Width / 6)
create-glyph 'equal.fc' : glyph-proc create-glyph 'equal.fc' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : difference include : difference
EqualShape SB (Width - joiningOverlap) EqualShape SB (Width - joiningOverlap)
EqualHole Width EqualHole Width
create-glyph 'equal.cf' : glyph-proc create-glyph 'equal.cf' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : difference include : difference
EqualShape joiningOverlap RightSB EqualShape joiningOverlap RightSB
EqualHole 0 EqualHole 0
create-glyph 'equal.jf' : glyph-proc create-glyph 'equal.jf' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : difference include : difference
EqualShape (RightSB - Width + joiningOverlap) RightSB EqualShape (RightSB - Width + joiningOverlap) RightSB
EqualHole 0 EqualHole 0
create-glyph 'equal.cc' : glyph-proc create-glyph 'equal.cc' : glyph-proc
Joining.set currentGlyph Joining.Classes.Mid
include : difference include : difference
EqualShape joiningOverlap (Width - joiningOverlap) EqualShape joiningOverlap (Width - joiningOverlap)
EqualHole 0 EqualHole 0
EqualHole Width EqualHole Width
create-glyph 'equal.fc+cc' : glyph-proc create-glyph 'equal.fc+cc' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : difference include : difference
EqualShape (SB - Width) (Width - joiningOverlap) EqualShape (SB - Width) (Width - joiningOverlap)
EqualHole 0 EqualHole 0
@ -229,33 +245,39 @@ glyph-block Symbol-Ligation : begin
EqualHole 0 EqualHole 0
create-glyph 'equal.cc+cf' : glyph-proc create-glyph 'equal.cc+cf' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : difference include : difference
EqualShape (joiningOverlap - Width) RightSB EqualShape (joiningOverlap - Width) RightSB
EqualHole (-Width) EqualHole (-Width)
EqualHole 0 EqualHole 0
create-glyph 'ident.fc' : glyph-proc create-glyph 'ident.fc' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : difference include : difference
IdentShape SB (Width - joiningOverlap) IdentShape SB (Width - joiningOverlap)
IdentHole Width IdentHole Width
create-glyph 'ident.cf' : glyph-proc create-glyph 'ident.cf' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : difference include : difference
IdentShape joiningOverlap RightSB IdentShape joiningOverlap RightSB
IdentHole 0 IdentHole 0
create-glyph 'ident.jf' : glyph-proc create-glyph 'ident.jf' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : difference include : difference
IdentShape (RightSB - Width + joiningOverlap) RightSB IdentShape (RightSB - Width + joiningOverlap) RightSB
IdentHole 0 IdentHole 0
create-glyph 'ident.cc' : glyph-proc create-glyph 'ident.cc' : glyph-proc
Joining.set currentGlyph Joining.Classes.Mid
include : difference include : difference
IdentShape joiningOverlap (Width - joiningOverlap) IdentShape joiningOverlap (Width - joiningOverlap)
IdentHole 0 IdentHole 0
IdentHole Width IdentHole Width
create-glyph 'ident.fc+cc' : glyph-proc create-glyph 'ident.fc+cc' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : difference include : difference
IdentShape (SB - Width) (Width - joiningOverlap) IdentShape (SB - Width) (Width - joiningOverlap)
IdentHole 0 IdentHole 0
@ -267,6 +289,7 @@ glyph-block Symbol-Ligation : begin
IdentHole 0 IdentHole 0
create-glyph 'ident.cc+cf' : glyph-proc create-glyph 'ident.cc+cf' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : difference include : difference
IdentShape (joiningOverlap - Width) RightSB IdentShape (joiningOverlap - Width) RightSB
IdentHole (-Width) IdentHole (-Width)
@ -311,15 +334,18 @@ glyph-block Symbol-Ligation : begin
define [TrigRightShape shift] : GreaterShape (SymbolMid + dHTriangle) (SymbolMid - dHTriangle) (Width - trigRight + shift) (Width - trigLeft + shift) define [TrigRightShape shift] : GreaterShape (SymbolMid + dHTriangle) (SymbolMid - dHTriangle) (Width - trigRight + shift) (Width - trigLeft + shift)
create-glyph 'less.lig.trig' : glyph-proc create-glyph 'less.lig.trig' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : TrigLeftShape 0 include : TrigLeftShape 0
create-glyph 'bar.lig.trig' : glyph-proc create-glyph 'bar.lig.trig' : glyph-proc
include : VBar Middle (SymbolMid + dHTriangle + OperatorStroke) (SymbolMid - dHTriangle - OperatorStroke) OperatorStroke include : VBar Middle (SymbolMid + dHTriangle + OperatorStroke) (SymbolMid - dHTriangle - OperatorStroke) OperatorStroke
create-glyph 'greater.lig.trig' : glyph-proc create-glyph 'greater.lig.trig' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : TrigRightShape 0 include : TrigRightShape 0
create-glyph 'less.lig.diamond' : glyph-proc create-glyph 'less.lig.diamond' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : intersection include : intersection
TrigLeftShape 0 TrigLeftShape 0
union union
@ -327,6 +353,7 @@ glyph-block Symbol-Ligation : begin
TrigRightShape Width TrigRightShape Width
create-glyph 'greater.lig.diamond' : glyph-proc create-glyph 'greater.lig.diamond' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : intersection include : intersection
TrigRightShape 0 TrigRightShape 0
union union
@ -336,12 +363,24 @@ glyph-block Symbol-Ligation : begin
do "Chaining Plus" do "Chaining Plus"
glyph-block-import Symbol-Math-Arith : PlusShape glyph-block-import Symbol-Math-Arith : PlusShape
create-glyph 'plus.lig.fc' : PlusShape SB (Width - O) create-glyph 'plus.lig.fc' : glyph-proc
create-glyph 'plus.lig.fc.s' : PlusShape SB (Width - O) SB Joining.set currentGlyph Joining.Classes.Right
create-glyph 'plus.lig.cc' : PlusShape O (Width - O) include : PlusShape SB (Width - O)
create-glyph 'plus.lig.cf' : PlusShape O RightSB create-glyph 'plus.lig.fc.s' : glyph-proc
create-glyph 'plus.lig.cf.s' : PlusShape O RightSB (-SB) Joining.set currentGlyph Joining.Classes.Right
create-glyph 'plus.lig.zf' : PlusShape (-SB + O) RightSB include : PlusShape SB (Width - O) SB
create-glyph 'plus.lig.cc' : glyph-proc
Joining.set currentGlyph Joining.Classes.Mid
include : PlusShape O (Width - O)
create-glyph 'plus.lig.cf' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : PlusShape O RightSB
create-glyph 'plus.lig.cf.s' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : PlusShape O RightSB (-SB)
create-glyph 'plus.lig.zf' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : PlusShape (-SB + O) RightSB
do 'Less / Greater as arrow' do 'Less / Greater as arrow'
create-glyph 'greaterArrow' : composite-proc create-glyph 'greaterArrow' : composite-proc

View file

@ -2,6 +2,7 @@ $$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from '../../../support/utils' import [mix linreg clamp fallback] from '../../../support/utils'
import [Box] from '../../../support/box' import [Box] from '../../../support/box'
import [Joining] from '../../../support/gr'
import [DesignParameters] from '../../../meta/aesthetics' import [DesignParameters] from '../../../meta/aesthetics'
import '../../../support/point' as Point import '../../../support/point' as Point
@ -418,15 +419,20 @@ glyph-block Symbol-Math-Relation-Inequality : begin
define l2 : l - Width define l2 : l - Width
define r2 : r - Width define r2 : r - Width
create-glyph 'less.lig2' : glyph-proc create-glyph 'less.lig2' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : LessShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) l r include : LessShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) l r
create-glyph 'greater.lig2' : glyph-proc create-glyph 'greater.lig2' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : GreaterShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) l r include : GreaterShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) l r
create-glyph 'eq.at-lteq.lig2.flat' : glyph-proc create-glyph 'eq.at-lteq.lig2.flat' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : HBar l2 r2 (SymbolMid - dH - lessEqDist) OperatorStroke include : HBar l2 r2 (SymbolMid - dH - lessEqDist) OperatorStroke
create-aliased-glyph 'eq.at-gteq.lig2.flat' create-aliased-glyph 'eq.at-gteq.lig2.flat'
create-glyph 'eq.at-lteq.lig2.slanted' : glyph-proc create-glyph 'eq.at-lteq.lig2.slanted' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : LessShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) l2 r2 OperatorStroke include : LessShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) l2 r2 OperatorStroke
create-glyph 'eq.at-gteq.lig2.slanted' : glyph-proc create-glyph 'eq.at-gteq.lig2.slanted' : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : GreaterShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) l2 r2 OperatorStroke include : GreaterShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) l2 r2 OperatorStroke
select-variant 'eq.at-lteq.lig2' select-variant 'eq.at-lteq.lig2'

View file

@ -2,6 +2,7 @@
$$include '../../../meta/macros.ptl' $$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from '../../../support/utils' import [mix linreg clamp fallback] from '../../../support/utils'
import [Joining] from '../../../support/gr'
import [DesignParameters] from '../../../meta/aesthetics' import [DesignParameters] from '../../../meta/aesthetics'
glyph-module glyph-module
@ -21,13 +22,17 @@ glyph-block Symbol-Punctuation-Bar : begin
include : ForceUpright include : ForceUpright
include : BarShape Middle 0 include : BarShape Middle 0
create-glyph 'ligBarInsideBracketLeft' : BarShape create-glyph 'ligBarInsideBracketLeft' : glyph-proc
[mix SB RightSB DesignParameters.bracketOutside] + HalfStroke * HVContrast Joining.set currentGlyph Joining.Classes.Left
Stroke + [Math.max [AdviceStroke 5] (XH / 12)] include : BarShape
[mix SB RightSB DesignParameters.bracketOutside] + HalfStroke * HVContrast
Stroke + [Math.max [AdviceStroke 5] (XH / 12)]
create-glyph 'ligBarInsideBracketRight' : BarShape create-glyph 'ligBarInsideBracketRight' : glyph-proc
[mix RightSB SB DesignParameters.bracketOutside] - HalfStroke * HVContrast Joining.set currentGlyph Joining.Classes.Right
Stroke + [Math.max [AdviceStroke 5] (XH / 12)] include : BarShape
[mix RightSB SB DesignParameters.bracketOutside] - HalfStroke * HVContrast
Stroke + [Math.max [AdviceStroke 5] (XH / 12)]
define [DoubleBarShape] : glyph-proc define [DoubleBarShape] : glyph-proc
set-base-anchor 'above' Middle ParenTop set-base-anchor 'above' Middle ParenTop

View file

@ -2,6 +2,7 @@
$$include '../../../meta/macros.ptl' $$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from '../../../support/utils' import [mix linreg clamp fallback] from '../../../support/utils'
import [Joining] from '../../../support/gr'
import [DesignParameters] from '../../../meta/aesthetics' import [DesignParameters] from '../../../meta/aesthetics'
glyph-module glyph-module
@ -134,7 +135,9 @@ glyph-block Symbol-Punctuation-Brackets : begin
refer-glyph 'bracketLeft' refer-glyph 'bracketLeft'
MaskBelow SymbolMid MaskBelow SymbolMid
create-glyph 'ligExtBracketLeft' : BracketShape ParenTop ParenBot (Middle - HalfStroke * HVContrast) [mix SB RightSB DesignParameters.bracketInside] create-glyph 'ligExtBracketLeft' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : BracketShape ParenTop ParenBot (Middle - HalfStroke * HVContrast) [mix SB RightSB DesignParameters.bracketInside]
create-glyph 'bracketLeftUpper' 0x23A1 : glyph-proc create-glyph 'bracketLeftUpper' 0x23A1 : glyph-proc
include : ForceUpright include : ForceUpright
@ -175,13 +178,17 @@ glyph-block Symbol-Punctuation-Brackets : begin
turned 'bracketRight' ']' 'bracketLeft' Middle SymbolMid turned 'bracketRight' ']' 'bracketLeft' Middle SymbolMid
turned 'bracketRightUHalf' 0x2E23 'bracketLeftLHalf' Middle SymbolMid turned 'bracketRightUHalf' 0x2E23 'bracketLeftLHalf' Middle SymbolMid
turned 'bracketRightLHalf' 0x2E25 'bracketLeftUHalf' Middle SymbolMid turned 'bracketRightLHalf' 0x2E25 'bracketLeftUHalf' Middle SymbolMid
turned 'ligExtBracketRight' null 'ligExtBracketLeft' Middle SymbolMid
turned 'bracketRightLower' 0x23A6 'bracketLeftUpper' Middle SymbolMid turned 'bracketRightLower' 0x23A6 'bracketLeftUpper' Middle SymbolMid
turned 'bracketRightExtension' 0x23A5 'bracketLeftExtension' Middle SymbolMid turned 'bracketRightExtension' 0x23A5 'bracketLeftExtension' Middle SymbolMid
turned 'bracketRightUpper' 0x23A4 'bracketLeftLower' Middle SymbolMid turned 'bracketRightUpper' 0x23A4 'bracketLeftLower' Middle SymbolMid
turned 'dblBracketRight' 0x27E7 'dblBracketLeft' Middle SymbolMid turned 'dblBracketRight' 0x27E7 'dblBracketLeft' Middle SymbolMid
turned 'bracketBarRight' 0x2046 'bracketBarLeft' Middle SymbolMid turned 'bracketBarRight' 0x2046 'bracketBarLeft' Middle SymbolMid
create-glyph 'ligExtBracketRight' : glyph-proc
include [refer-glyph 'ligExtBracketLeft'] AS_BASE ALSO_METRICS
include : FlipAround Middle SymbolMid
Joining.set currentGlyph Joining.Classes.Left
define [BraceDim] : begin define [BraceDim] : begin
local parenCenter [mix SB RightSB [mix DesignParameters.braceInside DesignParameters.braceOutside 0.5]] local parenCenter [mix SB RightSB [mix DesignParameters.braceInside DesignParameters.braceOutside 0.5]]
local radius : Math.min local radius : Math.min
@ -247,6 +254,7 @@ glyph-block Symbol-Punctuation-Brackets : begin
include : BraceLowerHalfShape SymbolMid bot Stroke include : BraceLowerHalfShape SymbolMid bot Stroke
create-glyph 'ligExtBraceLeft.straight' : glyph-proc create-glyph 'ligExtBraceLeft.straight' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : BraceUpperHalfShape top SymbolMid Stroke 1 include : BraceUpperHalfShape top SymbolMid Stroke 1
include : BraceLowerHalfShape SymbolMid bot Stroke 1 include : BraceLowerHalfShape SymbolMid bot Stroke 1
@ -267,11 +275,15 @@ glyph-block Symbol-Punctuation-Brackets : begin
include : BraceExtensionShape top bot Stroke include : BraceExtensionShape top bot Stroke
turned 'braceRight.straight' null 'braceLeft.straight' Middle SymbolMid turned 'braceRight.straight' null 'braceLeft.straight' Middle SymbolMid
turned 'ligExtBraceRight.straight' null 'ligExtBraceLeft.straight' Middle SymbolMid
turned 'braceRightLower' 0x23AD 'braceLeftUpper' Middle SymbolMid turned 'braceRightLower' 0x23AD 'braceLeftUpper' Middle SymbolMid
turned 'braceRightUpper' 0x23AB 'braceLeftLower' Middle SymbolMid turned 'braceRightUpper' 0x23AB 'braceLeftLower' Middle SymbolMid
turned 'braceRightMiddle' 0x23AC 'braceLeftMiddle' Middle SymbolMid turned 'braceRightMiddle' 0x23AC 'braceLeftMiddle' Middle SymbolMid
create-glyph 'ligExtBraceRight.straight' : glyph-proc
include [refer-glyph 'ligExtBraceLeft.straight'] AS_BASE ALSO_METRICS
include : FlipAround Middle SymbolMid
Joining.set currentGlyph Joining.Classes.Left
define [CurlyBraceShape sw pExt] : glyph-proc define [CurlyBraceShape sw pExt] : glyph-proc
local hs : sw / 2 local hs : sw / 2
local xIns : mix SB RightSB DesignParameters.braceInside local xIns : mix SB RightSB DesignParameters.braceInside
@ -305,10 +317,15 @@ glyph-block Symbol-Punctuation-Brackets : begin
straight.left.end xOus SymbolMid [heading Leftward] straight.left.end xOus SymbolMid [heading Leftward]
create-glyph 'braceLeft.curly' : CurlyBraceShape Stroke 0 create-glyph 'braceLeft.curly' : CurlyBraceShape Stroke 0
create-glyph 'ligExtBraceLeft.curly' : CurlyBraceShape Stroke 1
turned 'braceRight.curly' null 'braceLeft.curly' Middle SymbolMid turned 'braceRight.curly' null 'braceLeft.curly' Middle SymbolMid
turned 'ligExtBraceRight.curly' null 'ligExtBraceLeft.curly' Middle SymbolMid
create-glyph 'ligExtBraceLeft.curly' : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : CurlyBraceShape Stroke 1
create-glyph 'ligExtBraceRight.curly' : glyph-proc
include [refer-glyph 'ligExtBraceLeft.curly'] AS_BASE ALSO_METRICS
include : FlipAround Middle SymbolMid
Joining.set currentGlyph Joining.Classes.Left
select-variant 'braceLeft' '{' select-variant 'braceLeft' '{'
select-variant 'braceRight' '}' select-variant 'braceRight' '}'

View file

@ -2,6 +2,7 @@
$$include '../../../meta/macros.ptl' $$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from '../../../support/utils' import [mix linreg clamp fallback] from '../../../support/utils'
import [Joining] from '../../../support/gr'
import [DesignParameters] from '../../../meta/aesthetics' import [DesignParameters] from '../../../meta/aesthetics'
glyph-module glyph-module
@ -26,7 +27,9 @@ glyph-block Symbol-Punctuation-Dashes : begin
foreach { suffix { yBar } } [Object.entries UnderScoreConfig] : do foreach { suffix { yBar } } [Object.entries UnderScoreConfig] : do
create-glyph "underscore.\(suffix)" : HBarBottom SB RightSB yBar create-glyph "underscore.\(suffix)" : HBarBottom SB RightSB yBar
create-glyph "underscore.jr.\(suffix)" : HBarBottom (joiningOverlap - SB) RightSB yBar create-glyph "underscore.jr.\(suffix)" : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
HBarBottom (joiningOverlap - SB) RightSB yBar
create-glyph "doubleUnderscore.\(suffix)" : composite-proc create-glyph "doubleUnderscore.\(suffix)" : composite-proc
HBarBottom SB RightSB yBar HBarBottom SB RightSB yBar
HBarBottom SB RightSB (yBar - openBoxGap) HBarBottom SB RightSB (yBar - openBoxGap)

View file

@ -2,6 +2,7 @@
$$include '../../../meta/macros.ptl' $$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from '../../../support/utils' import [mix linreg clamp fallback] from '../../../support/utils'
import [Joining] from '../../../support/gr'
import [DesignParameters] from '../../../meta/aesthetics' import [DesignParameters] from '../../../meta/aesthetics'
glyph-module glyph-module
@ -48,6 +49,7 @@ glyph-block Symbol-Other-Phonetic : begin
foreach toneStart [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin foreach toneStart [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin
create-glyph ('toneStart' + toneStart + toneEnd) : glyph-proc create-glyph ('toneStart' + toneStart + toneEnd) : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : intersection include : intersection
Rect CAP 0 Middle Width Rect CAP 0 Middle Width
dispiro dispiro
@ -55,6 +57,7 @@ glyph-block Symbol-Other-Phonetic : begin
corner (Width / 2) [yOfTone toneStart] corner (Width / 2) [yOfTone toneStart]
corner (Width + Width / 2) [yOfTone toneEnd] corner (Width + Width / 2) [yOfTone toneEnd]
create-glyph ('toneSandhiStart' + toneStart + toneEnd) : glyph-proc create-glyph ('toneSandhiStart' + toneStart + toneEnd) : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
include : intersection include : intersection
Rect CAP 0 Middle Width Rect CAP 0 Middle Width
dispiro dispiro
@ -65,6 +68,7 @@ glyph-block Symbol-Other-Phonetic : begin
foreach toneStart [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin foreach toneStart [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin
create-glyph ('toneEnd' + toneStart + toneEnd) : glyph-proc create-glyph ('toneEnd' + toneStart + toneEnd) : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : intersection include : intersection
Rect CAP 0 0 Middle Rect CAP 0 0 Middle
dispiro dispiro
@ -73,6 +77,7 @@ glyph-block Symbol-Other-Phonetic : begin
corner (Width + Width / 2) [yOfTone : mix toneStart toneEnd 2] corner (Width + Width / 2) [yOfTone : mix toneStart toneEnd 2]
include : VBar Middle 0 CAP OperatorStroke include : VBar Middle 0 CAP OperatorStroke
create-glyph ('toneSandhiEnd' + toneStart + toneEnd) : glyph-proc create-glyph ('toneSandhiEnd' + toneStart + toneEnd) : glyph-proc
Joining.set currentGlyph Joining.Classes.Left
include : intersection include : intersection
Rect CAP 0 0 Width Rect CAP 0 0 Width
dispiro dispiro
@ -82,6 +87,7 @@ glyph-block Symbol-Other-Phonetic : begin
foreach toneStart [range 4 downtill 0] : foreach toneMid [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin foreach toneStart [range 4 downtill 0] : foreach toneMid [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin
create-glyph ('toneMid' + toneStart + toneMid + toneEnd) : glyph-proc create-glyph ('toneMid' + toneStart + toneMid + toneEnd) : glyph-proc
Joining.set currentGlyph Joining.Classes.Mid
include : intersection include : intersection
Rect CAP 0 0 Width Rect CAP 0 0 Width
union union
@ -104,3 +110,4 @@ glyph-block Symbol-Other-Phonetic : begin
corner (Width + Width / 2) [yOfTone toneEnd] corner (Width + Width / 2) [yOfTone toneEnd]
create-glyph ('toneSandhiMid' + toneStart + toneMid + toneEnd) : glyph-proc create-glyph ('toneSandhiMid' + toneStart + toneMid + toneEnd) : glyph-proc
include [refer-glyph ('toneMid' + toneStart + toneMid + toneEnd)] AS_BASE ALSO_METRICS include [refer-glyph ('toneMid' + toneStart + toneMid + toneEnd)] AS_BASE ALSO_METRICS
Joining.set currentGlyph Joining.Classes.Mid

View file

@ -2,6 +2,7 @@
$$include '../../../meta/macros.ptl' $$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from '../../../support/utils' import [mix linreg clamp fallback] from '../../../support/utils'
import [Joining] from '../../../support/gr'
import [DesignParameters] from '../../../meta/aesthetics' import [DesignParameters] from '../../../meta/aesthetics'
glyph-module glyph-module
@ -124,13 +125,10 @@ glyph-block Symbol-Punctuation-Slashes-And-Number-Sign : begin
define l : SB - fine / 2 define l : SB - fine / 2
define r : RightSB + fine / 2 define r : RightSB + fine / 2
create-glyph "numberSign.\(suffix)" : union create-glyph "numberSign.\(suffix)" : union [FHBars l l r p] [FVBars l l r p]
FHBars l l r p create-glyph "numberSign.jr.\(suffix)" : glyph-proc
FVBars l l r p Joining.set currentGlyph Joining.Classes.Right
include : union [FHBars (r - Width) l r p] [FVBars (r - Width) l r p]
create-glyph "numberSign.jr.\(suffix)" : union
FHBars (r - Width) l r p
FVBars (r - Width) l r p
select-variant 'numberSign' '#' select-variant 'numberSign' '#'
select-variant 'numberSign.jr' (follow -- 'numberSign') select-variant 'numberSign.jr' (follow -- 'numberSign')

View file

@ -108,6 +108,34 @@ const RequireCcmpDecompose = {
} }
}; };
const Joining = {
get(glyph) {
if (glyph && glyph.related) return glyph.related.joining || 0;
else return 0;
},
set(glyph, cls) {
if (!glyph.related) glyph.related = {};
glyph.related.joining = cls;
},
amendOtName(baseName, cl) {
switch (cl) {
case Joining.Classes.Left:
return `${baseName}.join-l`;
case Joining.Classes.Right:
return `${baseName}.join-r`;
case Joining.Classes.Mid:
return `${baseName}.join-m`;
default:
return baseName;
}
},
Classes: {
Left: 1,
Right: 2,
Mid: 3
}
};
const CvTagCache = new Map(); const CvTagCache = new Map();
function Cv(tag, rank) { function Cv(tag, rank) {
const key = tag + "#" + rank; const key = tag + "#" + rank;
@ -363,6 +391,7 @@ exports.TieMark = TieMark;
exports.TieGlyph = TieGlyph; exports.TieGlyph = TieGlyph;
exports.Radical = Radical; exports.Radical = Radical;
exports.RequireCcmpDecompose = RequireCcmpDecompose; exports.RequireCcmpDecompose = RequireCcmpDecompose;
exports.Joining = Joining;
exports.AnyDerivingCv = AnyDerivingCv; exports.AnyDerivingCv = AnyDerivingCv;
exports.CcmpDecompose = CcmpDecompose; exports.CcmpDecompose = CcmpDecompose;
exports.CvDecompose = CvDecompose; exports.CvDecompose = CvDecompose;
@ -370,4 +399,4 @@ exports.createGrDisplaySheet = createGrDisplaySheet;
exports.DollarShrinkKernel = DollarShrinkKernel; exports.DollarShrinkKernel = DollarShrinkKernel;
exports.DollarShorterBar = DollarShorterBar; exports.DollarShorterBar = DollarShorterBar;
exports.MathSansSerif = MathSansSerif; exports.MathSansSerif = MathSansSerif;
exports.SvInheritableRelations = [DollarShrinkKernel, DollarShorterBar]; exports.SvInheritableRelations = [DollarShrinkKernel, DollarShorterBar, Joining];

View file

@ -178,7 +178,8 @@ const FontInfoOf = computed.group("metadata:font-info-of", async (target, fileNa
derivingVariants: bp.derivingVariants, derivingVariants: bp.derivingVariants,
featureControl: { featureControl: {
noCvSs: bp["no-cv-ss"] || false, noCvSs: bp["no-cv-ss"] || false,
noLigation: bp["no-ligation"] || false noLigation: bp["no-ligation"] || false,
exportGlyphNames: bp["export-glyph-names"] || false
}, },
// Ligations // Ligations
ligations: bp.ligations || null, ligations: bp.ligations || null,