Improve serifs of three k
-derived characters. (#2094)
* Improve serifs of three `k`-derived characters. * retarget
This commit is contained in:
parent
a614952bf7
commit
b67d000180
3 changed files with 80 additions and 58 deletions
3
changes/28.0.0-alpha.2.md
Normal file
3
changes/28.0.0-alpha.2.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
* Improve serifs for turned k (`U+029E`) to match `q` and turned h (`U+0265`).
|
||||
* Improve top-left serif for LATIN SMALL LETTER KRA (`U+0138`) to match `k`.
|
||||
* Make Greek Kappa (`U+03BA`) respond to more serif variants for `k` (`cv36`).
|
|
@ -325,8 +325,8 @@ glyph-block Letter-Latin-K : begin
|
|||
DiagTail.F 1 xDTEnd 0 dtInnerRadius tailAngle (Hook + swDiagTail / 4) swDiagTail
|
||||
CursiveLoopT spiro-outline (-O) left right stroke top slabLT slabLegs
|
||||
|
||||
define [KHookTopBar slabLegs straightBar] : TopHook.lBarInner
|
||||
x -- SB + [KBalance slabLegs straightBar]
|
||||
define [KHookTopBar xBarLeft] : TopHook.lBarInner
|
||||
x -- xBarLeft
|
||||
yBot -- 0
|
||||
yTop -- Ascender
|
||||
|
||||
|
@ -352,19 +352,21 @@ glyph-block Letter-Latin-K : begin
|
|||
serifed { 1 1 3 0 }
|
||||
serifedKH { 1 1 2 0 }
|
||||
serifed2 { 1 1 2 1 }
|
||||
serifedKra { 2 1 3 0 }
|
||||
serifedKappa { 2 0 3 0 }
|
||||
|
||||
define [UpperKLTSerif top sw slabLT straightBar] : match slabLT
|
||||
2 : HSerif.lt (SB + [KBalance slabLT straightBar]) top SideJut
|
||||
1 : HSerif.mt (SB + [KBalance slabLT straightBar] + [HSwToV : 0.5 * sw]) top Jut
|
||||
define [UpperKLTSerif top sw xBarLeft slabType straightBar] : match slabType
|
||||
2 : HSerif.lt xBarLeft top SideJut
|
||||
1 : HSerif.mt (xBarLeft + [HSwToV : 0.5 * sw]) top Jut
|
||||
_ : glyph-proc
|
||||
|
||||
define [UpperKLBSerif top sw slabLT straightBar] : match slabLT
|
||||
2 : HSerif.lb (SB + [KBalance slabLT straightBar]) 0 SideJut
|
||||
1 : HSerif.mb (SB + [KBalance slabLT straightBar] + [HSwToV : 0.5 * sw]) 0 Jut
|
||||
define [UpperKLBSerif top sw xBarLeft slabType straightBar] : match slabType
|
||||
2 : HSerif.lb xBarLeft 0 SideJut
|
||||
1 : HSerif.mb (xBarLeft + [HSwToV : 0.5 * sw]) 0 Jut
|
||||
_ : glyph-proc
|
||||
|
||||
define [CyrlKaVBar top slabLT straightBar] : VBar.m
|
||||
SB + [KBalance slabLT straightBar] + [HSwToV : 0.5 * CyrlVbSw] + 0.7 * CyrlVbGap
|
||||
define [CyrlKaVBar top xBarLeft] : VBar.m
|
||||
xBarLeft + [HSwToV : 0.5 * CyrlVbSw] + 0.7 * CyrlVbGap
|
||||
top / 2 - [CyrlVbLength top] / 2
|
||||
top / 2 + [CyrlVbLength top] / 2
|
||||
Math.min [AdviceStroke 5] (CyrlVbGap * 0.5)
|
||||
|
@ -395,12 +397,13 @@ glyph-block Letter-Latin-K : begin
|
|||
# Main building
|
||||
foreach { suffix { LegsImpl {slabLT slabLB slabLegs slabKS} } } [pairs-of UpperKConfig] : do
|
||||
local straightBar : LegsImpl !== KLegs.Curly
|
||||
local KBarLeft : SB + [KBalance slabLT straightBar]
|
||||
|
||||
define [KBaseShape sw top attachment] : glyph-proc
|
||||
include : VBar.l (SB + [KBalance slabLT straightBar]) 0 top sw
|
||||
include : VBar.l KBarLeft 0 top sw
|
||||
include : LegsImpl false SB RightSB sw top slabLT slabLegs attachment
|
||||
if slabLT : include : UpperKLTSerif top sw slabLT straightBar
|
||||
if slabLB : include : UpperKLBSerif top sw slabLT straightBar
|
||||
if slabLT : include : UpperKLTSerif top sw KBarLeft slabLT straightBar
|
||||
if slabLB : include : UpperKLBSerif top sw KBarLeft slabLB straightBar
|
||||
|
||||
create-glyph "K.\(suffix)" : glyph-proc
|
||||
include : MarkSet.capital
|
||||
|
@ -411,10 +414,10 @@ glyph-block Letter-Latin-K : begin
|
|||
include : KBaseShape Stroke CAP CyrDescender
|
||||
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
|
||||
|
||||
create-glyph "KBar.\(suffix)" : glyph-proc
|
||||
create-glyph "KStroke.\(suffix)" : glyph-proc
|
||||
include [refer-glyph "K.\(suffix)"] AS_BASE ALSO_METRICS
|
||||
include : LetterBarOverlay.l.in
|
||||
x -- (SB + [KBalance slabLT straightBar])
|
||||
x -- KBarLeft
|
||||
bot -- XH
|
||||
top -- (CAP - [if slabLT Stroke 0])
|
||||
space -- { 0 [mix SB RightSB 0.75] }
|
||||
|
@ -422,7 +425,7 @@ glyph-block Letter-Latin-K : begin
|
|||
create-glyph "KVBar.\(suffix)" : glyph-proc
|
||||
include : MarkSet.capital
|
||||
include : KBaseShape CyrlVbSw CAP
|
||||
include : CyrlKaVBar CAP slabLT straightBar
|
||||
include : CyrlKaVBar CAP KBarLeft
|
||||
|
||||
create-glyph "grek/KaiSymbol.\(suffix)" : glyph-proc
|
||||
include [refer-glyph "K.\(suffix)"] AS_BASE ALSO_METRICS
|
||||
|
@ -443,15 +446,19 @@ glyph-block Letter-Latin-K : begin
|
|||
create-glyph "smcpKVBar.\(suffix)" : glyph-proc
|
||||
include : MarkSet.e
|
||||
include : KBaseShape CyrlVbSw XH
|
||||
include : CyrlKaVBar XH slabLT straightBar
|
||||
include : CyrlKaVBar XH KBarLeft
|
||||
|
||||
create-glyph "KHookTop.\(suffix)" : glyph-proc
|
||||
include : MarkSet.capital
|
||||
include : VBar.l (SB + [KBalance slabLT straightBar]) 0 CAP Stroke
|
||||
include : VBar.l KBarLeft 0 CAP Stroke
|
||||
include : LegsImpl true SB RightSB Stroke CAP slabLT slabLegs
|
||||
eject-contour 'serifRT'
|
||||
if slabLT : include : UpperKLTSerif CAP Stroke slabLT straightBar
|
||||
if slabLB : include : UpperKLBSerif CAP Stroke slabLT straightBar
|
||||
if slabLT : include : UpperKLTSerif CAP Stroke KBarLeft slabLT straightBar
|
||||
if slabLB : include : UpperKLBSerif CAP Stroke KBarLeft slabLB straightBar
|
||||
|
||||
turned "turnK.\(suffix)" nothing "K.\(suffix)" Middle (CAP / 2)
|
||||
|
||||
turned "smcpTurnK.\(suffix)" nothing "smcpK.\(suffix)" Middle (XH / 2)
|
||||
|
||||
define [BashkirKaShape df top] : glyph-proc
|
||||
local left : if slabLT ([mix SB RightSB 0.35] - [HSwToV : 0.5 * df.mvs]) [mix SB RightSB 0.2]
|
||||
|
@ -479,11 +486,11 @@ glyph-block Letter-Latin-K : begin
|
|||
|
||||
define LowerKConfig : SuffixCfg.weave
|
||||
object # body
|
||||
straight KLegs.Straight
|
||||
curly KLegs.Curly
|
||||
cursive KLegs.Cursive
|
||||
cursiveTailed KLegs.CursiveTailed
|
||||
symmetricTouching [KLegs.Symmetric 0]
|
||||
straight KLegs.Straight
|
||||
curly KLegs.Curly
|
||||
cursive KLegs.Cursive
|
||||
cursiveTailed KLegs.CursiveTailed
|
||||
symmetricTouching [KLegs.Symmetric 0]
|
||||
symmetricConnected [KLegs.Symmetric : AdviceStroke 6]
|
||||
object # serifs
|
||||
serifless { 0 0 0 }
|
||||
|
@ -494,14 +501,15 @@ glyph-block Letter-Latin-K : begin
|
|||
|
||||
foreach { suffix { LegsImpl {slabLT slabLB slabLegs} } } [pairs-of LowerKConfig] : do
|
||||
local straightBar : LegsImpl !== KLegs.Curly
|
||||
local kBarLeft : SB + [KBalance slabLT straightBar]
|
||||
|
||||
define [kBaseShape attachment] : glyph-proc
|
||||
include : LeaningAnchor.Above.VBar.l (SB + [KBalance slabLT straightBar])
|
||||
include : VBar.l (SB + [KBalance slabLT straightBar]) 0 Ascender
|
||||
include : LeaningAnchor.Above.VBar.l kBarLeft
|
||||
include : VBar.l kBarLeft 0 Ascender
|
||||
include : LegsImpl false SB RightSB Stroke XH slabLT slabLegs attachment
|
||||
if slabLT : include : HSerif.lt (SB + [KBalance slabLT straightBar]) Ascender SideJut
|
||||
if slabLT : include : HSerif.lt kBarLeft Ascender SideJut
|
||||
if slabLB : include : tagged 'serifLB'
|
||||
HSerif.mb (SB + [KBalance slabLT straightBar] + [HSwToV HalfStroke]) 0 Jut
|
||||
HSerif.mb (kBarLeft + [HSwToV HalfStroke]) 0 Jut
|
||||
|
||||
create-glyph "k.\(suffix)" : glyph-proc
|
||||
include : MarkSet.b
|
||||
|
@ -517,26 +525,38 @@ glyph-block Letter-Latin-K : begin
|
|||
include : kBaseShape PalatalHook
|
||||
include : ExtendBelowBaseAnchors Descender
|
||||
|
||||
create-glyph "kBar.\(suffix)" : glyph-proc
|
||||
create-glyph "kStroke.\(suffix)" : glyph-proc
|
||||
include [refer-glyph "k.\(suffix)"] AS_BASE ALSO_METRICS
|
||||
include : LetterBarOverlay.l.in
|
||||
x -- (SB + [KBalance slabLT straightBar])
|
||||
x -- kBarLeft
|
||||
bot -- XH
|
||||
top -- (Ascender - [if slabLT Stroke 0])
|
||||
|
||||
create-glyph "kHookTop.\(suffix)" : glyph-proc
|
||||
include : MarkSet.b
|
||||
include : LegsImpl false SB RightSB Stroke XH slabLT slabLegs
|
||||
include : KHookTopBar slabLT straightBar
|
||||
include : KHookTopBar kBarLeft
|
||||
if slabLB : include : tagged 'serifLB'
|
||||
HSerif.mb (SB + [KBalance slabLT straightBar] + [HSwToV HalfStroke]) 0 Jut
|
||||
HSerif.mb (kBarLeft + [HSwToV HalfStroke]) 0 Jut
|
||||
|
||||
create-glyph "turnk.\(suffix)" : glyph-proc
|
||||
include : VBar.l kBarLeft 0 Ascender
|
||||
include : LegsImpl false SB RightSB Stroke XH slabLT slabLegs
|
||||
if slabLT : include : tagged 'serifLT' : union
|
||||
HSerif.lt (kBarLeft + [HSwToV HalfStroke]) Ascender Jut
|
||||
HSerif.rt (kBarLeft + [HSwToV HalfStroke]) Ascender MidJutSide
|
||||
if slabLB : include : tagged 'serifLB'
|
||||
HSerif.lb kBarLeft 0 SideJut
|
||||
include : FlipAround Middle (XH / 2)
|
||||
include : MarkSet.p
|
||||
include : LeaningAnchor.Below.VBar.r (RightSB - [KBalance slabLT straightBar])
|
||||
|
||||
select-variant 'K' 'K'
|
||||
link-reduced-variant 'K/sansSerif' 'K' MathSansSerif
|
||||
alias 'grek/Kappa' 0x39A 'K'
|
||||
alias-reduced-variant 'grek/Kappa/sansSerif' 'grek/Kappa' 'K/sansSerif' MathSansSerif
|
||||
select-variant 'KBar' 0xA740 (follow -- 'K')
|
||||
select-variant 'cyrl/KaStroke' 0x49E (shapeFrom -- 'KBar') (follow -- 'cyrl/Ka')
|
||||
select-variant 'KStroke' 0xA740 (follow -- 'K')
|
||||
select-variant 'cyrl/KaStroke' 0x49E (shapeFrom -- 'KStroke') (follow -- 'cyrl/Ka')
|
||||
select-variant 'KDescender' 0x2C69
|
||||
select-variant 'cyrl/Ka' 0x41A 'K' (shapeFrom -- 'K') (follow -- 'cyrl/Ka')
|
||||
select-variant 'cyrl/KaDescender' 0x49A (shapeFrom -- 'KDescender')
|
||||
|
@ -544,18 +564,17 @@ glyph-block Letter-Latin-K : begin
|
|||
select-variant 'cyrl/KaHook' 0x4C3 (shapeFrom -- 'K') (follow -- 'cyrl/KaHook')
|
||||
|
||||
select-variant 'k' 'k'
|
||||
select-variant 'k/nonCursive' (shapeFrom -- 'k')
|
||||
link-reduced-variant 'k/sansSerif' 'k' MathSansSerif
|
||||
select-variant 'kDescender' 0x2C6A
|
||||
select-variant 'kPalatalHook' 0x1D84 (follow -- 'kDescender')
|
||||
select-variant 'kBar' 0xA741 (follow -- 'k')
|
||||
select-variant 'cyrl/kaStroke' 0x49F (shapeFrom -- 'kBar') (follow -- 'cyrl/ka')
|
||||
select-variant 'kStroke' 0xA741 (follow -- 'k')
|
||||
select-variant 'cyrl/kaStroke' 0x49F (shapeFrom -- 'kStroke') (follow -- 'cyrl/ka')
|
||||
|
||||
select-variant 'grek/kappa' 0x3BA (shapeFrom -- 'smcpK')
|
||||
link-reduced-variant 'grek/kappa/sansSerif' 'grek/kappa' MathSansSerif (shapeFrom -- 'smcpK')
|
||||
|
||||
select-variant 'smcpK' 0x1D0B (follow -- 'K')
|
||||
select-variant 'latn/kappa' 0x138 (shapeFrom -- 'smcpK') (follow -- 'k/nonCursive')
|
||||
select-variant 'latn/kappa' 0x138 (shapeFrom -- 'smcpK')
|
||||
select-variant 'cyrl/ka' 0x43A (shapeFrom -- 'smcpK')
|
||||
select-variant 'cyrl/kaDescender' 0x49B (shapeFrom -- 'smcpKDescender')
|
||||
select-variant 'cyrl/ka.BGR' (shapeFrom -- 'k') (follow -- 'cyrl/ka')
|
||||
|
@ -569,12 +588,12 @@ glyph-block Letter-Latin-K : begin
|
|||
derive-composites 'cyrl/kaAleut' 0x51F 'cyrl/ka' 'aleutSlashOver'
|
||||
derive-composites 'KLegStroke' 0xA742 'K' 'legSlashOver'
|
||||
derive-composites 'kLegStroke' 0xA743 'k' 'legSlashOver'
|
||||
derive-composites 'KBarLegStroke' 0xA744 'KBar' 'legSlashOver'
|
||||
derive-composites 'kBarLegStroke' 0xA745 'kBar' 'legSlashOver'
|
||||
derive-composites 'KStrokeLegStroke' 0xA744 'KStroke' 'legSlashOver'
|
||||
derive-composites 'kStrokeLegStroke' 0xA745 'kStroke' 'legSlashOver'
|
||||
|
||||
turned 'turnK' 0xA7B0 'K' Middle (CAP / 2)
|
||||
turned 'turnk' 0x29E 'k' Middle (XH / 2) [MarkSet.p]
|
||||
turned 'turnSmcpK' 0x1DF10 'smcpK' Middle (XH / 2)
|
||||
select-variant 'turnK' 0xA7B0 (follow -- 'K')
|
||||
select-variant 'turnk' 0x29E (follow -- 'k')
|
||||
select-variant 'smcpTurnK' 0x1DF10 (follow -- 'K')
|
||||
|
||||
select-variant 'cyrl/BashkirUpperKa' 0x4A0 (follow -- 'cyrl/Ka')
|
||||
select-variant 'cyrl/BashkirKa' 0x4A1 (follow -- 'cyrl/ka')
|
||||
|
|
|
@ -2473,7 +2473,7 @@ rank = 1
|
|||
descriptionAffix = "standard shape"
|
||||
selectorAffix.k = "straight"
|
||||
selectorAffix."k/sansSerif" = "straight"
|
||||
selectorAffix."k/nonCursive" = "straight"
|
||||
selectorAffix."latn/kappa" = "straight"
|
||||
selectorAffix.kHookTop = "straight"
|
||||
selectorAffix.kDescender = "straight"
|
||||
selectorAffix."grek/kappa" = "straight"
|
||||
|
@ -2484,7 +2484,7 @@ rank = 2
|
|||
descriptionAffix = "curly shape"
|
||||
selectorAffix.k = "curly"
|
||||
selectorAffix."k/sansSerif" = "curly"
|
||||
selectorAffix."k/nonCursive" = "curly"
|
||||
selectorAffix."latn/kappa" = "curly"
|
||||
selectorAffix.kHookTop = "curly"
|
||||
selectorAffix.kDescender = "curly"
|
||||
selectorAffix."grek/kappa" = "curly"
|
||||
|
@ -2495,7 +2495,7 @@ rank = 3
|
|||
descriptionAffix = "symmetric legs touching the vertical bar"
|
||||
selectorAffix.k = "symmetricTouching"
|
||||
selectorAffix."k/sansSerif" = "symmetricTouching"
|
||||
selectorAffix."k/nonCursive" = "symmetricTouching"
|
||||
selectorAffix."latn/kappa" = "symmetricTouching"
|
||||
selectorAffix.kHookTop = "symmetricTouching"
|
||||
selectorAffix.kDescender = "symmetricTouching"
|
||||
selectorAffix."grek/kappa" = "symmetricTouching"
|
||||
|
@ -2506,7 +2506,7 @@ rank = 4
|
|||
descriptionAffix = "symmetric legs connected to the vertical bar"
|
||||
selectorAffix.k = "symmetricConnected"
|
||||
selectorAffix."k/sansSerif" = "symmetricConnected"
|
||||
selectorAffix."k/nonCursive" = "symmetricConnected"
|
||||
selectorAffix."latn/kappa" = "symmetricConnected"
|
||||
selectorAffix.kHookTop = "symmetricConnected"
|
||||
selectorAffix.kDescender = "symmetricConnected"
|
||||
selectorAffix."grek/kappa" = "symmetricConnected"
|
||||
|
@ -2517,7 +2517,7 @@ rank = 5
|
|||
descriptionAffix = "cursive loop"
|
||||
selectorAffix.k = "cursive"
|
||||
selectorAffix."k/sansSerif" = "cursive"
|
||||
selectorAffix."k/nonCursive" = "straight"
|
||||
selectorAffix."latn/kappa" = "straight"
|
||||
selectorAffix.kHookTop = "cursive"
|
||||
selectorAffix.kDescender = "cursive"
|
||||
selectorAffix."grek/kappa" = "straight"
|
||||
|
@ -2528,7 +2528,7 @@ rank = 6
|
|||
descriptionAffix = "cursive loop plus diagonal tail"
|
||||
selectorAffix.k = "cursiveTailed"
|
||||
selectorAffix."k/sansSerif" = "cursiveTailed"
|
||||
selectorAffix."k/nonCursive" = "straight"
|
||||
selectorAffix."latn/kappa" = "straight"
|
||||
selectorAffix.kHookTop = "cursiveTailed"
|
||||
selectorAffix.kDescender = "cursive"
|
||||
selectorAffix."grek/kappa" = "straight"
|
||||
|
@ -2540,7 +2540,7 @@ descriptionAffix = "serifs"
|
|||
descriptionJoiner = "without"
|
||||
selectorAffix.k = "serifless"
|
||||
selectorAffix."k/sansSerif" = "serifless"
|
||||
selectorAffix."k/nonCursive" = "serifless"
|
||||
selectorAffix."latn/kappa" = "serifless"
|
||||
selectorAffix.kHookTop = "serifless"
|
||||
selectorAffix.kDescender = "serifless"
|
||||
selectorAffix."grek/kappa" = "serifless"
|
||||
|
@ -2551,7 +2551,7 @@ rank = 2
|
|||
descriptionAffix = "serifs at top left"
|
||||
selectorAffix.k = "topLeftSerifed"
|
||||
selectorAffix."k/sansSerif" = "serifless"
|
||||
selectorAffix."k/nonCursive" = "topLeftSerifed"
|
||||
selectorAffix."latn/kappa" = "topLeftSerifed"
|
||||
selectorAffix.kHookTop = "serifless"
|
||||
selectorAffix.kDescender = "topLeftSerifed"
|
||||
selectorAffix."grek/kappa" = "topLeftSerifed"
|
||||
|
@ -2563,10 +2563,10 @@ disableIf = [ { body = "diagonal-tailed-cursive" } ]
|
|||
descriptionAffix = "serifs at bottom right"
|
||||
selectorAffix.k = "bottomRightSerifed"
|
||||
selectorAffix."k/sansSerif" = "serifless"
|
||||
selectorAffix."k/nonCursive" = "bottomRightSerifed"
|
||||
selectorAffix."latn/kappa" = "bottomRightSerifed"
|
||||
selectorAffix.kHookTop = "bottomRightSerifed"
|
||||
selectorAffix.kDescender = "serifless"
|
||||
selectorAffix."grek/kappa" = "serifless"
|
||||
selectorAffix."grek/kappa" = "bottomRightSerifed"
|
||||
selectorAffix."grek/kappa/sansSerif" = "serifless"
|
||||
|
||||
[prime.k.variants-buildup.stages.serifs.top-left-and-bottom-right-serifed]
|
||||
|
@ -2575,10 +2575,10 @@ disableIf = [ { body = "diagonal-tailed-cursive" } ]
|
|||
descriptionAffix = "serifs at top left and bottom right"
|
||||
selectorAffix.k = "topLeftAndBottomRightSerifed"
|
||||
selectorAffix."k/sansSerif" = "serifless"
|
||||
selectorAffix."k/nonCursive" = "topLeftAndBottomRightSerifed"
|
||||
selectorAffix."latn/kappa" = "topLeftAndBottomRightSerifed"
|
||||
selectorAffix.kHookTop = "bottomRightSerifed"
|
||||
selectorAffix.kDescender = "topLeftSerifed"
|
||||
selectorAffix."grek/kappa" = "topLeftSerifed"
|
||||
selectorAffix."grek/kappa" = "topLeftAndBottomRightSerifed"
|
||||
selectorAffix."grek/kappa/sansSerif" = "serifless"
|
||||
|
||||
[prime.k.variants-buildup.stages.serifs.serifed]
|
||||
|
@ -2587,10 +2587,10 @@ disableIf = [ { body = "diagonal-tailed-cursive" } ]
|
|||
descriptionAffix = "serifs"
|
||||
selectorAffix.k = "serifed"
|
||||
selectorAffix."k/sansSerif" = "serifless"
|
||||
selectorAffix."k/nonCursive" = "serifed"
|
||||
selectorAffix."latn/kappa" = "serifedKra"
|
||||
selectorAffix.kHookTop = "serifed"
|
||||
selectorAffix.kDescender = "serifed"
|
||||
selectorAffix."grek/kappa" = "topLeftSerifed"
|
||||
selectorAffix."grek/kappa" = "serifedKappa"
|
||||
selectorAffix."grek/kappa/sansSerif" = "serifless"
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue