* 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:
be5invis 2021-05-10 19:48:41 -07:00
parent 83405b25db
commit 4b6dd7376d
10 changed files with 849 additions and 341 deletions

View file

@ -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).

View file

@ -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'

View file

@ -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

View file

@ -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')

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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