From 4b6dd7376d9ff1f9d0a8ee441838334a9ec3880f Mon Sep 17 00:00:00 2001 From: be5invis Date: Mon, 10 May 2021 19:48:41 -0700 Subject: [PATCH] =?UTF-8?q?=20*=20Variant=20tags=20are=20reordered.=20=20*?= =?UTF-8?q?=20Variant=20names=20of=20certain=20letters=20are=20renamed,=20?= =?UTF-8?q?including:=20=20=20=20-=20Upper=20Gamma=20(`grek-upper-gamma`).?= =?UTF-8?q?=20=20=20=20-=20Variants=20for=20`K`,=20`k`,=20Cyrillic=20Ka=20?= =?UTF-8?q?(`=D0=9A`=20and=20`=D0=BA`).=20=20*=20Add=20more=20serifed=20va?= =?UTF-8?q?riants=20for=20`K`,=20`k`,=20`n`,=20Cyrillic=20Ka=20(`=D0=9A`?= =?UTF-8?q?=20and=20`=D0=BA`)=20and=20Cyrillic=20Ef=20(`=D1=84`)=20to=20be?= =?UTF-8?q?tter=20reproduce=20PT=20Mono=20(#986).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changes/{6.2.0.md => 7.0.0.md} | 7 +- font-src/glyphs/auto-build/transformed.ptl | 2 +- font-src/glyphs/letter/greek/upper-gamma.ptl | 14 +- font-src/glyphs/letter/greek/upper-phi.ptl | 18 +- font-src/glyphs/letter/latin/k.ptl | 115 ++- font-src/glyphs/letter/latin/lower-f.ptl | 2 +- font-src/glyphs/letter/latin/lower-h.ptl | 14 +- font-src/glyphs/letter/latin/lower-n.ptl | 22 +- font-src/support/variant-data.js | 2 + params/variants.toml | 994 ++++++++++++++----- 10 files changed, 849 insertions(+), 341 deletions(-) rename changes/{6.2.0.md => 7.0.0.md} (73%) diff --git a/changes/6.2.0.md b/changes/7.0.0.md similarity index 73% rename from changes/6.2.0.md rename to changes/7.0.0.md index bc13253aa..4788d0dea 100644 --- a/changes/6.2.0.md +++ b/changes/7.0.0.md @@ -1,3 +1,7 @@ + * \[**Breaking**\] Variant tags are reordered. + * \[**Breaking**\] Variant names of certain letters are renamed, including: + - Upper Gamma (`grek-upper-gamma`). + - Variants for `K`, `k`, Cyrillic Ka (`К` and `к`). * Add characters: - Cyrillic Iotified E (`U+0464`, `U+0465`). - Cyrillic Omega (`U+0460`, `U+0461`), Ot (`U+047E`, `U+047F`), Broad Omega (`U+A64C`, `U+A64D`). @@ -14,4 +18,5 @@ - Cyrillic Ghe with Stroke and Hook (`U+04FA`, `U+04FB`). - Cyrillic Ha with Hook (`U+04FC`, `U+04FD`). - Cyrillic Ha with Stroke (`U+04FE`, `U+04FF`). - * Add tailed variants for Cyrillic El, En, Che, Yery and Ya (#972). \ No newline at end of file + * Add tailed variants for Cyrillic El, En, Che, Yery and Ya (#972). + * Add more serifed variants for `K`, `k`, `n`, Cyrillic Ka (`К` and `к`) and Cyrillic Ef (`ф`) to better reproduce PT Mono (#986). \ No newline at end of file diff --git a/font-src/glyphs/auto-build/transformed.ptl b/font-src/glyphs/auto-build/transformed.ptl index 16acf63b2..50c3d5f40 100644 --- a/font-src/glyphs/auto-build/transformed.ptl +++ b/font-src/glyphs/auto-build/transformed.ptl @@ -276,7 +276,7 @@ glyph-block Autobuild-Transformed : begin list 0x1DAF 'nHookBottom' list 0x1DB0 'smcpN' list 0x1DB1 'obar' - list 0x1DB2 'latinphi' + list 0x1DB2 'latn/phi' list 0x1DB3 'sRTail' list 0x1DB4 'esh' list 0x1DB5 'tltail' diff --git a/font-src/glyphs/letter/greek/upper-gamma.ptl b/font-src/glyphs/letter/greek/upper-gamma.ptl index 25cbac08a..70ce77b7a 100644 --- a/font-src/glyphs/letter/greek/upper-gamma.ptl +++ b/font-src/glyphs/letter/greek/upper-gamma.ptl @@ -11,25 +11,27 @@ glyph-block Letter-Greek-Upper-Gamma: begin glyph-block-import Letter-Shared-Shapes : nShoulder CyrDescender CyrHookDescender glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft - define SLAB-AUTO 0 - define SLAB-MOTION 1 + define SLAB-NONE 0 + define SLAB-TR 1 + define SLAB-ALL 2 define GammaBarLeft (SB * 1.5) define [GammaShape top slabType] : glyph-proc include : VBarLeft GammaBarLeft 0 top include : HBarTop (GammaBarLeft - O) (RightSB - OX) top match slabType - [Just SLAB-AUTO] : if SLAB : begin + [Just SLAB-ALL] : begin include : LeftwardTopSerif GammaBarLeft top SideJut include : LeftwardBottomSerif (GammaBarLeft + HVContrast * HalfStroke) 0 Jut include : RightwardBottomSerif (GammaBarLeft + HVContrast * HalfStroke) 0 MidJutSide include : tagged 'serifRT' : DownwardRightSerif (RightSB - OX) top VJut - [Just SLAB-MOTION] : begin + [Just SLAB-TR] : begin include : tagged 'serifRT' : DownwardRightSerif (RightSB - OX) top VJut define GammaConfig : object - standard { SLAB-AUTO SLAB } - motionSerifed { SLAB-MOTION false } + serifless { SLAB-NONE false } + topRightSerifed { SLAB-TR false } + serifed { SLAB-ALL true } foreach { suffix { slabType doSB } } [Object.entries GammaConfig] : do create-glyph "grek/Gamma.\(suffix)" : glyph-proc diff --git a/font-src/glyphs/letter/greek/upper-phi.ptl b/font-src/glyphs/letter/greek/upper-phi.ptl index cb6bfe4c4..56a461e3c 100644 --- a/font-src/glyphs/letter/greek/upper-phi.ptl +++ b/font-src/glyphs/letter/greek/upper-phi.ptl @@ -40,14 +40,21 @@ glyph-block Letter-Greek-Upper-Phi : begin include : VBar df.middle Descender HalfStroke include : VBar df.middle (XH - HalfStroke) CAP - create-glyph 'latinphi' 0x278 : glyph-proc + create-glyph 'cyrl/ef.serifless' : glyph-proc local df : DivFrame para.diversityM 3 include [refer-glyph 'grek/varphi'] AS_BASE ALSO_METRICS - if SLAB : begin - include : tagged 'serifMT' : LeftwardTopSerif df.middle CAP Jut - include : tagged 'serifMB' : CenterBottomSerif df.middle Descender Jut - alias 'cyrl/ef.straight' null 'latinphi' + create-glyph 'cyrl/ef.topSerifed' : glyph-proc + local df : DivFrame para.diversityM 3 + include [refer-glyph 'grek/varphi'] AS_BASE ALSO_METRICS + include : tagged 'serifMT' : LeftwardTopSerif df.middle CAP Jut + + create-glyph 'cyrl/ef.serifed' : glyph-proc + local df : DivFrame para.diversityM 3 + include [refer-glyph 'grek/varphi'] AS_BASE ALSO_METRICS + include : tagged 'serifMT' : LeftwardTopSerif df.middle CAP Jut + include : tagged 'serifMB' : CenterBottomSerif df.middle Descender Jut + create-glyph 'cyrl/ef.cursive' : glyph-proc local df : DivFrame para.diversityM 3 set-width df.width @@ -77,3 +84,4 @@ glyph-block Letter-Greek-Upper-Phi : begin curl xBarRight (0 - O) select-variant 'cyrl/ef' 0x444 + select-variant 'latn/phi' 0x278 (shapeFrom -- 'cyrl/ef') \ No newline at end of file diff --git a/font-src/glyphs/letter/latin/k.ptl b/font-src/glyphs/letter/latin/k.ptl index 76c97d6b6..248cfb392 100644 --- a/font-src/glyphs/letter/latin/k.ptl +++ b/font-src/glyphs/letter/latin/k.ptl @@ -3,6 +3,7 @@ $$include '../../../meta/macros.ptl' import [mix linreg clamp fallback] from '../../../support/utils' import [DesignParameters] from '../../../meta/aesthetics' import [Dotless CvDecompose] from "../../../support/gr" +import [maskBit maskBits popCountByte] from '../../../support/mask-bit' glyph-module @@ -16,13 +17,13 @@ glyph-block Letter-Latin-K : begin local [KBalanceRightCursive slab straightBar] : if slab (Width / 32) : if straightBar (Width / 32) 0 local [KO slab straightBar top stroke] : if straightBar (([if slab (0) (-4)] * OX - stroke / 3) * (XH / top)) 0 - define [KSlabs top left right stroke straightBar] : glyph-proc + define [KSlabs mode top left right stroke straightBar] : glyph-proc local kshRight : right + [KBalanceRight true straightBar] local topSerifX : kshRight - (1.15 * stroke * (Width * 2 / UPM) / 2 - stroke / 2) * HVContrast * [if para.isItalic 1 0] - stroke / 2 * 0.5 * HVContrast local bottomSerifX : kshRight - O * [if para.isItalic 1 0] - include : RightwardTopSerif topSerifX top (SideJut + stroke / 2 * 0.5 * HVContrast) - include : RightwardBottomSerif bottomSerifX 0 SideJut + if [maskBit mode 1] : include : RightwardTopSerif topSerifX top (SideJut + stroke / 2 * 0.5 * HVContrast) + if [maskBit mode 0] : include : RightwardBottomSerif bottomSerifX 0 SideJut define [KStraightLegShapeImpl left right stroke top slabLeft slab] : glyph-proc local fine : AdviceStroke 3.5 @@ -33,7 +34,7 @@ glyph-block Letter-Latin-K : begin local attach (top * 0.42 - stroke) local attach2 (top * 0.72 + stroke) include : intersection - Rect top 0 kshLeft [if slab kshRight (2 * Width)] + Rect top 0 kshLeft [if [maskBit slab 1] kshRight (2 * Width)] dispiro widths.rhs stroke flat (kshRight - Ok) top @@ -51,7 +52,7 @@ glyph-block Letter-Latin-K : begin flat (kshRight - Ok) 0 curl (kshLeft + stroke) attach2 - if slab : include : KSlabs top left right stroke true + include : KSlabs slab top left right stroke true define [KSymmetricLegsImpl leadGap] : function [left right stroke top slabLeft slab] : glyph-proc local fine : AdviceStroke [if leadGap 3.5 3] @@ -64,14 +65,14 @@ glyph-block Letter-Latin-K : begin local yAttach : top * [if leadGap 0.42 0.49] - stroke * [if leadGap 1 (-0.1)] local coYAttach : top - yAttach include : intersection - Rect top (0.5 * top) kshLeft [if slab kshRight (2 * Width)] + Rect top (0.5 * top) kshLeft [if [maskBit slab 1] kshRight (2 * Width)] dispiro widths.rhs stroke flat (kshRight - Ok) top curl [mix (kshRight - Ok) xAttach 2] [mix top yAttach 2] [widths.rhs fine] include : intersection - Rect (0.5 * top) 0 kshLeft [if slab kshRight (2 * Width)] + Rect (0.5 * top) 0 kshLeft [if [maskBit slab 0] kshRight (2 * Width)] dispiro widths.lhs stroke flat (kshRight - Ok) 0 @@ -90,7 +91,7 @@ glyph-block Letter-Latin-K : begin corner (xAttach - 1) coYAttach corner (xAttach - 1) 0 - if slab : include : KSlabs top left right stroke true + include : KSlabs slab top left right stroke true define [KCurlyLegShapeImpl left right stroke top slabLeft slab] : glyph-proc local turn : top * 0.99 @@ -120,7 +121,7 @@ glyph-block Letter-Latin-K : begin corner kshLeft 0 corner kshLeft top - if slab : include : KSlabs top left right stroke false + include : KSlabs slab top left right stroke false define [KCursiveLoopAndLegDimen top straightBar slabLeft slab] : begin define kshLeft : SB + [KBalance slabLeft straightBar] @@ -219,25 +220,29 @@ glyph-block Letter-Latin-K : begin define CyrlVbSw : AdviceStroke 3 define UpperKConfig : object - straight { KStraightLegShapeImpl [if SLAB 1 0] [if SLAB 1 0] [if SLAB 1 0] } - curly { KCurlyLegShapeImpl [if SLAB 1 0] [if SLAB 1 0] [if SLAB 1 0] } - symmetricTouching { [KSymmetricLegsImpl 0] [if SLAB 1 0] [if SLAB 1 0] [if SLAB 1 0] } - symmetricConnected { [KSymmetricLegsImpl : AdviceStroke 6] [if SLAB 1 0] [if SLAB 1 0] [if SLAB 1 0] } - symmetricConnectedVB { [KSymmetricLegsImpl CyrlVbGap] [if SLAB 1 0] [if SLAB 1 0] [if SLAB 1 0] } - straightSmallCyrl { KStraightLegShapeImpl [if SLAB [if para.isItalic 2 1] 0] [if SLAB [if para.isItalic 0 1] 0] [if SLAB [if para.isItalic 0 1] 0] } - curlySmallCyrl { KCurlyLegShapeImpl [if SLAB [if para.isItalic 2 1] 0] [if SLAB [if para.isItalic 0 1] 0] [if SLAB [if para.isItalic 0 1] 0] } - symmetricTouchingSmallCyrl { [KSymmetricLegsImpl 0] [if SLAB [if para.isItalic 2 1] 0] [if SLAB [if para.isItalic 0 1] 0] [if SLAB [if para.isItalic 0 1] 0] } - symmetricConnectedSmallCyrl { [KSymmetricLegsImpl : AdviceStroke 6] [if SLAB [if para.isItalic 2 1] 0] [if SLAB [if para.isItalic 0 1] 0] [if SLAB [if para.isItalic 0 1] 0] } - symmetricConnectedSmallCyrlVB { [KSymmetricLegsImpl CyrlVbGap] [if SLAB [if para.isItalic 2 1] 0] [if SLAB [if para.isItalic 0 1] 0] [if SLAB [if para.isItalic 0 1] 0] } - straightSerifless { KStraightLegShapeImpl 0 0 0 } - curlySerifless { KCurlyLegShapeImpl 0 0 0 } - symmetricTouchingSerifless { [KSymmetricLegsImpl 0] 0 0 0 } - symmetricConnectedSerifless { [KSymmetricLegsImpl : AdviceStroke 6] 0 0 0 } - straightMotionSerifed { KStraightLegShapeImpl 2 0 0 } - curlyMotionSerifed { KCurlyLegShapeImpl 2 0 0 } - symmetricTouchingMotionSerifed { [KSymmetricLegsImpl 0] 2 0 0 } - symmetricConnectedMotionSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 2 0 0 } - symmetricConnectedMotionSerifedVB { [KSymmetricLegsImpl CyrlVbGap] 2 0 0 } + straightSerifless { KStraightLegShapeImpl 0 0 0 } + curlySerifless { KCurlyLegShapeImpl 0 0 0 } + symmetricTouchingSerifless { [KSymmetricLegsImpl 0] 0 0 0 } + symmetricConnectedSerifless { [KSymmetricLegsImpl : AdviceStroke 6] 0 0 0 } + symmetricConnectedSeriflessVB { [KSymmetricLegsImpl CyrlVbGap] 0 0 0 } + + straightTopLeftSerifed { KStraightLegShapeImpl 2 0 0 } + curlyTopLeftSerifed { KCurlyLegShapeImpl 2 0 0 } + symmetricTouchingTopLeftSerifed { [KSymmetricLegsImpl 0] 2 0 0 } + symmetricConnectedTopLeftSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 2 0 0 } + symmetricConnectedTopLeftSerifedVB { [KSymmetricLegsImpl CyrlVbGap] 2 0 0 } + + straightBottomRightSerifed { KStraightLegShapeImpl 0 0 1 } + curlyBottomRightSerifed { KCurlyLegShapeImpl 0 0 1 } + symmetricTouchingBottomRightSerifed { [KSymmetricLegsImpl 0] 0 0 1 } + symmetricConnectedBottomRightSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 0 0 1 } + symmetricConnectedBottomRightSerifedVB { [KSymmetricLegsImpl CyrlVbGap] 0 0 1 } + + straightSerifed { KStraightLegShapeImpl 1 1 3 } + curlySerifed { KCurlyLegShapeImpl 1 1 3 } + symmetricTouchingSerifed { [KSymmetricLegsImpl 0] 1 1 3 } + symmetricConnectedSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 1 1 3 } + symmetricConnectedSerifedVB { [KSymmetricLegsImpl CyrlVbGap] 1 1 3 } define [UpperKLTSerif top sw slabTop straightBar] : match slabTop 2 : LeftwardTopSerif (SB + [KBalance slabTop straightBar]) top SideJut @@ -267,7 +272,7 @@ glyph-block Letter-Latin-K : begin create-glyph "K.\(suffix)" : glyph-proc include : MarkSet.capital include : KBaseShape Stroke CAP - create-derived "KDescender.\(suffix)" : KCyrlNormalDescender CAP straightBar slabTop slabBot + create-derived "KDescender.\(suffix)" : KCyrlNormalDescender CAP straightBar slabTop slabLegs create-glyph "KBar.\(suffix)" : glyph-proc include [refer-glyph "K.\(suffix)"] AS_BASE ALSO_METRICS @@ -287,7 +292,7 @@ glyph-block Letter-Latin-K : begin create-glyph "smcpK.\(suffix)" : glyph-proc include : MarkSet.e include : KBaseShape Stroke XH - create-derived "cyrl/kaDescender.\(suffix)" : KCyrlNormalDescender XH straightBar slabTop slabBot + create-derived "cyrl/kaDescender.\(suffix)" : KCyrlNormalDescender XH straightBar slabTop slabLegs create-glyph "smcpKVBar.\(suffix)" : glyph-proc include : MarkSet.e @@ -322,30 +327,48 @@ glyph-block Letter-Latin-K : begin define LowerKConfig : object - straight { KStraightLegShapeImpl SLAB (SLAB && !para.isItalic) } - curly { KCurlyLegShapeImpl SLAB (SLAB && !para.isItalic) } - cursive { [KCursiveLoopAndLegShapeImpl 0] SLAB (SLAB && !para.isItalic) } - diagonalTailedSerifedCursive { [KCursiveLoopAndLegShapeImpl 1] SLAB (SLAB && !para.isItalic) } - symmetricTouching { [KSymmetricLegsImpl 0] SLAB (SLAB && !para.isItalic) } - symmetricConnected { [KSymmetricLegsImpl : AdviceStroke 6] SLAB (SLAB && !para.isItalic) } - straightMotionSerifed { KStraightLegShapeImpl true false } - curlyMotionSerifed { KCurlyLegShapeImpl true false } - cursiveMotionSerifed { [KCursiveLoopAndLegShapeImpl 0] true false } - diagonalTailedSerifedCursiveMotionSerifed { [KCursiveLoopAndLegShapeImpl 1] true false } - symmetricTouchingMotionSerifed { [KSymmetricLegsImpl 0] true false } - symmetricConnectedMotionSerifed { [KSymmetricLegsImpl : AdviceStroke 6] true false } + straightSerifed { KStraightLegShapeImpl 1 1 3 } + curlySerifed { KCurlyLegShapeImpl 1 1 3 } + cursiveSerifed { [KCursiveLoopAndLegShapeImpl 0] 1 1 3 } + diagonalTailedSerifedCursiveSerifed { [KCursiveLoopAndLegShapeImpl 1] 1 1 3 } + symmetricTouchingSerifed { [KSymmetricLegsImpl 0] 1 1 3 } + symmetricConnectedSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 1 1 3 } + straightSerifless { KStraightLegShapeImpl 0 0 0 } + curlySerifless { KCurlyLegShapeImpl 0 0 0 } + cursiveSerifless { [KCursiveLoopAndLegShapeImpl 0] 0 0 0 } + diagonalTailedSerifedCursiveSerifless { [KCursiveLoopAndLegShapeImpl 1] 0 0 0 } + symmetricTouchingSerifless { [KSymmetricLegsImpl 0] 0 0 0 } + symmetricConnectedSerifless { [KSymmetricLegsImpl : AdviceStroke 6] 0 0 0 } + straightTopLeftSerifed { KStraightLegShapeImpl 1 0 0 } + curlyTopLeftSerifed { KCurlyLegShapeImpl 1 0 0 } + cursiveTopLeftSerifed { [KCursiveLoopAndLegShapeImpl 0] 1 0 0 } + diagonalTailedSerifedCursiveTopLeftSerifed { [KCursiveLoopAndLegShapeImpl 1] 1 0 0 } + symmetricTouchingTopLeftSerifed { [KSymmetricLegsImpl 0] 1 0 0 } + symmetricConnectedTopLeftSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 1 0 0 } + straightBottomRightSerifed { KStraightLegShapeImpl 0 0 1 } + curlyBottomRightSerifed { KCurlyLegShapeImpl 0 0 1 } + cursiveBottomRightSerifed { [KCursiveLoopAndLegShapeImpl 0] 0 0 1 } + diagonalTailedSerifedCursiveBottomRightSerifed { [KCursiveLoopAndLegShapeImpl 1] 0 0 1 } + symmetricTouchingBottomRightSerifed { [KSymmetricLegsImpl 0] 0 0 1 } + symmetricConnectedBottomRightSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 0 0 1 } + straightTlBrSerifed { KStraightLegShapeImpl 1 0 1 } + curlyTlBrSerifed { KCurlyLegShapeImpl 1 0 1 } + cursiveTlBrSerifed { [KCursiveLoopAndLegShapeImpl 0] 1 0 1 } + diagonalTailedSerifedCursiveTlBrSerifed { [KCursiveLoopAndLegShapeImpl 1] 1 0 1 } + symmetricTouchingTlBrSerifed { [KSymmetricLegsImpl 0] 1 0 1 } + symmetricConnectedTlBrSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 1 0 1 } - foreach { suffix { LegsImpl slabTop slabBot } } [Object.entries LowerKConfig] : do + foreach { suffix { LegsImpl slabTop slabBot slabLegs } } [Object.entries LowerKConfig] : do local straightBar : LegsImpl !== KCurlyLegShapeImpl create-glyph "k.\(suffix)" : glyph-proc include : MarkSet.b include : VBarLeft (SB + [KBalance slabTop straightBar]) 0 CAP - include : LegsImpl SB RightSB Stroke XH slabTop slabBot + include : LegsImpl SB RightSB Stroke XH slabTop slabLegs if slabTop : include : LeftwardTopSerif (SB + [KBalance slabTop straightBar]) CAP SideJut if slabBot : include : tagged 'serifLB' CenterBottomSerif (SB + [KBalance slabTop straightBar] + HalfStroke * HVContrast) 0 Jut - create-derived "kDescender.\(suffix)" : KCyrlNormalDescender XH straightBar slabTop slabBot + create-derived "kDescender.\(suffix)" : KCyrlNormalDescender XH straightBar slabTop slabLegs create-glyph "kBar.\(suffix)" : glyph-proc include [refer-glyph "k.\(suffix)"] AS_BASE ALSO_METRICS @@ -353,7 +376,7 @@ glyph-block Letter-Latin-K : begin create-glyph "khooktop.\(suffix)" : glyph-proc include : MarkSet.b - include : LegsImpl SB RightSB Stroke XH straightBar slabTop slabBot + include : LegsImpl SB RightSB Stroke XH straightBar slabTop slabLegs include : KHookTopBar slabTop straightBar if slabBot : include : tagged 'serifLB' CenterBottomSerif (SB + [KBalance slabTop straightBar] + HalfStroke * HVContrast) 0 Jut diff --git a/font-src/glyphs/letter/latin/lower-f.ptl b/font-src/glyphs/letter/latin/lower-f.ptl index aba7e1152..ffcb53694 100644 --- a/font-src/glyphs/letter/latin/lower-f.ptl +++ b/font-src/glyphs/letter/latin/lower-f.ptl @@ -246,7 +246,7 @@ glyph-block Letter-Latin-Lower-F : begin 'flatHookTailedCrossbarAtXHeight' { { NarrowFShape dfNarrowF } { pNarrowSide XH CH-HOOK } { 'if' 'if' } } 'flatHookDiagonalTailedCrossbarAtXHeight' { { NarrowFShape dfNarrowF } { pNarrowSide XH CH-DIAGONAL-HOOK } { 'if' 'if' } } - 'phoneticLeft' { { StandardSmallFShape [DivFrame 1] } { 1 fbar [if SLAB 4 0] } { 'b' 'p' } } + 'phoneticLeft' { { StandardSmallFShape [DivFrame 1] } { 1 fbar [if SLAB CH-SERIF CH-NONE] } { 'b' 'p' } } foreach { suffix {{Body df} {pBar yBar ch} {mk mkTurn}}} [Object.entries SmallFConfig] : do create-glyph "f.\(suffix)" : glyph-proc diff --git a/font-src/glyphs/letter/latin/lower-h.ptl b/font-src/glyphs/letter/latin/lower-h.ptl index 239c6a1d3..c2cef918d 100644 --- a/font-src/glyphs/letter/latin/lower-h.ptl +++ b/font-src/glyphs/letter/latin/lower-h.ptl @@ -50,6 +50,15 @@ glyph-block Letter-Latin-Lower-H : begin include : LeftwardTopSerif SB CAP SideJut include : tagged 'serifRB' : RightwardBottomSerif RightSB 0 SideJut + create-glyph 'h.straightTopLeftSerifed' : glyph-proc + include : MarkSet.b + + include : VBarLeft SB 0 CAP + include : nShoulder + left -- (SB + Stroke * HVContrast) + right -- RightSB + include : LeftwardTopSerif SB CAP SideJut + create-glyph 'h.motionSerifedTailed' : glyph-proc include : MarkSet.b @@ -102,10 +111,9 @@ glyph-block Letter-Latin-Lower-H : begin eject-contour 'serifRB' include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook - create-glyph 'heng.straightMotionSerifed' : glyph-proc + create-glyph 'heng.straightTopLeftSerifed' : glyph-proc include : MarkSet.if - include : refer-glyph "h.straightMotionSerifed" - eject-contour 'serifRB' + include : refer-glyph "h.straightTopLeftSerifed" include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook select-variant 'heng' 0xA727 diff --git a/font-src/glyphs/letter/latin/lower-n.ptl b/font-src/glyphs/letter/latin/lower-n.ptl index 9217acd66..8dab4689f 100644 --- a/font-src/glyphs/letter/latin/lower-n.ptl +++ b/font-src/glyphs/letter/latin/lower-n.ptl @@ -65,6 +65,18 @@ glyph-block Letter-Latin-Lower-N : begin include : NBottomRightSerifItalic set-base-anchor 'trailing' (RightSB - markHalfStroke) 0 + create-glyph 'n.straightTopLeftSerifed' : glyph-proc + include : MarkSet.e + + include : VBarLeft SB 0 XH + include : nShoulder + left -- (SB + Stroke * HVContrast) + right -- RightSB + fine -- ShoulderFine + + include : NTopLeftSerif + set-base-anchor 'trailing' (RightSB - markHalfStroke) 0 + create-glyph 'n.motionSerifedTailed' : glyph-proc include : MarkSet.e @@ -165,10 +177,9 @@ glyph-block Letter-Latin-Lower-N : begin eject-contour 'serifRB' include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook - create-glyph 'eng.straightMotionSerifed' : glyph-proc + create-glyph 'eng.straightTopLeftSerifed' : glyph-proc include : MarkSet.p - include [refer-glyph 'n.straightMotionSerifed'] false - eject-contour 'serifRB' + include [refer-glyph 'n.straightTopLeftSerifed'] false include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook create-glyph 'eng.earlessCornerStraight' : glyph-proc @@ -208,9 +219,8 @@ glyph-block Letter-Latin-Lower-N : begin eject-contour 'serifRB' include : refer-glyph 'rtailBR' - create-glyph 'nHookBottom.straightMotionSerifed' : glyph-proc - include [refer-glyph 'n.straightMotionSerifed'] AS_BASE ALSO_METRICS - eject-contour 'serifRB' + create-glyph 'nHookBottom.straightTopLeftSerifed' : glyph-proc + include [refer-glyph 'n.straightTopLeftSerifed'] AS_BASE ALSO_METRICS include : refer-glyph 'rtailBR' create-glyph 'nHookBottom.earlessCornerStraight' : glyph-proc diff --git a/font-src/support/variant-data.js b/font-src/support/variant-data.js index 7bb889d8c..dc22afe77 100644 --- a/font-src/support/variant-data.js +++ b/font-src/support/variant-data.js @@ -106,6 +106,7 @@ class Prime { gr.variants.push({ key: variant.key, rank: variant.rank, + rankGroup: variant.rankGroup, description: variant.description }); } @@ -120,6 +121,7 @@ class PrimeVariant { this.tag = tag; this.description = cfg.description; this.rank = cfg.rank; + this.rankGroup = cfg.rankGroup || 0; this.selector = cfg.selector; this.nonDeriving = cfg.nonDeriving; } diff --git a/params/variants.toml b/params/variants.toml index 1456e94f2..ff186a592 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -531,60 +531,116 @@ selector.J = "descendingFlatHookSerifed" sampler = "K" tag = "cv11" -[prime.capital-k.variants.straight] +[prime.capital-k.variants.straight-serifless] rank = 1 -description = "`K` with standard shape" -selector.K = "straight" -selector.Khooktop = "straight" +description = "`K` with standard shape, without serifs" +selector.K = "straightSerifless" +selector.Khooktop = "straightSerifless" selector."grek/kappa" = "straightSerifless" -[prime.capital-k.variants.curly] +[prime.capital-k.variants.curly-serifless] rank = 2 -description = "Slightly curly `K`, like Iosevka 2.x" -selector.K = "curly" -selector.Khooktop = "curly" +description = "Slightly curly `K`, like Iosevka 2.x, without serifs" +selector.K = "curlySerifless" +selector.Khooktop = "curlySerifless" selector."grek/kappa" = "curlySerifless" -[prime.capital-k.variants.symmetric-touching] +[prime.capital-k.variants.symmetric-touching-serifless] rank = 3 -description = "`K` with symmetric legs disconnected to the vertical bar" -selector.K = "symmetricTouching" -selector.Khooktop = "symmetricTouching" +description = "`K` with symmetric legs disconnected to the vertical bar, without serifs" +selector.K = "symmetricTouchingSerifless" +selector.Khooktop = "symmetricTouchingSerifless" selector."grek/kappa" = "symmetricTouchingSerifless" -[prime.capital-k.variants.symmetric-connected] +[prime.capital-k.variants.symmetric-connected-serifless] rank = 4 -description = "`K` with symmetric legs connected to the vertical bar" -selector.K = "symmetricConnected" -selector.Khooktop = "symmetricConnected" +description = "`K` with symmetric legs connected to the vertical bar, without serifs" +selector.K = "symmetricConnectedSerifless" +selector.Khooktop = "symmetricConnectedSerifless" selector."grek/kappa" = "symmetricConnectedSerifless" -[prime.capital-k.variants.straight-motion-serifed] +[prime.capital-k.variants.straight-top-left-serifed] rank = 5 -description = "`K` with standard shape and motion serifs" -selector.K = "straightMotionSerifed" -selector.Khooktop = "straight" +description = "`K` with standard shape and serifs at top left" +selector.K = "straightTopLeftSerifed" +selector.Khooktop = "straightSerifless" selector."grek/kappa" = "straightSerifless" -[prime.capital-k.variants.curly-motion-serifed] +[prime.capital-k.variants.curly-top-left-serifed] rank = 6 -description = "Slightly curly `K`, like Iosevka 2.x, with motion serifs" -selector.K = "curlyMotionSerifed" -selector.Khooktop = "curly" +description = "Slightly curly `K`, like Iosevka 2.x, with serifs at top left" +selector.K = "curlyTopLeftSerifed" +selector.Khooktop = "curlySerifless" selector."grek/kappa" = "curlySerifless" -[prime.capital-k.variants.symmetric-touching-motion-serifed] +[prime.capital-k.variants.symmetric-touching-top-left-serifed] rank = 7 -description = "`K` with symmetric legs disconnected to the vertical bar, and motion serifs" -selector.K = "symmetricTouchingMotionSerifed" -selector.Khooktop = "symmetricTouching" +description = "`K` with symmetric legs disconnected to the vertical bar, and serifs at top left" +selector.K = "symmetricTouchingTopLeftSerifed" +selector.Khooktop = "symmetricTouchingSerifless" selector."grek/kappa" = "symmetricTouchingSerifless" -[prime.capital-k.variants.symmetric-connected-motion-serifed] +[prime.capital-k.variants.symmetric-connected-top-left-serifed] rank = 8 -description = "`K` with symmetric legs connected to the vertical bar, and motion serifs" -selector.K = "symmetricConnectedMotionSerifed" -selector.Khooktop = "symmetricConnected" +description = "`K` with symmetric legs connected to the vertical bar, and serifs at top left" +selector.K = "symmetricConnectedTopLeftSerifed" +selector.Khooktop = "symmetricConnectedSerifless" +selector."grek/kappa" = "symmetricConnectedSerifless" + +[prime.capital-k.variants.straight-bottom-right-serifed] +rank = 9 +description = "`K` with standard shape and serifs at bottom right" +selector.K = "straightBottomRightSerifed" +selector.Khooktop = "straightBottomRightSerifed" +selector."grek/kappa" = "straightSerifless" + +[prime.capital-k.variants.curly-bottom-right-serifed] +rank = 10 +description = "Slightly curly `K`, like Iosevka 2.x, with serifs at bottom right" +selector.K = "curlyBottomRightSerifed" +selector.Khooktop = "curlyBottomRightSerifed" +selector."grek/kappa" = "curlySerifless" + +[prime.capital-k.variants.symmetric-touching-bottom-right-serifed] +rank = 11 +description = "`K` with symmetric legs disconnected to the vertical bar, and serifs at bottom right" +selector.K = "symmetricTouchingBottomRightSerifed" +selector.Khooktop = "symmetricTouchingBottomRightSerifed" +selector."grek/kappa" = "symmetricTouchingSerifless" + +[prime.capital-k.variants.symmetric-connected-bottom-right-serifed] +rank = 12 +description = "`K` with symmetric legs connected to the vertical bar, and serifs at bottom right" +selector.K = "symmetricConnectedBottomRightSerifed" +selector.Khooktop = "symmetricConnectedBottomRightSerifed" +selector."grek/kappa" = "symmetricConnectedSerifless" + +[prime.capital-k.variants.straight-serifed] +rank = 13 +description = "`K` with standard shape, and serifs" +selector.K = "straightSerifed" +selector.Khooktop = "straightBottomRightSerifed" +selector."grek/kappa" = "straightSerifless" + +[prime.capital-k.variants.curly-serifed] +rank = 14 +description = "Slightly curly `K`, like Iosevka 2.x, and with serifs" +selector.K = "curlySerifed" +selector.Khooktop = "curlyBottomRightSerifed" +selector."grek/kappa" = "curlySerifless" + +[prime.capital-k.variants.symmetric-touching-serifed] +rank = 15 +description = "`K` with symmetric legs disconnected to the vertical bar, and serifs" +selector.K = "symmetricTouchingSerifed" +selector.Khooktop = "symmetricTouchingBottomRightSerifed" +selector."grek/kappa" = "symmetricTouchingSerifless" + +[prime.capital-k.variants.symmetric-connected-serifed] +rank = 16 +description = "`K` with symmetric legs connected to the vertical bar, and serifs" +selector.K = "symmetricConnectedSerifed" +selector.Khooktop = "symmetricConnectedBottomRightSerifed" selector."grek/kappa" = "symmetricConnectedSerifless" @@ -1766,17 +1822,24 @@ selector.heng = "straight" [prime.h.variants.straight-motion-serifed] rank = 3 -description = "`h` with straight ending" +description = "`h` with straight ending and motion serifs" selector.h = "straightMotionSerifed" selector.hhooktop = "straight" -selector.heng = "straightMotionSerifed" +selector.heng = "straightTopLeftSerifed" [prime.h.variants.motion-serifed-tailed] rank = 4 -description = "`h` with curly tailed ending" +description = "`h` with curly tailed ending and motion serifs" selector.h = "motionSerifedTailed" selector.hhooktop = "tailed" -selector.heng = "straightMotionSerifed" +selector.heng = "straightTopLeftSerifed" + +[prime.h.variants.straight-top-left-serifed] +rank = 5 +description = "`h` with straight ending and serif at top left" +selector.h = "straightTopLeftSerifed" +selector.hhooktop = "straight" +selector.heng = "straightTopLeftSerifed" @@ -1896,89 +1959,222 @@ selector.dotlessj = "diagonalTailedSerifed" sampler = "k" tag = "cv36" -[prime.k.variants.straight] +[prime.k.variants.straight-serifless] rank = 1 -description = "`k` with standard shape" -selector.k = "straight" -selector.khooktop = "straight" -selector.kDescender = "straight" +rankGroup = 1 +description = "`k` with standard shape, and without serifs" +selector.k = "straightSerifless" +selector.khooktop = "straightSerifless" +selector.kDescender = "straightSerifless" -[prime.k.variants.curly] +[prime.k.variants.curly-serifless] rank = 2 -description = "Slightly curly `k`, like Iosevka 2.x" -selector.k = "curly" -selector.khooktop = "curly" -selector.kDescender = "curly" +rankGroup = 1 +description = "Slightly curly `k`, like Iosevka 2.x, and without serifs" +selector.k = "curlySerifless" +selector.khooktop = "curlySerifless" +selector.kDescender = "curlySerifless" -[prime.k.variants.cursive] +[prime.k.variants.cursive-serifless] rank = 3 -description = "`k` with a cursive loop" -selector.k = "cursive" -selector.khooktop = "cursive" -selector.kDescender = "cursive" +rankGroup = 1 +description = "`k` with a cursive loop, and without serifs" +selector.k = "cursiveSerifless" +selector.khooktop = "cursiveSerifless" +selector.kDescender = "cursiveSerifless" -[prime.k.variants.diagonal-tailed-cursive] +[prime.k.variants.diagonal-tailed-cursive-serifless] rank = 4 -description = "`k` with a cursive loop and diagonal tail" -selector.k = "diagonalTailedSerifedCursive" -selector.khooktop = "diagonalTailedSerifedCursive" -selector.kDescender = "cursive" +rankGroup = 1 +description = "`k` with a cursive loop and diagonal tail, and without serifs" +selector.k = "diagonalTailedSerifedCursiveSerifless" +selector.khooktop = "diagonalTailedSerifedCursiveSerifless" +selector.kDescender = "cursiveSerifless" -[prime.k.variants.symmetric-touching] +[prime.k.variants.symmetric-touching-serifless] rank = 5 -description = "`k` with symmetric legs disconnected to the vertical bar" -selector.k = "symmetricTouching" -selector.khooktop = "symmetricTouching" -selector.kDescender = "symmetricTouching" +rankGroup = 1 +description = "`k` with symmetric legs disconnected to the vertical bar, and without serifs" +selector.k = "symmetricTouchingSerifless" +selector.khooktop = "symmetricTouchingSerifless" +selector.kDescender = "symmetricTouchingSerifless" -[prime.k.variants.symmetric-connected] +[prime.k.variants.symmetric-connected-serifless] rank = 6 -description = "`k` with symmetric legs connected to the vertical bar" -selector.k = "symmetricConnected" -selector.khooktop = "symmetricConnected" -selector.kDescender = "symmetricConnected" +rankGroup = 1 +description = "`k` with symmetric legs connected to the vertical bar, and without serifs" +selector.k = "symmetricConnectedSerifless" +selector.khooktop = "symmetricConnectedSerifless" +selector.kDescender = "symmetricConnectedSerifless" -[prime.k.variants.straight-motion-serifed] +[prime.k.variants.straight-top-left-serifed] rank = 7 -description = "`k` with motion serifs" -selector.k = "straightMotionSerifed" -selector.khooktop = "straight" -selector.kDescender = "straightMotionSerifed" +rankGroup = 2 +description = "`k` with serifs at top left" +selector.k = "straightTopLeftSerifed" +selector.khooktop = "straightSerifless" +selector.kDescender = "straightTopLeftSerifed" -[prime.k.variants.curly-motion-serifed] +[prime.k.variants.curly-top-left-serifed] rank = 8 -description = "Slightly curly `k`, like Iosevka 2.x, with motion serifs" -selector.k = "curlyMotionSerifed" -selector.khooktop = "curly" -selector.kDescender = "curlyMotionSerifed" +rankGroup = 2 +description = "Slightly curly `k`, like Iosevka 2.x, with serifs at top left" +selector.k = "curlyTopLeftSerifed" +selector.khooktop = "curlySerifless" +selector.kDescender = "curlyTopLeftSerifed" -[prime.k.variants.cursive-motion-serifed] +[prime.k.variants.cursive-top-left-serifed] rank = 9 -description = "`k` with a cursive loop and motion serifs" -selector.k = "cursiveMotionSerifed" -selector.khooktop = "cursive" -selector.kDescender = "cursiveMotionSerifed" +rankGroup = 2 +description = "`k` with a cursive loop and serifs at top left" +selector.k = "cursiveTopLeftSerifed" +selector.khooktop = "cursiveSerifless" +selector.kDescender = "cursiveTopLeftSerifed" -[prime.k.variants.diagonal-tailed-cursive-motion-serifed] +[prime.k.variants.diagonal-tailed-cursive-top-left-serifed] rank = 10 -description = "`k` with a cursive loop, motion serifs and diagonal tail" -selector.k = "diagonalTailedSerifedCursiveMotionSerifed" -selector.khooktop = "diagonalTailedSerifedCursive" -selector.kDescender = "cursiveMotionSerifed" +rankGroup = 2 +description = "`k` with a cursive loop, diagonal tail and serifs at top left" +selector.k = "diagonalTailedSerifedCursiveTopLeftSerifed" +selector.khooktop = "diagonalTailedSerifedCursiveSerifless" +selector.kDescender = "cursiveTopLeftSerifed" -[prime.k.variants.symmetric-touching-motion-serifed] +[prime.k.variants.symmetric-touching-top-left-serifed] rank = 11 -description = "`k` with symmetric legs disconnected to the vertical bar and motion serifs" -selector.k = "symmetricTouchingMotionSerifed" -selector.khooktop = "symmetricTouching" -selector.kDescender = "symmetricTouchingMotionSerifed" +rankGroup = 2 +description = "`k` with symmetric legs disconnected to the vertical bar and serifs at top left" +selector.k = "symmetricTouchingTopLeftSerifed" +selector.khooktop = "symmetricTouchingSerifless" +selector.kDescender = "symmetricTouchingTopLeftSerifed" -[prime.k.variants.symmetric-connected-motion-serifed] +[prime.k.variants.symmetric-connected-top-left-serifed] rank = 12 -description = "`k` with symmetric legs connected to the vertical bar and motion serifs" -selector.k = "symmetricConnectedMotionSerifed" -selector.khooktop = "symmetricConnected" -selector.kDescender = "symmetricConnectedMotionSerifed" +rankGroup = 2 +description = "`k` with symmetric legs connected to the vertical bar and serifs at top left" +selector.k = "symmetricConnectedTopLeftSerifed" +selector.khooktop = "symmetricConnectedSerifless" +selector.kDescender = "symmetricConnectedTopLeftSerifed" + +[prime.k.variants.straight-bottom-right-serifed] +rank = 13 +rankGroup = 3 +description = "`k` with serifs at bottom right" +selector.k = "straightBottomRightSerifed" +selector.khooktop = "straightBottomRightSerifed" +selector.kDescender = "straightBottomRightSerifed" + +[prime.k.variants.curly-bottom-right-serifed] +rank = 14 +rankGroup = 3 +description = "Slightly curly `k`, like Iosevka 2.x, with serifs at bottom right" +selector.k = "curlyBottomRightSerifed" +selector.khooktop = "curlyBottomRightSerifed" +selector.kDescender = "curlyBottomRightSerifed" + +[prime.k.variants.cursive-bottom-right-serifed] +rank = 15 +rankGroup = 3 +description = "`k` with a cursive loop and serifs at bottom right" +selector.k = "cursiveBottomRightSerifed" +selector.khooktop = "cursiveBottomRightSerifed" +selector.kDescender = "cursiveBottomRightSerifed" + +[prime.k.variants.symmetric-touching-bottom-right-serifed] +rank = 16 +rankGroup = 3 +description = "`k` with symmetric legs disconnected to the vertical bar and serifs at bottom right" +selector.k = "symmetricTouchingBottomRightSerifed" +selector.khooktop = "symmetricTouchingBottomRightSerifed" +selector.kDescender = "symmetricTouchingBottomRightSerifed" + +[prime.k.variants.symmetric-connected-bottom-right-serifed] +rank = 17 +rankGroup = 3 +description = "`k` with symmetric legs connected to the vertical bar and serifs at bottom right" +selector.k = "symmetricConnectedBottomRightSerifed" +selector.khooktop = "symmetricConnectedBottomRightSerifed" +selector.kDescender = "symmetricConnectedBottomRightSerifed" + +[prime.k.variants.straight-top-left-and-bottom-right-serifed] +rank = 18 +rankGroup = 4 +description = "`k` with serifs at top left and bottom right" +selector.k = "straightTlBrSerifed" +selector.khooktop = "straightBottomRightSerifed" +selector.kDescender = "straightTlBrSerifed" + +[prime.k.variants.curly-top-left-and-bottom-right-serifed] +rank = 19 +rankGroup = 4 +description = "Slightly curly `k`, like Iosevka 2.x, with serifs at top left and bottom right" +selector.k = "curlyTlBrSerifed" +selector.khooktop = "curlyBottomRightSerifed" +selector.kDescender = "curlyTlBrSerifed" + +[prime.k.variants.cursive-top-left-and-bottom-right-serifed] +rank = 20 +rankGroup = 4 +description = "`k` with a cursive loop and serifs at top left and bottom right" +selector.k = "cursiveTlBrSerifed" +selector.khooktop = "cursiveBottomRightSerifed" +selector.kDescender = "cursiveTlBrSerifed" + +[prime.k.variants.symmetric-touching-top-left-and-bottom-right-serifed] +rank = 21 +rankGroup = 4 +description = "`k` with symmetric legs disconnected to the vertical bar and serifs at top left and bottom right" +selector.k = "symmetricTouchingTlBrSerifed" +selector.khooktop = "symmetricTouchingBottomRightSerifed" +selector.kDescender = "symmetricTouchingTlBrSerifed" + +[prime.k.variants.symmetric-connected-top-left-and-bottom-right-serifed] +rank = 22 +rankGroup = 4 +description = "`k` with symmetric legs connected to the vertical bar and serifs at top left and bottom right" +selector.k = "symmetricConnectedTlBrSerifed" +selector.khooktop = "symmetricConnectedBottomRightSerifed" +selector.kDescender = "symmetricConnectedTlBrSerifed" + +[prime.k.variants.straight-serifed] +rank = 23 +rankGroup = 4 +description = "`k` with serifs" +selector.k = "straightSerifed" +selector.khooktop = "straightBottomRightSerifed" +selector.kDescender = "straightSerifed" + +[prime.k.variants.curly-serifed] +rank = 24 +rankGroup = 4 +description = "Slightly curly `k`, like Iosevka 2.x, with serifs" +selector.k = "curlySerifed" +selector.khooktop = "curlyBottomRightSerifed" +selector.kDescender = "curlySerifed" + +[prime.k.variants.cursive-serifed] +rank = 25 +rankGroup = 4 +description = "`k` with a cursive loop and serifs" +selector.k = "cursiveSerifed" +selector.khooktop = "cursiveBottomRightSerifed" +selector.kDescender = "cursiveSerifed" + +[prime.k.variants.symmetric-touching-serifed] +rank = 26 +rankGroup = 4 +description = "`k` with symmetric legs disconnected to the vertical bar and serifs" +selector.k = "symmetricTouchingSerifed" +selector.khooktop = "symmetricTouchingBottomRightSerifed" +selector.kDescender = "symmetricTouchingSerifed" + +[prime.k.variants.symmetric-connected-serifed] +rank = 27 +rankGroup = 4 +description = "`k` with symmetric legs connected to the vertical bar and serifs" +selector.k = "symmetricConnectedSerifed" +selector.khooktop = "symmetricConnectedBottomRightSerifed" +selector.kDescender = "symmetricConnectedSerifed" + [prime.l] @@ -2222,16 +2418,23 @@ selector."cyrl/pe.italic" = "tailed" rank = 7 description = "`n` with motion serifs and straight ending" selector.n = "straightMotionSerifed" -selector.eng = "straightMotionSerifed" +selector.eng = "straightTopLeftSerifed" selector."cyrl/pe.italic" = "straightMotionSerifed" [prime.n.variants.motion-serifed-tailed] rank = 8 description = "`n` with motion serifs and a curly tail" selector.n = "motionSerifedTailed" -selector.eng = "straightMotionSerifed" +selector.eng = "straightTopLeftSerifed" selector."cyrl/pe.italic" = "motionSerifedTailed" +[prime.n.variants.straight-top-left-serifed] +rank = 9 +description = "`n` with motion serifs at top left and straight ending" +selector.n = "straightTopLeftSerifed" +selector.eng = "straightTopLeftSerifed" +selector."cyrl/pe.italic" = "straightTopLeftSerifed" + [prime.p] @@ -3251,19 +3454,26 @@ sampler = "Γ" samplerExplain = "Greek capital Gamma" tag = "cv55" -[prime.capital-gamma.variants.standard] +[prime.capital-gamma.variants.serifless] rank = 1 -description = "Standard capital Gamma (`Γ`)" -selector."grek/Gamma" = "standard" -selector."cyrl/Ghe" = "standard" -selector."cyrl/ghe.upright" = "standard" +description = "Standard capital Gamma (`Γ`) without serifs" +selector."grek/Gamma" = "serifless" +selector."cyrl/Ghe" = "serifless" +selector."cyrl/ghe.upright" = "serifless" -[prime.capital-gamma.variants.motion-serifed] +[prime.capital-gamma.variants.top-right-serifed] rank = 2 -description = "Standard capital Gamma (`Γ`) with motion serifs" -selector."grek/Gamma" = "motionSerifed" -selector."cyrl/Ghe" = "motionSerifed" -selector."cyrl/ghe.upright" = "motionSerifed" +description = "Standard capital Gamma (`Γ`) with serifs at top right" +selector."grek/Gamma" = "topRightSerifed" +selector."cyrl/Ghe" = "topRightSerifed" +selector."cyrl/ghe.upright" = "topRightSerifed" + +[prime.capital-gamma.variants.serifed] +rank = 3 +description = "Standard capital Gamma (`Γ`) with motion serifs at top and bottom" +selector."grek/Gamma" = "serifed" +selector."cyrl/Ghe" = "serifed" +selector."cyrl/ghe.upright" = "serifed" @@ -3275,20 +3485,20 @@ tag = "cv56" [prime.latn-epsilon.variants.serifless] rank = 1 description = "Serifless `ɛ`" -selector.'latn/Epsilon' = 'serifless' -selector.'latn/epsilon' = 'serifless' +selector."latn/Epsilon" = "serifless" +selector."latn/epsilon" = "serifless" [prime.latn-epsilon.variants.serifed] rank = 2 description = "`ɛ` with serif" -selector.'latn/Epsilon' = 'serifed' -selector.'latn/epsilon' = 'serifed' +selector."latn/Epsilon" = "serifed" +selector."latn/epsilon" = "serifed" [prime.latn-epsilon.variants.inward-serifed] rank = 3 description = "`ɛ` with inward serif" -selector.'latn/Epsilon' = 'inwardSerifed' -selector.'latn/epsilon' = 'inwardSerifed' +selector."latn/Epsilon" = "inwardSerifed" +selector."latn/epsilon" = "inwardSerifed" @@ -3300,20 +3510,20 @@ tag = "cv57" [prime.latn-reverse-epsilon.variants.serifless] rank = 1 description = "Serifless `ɜ`" -selector.'cyrl/Ze' = 'serifless' -selector.'cyrl/ze' = 'serifless' +selector."cyrl/Ze" = "serifless" +selector."cyrl/ze" = "serifless" [prime.latn-reverse-epsilon.variants.serifed] rank = 2 description = "`ɜ` with serif" -selector.'cyrl/Ze' = 'serifed' -selector.'cyrl/ze' = 'serifed' +selector."cyrl/Ze" = "serifed" +selector."cyrl/ze" = "serifed" [prime.latn-reverse-epsilon.variants.inward-serifed] rank = 3 description = "`ɜ` with inward serif" -selector.'cyrl/Ze' = 'inwardSerifed' -selector.'cyrl/ze' = 'inwardSerifed' +selector."cyrl/Ze" = "inwardSerifed" +selector."cyrl/ze" = "inwardSerifed" @@ -3381,84 +3591,216 @@ selector."grek/lambda" = "curlyTurn" +[prime.cyrl-capital-ka] +sampler = "К" +samplerExplain = "Cyrillic Capital Ka" +tag = "cv60" + +[prime.cyrl-capital-ka.variants.straight-serifless] +rank = 1 +description = "Cyrillic Capital Ka (`К`) with standard shape" +selector."cyrl/Ka" = "straightSerifless" +selector."cyrl/KaVBar" = "symmetricConnectedSeriflessVB" + +[prime.cyrl-capital-ka.variants.curly-serifless] +rank = 2 +description = "Slightly curly Cyrillic Capital Ka (`К`) , like Iosevka 2.x" +selector."cyrl/Ka" = "curlySerifless" +selector."cyrl/KaVBar" = "symmetricConnectedSeriflessVB" + +[prime.cyrl-capital-ka.variants.symmetric-touching-serifless] +rank = 3 +description = "Cyrillic Capital Ka (`К`) with symmetric legs disconnected to the vertical bar" +selector."cyrl/Ka" = "symmetricTouchingSerifless" +selector."cyrl/KaVBar" = "symmetricConnectedSeriflessVB" + +[prime.cyrl-capital-ka.variants.symmetric-connected-serifless] +rank = 4 +description = "Cyrillic Capital Ka (`К`) with symmetric legs connected to the vertical bar" +selector."cyrl/Ka" = "symmetricConnectedSerifless" +selector."cyrl/KaVBar" = "symmetricConnectedSeriflessVB" + +[prime.cyrl-capital-ka.variants.straight-top-left-serifed] +rank = 5 +description = "Cyrillic Capital Ka (`К`) with standard shape and serifs at top left" +selector."cyrl/Ka" = "straightTopLeftSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedTopLeftSerifedVB" + +[prime.cyrl-capital-ka.variants.curly-top-left-serifed] +rank = 6 +description = "Slightly curly Cyrillic Capital Ka (`К`) , like Iosevka 2.x, with serifs at top left" +selector."cyrl/Ka" = "curlyTopLeftSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedTopLeftSerifedVB" + +[prime.cyrl-capital-ka.variants.symmetric-touching-top-left-serifed] +rank = 7 +description = "Cyrillic Capital Ka (`К`) with symmetric legs disconnected to the vertical bar, and serifs at top left" +selector."cyrl/Ka" = "symmetricTouchingTopLeftSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedTopLeftSerifedVB" + +[prime.cyrl-capital-ka.variants.symmetric-connected-top-left-serifed] +rank = 8 +description = "Cyrillic Capital Ka (`К`) with symmetric legs connected to the vertical bar, and serifs at top left" +selector."cyrl/Ka" = "symmetricConnectedTopLeftSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedTopLeftSerifedVB" + +[prime.cyrl-capital-ka.variants.straight-bottom-right-serifed] +rank = 9 +description = "Cyrillic Capital Ka (`К`) with standard shape and serifs at bottom right" +selector."cyrl/Ka" = "straightBottomRightSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedBottomRightSerifedVB" + +[prime.cyrl-capital-ka.variants.curly-bottom-right-serifed] +rank = 10 +description = "Slightly curly Cyrillic Capital Ka (`К`) , like Iosevka 2.x, with serifs at bottom right" +selector."cyrl/Ka" = "curlyBottomRightSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedBottomRightSerifedVB" + +[prime.cyrl-capital-ka.variants.symmetric-touching-bottom-right-serifed] +rank = 11 +description = "Cyrillic Capital Ka (`К`) with symmetric legs disconnected to the vertical bar, and serifs at bottom right" +selector."cyrl/Ka" = "symmetricTouchingBottomRightSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedBottomRightSerifedVB" + +[prime.cyrl-capital-ka.variants.symmetric-connected-bottom-right-serifed] +rank = 12 +description = "Cyrillic Capital Ka (`К`) with symmetric legs connected to the vertical bar, and serifs at bottom right" +selector."cyrl/Ka" = "symmetricConnectedBottomRightSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedBottomRightSerifedVB" + +[prime.cyrl-capital-ka.variants.straight-serifed] +rank = 9 +description = "Cyrillic Capital Ka (`К`) with standard shape and serifs" +selector."cyrl/Ka" = "straightSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedSerifedVB" + +[prime.cyrl-capital-ka.variants.curly-serifed] +rank = 10 +description = "Slightly curly Cyrillic Capital Ka (`К`) , like Iosevka 2.x, with serifs" +selector."cyrl/Ka" = "curlySerifed" +selector."cyrl/KaVBar" = "symmetricConnectedSerifedVB" + +[prime.cyrl-capital-ka.variants.symmetric-touching-serifed] +rank = 11 +description = "Cyrillic Capital Ka (`К`) with symmetric legs disconnected to the vertical bar, and serifs" +selector."cyrl/Ka" = "symmetricTouchingSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedSerifedVB" + +[prime.cyrl-capital-ka.variants.symmetric-connected-serifed] +rank = 12 +description = "Cyrillic Capital Ka (`К`) with symmetric legs connected to the vertical bar, and serifs" +selector."cyrl/Ka" = "symmetricConnectedSerifed" +selector."cyrl/KaVBar" = "symmetricConnectedSerifedVB" + + + [prime.cyrl-ka] sampler = "к" samplerExplain = "Cyrillic Ka" -tag = "cv60" +tag = "cv61" -[prime.cyrl-ka.variants.straight] +[prime.cyrl-ka.variants.straight-serifless] rank = 1 -description = "Cyrillic Ka (`К`/`к`) with standard shape" -selector."cyrl/Ka" = "straight" -selector."cyrl/ka" = "straightSmallCyrl" -selector."cyrl/KaVBar" = "symmetricConnectedVB" -selector."cyrl/kaVBar" = "symmetricConnectedSmallCyrlVB" +description = "Cyrillic Lower Ka (`к`) with standard shape, and without serifs" +selector."cyrl/ka" = "straightSerifless" +selector."cyrl/kaVBar" = "symmetricConnectedSeriflessVB" -[prime.cyrl-ka.variants.curly] +[prime.cyrl-ka.variants.curly-serifless] rank = 2 -description = "Slightly curly Cyrillic Ka (`К`/`к`) , like Iosevka 2.x" -selector."cyrl/Ka" = "curly" -selector."cyrl/ka" = "curlySmallCyrl" -selector."cyrl/KaVBar" = "symmetricConnectedVB" -selector."cyrl/kaVBar" = "symmetricConnectedSmallCyrlVB" +description = "Slightly curly Cyrillic Lower Ka (`к`) , like Iosevka 2.x, and without serifs" +selector."cyrl/ka" = "curlySerifless" +selector."cyrl/kaVBar" = "symmetricConnectedSeriflessVB" -[prime.cyrl-ka.variants.symmetric-touching] +[prime.cyrl-ka.variants.symmetric-touching-serifless] rank = 3 -description = "Cyrillic Ka (`К`/`к`) with symmetric legs disconnected to the vertical bar" -selector."cyrl/Ka" = "symmetricTouching" -selector."cyrl/ka" = "symmetricTouchingSmallCyrl" -selector."cyrl/KaVBar" = "symmetricConnectedVB" -selector."cyrl/kaVBar" = "symmetricConnectedSmallCyrlVB" +description = "Cyrillic Lower Ka (`к`) with symmetric legs disconnected to the vertical bar, and without serifs" +selector."cyrl/ka" = "symmetricTouchingSerifless" +selector."cyrl/kaVBar" = "symmetricConnectedSeriflessVB" -[prime.cyrl-ka.variants.symmetric-connected] +[prime.cyrl-ka.variants.symmetric-connected-serifless] rank = 4 -description = "Cyrillic Ka (`К`/`к`) with symmetric legs connected to the vertical bar" -selector."cyrl/Ka" = "symmetricConnected" -selector."cyrl/ka" = "symmetricConnectedSmallCyrl" -selector."cyrl/KaVBar" = "symmetricConnectedVB" -selector."cyrl/kaVBar" = "symmetricConnectedSmallCyrlVB" +description = "Cyrillic Lower Ka (`к`) with symmetric legs connected to the vertical bar, and without serifs" +selector."cyrl/ka" = "symmetricConnectedSerifless" +selector."cyrl/kaVBar" = "symmetricConnectedSeriflessVB" -[prime.cyrl-ka.variants.straight-motion-serifed] +[prime.cyrl-ka.variants.straight-top-left-serifed] rank = 5 -description = "Cyrillic Ka (`К`/`к`) with standard shape and motion serifs" -selector."cyrl/Ka" = "straightMotionSerifed" -selector."cyrl/ka" = "straightMotionSerifed" -selector."cyrl/KaVBar" = "symmetricConnectedMotionSerifedVB" -selector."cyrl/kaVBar" = "symmetricConnectedMotionSerifedVB" +description = "Cyrillic Lower Ka (`к`) with standard shape and serifs at top left" +selector."cyrl/ka" = "straightTopLeftSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedTopLeftSerifedVB" - -[prime.cyrl-ka.variants.curly-motion-serifed] +[prime.cyrl-ka.variants.curly-top-left-serifed] rank = 6 -description = "Slightly curly Cyrillic Ka (`К`/`к`) , like Iosevka 2.x, with motion serifs" -selector."cyrl/Ka" = "curlyMotionSerifed" -selector."cyrl/ka" = "curlyMotionSerifed" -selector."cyrl/KaVBar" = "symmetricConnectedMotionSerifedVB" -selector."cyrl/kaVBar" = "symmetricConnectedMotionSerifedVB" +description = "Slightly curly Cyrillic Lower Ka (`к`) , like Iosevka 2.x, with serifs at top left" +selector."cyrl/ka" = "curlyTopLeftSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedTopLeftSerifedVB" - -[prime.cyrl-ka.variants.symmetric-touching-motion-serifed] +[prime.cyrl-ka.variants.symmetric-touching-top-left-serifed] rank = 7 -description = "Cyrillic Ka (`К`/`к`) with symmetric legs disconnected to the vertical bar, and motion serifs" -selector."cyrl/Ka" = "symmetricTouchingMotionSerifed" -selector."cyrl/ka" = "symmetricTouchingMotionSerifed" -selector."cyrl/KaVBar" = "symmetricConnectedMotionSerifedVB" -selector."cyrl/kaVBar" = "symmetricConnectedMotionSerifedVB" +description = "Cyrillic Lower Ka (`к`) with symmetric legs disconnected to the vertical bar, and serifs at top left" +selector."cyrl/ka" = "symmetricTouchingTopLeftSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedTopLeftSerifedVB" - -[prime.cyrl-ka.variants.symmetric-connected-motion-serifed] +[prime.cyrl-ka.variants.symmetric-connected-top-left-serifed] rank = 8 -description = "Cyrillic Ka (`К`/`к`) with symmetric legs connected to the vertical bar, and motion serifs" -selector."cyrl/Ka" = "symmetricConnectedMotionSerifed" -selector."cyrl/ka" = "symmetricConnectedMotionSerifed" -selector."cyrl/KaVBar" = "symmetricConnectedMotionSerifedVB" -selector."cyrl/kaVBar" = "symmetricConnectedMotionSerifedVB" +description = "Cyrillic Lower Ka (`к`) with symmetric legs connected to the vertical bar, and serifs at top left" +selector."cyrl/ka" = "symmetricConnectedTopLeftSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedTopLeftSerifedVB" + +[prime.cyrl-ka.variants.straight-bottom-right-serifed] +rank = 9 +description = "Cyrillic Lower Ka (`к`) with standard shape and serifs at bottom right" +selector."cyrl/ka" = "straightBottomRightSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedBottomRightSerifedVB" + +[prime.cyrl-ka.variants.curly-bottom-right-serifed] +rank = 10 +description = "Slightly curly Cyrillic Lower Ka (`к`) , like Iosevka 2.x, with serifs at bottom right" +selector."cyrl/ka" = "curlyBottomRightSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedBottomRightSerifedVB" + +[prime.cyrl-ka.variants.symmetric-touching-bottom-right-serifed] +rank = 11 +description = "Cyrillic Lower Ka (`к`) with symmetric legs disconnected to the vertical bar, and serifs at bottom right" +selector."cyrl/ka" = "symmetricTouchingBottomRightSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedBottomRightSerifedVB" + +[prime.cyrl-ka.variants.symmetric-connected-bottom-right-serifed] +rank = 12 +description = "Cyrillic Lower Ka (`к`) with symmetric legs connected to the vertical bar, and serifs at bottom right" +selector."cyrl/ka" = "symmetricConnectedBottomRightSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedBottomRightSerifedVB" + +[prime.cyrl-ka.variants.straight-serifed] +rank = 13 +description = "Cyrillic Lower Ka (`к`) with standard shape and serifs" +selector."cyrl/ka" = "straightSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedSerifedVB" + +[prime.cyrl-ka.variants.curly-serifed] +rank = 14 +description = "Slightly curly Cyrillic Lower Ka (`к`) , like Iosevka 2.x, with serifs" +selector."cyrl/ka" = "curlySerifed" +selector."cyrl/kaVBar" = "symmetricConnectedSerifedVB" + +[prime.cyrl-ka.variants.symmetric-touching-serifed] +rank = 15 +description = "Cyrillic Lower Ka (`к`) with symmetric legs disconnected to the vertical bar, and serifs" +selector."cyrl/ka" = "symmetricTouchingSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedSerifedVB" + +[prime.cyrl-ka.variants.symmetric-connected-serifed] +rank = 16 +description = "Cyrillic Lower Ka (`к`) with symmetric legs connected to the vertical bar, and serifs" +selector."cyrl/ka" = "symmetricConnectedSerifed" +selector."cyrl/kaVBar" = "symmetricConnectedSerifedVB" [prime.cyrl-el] sampler = "л" samplerExplain = "Cyrillic Lower El" -tag = "cv90" +tag = "cv62" [prime.cyrl-el.variants.straight] rank = 1 @@ -3475,7 +3817,7 @@ selector."cyrl/el" = "tailed" [prime.cyrl-en] sampler = "н" samplerExplain = "Cyrillic Lower En" -tag = "cv91" +tag = "cv63" [prime.cyrl-en.variants.standard] rank = 1 @@ -3497,24 +3839,50 @@ selector."cyrl/en" = "motionSerifed" [prime.cyrl-ef] sampler = "ф" samplerExplain = "Cyrillic Lower Ef" -tag = "cv92" +tag = "cv64" -[prime.cyrl-ef.variants.straight] +[prime.cyrl-ef.variants.serifless] rank = 1 -description = "Cyrillic Lower Ef (`ф`) with standard shape" -selector."cyrl/ef" = "straight" +description = "Cyrillic Lower Ef (`ф`) with standard shape and without serifs" +selector."cyrl/ef" = "serifless" [prime.cyrl-ef.variants.cursive] -description = "Cyrillic Lower Ef (`ф`) with cursive shape" rank = 2 +description = "Cyrillic Lower Ef (`ф`) with cursive shape" selector."cyrl/ef" = "cursive" +[prime.cyrl-ef.variants.top-serifed] +rank = 3 +description = "Cyrillic Lower Ef (`ф`) with standard shape and serif at top" +selector."cyrl/ef" = "topSerifed" + +[prime.cyrl-ef.variants.serifed] +rank = 4 +description = "Cyrillic Lower Ef (`ф`) with standard shape and serifs at top and bottom" +selector."cyrl/ef" = "serifed" + + + +[prime.latn-phi] +# Untagged -- shape change only +[prime.latn-phi.variants.serifless] +rank = 1 +selector."latn/phi" = "serifless" + +[prime.latn-phi.variants.top-serifed] +rank = 2 +selector."latn/phi" = "topSerifed" + +[prime.latn-phi.variants.serifed] +rank = 3 +selector."latn/phi" = "serifed" + [prime.cyrl-che] sampler = "ч" samplerExplain = "Cyrillic Lower Che" -tag = "cv93" +tag = "cv65" [prime.cyrl-che.variants.standard] rank = 1 @@ -3531,7 +3899,7 @@ selector."cyrl/che" = "tailed" [prime.cyrl-capital-u] sampler = "У" samplerExplain = "Cyrillic Capital U" -tag = "cv61" +tag = "cv66" [prime.cyrl-capital-u.variants.straight] rank = 1 @@ -3568,7 +3936,7 @@ selector."cyrl/U" = "cursiveFlatHook" [prime.cyrl-ya] sampler = "я" samplerExplain = "Cyrillic Lower Ya" -tag = "cv94" +tag = "cv67" [prime.cyrl-ya.variants.straight] rank = 1 @@ -3665,7 +4033,7 @@ selector."cyrl/Lje" = "cursive" [prime.cyrl-yeri] sampler = "ь" samplerExplain = "Cyrillic Lower Yeri and related letters" -tag = "cv95" +tag = "cv68" [prime.cyrl-yeri.variants.corner] rank = 1 @@ -3699,7 +4067,7 @@ selector."cyrl/lje" = "cursive" [prime.cyrl-yery] sampler = "ы" samplerExplain = "Cyrillic Lower Yery" -tag = "cv96" +tag = "cv69" [prime.cyrl-yery.variants.corner] rank = 1 @@ -3735,7 +4103,7 @@ selector."cyrl/yery" = "cursiveTailed" [prime.zero] sampler = "0" -tag = "cv62" +tag = "cv70" [prime.zero.variants.unslashed] rank = 1 @@ -3791,7 +4159,7 @@ selector.zero = "longDottedOval" [prime.one] sampler = "1" -tag = "cv63" +tag = "cv71" [prime.one.variants.nobase] rank = 1 @@ -3832,7 +4200,7 @@ selector.one = "baseFlatTopSerif" [prime.two] sampler = "2" -tag = "cv64" +tag = "cv72" [prime.two.variants.straight-neck] rank = 1 @@ -3848,7 +4216,7 @@ selector.two = "curlyNeck" [prime.three] sampler = "3" -tag = "cv65" +tag = "cv73" [prime.three.variants.flattop] rank = 1 @@ -3864,7 +4232,7 @@ selector.three = "twoarcs" [prime.four] sampler = "4" -tag = "cv66" +tag = "cv74" [prime.four.variants.closed] rank = 1 @@ -3900,7 +4268,7 @@ selector.four = "openNonCrossing" [prime.five] sampler = "5" -tag = "cv67" +tag = "cv75" [prime.five.variants.vertical-upper-left-bar] rank = 1 @@ -3916,7 +4284,7 @@ selector.five = "obliqueUpperLeftBar" [prime.six] sampler = "6" -tag = "cv68" +tag = "cv76" [prime.six.variants.closed-contour] rank = 1 @@ -3937,7 +4305,7 @@ selector.six = "straightBar" [prime.seven] sampler = "7" -tag = "cv69" +tag = "cv77" [prime.seven.variants.straight-serifless] rank = 1 @@ -4003,7 +4371,7 @@ selector.seven = "curlyCrossbarSerifed" [prime.eight] sampler = "8" -tag = "cv70" +tag = "cv78" [prime.eight.variants.crossing] rank = 1 @@ -4024,7 +4392,7 @@ selector.eight = "crossingAsymmetric" [prime.nine] sampler = "9" -tag = "cv71" +tag = "cv79" [prime.nine.variants.closed-contour] rank = 1 @@ -4045,7 +4413,7 @@ selector.nine = "straightBar" [prime.tilde] sampler = "~" -tag = "cv72" +tag = "cv80" [prime.tilde.variants.high] rank = 1 @@ -4061,7 +4429,7 @@ selector.asciiTilde = "low" [prime.asterisk] sampler = "*" -tag = "cv73" +tag = "cv81" [prime.asterisk.variants.penta-high] rank = 1 @@ -4115,7 +4483,7 @@ selector."asterisk/lowered" = "turnHexLow" [prime.underscore] sampler = "_" -tag = "cv74" +tag = "cv82" [prime.underscore.variants.above-baseline] rank = 1 @@ -4136,7 +4504,7 @@ selector.underscore = "low" [prime.paragraph-sign] sampler = "¶" -tag = "cv75" +tag = "cv83" [prime.paragraph-sign.variants.high] rank = 1 @@ -4154,7 +4522,7 @@ selector.revertParagraph = "low" [prime.caret] sampler = "^" -tag = "cv76" +tag = "cv84" [prime.caret.variants.high] rank = 1 @@ -4175,7 +4543,7 @@ selector.asciiCaret = "low" [prime.paren] sampler = "( )" -tag = "cv77" +tag = "cv85" [prime.paren.variants.normal] rank = 1 @@ -4199,7 +4567,7 @@ selector.parenRight = "flatArc" [prime.brace] sampler = "{ }" -tag = "cv78" +tag = "cv86" [prime.brace.variants.straight] rank = 1 @@ -4217,7 +4585,7 @@ selector.braceRight = "curly" [prime.number-sign] sampler = "#" -tag = "cv79" +tag = "cv87" [prime.number-sign.variants.upright] rank = 1 @@ -4243,7 +4611,7 @@ selector.numberSign = "slantedOpen" [prime.ampersand] sampler = "&" -tag = "cv80" +tag = "cv88" [prime.ampersand.variants.closed] rank = 1 @@ -4284,7 +4652,7 @@ selector.ampersand = "flatTop" [prime.at] sampler = "@" -tag = "cv81" +tag = "cv89" [prime.at.variants.threefold] rank = 1 @@ -4305,7 +4673,7 @@ selector.at = "short" [prime.dollar] sampler = "$" -tag = "cv82" +tag = "cv90" [prime.dollar.variants.open] rank = 1 @@ -4341,7 +4709,7 @@ selector.dollar = "interruptedCap" [prime.cent] sampler = "¢" -tag = "cv83" +tag = "cv91" [prime.cent.variants.open] rank = 1 @@ -4362,7 +4730,7 @@ selector.cent = "barInterrupted" [prime.percent] sampler = "%" -tag = "cv84" +tag = "cv92" [prime.percent.variants.dots] rank = 1 @@ -4396,7 +4764,7 @@ selector."permille.WWID" = "ringsContinuousSlashAlsoConnected" [prime.bar] sampler = "|" -tag = "cv85" +tag = "cv93" slopeDependent = true [prime.bar.variants.natural-slope] @@ -4413,7 +4781,7 @@ selector."bar.italic" = "forceUpright" [prime.lig-ltgteq] sampler = "<= >=" -tag = "cv86" +tag = "cv94" [prime.lig-ltgteq.variants.flat] rank = 1 @@ -4430,24 +4798,24 @@ selector."eq.at-gteq.lig2" = "slanted" [prime.ascii-single-quote] -sampler = "'" -tag = "cv87" +sampler = '"' +tag = "cv95" [prime.ascii-single-quote.variants.straight] rank = 1 -description = "Show ASCII quote (`'`) as short vertical straight bar." +description = 'Show ASCII quote (`"`) as short vertical straight bar.' selector.asciiSingleQuote = "straight" [prime.ascii-single-quote.variants.raised-comma] rank = 2 -description = "Show ASCII quote (`'`) as raised comma." +description = 'Show ASCII quote (`"`) as raised comma.' selector.asciiSingleQuote = "raisedComma" [prime.ascii-grave] sampler = "`" -tag = "cv88" +tag = "cv96" [prime.ascii-grave.variants.straight] rank = 1 @@ -4468,7 +4836,7 @@ selector.asciiGrave = "raisedTurnComma" [prime.question] sampler = "?" -tag = "cv89" +tag = "cv97" [prime.question.variants.smooth] rank = 1 @@ -4510,7 +4878,7 @@ capital-g = "toothed-serifless-hooked" capital-h = "standard" capital-i = "serifed" capital-j = "serifed" -capital-k = "straight" +capital-k = "straight-serifless" capital-l = "standard" capital-m = "hanging" capital-n = "standard" @@ -4541,19 +4909,21 @@ z = "straight-serifless" # Non-latin long-s = "standard" turn-v = "straight" +latn-phi = "serifless" lower-alpha = "crossing" -capital-gamma = "standard" +capital-gamma = "serifless" latn-epsilon = "serifless" latn-reverse-epsilon = "serifless" lower-iota = "serifed-flat-tailed" lower-lambda = "straight" -cyrl-ka = "symmetric-connected" +cyrl-capital-ka = "symmetric-connected-serifless" +cyrl-ka = "symmetric-connected-serifless" cyrl-el = "straight" cyrl-en = "standard" cyrl-che = "standard" cyrl-capital-u = "straight" cyrl-ya = "straight" -cyrl-ef = "straight" +cyrl-ef = "serifless" cyrl-capital-yeri = "corner" cyrl-yeri = "corner" cyrl-yery = "corner" @@ -4603,7 +4973,7 @@ e = "flat-crossbar" f = "serifless" i = "serifed" j = "serifed" -k = "straight" +k = "straight-serifless" l = "serifed" u = "toothed" y = "straight" @@ -4616,7 +4986,7 @@ e = "rounded" f = "flat-hook-tailed" i = "serifed-tailed" j = "serifed" -k = "cursive" +k = "cursive-serifless" l = "serifed-tailed" u = "tailed" y = "cursive" @@ -4633,6 +5003,7 @@ capital-b = "standard-bilateral-serifed" capital-c = "unilateral-serifed" capital-d = "standard-bilateral-serifed" capital-g = "toothed-serifed-hooked" +capital-k = "straight-serifed" capital-s = "bilateral-serifed" capital-t = "serifed" capital-x = "straight-serifed" @@ -4644,13 +5015,19 @@ x = "straight-serifed" z = "straight-serifed" one = "base" seven = "straight-serifed" -latn-epsilon = 'serifed' -latn-reverse-epsilon = 'serifed' +latn-phi = "serifed" +capital-gamma = "serifed" +latn-epsilon = "serifed" +latn-reverse-epsilon = "serifed" +cyrl-ef = "serifed" +cyrl-capital-ka = "symmetric-connected-serifed" +cyrl-ka = "symmetric-connected-serifed" cyrl-capital-u = "straight-turn" [composite.slab.upright-oblique] d = "toothed-serifed" f = "serifed" +k = "straight-serifed" r = "serifed" y = "straight-turn" lower-lambda = "straight-turn" @@ -4659,7 +5036,7 @@ lower-lambda = "straight-turn" d = "tailed-serifed" c = "unilateral-inward-serifed" f = "flat-hook-tailed" -k = "diagonal-tailed-cursive" +k = "diagonal-tailed-cursive-top-left-serifed" r = "top-serifed" s = "bilateral-inward-serifed" v = "straight-motion-serifed" @@ -4667,6 +5044,9 @@ w = "straight-motion-serifed" x = "cursive" y = "cursive" z = "cursive" +latn-phi = "serifless" +cyrl-ef = "cursive" +cyrl-ka = "symmetric-connected-top-left-serifed" cyrl-yeri = "cursive" cyrl-yery = "cursive" @@ -4677,7 +5057,7 @@ description = "Andale Mono Style" [composite.ss01.design] capital-g = "toothless-corner-serifless-hooked" -capital-k = "straight" +capital-k = "straight-serifless" a = "double-storey" d = "toothed-serifless" e = "flat-crossbar" @@ -4685,7 +5065,7 @@ f = "serifless" g = "double-storey" i = "hooky" j = "serifed" -k = "straight" +k = "straight-serifless" l = "zshaped" u = "toothed" y = "straight-turn" @@ -4709,9 +5089,11 @@ at = "fourfold" percent = "rings-continuous-slash" [composite.ss01.slab-override.design] +capital-k = "straight-serifed" capital-g = "toothless-corner-serifed-hooked" d = "toothed-serifed" f = "serifed" +k = "straight-serifed" [composite.ss02] @@ -4722,7 +5104,7 @@ description = "Anonymous Pro Style" capital-c = "unilateral-serifed" capital-g = "toothless-rounded-serifed-hooked" capital-j = "serifless" -capital-k = "straight" +capital-k = "straight-serifless" capital-s = "bilateral-serifed" capital-x = "straight-serifed" capital-y = "straight-serifed" @@ -4734,7 +5116,7 @@ f = "flat-hook-serifed" g = "single-storey" i = "serifed" j = "serifed" -k = "straight" +k = "straight-serifless" l = "serifed" r = "serifed" u = "toothed" @@ -4756,6 +5138,10 @@ brace = "straight" at = "fourfold" percent = "rings-continuous-slash" +[composite.ss02.slab-override.design] +capital-k = "straight-serifed" +k = "straight-serifed" + [composite.ss03] @@ -4764,14 +5150,14 @@ description = "Consolas Style" [composite.ss03.design] capital-g = "toothless-corner-serifless-hooked" -capital-k = "symmetric-touching" +capital-k = "symmetric-touching-serifless" capital-m = "slanted-sides-hanging" a = "double-storey" d = "toothed-serifless" g = "double-storey" i = "serifed" j = "serifed" -k = "symmetric-touching" +k = "symmetric-touching-serifless" l = "serifed" u = "toothed" y = "straight-turn" @@ -4797,13 +5183,18 @@ question = "corner" a = "single-storey" f = "tailed" i = "serifed-tailed" -k = "cursive" +k = "cursive-serifless" l = "tailed" lower-iota = "serifed-tailed" [composite.ss03.slab-override.design] capital-g = "toothless-corner-serifed-hooked" +capital-k = "symmetric-touching-serifed" d = "toothed-serifed" +k = "symmetric-touching-serifed" + +[composite.ss03.slab-override.italic] +k = "cursive-serifed" @@ -4813,21 +5204,22 @@ description = "Menlo Style" [composite.ss04.design] capital-g = "toothless-corner-serifless-hooked" -capital-k = "straight" +capital-k = "straight-serifless" capital-q = "straight" a = "double-storey" d = "toothed-serifless" f = "flat-hook" i = "serifed" j = "serifed" -k = "straight" +k = "straight-serifless" l = "serifed-flat-tailed" t = "flat-hook" u = "toothed" y = "straight-turn" eszet = "longs-s-lig" lower-lambda = "straight-turn" -cyrl-ka = "straight" +cyrl-capital-ka = "straight-serifless" +cyrl-ka = "straight-serifless" cyrl-capital-u = "straight-turn" one = "base" two = "straight-neck" @@ -4845,7 +5237,11 @@ bar = "force-upright" [composite.ss04.slab-override.design] capital-g = "toothless-corner-serifed-hooked" +capital-k = "straight-serifed" d = "toothed-serifed" +k = "straight-serifed" +cyrl-capital-ka = "straight-serifed" +cyrl-ka = "straight-serifed" @@ -4855,7 +5251,7 @@ description = "Fira Mono Style" [composite.ss05.design] capital-g = "toothless-corner-serifless-hooked" -capital-k = "symmetric-touching" +capital-k = "symmetric-touching-serifless" capital-m = "slanted-sides-hanging" a = "double-storey-tailed" e = "flat-crossbar" @@ -4863,7 +5259,7 @@ f = "serifless" g = "double-storey-open" i = "serifed" j = "serifed" -k = "symmetric-touching" +k = "symmetric-touching-serifless" l = "serifed-tailed" r = "corner-hooked-serifed" u = "toothed" @@ -4871,7 +5267,8 @@ y = "straight-turn" eszet = "longs-s-lig" lower-iota = "serifed-tailed" lower-lambda = "straight-turn" -cyrl-ka = "symmetric-connected" +cyrl-capital-ka = "symmetric-connected-serifless" +cyrl-ka = "symmetric-connected-serifless" cyrl-capital-u = "straight-turn" two = "straight-neck" six = "closed-contour" @@ -4889,7 +5286,11 @@ lig-ltgteq = "slanted" [composite.ss05.slab-override.design] capital-g = "toothless-corner-serifed-hooked" +capital-k = "symmetric-touching-serifed" f = "serifed" +k = "symmetric-touching-serifed" +cyrl-capital-ka = "symmetric-connected-serifed" +cyrl-ka = "symmetric-connected-serifed" @@ -4903,7 +5304,7 @@ a = "double-storey-tailed" e = "flat-crossbar" i = "serifed" j = "serifed" -k = "straight" +k = "straight-serifless" l = "serifed" r = "compact" u = "toothed" @@ -4928,6 +5329,7 @@ bar = "force-upright" [composite.ss06.slab-override.design] capital-g = "toothless-corner-serifed-hooked" +k = "straight-serifed" @@ -4937,13 +5339,13 @@ description = "Monaco Style" [composite.ss07.design] capital-g = "toothless-corner-serifless-hooked" -capital-k = "symmetric-touching" +capital-k = "symmetric-touching-serifless" a = "single-storey-earless-corner-tailed" e = "flat-crossbar" g = "earless-corner" i = "zshaped" j = "serifed" -k = "symmetric-touching" +k = "symmetric-touching-serifless" l = "zshaped" q = "earless-corner" r = "corner-hooked" @@ -4966,6 +5368,8 @@ percent = "rings-continuous-slash" [composite.ss07.slab-override.design] capital-g = "toothless-corner-serifed-hooked" +capital-k = "symmetric-touching-serifed" +k = "symmetric-touching-serifed" @@ -4996,8 +5400,8 @@ x = "curly-serifless" capital-a = "curly-serifless" capital-y = "curly-serifless" capital-r = "curly" -capital-k = "curly" -k = "curly" +capital-k = "curly-serifless" +k = "curly-serifless" y = "curly" lower-lambda = "curly" cyrl-capital-u = "curly" @@ -5013,8 +5417,10 @@ g = "single-storey" [composite.ss08.slab-override.design] capital-a = "curly-base-serifed" +capital-k = "curly-serifed" capital-x = "curly-serifed" capital-y = "curly-serifed" +k = "curly-serifed" @@ -5024,7 +5430,7 @@ description = "Source Code Pro Style" [composite.ss09.design] capital-g = "toothless-corner-serifless-hooked" -capital-k = "straight" +capital-k = "straight-serifless" a = "double-storey" d = "toothed-serifless" e = "flat-crossbar" @@ -5032,7 +5438,7 @@ f = "serifless" g = "double-storey" i = "hooky" j = "serifed" -k = "straight" +k = "straight-serifless" l = "serifed-tailed" u = "toothed" y = "straight-turn" @@ -5058,8 +5464,10 @@ i = "serifed-tailed" [composite.ss09.slab-override.design] capital-g = "toothless-corner-serifed-hooked" +capital-k = "straight-serifed" d = "toothed-serifed" f = "serifed" +k = "straight-serifed" @@ -5069,12 +5477,12 @@ description = "Envy Code R Style" [composite.ss10.design] capital-j = "serifless" -capital-k = "symmetric-connected" +capital-k = "symmetric-connected-serifless" capital-q = "crossing" f = "flat-hook" i = "hooky" j = "flat-hook-serifed" -k = "symmetric-connected" +k = "symmetric-connected-serifless" l = "hooky" t = "flat-hook" y = "cursive-flat-hook" @@ -5091,6 +5499,10 @@ i = "serifed-flat-tailed" j = "serifed" l = "serifed-flat-tailed" +[composite.ss10.slab-override.design] +capital-k = "symmetric-connected-serifed" +k = "symmetric-connected-serifed" + [composite.ss11] @@ -5118,13 +5530,13 @@ description = "Ubuntu Mono Style" [composite.ss12.design] capital-g = "toothless-corner-serifless-hookless" -capital-k = "symmetric-touching" +capital-k = "symmetric-touching-serifless" a = "double-storey-toothless-corner" b = "toothless-corner" d = "toothless-corner-serifless" g = "earless-corner" i = "serifed-tailed" -k = "symmetric-touching" +k = "symmetric-touching-serifless" l = "serifed-tailed" m = "earless-corner-double-arch-short-leg" n = "earless-corner-straight" @@ -5135,7 +5547,8 @@ eszet = "longs-s-lig" lower-alpha = "tailed-barred" lower-iota = "serifed-tailed" lower-lambda = "straight-turn" -cyrl-ka = "symmetric-touching" +cyrl-capital-ka = "symmetric-touching-serifless" +cyrl-ka = "symmetric-touching-serifless" cyrl-capital-u = "straight-turn" zero = "dotted" one = "base" @@ -5159,7 +5572,11 @@ u = "tailed" [composite.ss12.slab-override.design] capital-g = "toothless-corner-serifed-hookless" +capital-k = "symmetric-touching-serifed" d = "toothless-corner-serifed" +k = "symmetric-touching-serifed" +cyrl-capital-ka = "symmetric-touching-serifed" +cyrl-ka = "symmetric-touching-serifed" [composite.ss12.slab-override.italic] d = "tailed-serifed" @@ -5172,18 +5589,19 @@ description = "Lucida Style" [composite.ss13.design] capital-g = "toothless-corner-serifless-hooked" -capital-k = "symmetric-touching" +capital-k = "symmetric-touching-serifless" a = "single-storey-earless-corner" d = "toothed-serifless" e = "flat-crossbar" g = "earless-corner" i = "zshaped" -k = "symmetric-touching" +k = "symmetric-touching-serifless" l = "zshaped" u = "toothed" y = "straight-turn" eszet = "longs-s-lig" -cyrl-ka = "symmetric-touching" +cyrl-capital-ka = "symmetric-touching-serifless" +cyrl-ka = "symmetric-touching-serifless" cyrl-capital-u = "straight-turn" zero = "dotted" one = "base" @@ -5197,6 +5615,10 @@ percent = "rings-continuous-slash" [composite.ss13.slab-override.design] capital-g = "toothless-corner-serifed-hooked" +capital-k = "symmetric-touching-serifed" +k = "symmetric-touching-serifed" +cyrl-capital-ka = "symmetric-touching-serifed" +cyrl-ka = "symmetric-touching-serifed" d = "toothed-serifed" @@ -5207,7 +5629,7 @@ description = "JetBrains Mono Style" [composite.ss14.design] capital-g = "toothless-rounded-serifless-hooked" -capital-k = "symmetric-connected" +capital-k = "symmetric-connected-serifless" capital-q = "straight" capital-w = "straight-flat-top" a = "double-storey" @@ -5217,7 +5639,7 @@ f = "flat-hook" g = "single-storey-flat-hook" i = "serifed" j = "flat-hook-serifed" -k = "symmetric-connected" +k = "symmetric-connected-serifless" l = "serifed-flat-tailed" t = "flat-hook" u = "toothless-rounded" @@ -5225,7 +5647,9 @@ w = "straight-flat-top" y = "straight" long-s = "flat-hook" lower-alpha = "tailed-barred" -cyrl-ka = "symmetric-connected" +capital-gamma = "serifed" +cyrl-capital-ka = "symmetric-connected-serifless" +cyrl-ka = "symmetric-connected-serifless" cyrl-capital-u = "straight" zero = "dotted" one = "base" @@ -5248,7 +5672,11 @@ y = "cursive-flat-hook" [composite.ss14.slab-override.design] capital-g = "toothless-rounded-serifed-hooked" +capital-k = "symmetric-connected-serifed" +cyrl-capital-ka = "symmetric-connected-serifed" +cyrl-ka = "symmetric-connected-serifed" d = "toothed-serifed" +k = "symmetric-connected-serifed" @@ -5263,7 +5691,7 @@ f = "flat-hook-serifed" g = "double-storey" i = "serifed" j = "flat-hook-serifed" -k = "straight" +k = "straight-serifless" l = "serifed" r = "compact-serifed" t = "flat-hook" @@ -5292,7 +5720,7 @@ a = "single-storey" f = "flat-hook-diagonal-tailed" i = "serifed-diagonal-tailed" j = "diagonal-tailed-serifed" -k = "diagonal-tailed-cursive" +k = "diagonal-tailed-cursive-serifless" l = "serifed-diagonal-tailed" r = "compact-top-serifed" t = "diagonal-tailed" @@ -5306,6 +5734,10 @@ ampersand = "closed" [composite.ss15.slab-override.design] d = "toothed-serifed" +k = "straight-serifed" + +[composite.ss15.slab-override.italic] +k = "diagonal-tailed-cursive-top-left-serifed" @@ -5315,29 +5747,39 @@ description = "PT Mono Style" [composite.ss16.design] capital-c = "bilateral-inward-serifed" +capital-d = "more-rounded-serifless" capital-g = "toothless-corner-inward-serifed-hooked" +capital-k = "symmetric-connected-serifless" +capital-l = "motion-serifed" capital-s = "bilateral-inward-serifed" capital-t = "serifed" a = "double-storey-motion-serifed" b = "toothless-corner-motion-serifed" -d = "tailed-serifed" +c = "unilateral-inward-serifed" +d = "toothed-serifed" e = "flat-crossbar" f = "serifed" g = "earless-corner" -h = "straight-motion-serifed" +h = "straight-top-left-serifed" i = "serifed" j = "serifed" -k = "straight-motion-serifed" +k = "straight-top-left-and-bottom-right-serifed" l = "serifed-tailed" -n = "straight-motion-serifed" +n = "straight-top-left-serifed" p = "motion-serifed" q = "earless-corner" r = "serifed" +t = "standard-short-neck2" u = "motion-serifed" y = "straight-turn" -eszet = "longs-s-lig" -cyrl-ka = "symmetric-connected-motion-serifed" +capital-gamma = "serifed" +latn-epsilon = "inward-serifed" +latn-reverse-epsilon = "inward-serifed" +cyrl-capital-ka = "symmetric-connected-serifless" +cyrl-ka = "symmetric-connected-bottom-right-serifed" +cyrl-ef = "top-serifed" cyrl-capital-u = "straight-turn" +zero = "slashed" one = "base" two = "straight-neck" three = "flattop" @@ -5352,6 +5794,9 @@ brace = "straight" number-sign = "slanted" percent = "rings-continuous-slash" +[composite.ss16.slab-override.design] +capital-k = "symmetric-connected-serifed" + [composite.ss17] @@ -5421,7 +5866,7 @@ description = "Curly Style" [composite.ss20.design] capital-a = "curly-serifless" -capital-k = "curly" +capital-k = "curly-serifless" capital-r = "curly" capital-v = "curly" capital-w = "curly" @@ -5439,17 +5884,22 @@ six = "open-contour" nine = "open-contour" [composite.ss20.upright-oblique] -k = "curly" +k = "curly-serifless" y = "curly" [composite.ss20.italic] -k = "cursive" +k = "cursive-serifless" y = "cursive" [composite.ss20.slab-override.design] -capital-a = 'curly-base-serifed' -capital-x = 'curly-serifed' -capital-y = 'curly-serifed' -capital-z = 'curly-serifed' -x = 'curly-serifed' -z = 'curly-serifed' +capital-a = "curly-base-serifed" +capital-k = "curly-serifed" +capital-x = "curly-serifed" +capital-y = "curly-serifed" +capital-z = "curly-serifed" +k = "curly-serifed" +x = "curly-serifed" +z = "curly-serifed" + +[composite.ss20.slab-override.italic] +k = "cursive-serifed"