k variants simplify

This commit is contained in:
be5invis 2023-05-23 19:10:30 -07:00
parent 14b3e54b61
commit 09d80208a8
4 changed files with 342 additions and 781 deletions

View file

@ -1,6 +1,8 @@
* \[**BREAKING**\] Add taller slash, broken slash and broken zero variants for Zero. As a result, current variants are reordered (#1307, #1509, #1678). * \[**BREAKING**\] Add taller slash, broken slash and broken zero variants for Zero. As a result, current variants are reordered (#1307, #1509, #1678).
* \[**BREAKING**\] Add above-baseline crossed variant for Q. As a result, current variants are reordered (#1533). * \[**BREAKING**\] Add above-baseline crossed variant for Q. As a result, current variants are reordered (#1533).
* \[**BREAKING**\] Rectify the variant atlas. As a result, if a character's variant list has motion-serifed, then it will have serifless and serifed variants: the serifed-ness will no longer be controlled by SLAB variable. The characters influenced are `M`, `N`, `P`, `R`, `U`, `V`, `W`, `b`, `h`, `m`, `n`, `p`, `q`, `u`, `v`, `w`, `y`. * \[**BREAKING**\] Rectify the variant atlas. As a result, if a character's variant list has motion-serifed, then it will have serifless and serifed variants: the serifed-ness will no longer be controlled by SLAB variable. The characters influenced are `M`, `N`, `P`, `R`, `U`, `V`, `W`, `b`, `h`, `m`, `n`, `p`, `q`, `u`, `v`, `w`, `y`.
* \[**BREAKING**\] Reordered the variants of the following letters:
- `K`, `k`, Cyrillic Ka.
* Add Characters: * Add Characters:
- CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN (`U+29BC`). - CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN (`U+29BC`).
- CIRCLED WHITE BULLET (`U+29BE`). - CIRCLED WHITE BULLET (`U+29BE`).

View file

@ -1,6 +1,6 @@
$$include '../../../meta/macros.ptl' $$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from"../../../support/utils.mjs" import [mix clamp fallback SuffixCfg] from"../../../support/utils.mjs"
import [Dotless CvDecompose MathSansSerif] from"../../../support/gr.mjs" import [Dotless CvDecompose MathSansSerif] from"../../../support/gr.mjs"
import [maskBit] from"../../../support/util/mask-bit.mjs" import [maskBit] from"../../../support/util/mask-bit.mjs"
@ -319,56 +319,24 @@ glyph-block Letter-Latin-K : begin
define [CyrlVbLength top] : top * 0.375 + Stroke define [CyrlVbLength top] : top * 0.375 + Stroke
define CyrlVbSw : AdviceStroke 3 define CyrlVbSw : AdviceStroke 3
define UpperKConfig : object define UpperKConfig : SuffixCfg.weave
straightSerifless { KLegs.Straight 0 0 0 0 } object # body
curlySerifless { KLegs.Curly 0 0 0 0 } straight KLegs.Straight
symmetricTouchingSerifless { [KLegs.Symmetric 0] 0 0 0 0 } curly KLegs.Curly
symmetricConnectedSerifless { [KLegs.Symmetric : AdviceStroke 6] 0 0 0 0 } symmetricTouching [KLegs.Symmetric 0]
symmetricConnectedSeriflessKH { [KLegs.Symmetric [AdviceStroke 6] Descender] 0 0 0 0 } symmetricConnected [KLegs.Symmetric : AdviceStroke 6]
symmetricConnectedSeriflessVB { [KLegs.Symmetric CyrlVbGap] 0 0 0 0 } symmetricConnectedKH [KLegs.Symmetric [AdviceStroke 6] Descender]
symmetricConnectedVB [KLegs.Symmetric CyrlVbGap]
straightTopLeftSerifed { KLegs.Straight 2 0 0 0 } object # serifs
curlyTopLeftSerifed { KLegs.Curly 2 0 0 0 } serifless { 0 0 0 0 }
symmetricTouchingTopLeftSerifed { [KLegs.Symmetric 0] 2 0 0 0 } topLeftSerifed { 2 0 0 0 }
symmetricConnectedTopLeftSerifed { [KLegs.Symmetric : AdviceStroke 6] 2 0 0 0 } bottomRightSerifed { 0 0 1 0 }
symmetricConnectedTopLeftSerifedKH { [KLegs.Symmetric [AdviceStroke 6] Descender] 2 0 0 0 } bottomRightSerifed2 { 0 0 0 1 }
symmetricConnectedTopLeftSerifedVB { [KLegs.Symmetric CyrlVbGap] 2 0 0 0 } topLeftAndBottomRightSerifed { 2 0 1 0 }
topLeftAndBottomRightSerifed2 { 2 0 0 1 }
straightBottomRightSerifed { KLegs.Straight 0 0 1 0 } serifed { 1 1 3 0 }
curlyBottomRightSerifed { KLegs.Curly 0 0 1 0 } serifedKH { 1 1 2 0 }
symmetricTouchingBottomRightSerifed { [KLegs.Symmetric 0] 0 0 1 0 } serifed2 { 1 1 2 1 }
symmetricConnectedBottomRightSerifed { [KLegs.Symmetric : AdviceStroke 6] 0 0 1 0 }
symmetricConnectedBottomRightSerifedKH { [KLegs.Symmetric [AdviceStroke 6] Descender] 0 0 1 0 }
symmetricConnectedBottomRightSerifedVB { [KLegs.Symmetric CyrlVbGap] 0 0 1 0 }
straightBottomRightSerifed2 { KLegs.Straight 0 0 0 1 }
curlyBottomRightSerifed2 { KLegs.Curly 0 0 0 1 }
symmetricTouchingBottomRightSerifed2 { [KLegs.Symmetric 0] 0 0 0 1 }
symmetricConnectedBottomRightSerifed2 { [KLegs.Symmetric : AdviceStroke 6] 0 0 0 1 }
straightTopLeftAndBottomRightSerifed { KLegs.Straight 2 0 1 0 }
curlyTopLeftAndBottomRightSerifed { KLegs.Curly 2 0 1 0 }
symmetricTouchingTopLeftAndBottomRightSerifed { [KLegs.Symmetric 0] 2 0 1 0 }
symmetricConnectedTopLeftAndBottomRightSerifed { [KLegs.Symmetric : AdviceStroke 6] 2 0 1 0 }
symmetricConnectedTopLeftAndBottomRightSerifedKH { [KLegs.Symmetric [AdviceStroke 6] Descender] 2 0 1 0 }
symmetricConnectedTopLeftAndBottomRightSerifedVB { [KLegs.Symmetric CyrlVbGap] 2 0 1 0 }
straightTopLeftAndBottomRightSerifed2 { KLegs.Straight 2 0 0 1 }
curlyTopLeftAndBottomRightSerifed2 { KLegs.Curly 2 0 0 1 }
symmetricTouchingTopLeftAndBottomRightSerifed2 { [KLegs.Symmetric 0] 2 0 0 1 }
symmetricConnectedTopLeftAndBottomRightSerifed2 { [KLegs.Symmetric : AdviceStroke 6] 2 0 0 1 }
straightSerifed { KLegs.Straight 1 1 3 0 }
curlySerifed { KLegs.Curly 1 1 3 0 }
symmetricTouchingSerifed { [KLegs.Symmetric 0] 1 1 3 0 }
symmetricConnectedSerifed { [KLegs.Symmetric : AdviceStroke 6] 1 1 3 0 }
symmetricConnectedSerifedKH { [KLegs.Symmetric [AdviceStroke 6] Descender] 1 1 2 0 }
symmetricConnectedSerifedVB { [KLegs.Symmetric CyrlVbGap] 1 1 3 0 }
straightSerifed2 { KLegs.Straight 1 1 2 1 }
curlySerifed2 { KLegs.Curly 1 1 2 1 }
symmetricTouchingSerifed2 { [KLegs.Symmetric 0] 1 1 2 1 }
symmetricConnectedSerifed2 { [KLegs.Symmetric : AdviceStroke 6] 1 1 2 1 }
define [UpperKLTSerif top sw slabLT straightBar] : match slabLT define [UpperKLTSerif top sw slabLT straightBar] : match slabLT
2 : HSerif.lt (SB + [KBalance slabLT straightBar]) top SideJut 2 : HSerif.lt (SB + [KBalance slabLT straightBar]) top SideJut
@ -410,7 +378,7 @@ glyph-block Letter-Latin-K : begin
include : GrekKaiAttachmentshape true include : GrekKaiAttachmentshape true
# Main building # Main building
foreach { suffix { LegsImpl slabLT slabLB slabLegs slabKS } } [Object.entries UpperKConfig] : do foreach { suffix { LegsImpl {slabLT slabLB slabLegs slabKS} } } [pairs-of UpperKConfig] : do
local straightBar : LegsImpl !== KLegs.Curly local straightBar : LegsImpl !== KLegs.Curly
define [KBaseShape sw top attachment] : glyph-proc define [KBaseShape sw top attachment] : glyph-proc
@ -499,40 +467,22 @@ glyph-block Letter-Latin-K : begin
include : df.markSet.e include : df.markSet.e
include : BashkirKaShape df XH include : BashkirKaShape df XH
define LowerKConfig : SuffixCfg.weave
object # body
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 }
topLeftSerifed { 1 0 0 }
bottomRightSerifed { 0 0 1 }
topLeftAndBottomRightSerifed { 1 0 1 }
serifed { 1 1 3 }
define LowerKConfig : object foreach { suffix { LegsImpl {slabLT slabLB slabLegs} } } [pairs-of LowerKConfig] : do
straightSerifed { KLegs.Straight 1 1 3 }
curlySerifed { KLegs.Curly 1 1 3 }
cursiveSerifed { KLegs.Cursive 1 1 3 }
diagonalTailedSerifedCursiveSerifed { KLegs.CursiveTailed 1 1 3 }
symmetricTouchingSerifed { [KLegs.Symmetric 0] 1 1 3 }
symmetricConnectedSerifed { [KLegs.Symmetric : AdviceStroke 6] 1 1 3 }
straightSerifless { KLegs.Straight 0 0 0 }
curlySerifless { KLegs.Curly 0 0 0 }
cursiveSerifless { KLegs.Cursive 0 0 0 }
diagonalTailedSerifedCursiveSerifless { KLegs.CursiveTailed 0 0 0 }
symmetricTouchingSerifless { [KLegs.Symmetric 0] 0 0 0 }
symmetricConnectedSerifless { [KLegs.Symmetric : AdviceStroke 6] 0 0 0 }
straightTopLeftSerifed { KLegs.Straight 1 0 0 }
curlyTopLeftSerifed { KLegs.Curly 1 0 0 }
cursiveTopLeftSerifed { KLegs.Cursive 1 0 0 }
diagonalTailedSerifedCursiveTopLeftSerifed { KLegs.CursiveTailed 1 0 0 }
symmetricTouchingTopLeftSerifed { [KLegs.Symmetric 0] 1 0 0 }
symmetricConnectedTopLeftSerifed { [KLegs.Symmetric : AdviceStroke 6] 1 0 0 }
straightBottomRightSerifed { KLegs.Straight 0 0 1 }
curlyBottomRightSerifed { KLegs.Curly 0 0 1 }
cursiveBottomRightSerifed { KLegs.Cursive 0 0 1 }
diagonalTailedSerifedCursiveBottomRightSerifed { KLegs.CursiveTailed 0 0 1 }
symmetricTouchingBottomRightSerifed { [KLegs.Symmetric 0] 0 0 1 }
symmetricConnectedBottomRightSerifed { [KLegs.Symmetric : AdviceStroke 6] 0 0 1 }
straightTopLeftAndBottomRightSerifed { KLegs.Straight 1 0 1 }
curlyTopLeftAndBottomRightSerifed { KLegs.Curly 1 0 1 }
cursiveTopLeftAndBottomRightSerifed { KLegs.Cursive 1 0 1 }
diagonalTailedSerifedCursiveTopLeftAndBottomRightSerifed { KLegs.CursiveTailed 1 0 1 }
symmetricTouchingTopLeftAndBottomRightSerifed { [KLegs.Symmetric 0] 1 0 1 }
symmetricConnectedTopLeftAndBottomRightSerifed { [KLegs.Symmetric : AdviceStroke 6] 1 0 1 }
foreach { suffix { LegsImpl slabLT slabLB slabLegs } } [Object.entries LowerKConfig] : do
local straightBar : LegsImpl !== KLegs.Curly local straightBar : LegsImpl !== KLegs.Curly
define [kBaseShape attachment] : glyph-proc define [kBaseShape attachment] : glyph-proc

View file

@ -261,7 +261,7 @@ class VbStageAlternative {
this.key = key; this.key = key;
this.rank = raw.rank; this.rank = raw.rank;
this.next = raw.next; this.next = raw.next;
this.keySuffix = raw.keySuffix; if (key !== "*") this.keySuffix = raw.keySuffix ?? key;
this.descriptionSuffix = raw.descriptionSuffix; this.descriptionSuffix = raw.descriptionSuffix;
this.descriptionJoiner = raw.descriptionJoiner || "with"; this.descriptionJoiner = raw.descriptionJoiner || "with";
this.disableIf = raw.disableIf; this.disableIf = raw.disableIf;

File diff suppressed because it is too large Load diff