* Variant tags are reordered.
* Variant names of certain letters are renamed, including: - Upper Gamma (`grek-upper-gamma`). - Variants for `K`, `k`, Cyrillic Ka (`К` and `к`). * Add more serifed variants for `K`, `k`, `n`, Cyrillic Ka (`К` and `к`) and Cyrillic Ef (`ф`) to better reproduce PT Mono (#986).
This commit is contained in:
parent
83405b25db
commit
4b6dd7376d
10 changed files with 849 additions and 341 deletions
|
@ -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:
|
* Add characters:
|
||||||
- Cyrillic Iotified E (`U+0464`, `U+0465`).
|
- Cyrillic Iotified E (`U+0464`, `U+0465`).
|
||||||
- Cyrillic Omega (`U+0460`, `U+0461`), Ot (`U+047E`, `U+047F`), Broad Omega (`U+A64C`, `U+A64D`).
|
- 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 Ghe with Stroke and Hook (`U+04FA`, `U+04FB`).
|
||||||
- Cyrillic Ha with Hook (`U+04FC`, `U+04FD`).
|
- Cyrillic Ha with Hook (`U+04FC`, `U+04FD`).
|
||||||
- Cyrillic Ha with Stroke (`U+04FE`, `U+04FF`).
|
- Cyrillic Ha with Stroke (`U+04FE`, `U+04FF`).
|
||||||
* Add tailed variants for Cyrillic El, En, Che, Yery and Ya (#972).
|
* 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).
|
|
@ -276,7 +276,7 @@ glyph-block Autobuild-Transformed : begin
|
||||||
list 0x1DAF 'nHookBottom'
|
list 0x1DAF 'nHookBottom'
|
||||||
list 0x1DB0 'smcpN'
|
list 0x1DB0 'smcpN'
|
||||||
list 0x1DB1 'obar'
|
list 0x1DB1 'obar'
|
||||||
list 0x1DB2 'latinphi'
|
list 0x1DB2 'latn/phi'
|
||||||
list 0x1DB3 'sRTail'
|
list 0x1DB3 'sRTail'
|
||||||
list 0x1DB4 'esh'
|
list 0x1DB4 'esh'
|
||||||
list 0x1DB5 'tltail'
|
list 0x1DB5 'tltail'
|
||||||
|
|
|
@ -11,25 +11,27 @@ glyph-block Letter-Greek-Upper-Gamma: begin
|
||||||
glyph-block-import Letter-Shared-Shapes : nShoulder CyrDescender CyrHookDescender
|
glyph-block-import Letter-Shared-Shapes : nShoulder CyrDescender CyrHookDescender
|
||||||
glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft
|
glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft
|
||||||
|
|
||||||
define SLAB-AUTO 0
|
define SLAB-NONE 0
|
||||||
define SLAB-MOTION 1
|
define SLAB-TR 1
|
||||||
|
define SLAB-ALL 2
|
||||||
|
|
||||||
define GammaBarLeft (SB * 1.5)
|
define GammaBarLeft (SB * 1.5)
|
||||||
define [GammaShape top slabType] : glyph-proc
|
define [GammaShape top slabType] : glyph-proc
|
||||||
include : VBarLeft GammaBarLeft 0 top
|
include : VBarLeft GammaBarLeft 0 top
|
||||||
include : HBarTop (GammaBarLeft - O) (RightSB - OX) top
|
include : HBarTop (GammaBarLeft - O) (RightSB - OX) top
|
||||||
match slabType
|
match slabType
|
||||||
[Just SLAB-AUTO] : if SLAB : begin
|
[Just SLAB-ALL] : begin
|
||||||
include : LeftwardTopSerif GammaBarLeft top SideJut
|
include : LeftwardTopSerif GammaBarLeft top SideJut
|
||||||
include : LeftwardBottomSerif (GammaBarLeft + HVContrast * HalfStroke) 0 Jut
|
include : LeftwardBottomSerif (GammaBarLeft + HVContrast * HalfStroke) 0 Jut
|
||||||
include : RightwardBottomSerif (GammaBarLeft + HVContrast * HalfStroke) 0 MidJutSide
|
include : RightwardBottomSerif (GammaBarLeft + HVContrast * HalfStroke) 0 MidJutSide
|
||||||
include : tagged 'serifRT' : DownwardRightSerif (RightSB - OX) top VJut
|
include : tagged 'serifRT' : DownwardRightSerif (RightSB - OX) top VJut
|
||||||
[Just SLAB-MOTION] : begin
|
[Just SLAB-TR] : begin
|
||||||
include : tagged 'serifRT' : DownwardRightSerif (RightSB - OX) top VJut
|
include : tagged 'serifRT' : DownwardRightSerif (RightSB - OX) top VJut
|
||||||
|
|
||||||
define GammaConfig : object
|
define GammaConfig : object
|
||||||
standard { SLAB-AUTO SLAB }
|
serifless { SLAB-NONE false }
|
||||||
motionSerifed { SLAB-MOTION false }
|
topRightSerifed { SLAB-TR false }
|
||||||
|
serifed { SLAB-ALL true }
|
||||||
|
|
||||||
foreach { suffix { slabType doSB } } [Object.entries GammaConfig] : do
|
foreach { suffix { slabType doSB } } [Object.entries GammaConfig] : do
|
||||||
create-glyph "grek/Gamma.\(suffix)" : glyph-proc
|
create-glyph "grek/Gamma.\(suffix)" : glyph-proc
|
||||||
|
|
|
@ -40,14 +40,21 @@ glyph-block Letter-Greek-Upper-Phi : begin
|
||||||
include : VBar df.middle Descender HalfStroke
|
include : VBar df.middle Descender HalfStroke
|
||||||
include : VBar df.middle (XH - HalfStroke) CAP
|
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
|
local df : DivFrame para.diversityM 3
|
||||||
include [refer-glyph 'grek/varphi'] AS_BASE ALSO_METRICS
|
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
|
create-glyph 'cyrl/ef.cursive' : glyph-proc
|
||||||
local df : DivFrame para.diversityM 3
|
local df : DivFrame para.diversityM 3
|
||||||
set-width df.width
|
set-width df.width
|
||||||
|
@ -77,3 +84,4 @@ glyph-block Letter-Greek-Upper-Phi : begin
|
||||||
curl xBarRight (0 - O)
|
curl xBarRight (0 - O)
|
||||||
|
|
||||||
select-variant 'cyrl/ef' 0x444
|
select-variant 'cyrl/ef' 0x444
|
||||||
|
select-variant 'latn/phi' 0x278 (shapeFrom -- 'cyrl/ef')
|
|
@ -3,6 +3,7 @@ $$include '../../../meta/macros.ptl'
|
||||||
import [mix linreg clamp fallback] from '../../../support/utils'
|
import [mix linreg clamp fallback] from '../../../support/utils'
|
||||||
import [DesignParameters] from '../../../meta/aesthetics'
|
import [DesignParameters] from '../../../meta/aesthetics'
|
||||||
import [Dotless CvDecompose] from "../../../support/gr"
|
import [Dotless CvDecompose] from "../../../support/gr"
|
||||||
|
import [maskBit maskBits popCountByte] from '../../../support/mask-bit'
|
||||||
|
|
||||||
glyph-module
|
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 [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
|
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 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 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]
|
local bottomSerifX : kshRight - O * [if para.isItalic 1 0]
|
||||||
|
|
||||||
include : RightwardTopSerif topSerifX top (SideJut + stroke / 2 * 0.5 * HVContrast)
|
if [maskBit mode 1] : include : RightwardTopSerif topSerifX top (SideJut + stroke / 2 * 0.5 * HVContrast)
|
||||||
include : RightwardBottomSerif bottomSerifX 0 SideJut
|
if [maskBit mode 0] : include : RightwardBottomSerif bottomSerifX 0 SideJut
|
||||||
|
|
||||||
define [KStraightLegShapeImpl left right stroke top slabLeft slab] : glyph-proc
|
define [KStraightLegShapeImpl left right stroke top slabLeft slab] : glyph-proc
|
||||||
local fine : AdviceStroke 3.5
|
local fine : AdviceStroke 3.5
|
||||||
|
@ -33,7 +34,7 @@ glyph-block Letter-Latin-K : begin
|
||||||
local attach (top * 0.42 - stroke)
|
local attach (top * 0.42 - stroke)
|
||||||
local attach2 (top * 0.72 + stroke)
|
local attach2 (top * 0.72 + stroke)
|
||||||
include : intersection
|
include : intersection
|
||||||
Rect top 0 kshLeft [if slab kshRight (2 * Width)]
|
Rect top 0 kshLeft [if [maskBit slab 1] kshRight (2 * Width)]
|
||||||
dispiro
|
dispiro
|
||||||
widths.rhs stroke
|
widths.rhs stroke
|
||||||
flat (kshRight - Ok) top
|
flat (kshRight - Ok) top
|
||||||
|
@ -51,7 +52,7 @@ glyph-block Letter-Latin-K : begin
|
||||||
flat (kshRight - Ok) 0
|
flat (kshRight - Ok) 0
|
||||||
curl (kshLeft + stroke) attach2
|
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
|
define [KSymmetricLegsImpl leadGap] : function [left right stroke top slabLeft slab] : glyph-proc
|
||||||
local fine : AdviceStroke [if leadGap 3.5 3]
|
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 yAttach : top * [if leadGap 0.42 0.49] - stroke * [if leadGap 1 (-0.1)]
|
||||||
local coYAttach : top - yAttach
|
local coYAttach : top - yAttach
|
||||||
include : intersection
|
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
|
dispiro
|
||||||
widths.rhs stroke
|
widths.rhs stroke
|
||||||
flat (kshRight - Ok) top
|
flat (kshRight - Ok) top
|
||||||
curl [mix (kshRight - Ok) xAttach 2] [mix top yAttach 2] [widths.rhs fine]
|
curl [mix (kshRight - Ok) xAttach 2] [mix top yAttach 2] [widths.rhs fine]
|
||||||
|
|
||||||
include : intersection
|
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
|
dispiro
|
||||||
widths.lhs stroke
|
widths.lhs stroke
|
||||||
flat (kshRight - Ok) 0
|
flat (kshRight - Ok) 0
|
||||||
|
@ -90,7 +91,7 @@ glyph-block Letter-Latin-K : begin
|
||||||
corner (xAttach - 1) coYAttach
|
corner (xAttach - 1) coYAttach
|
||||||
corner (xAttach - 1) 0
|
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
|
define [KCurlyLegShapeImpl left right stroke top slabLeft slab] : glyph-proc
|
||||||
local turn : top * 0.99
|
local turn : top * 0.99
|
||||||
|
@ -120,7 +121,7 @@ glyph-block Letter-Latin-K : begin
|
||||||
corner kshLeft 0
|
corner kshLeft 0
|
||||||
corner kshLeft top
|
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 [KCursiveLoopAndLegDimen top straightBar slabLeft slab] : begin
|
||||||
define kshLeft : SB + [KBalance slabLeft straightBar]
|
define kshLeft : SB + [KBalance slabLeft straightBar]
|
||||||
|
@ -219,25 +220,29 @@ glyph-block Letter-Latin-K : begin
|
||||||
define CyrlVbSw : AdviceStroke 3
|
define CyrlVbSw : AdviceStroke 3
|
||||||
|
|
||||||
define UpperKConfig : object
|
define UpperKConfig : object
|
||||||
straight { KStraightLegShapeImpl [if SLAB 1 0] [if SLAB 1 0] [if SLAB 1 0] }
|
straightSerifless { KStraightLegShapeImpl 0 0 0 }
|
||||||
curly { KCurlyLegShapeImpl [if SLAB 1 0] [if SLAB 1 0] [if SLAB 1 0] }
|
curlySerifless { KCurlyLegShapeImpl 0 0 0 }
|
||||||
symmetricTouching { [KSymmetricLegsImpl 0] [if SLAB 1 0] [if SLAB 1 0] [if SLAB 1 0] }
|
symmetricTouchingSerifless { [KSymmetricLegsImpl 0] 0 0 0 }
|
||||||
symmetricConnected { [KSymmetricLegsImpl : AdviceStroke 6] [if SLAB 1 0] [if SLAB 1 0] [if SLAB 1 0] }
|
symmetricConnectedSerifless { [KSymmetricLegsImpl : AdviceStroke 6] 0 0 0 }
|
||||||
symmetricConnectedVB { [KSymmetricLegsImpl CyrlVbGap] [if SLAB 1 0] [if SLAB 1 0] [if SLAB 1 0] }
|
symmetricConnectedSeriflessVB { [KSymmetricLegsImpl CyrlVbGap] 0 0 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] }
|
straightTopLeftSerifed { KStraightLegShapeImpl 2 0 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] }
|
curlyTopLeftSerifed { KCurlyLegShapeImpl 2 0 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] }
|
symmetricTouchingTopLeftSerifed { [KSymmetricLegsImpl 0] 2 0 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] }
|
symmetricConnectedTopLeftSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 2 0 0 }
|
||||||
straightSerifless { KStraightLegShapeImpl 0 0 0 }
|
symmetricConnectedTopLeftSerifedVB { [KSymmetricLegsImpl CyrlVbGap] 2 0 0 }
|
||||||
curlySerifless { KCurlyLegShapeImpl 0 0 0 }
|
|
||||||
symmetricTouchingSerifless { [KSymmetricLegsImpl 0] 0 0 0 }
|
straightBottomRightSerifed { KStraightLegShapeImpl 0 0 1 }
|
||||||
symmetricConnectedSerifless { [KSymmetricLegsImpl : AdviceStroke 6] 0 0 0 }
|
curlyBottomRightSerifed { KCurlyLegShapeImpl 0 0 1 }
|
||||||
straightMotionSerifed { KStraightLegShapeImpl 2 0 0 }
|
symmetricTouchingBottomRightSerifed { [KSymmetricLegsImpl 0] 0 0 1 }
|
||||||
curlyMotionSerifed { KCurlyLegShapeImpl 2 0 0 }
|
symmetricConnectedBottomRightSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 0 0 1 }
|
||||||
symmetricTouchingMotionSerifed { [KSymmetricLegsImpl 0] 2 0 0 }
|
symmetricConnectedBottomRightSerifedVB { [KSymmetricLegsImpl CyrlVbGap] 0 0 1 }
|
||||||
symmetricConnectedMotionSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 2 0 0 }
|
|
||||||
symmetricConnectedMotionSerifedVB { [KSymmetricLegsImpl CyrlVbGap] 2 0 0 }
|
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
|
define [UpperKLTSerif top sw slabTop straightBar] : match slabTop
|
||||||
2 : LeftwardTopSerif (SB + [KBalance slabTop straightBar]) top SideJut
|
2 : LeftwardTopSerif (SB + [KBalance slabTop straightBar]) top SideJut
|
||||||
|
@ -267,7 +272,7 @@ glyph-block Letter-Latin-K : begin
|
||||||
create-glyph "K.\(suffix)" : glyph-proc
|
create-glyph "K.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.capital
|
include : MarkSet.capital
|
||||||
include : KBaseShape Stroke CAP
|
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
|
create-glyph "KBar.\(suffix)" : glyph-proc
|
||||||
include [refer-glyph "K.\(suffix)"] AS_BASE ALSO_METRICS
|
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
|
create-glyph "smcpK.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
include : KBaseShape Stroke XH
|
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
|
create-glyph "smcpKVBar.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
|
@ -322,30 +327,48 @@ glyph-block Letter-Latin-K : begin
|
||||||
|
|
||||||
|
|
||||||
define LowerKConfig : object
|
define LowerKConfig : object
|
||||||
straight { KStraightLegShapeImpl SLAB (SLAB && !para.isItalic) }
|
straightSerifed { KStraightLegShapeImpl 1 1 3 }
|
||||||
curly { KCurlyLegShapeImpl SLAB (SLAB && !para.isItalic) }
|
curlySerifed { KCurlyLegShapeImpl 1 1 3 }
|
||||||
cursive { [KCursiveLoopAndLegShapeImpl 0] SLAB (SLAB && !para.isItalic) }
|
cursiveSerifed { [KCursiveLoopAndLegShapeImpl 0] 1 1 3 }
|
||||||
diagonalTailedSerifedCursive { [KCursiveLoopAndLegShapeImpl 1] SLAB (SLAB && !para.isItalic) }
|
diagonalTailedSerifedCursiveSerifed { [KCursiveLoopAndLegShapeImpl 1] 1 1 3 }
|
||||||
symmetricTouching { [KSymmetricLegsImpl 0] SLAB (SLAB && !para.isItalic) }
|
symmetricTouchingSerifed { [KSymmetricLegsImpl 0] 1 1 3 }
|
||||||
symmetricConnected { [KSymmetricLegsImpl : AdviceStroke 6] SLAB (SLAB && !para.isItalic) }
|
symmetricConnectedSerifed { [KSymmetricLegsImpl : AdviceStroke 6] 1 1 3 }
|
||||||
straightMotionSerifed { KStraightLegShapeImpl true false }
|
straightSerifless { KStraightLegShapeImpl 0 0 0 }
|
||||||
curlyMotionSerifed { KCurlyLegShapeImpl true false }
|
curlySerifless { KCurlyLegShapeImpl 0 0 0 }
|
||||||
cursiveMotionSerifed { [KCursiveLoopAndLegShapeImpl 0] true false }
|
cursiveSerifless { [KCursiveLoopAndLegShapeImpl 0] 0 0 0 }
|
||||||
diagonalTailedSerifedCursiveMotionSerifed { [KCursiveLoopAndLegShapeImpl 1] true false }
|
diagonalTailedSerifedCursiveSerifless { [KCursiveLoopAndLegShapeImpl 1] 0 0 0 }
|
||||||
symmetricTouchingMotionSerifed { [KSymmetricLegsImpl 0] true false }
|
symmetricTouchingSerifless { [KSymmetricLegsImpl 0] 0 0 0 }
|
||||||
symmetricConnectedMotionSerifed { [KSymmetricLegsImpl : AdviceStroke 6] true false }
|
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
|
local straightBar : LegsImpl !== KCurlyLegShapeImpl
|
||||||
|
|
||||||
create-glyph "k.\(suffix)" : glyph-proc
|
create-glyph "k.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.b
|
include : MarkSet.b
|
||||||
include : VBarLeft (SB + [KBalance slabTop straightBar]) 0 CAP
|
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 slabTop : include : LeftwardTopSerif (SB + [KBalance slabTop straightBar]) CAP SideJut
|
||||||
if slabBot : include : tagged 'serifLB'
|
if slabBot : include : tagged 'serifLB'
|
||||||
CenterBottomSerif (SB + [KBalance slabTop straightBar] + HalfStroke * HVContrast) 0 Jut
|
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
|
create-glyph "kBar.\(suffix)" : glyph-proc
|
||||||
include [refer-glyph "k.\(suffix)"] AS_BASE ALSO_METRICS
|
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
|
create-glyph "khooktop.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.b
|
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
|
include : KHookTopBar slabTop straightBar
|
||||||
if slabBot : include : tagged 'serifLB'
|
if slabBot : include : tagged 'serifLB'
|
||||||
CenterBottomSerif (SB + [KBalance slabTop straightBar] + HalfStroke * HVContrast) 0 Jut
|
CenterBottomSerif (SB + [KBalance slabTop straightBar] + HalfStroke * HVContrast) 0 Jut
|
||||||
|
|
|
@ -246,7 +246,7 @@ glyph-block Letter-Latin-Lower-F : begin
|
||||||
'flatHookTailedCrossbarAtXHeight' { { NarrowFShape dfNarrowF } { pNarrowSide XH CH-HOOK } { 'if' 'if' } }
|
'flatHookTailedCrossbarAtXHeight' { { NarrowFShape dfNarrowF } { pNarrowSide XH CH-HOOK } { 'if' 'if' } }
|
||||||
'flatHookDiagonalTailedCrossbarAtXHeight' { { NarrowFShape dfNarrowF } { pNarrowSide XH CH-DIAGONAL-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
|
foreach { suffix {{Body df} {pBar yBar ch} {mk mkTurn}}} [Object.entries SmallFConfig] : do
|
||||||
create-glyph "f.\(suffix)" : glyph-proc
|
create-glyph "f.\(suffix)" : glyph-proc
|
||||||
|
|
|
@ -50,6 +50,15 @@ glyph-block Letter-Latin-Lower-H : begin
|
||||||
include : LeftwardTopSerif SB CAP SideJut
|
include : LeftwardTopSerif SB CAP SideJut
|
||||||
include : tagged 'serifRB' : RightwardBottomSerif RightSB 0 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
|
create-glyph 'h.motionSerifedTailed' : glyph-proc
|
||||||
include : MarkSet.b
|
include : MarkSet.b
|
||||||
|
|
||||||
|
@ -102,10 +111,9 @@ glyph-block Letter-Latin-Lower-H : begin
|
||||||
eject-contour 'serifRB'
|
eject-contour 'serifRB'
|
||||||
include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook
|
include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook
|
||||||
|
|
||||||
create-glyph 'heng.straightMotionSerifed' : glyph-proc
|
create-glyph 'heng.straightTopLeftSerifed' : glyph-proc
|
||||||
include : MarkSet.if
|
include : MarkSet.if
|
||||||
include : refer-glyph "h.straightMotionSerifed"
|
include : refer-glyph "h.straightTopLeftSerifed"
|
||||||
eject-contour 'serifRB'
|
|
||||||
include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook
|
include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook
|
||||||
|
|
||||||
select-variant 'heng' 0xA727
|
select-variant 'heng' 0xA727
|
||||||
|
|
|
@ -65,6 +65,18 @@ glyph-block Letter-Latin-Lower-N : begin
|
||||||
include : NBottomRightSerifItalic
|
include : NBottomRightSerifItalic
|
||||||
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
|
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
|
create-glyph 'n.motionSerifedTailed' : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
|
|
||||||
|
@ -165,10 +177,9 @@ glyph-block Letter-Latin-Lower-N : begin
|
||||||
eject-contour 'serifRB'
|
eject-contour 'serifRB'
|
||||||
include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook
|
include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook
|
||||||
|
|
||||||
create-glyph 'eng.straightMotionSerifed' : glyph-proc
|
create-glyph 'eng.straightTopLeftSerifed' : glyph-proc
|
||||||
include : MarkSet.p
|
include : MarkSet.p
|
||||||
include [refer-glyph 'n.straightMotionSerifed'] false
|
include [refer-glyph 'n.straightTopLeftSerifed'] false
|
||||||
eject-contour 'serifRB'
|
|
||||||
include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook
|
include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook
|
||||||
|
|
||||||
create-glyph 'eng.earlessCornerStraight' : glyph-proc
|
create-glyph 'eng.earlessCornerStraight' : glyph-proc
|
||||||
|
@ -208,9 +219,8 @@ glyph-block Letter-Latin-Lower-N : begin
|
||||||
eject-contour 'serifRB'
|
eject-contour 'serifRB'
|
||||||
include : refer-glyph 'rtailBR'
|
include : refer-glyph 'rtailBR'
|
||||||
|
|
||||||
create-glyph 'nHookBottom.straightMotionSerifed' : glyph-proc
|
create-glyph 'nHookBottom.straightTopLeftSerifed' : glyph-proc
|
||||||
include [refer-glyph 'n.straightMotionSerifed'] AS_BASE ALSO_METRICS
|
include [refer-glyph 'n.straightTopLeftSerifed'] AS_BASE ALSO_METRICS
|
||||||
eject-contour 'serifRB'
|
|
||||||
include : refer-glyph 'rtailBR'
|
include : refer-glyph 'rtailBR'
|
||||||
|
|
||||||
create-glyph 'nHookBottom.earlessCornerStraight' : glyph-proc
|
create-glyph 'nHookBottom.earlessCornerStraight' : glyph-proc
|
||||||
|
|
|
@ -106,6 +106,7 @@ class Prime {
|
||||||
gr.variants.push({
|
gr.variants.push({
|
||||||
key: variant.key,
|
key: variant.key,
|
||||||
rank: variant.rank,
|
rank: variant.rank,
|
||||||
|
rankGroup: variant.rankGroup,
|
||||||
description: variant.description
|
description: variant.description
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -120,6 +121,7 @@ class PrimeVariant {
|
||||||
this.tag = tag;
|
this.tag = tag;
|
||||||
this.description = cfg.description;
|
this.description = cfg.description;
|
||||||
this.rank = cfg.rank;
|
this.rank = cfg.rank;
|
||||||
|
this.rankGroup = cfg.rankGroup || 0;
|
||||||
this.selector = cfg.selector;
|
this.selector = cfg.selector;
|
||||||
this.nonDeriving = cfg.nonDeriving;
|
this.nonDeriving = cfg.nonDeriving;
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue