Add round-top capital A (#2472). (#2473)

* Add round-top capital A (#2472).

* Adjust placement of crossbar. Separate lambda and delta into a new file.
This commit is contained in:
Belleve 2024-08-18 16:21:58 -10:00 committed by GitHub
parent 51f573b6fc
commit 304183d434
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 322 additions and 224 deletions

1
changes/31.4.0.md Normal file
View file

@ -0,0 +1 @@
* Add round-top capital A (#2472).

View file

@ -101,14 +101,14 @@ glyph-block Letter-Cyrillic-Iotified-A : begin
swSerif -- swSerif swSerif -- swSerif
do "iotified A" do "iotified A"
glyph-block-import Letter-Latin-Upper-A : AMaskShape ALetterShape AConfig glyph-block-import Letter-Latin-Upper-A : AShape AConfig
foreach { suffix { fStraightBar slabKind } } [Object.entries AConfig] : do foreach { suffix { fStraightBar slabKind } } [Object.entries AConfig] : do
create-glyph "cyrl/AIotified.\(suffix)" : glyph-proc create-glyph "cyrl/AIotified.\(suffix)" : glyph-proc
define df : include : DivFrame para.diversityM 3.5 define df : include : DivFrame para.diversityM 3.5
include : df.markSet.capital include : df.markSet.capital
local gap : (df.width - 2 * df.leftSB - 4 * df.mvs) / 3 local gap : (df.width - 2 * df.leftSB - 3 * df.mvs) / 3
local divSub : (df.width - gap - df.mvs) / Width local divSub : (df.width - gap - df.mvs) / Width
local subDf : DivFrame divSub 2 (df.leftSB / SB) df.mvs 0 local subDf : DivFrame divSub 2 (df.leftSB / SB) df.mvs 0
@ -117,14 +117,14 @@ glyph-block Letter-Cyrillic-Iotified-A : begin
local botGap : Math.max ((df.rightSB - df.leftSB) * 0.08) [AdviceStroke 6] local botGap : Math.max ((df.rightSB - df.leftSB) * 0.08) [AdviceStroke 6]
include : difference include : difference
with-transform [ApparentTranslate shift 0] with-transform [ApparentTranslate shift 0]
ALetterShape subDf fStraightBar slabKind CAP df.mvs AShape.Letter subDf fStraightBar slabKind CAP df.mvs
intersection [MaskBelow df.mvs] intersection [MaskBelow df.mvs]
MaskLeft : mix xIotifiedBarRight [Math.min (subDf.leftSB + shift) (xIotifiedBarRight + botGap)] 0.5 MaskLeft : mix xIotifiedBarRight [Math.min (subDf.leftSB + shift) (xIotifiedBarRight + botGap)] 0.5
include : difference include : difference
Iotified.A df CAP [mix df.leftSB df.rightSB (3 / 4)] (CAP / 2) (fCapital -- true) Iotified.A df CAP [mix df.leftSB df.rightSB (3 / 4)] (CAP / 2) (fCapital -- true)
with-transform [ApparentTranslate shift 0] with-transform [ApparentTranslate shift 0]
AMaskShape subDf fStraightBar CAP df.mvs AShape.Mask subDf fStraightBar CAP df.mvs
do "iotified a" do "iotified a"
glyph-block-import Letter-Latin-Lower-A : DoubleStorey DoubleStoreyConfig SingleStorey SingleStoreyConfig glyph-block-import Letter-Latin-Lower-A : DoubleStorey DoubleStoreyConfig SingleStorey SingleStoreyConfig

View file

@ -8,7 +8,8 @@ glyph-block Letter-Cyrillic-SmallYus : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : SerifFrame glyph-block-import Letter-Shared-Shapes : SerifFrame
glyph-block-import Letter-Latin-Upper-A : LambdaShape DeltaShape AMaskShape glyph-block-import Letter-Latin-Upper-A : AShape
glyph-block-import Letter-Latin-Upper-Lambda-Delta : LambdaShape DeltaShape
glyph-block-import Letter-Cyrillic-Iotified-A : Iotified glyph-block-import Letter-Cyrillic-Iotified-A : Iotified
define [CyrSmallYusShape df top straightBar _fine] : glyph-proc define [CyrSmallYusShape df top straightBar _fine] : glyph-proc
@ -16,12 +17,12 @@ glyph-block Letter-Cyrillic-SmallYus : begin
include : LambdaShape include : LambdaShape
df -- df df -- df
fBarStraight -- straightBar fBarStraight -- straightBar
slabKind -- 0
top -- top top -- top
sw -- fine sw -- fine
slabKind -- 0
include : intersection include : intersection
HBar.t df.leftSB df.rightSB (top / 2) fine HBar.t df.leftSB df.rightSB (top / 2) fine
AMaskShape df straightBar top fine AShape.Mask df [if straightBar 1 0] top fine
include : VBar.m df.middle (top / 2) 0 fine include : VBar.m df.middle (top / 2) 0 fine
if SLAB : begin if SLAB : begin
@ -41,7 +42,7 @@ glyph-block Letter-Cyrillic-SmallYus : begin
slab -- false slab -- false
include : intersection include : intersection
HBar.t df.leftSB df.rightSB (top / 2) fine HBar.t df.leftSB df.rightSB (top / 2) fine
AMaskShape df straightBar top fine AShape.Mask df [if straightBar 1 0] top fine
if SLAB : begin if SLAB : begin
local sf : SerifFrame.fromDf df top 0 (swSerif -- fine) local sf : SerifFrame.fromDf df top 0 (swSerif -- fine)

View file

@ -4,6 +4,7 @@ export : define [apply] : begin
define $$Capture$$ this define $$Capture$$ this
run-glyph-module "./greek/upper-gamma.mjs" run-glyph-module "./greek/upper-gamma.mjs"
run-glyph-module "./greek/upper-theta.mjs" run-glyph-module "./greek/upper-theta.mjs"
run-glyph-module "./greek/upper-lambda-delta.mjs"
run-glyph-module "./greek/upper-xi.mjs" run-glyph-module "./greek/upper-xi.mjs"
run-glyph-module "./greek/pi.mjs" run-glyph-module "./greek/pi.mjs"
run-glyph-module "./greek/upper-sigma.mjs" run-glyph-module "./greek/upper-sigma.mjs"

View file

@ -0,0 +1,152 @@
$$include '../../meta/macros.ptl'
import [mix fallback SuffixCfg] from "@iosevka/util"
import [MathSansSerif] from "@iosevka/glyph/relation"
import [bitOr] from "@iosevka/util/mask-bit"
glyph-module
glyph-block Letter-Latin-Upper-Lambda-Delta : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared : CreateTurnedLetter
glyph-block-import Letter-Latin-Upper-A : AShape ASerifs
glyph-block-import Letter-Latin-V : VShapeOutline VShape
define SLAB-NONE 0
define SLAB-TOP 1
define SLAB-LEFT 2
define SLAB-RIGHT 4
define SLAB-CYRL-BGR 8
define LambeaConfig : SuffixCfg.weave
object
straight true
curly false
object
serifless SLAB-NONE
topSerifed SLAB-TOP
baseSerifed [bitOr SLAB-LEFT SLAB-RIGHT]
triSerifed [bitOr SLAB-TOP SLAB-LEFT SLAB-RIGHT]
glyph-block-export LambdaShape
define [LambdaShape] : with-params [df fBarStraight slabKind top sw] : glyph-proc
include : VShape df fBarStraight top sw
include : FlipAround df.middle (top / 2)
include : ASerifs df top sw slabKind
define [LambdaMask] : with-params [df fBarStraight top sw] : glyph-proc
include : VShapeOutline df fBarStraight top sw
include : FlipAround df.middle (top / 2)
foreach { suffix { fStraightBar slabKind } } [Object.entries LambeaConfig] : do
create-glyph "grek/Lambda.\(suffix)" : glyph-proc
include : MarkSet.capital
include : LambdaShape
df -- [DivFrame 1]
fBarStraight -- fStraightBar
slabKind -- slabKind
top -- CAP
sw -- Stroke
create-glyph "grek/smcpLambda.\(suffix)" : glyph-proc
include : MarkSet.e
include : LambdaShape
df -- [DivFrame 1]
fBarStraight -- fStraightBar
slabKind -- slabKind
top -- XH
sw -- Stroke
create-glyph "cyrl/el.BGR.\(suffix)" : glyph-proc
include : MarkSet.e
include : LambdaShape
df -- [DivFrame 1]
fBarStraight -- fStraightBar
slabKind -- [bitOr slabKind SLAB-CYRL-BGR]
top -- XH
sw -- Stroke
select-variant 'grek/Lambda' 0x39B
link-reduced-variant 'grek/Lambda/sansSerif' 'grek/Lambda' MathSansSerif
select-variant 'grek/smcpLambda' 0x1D27 (follow -- 'grek/Lambda')
alias 'cyrl/El.BGR' null 'grek/Lambda'
select-variant 'cyrl/el.BGR' (follow -- 'grek/Lambda')
# Delta
glyph-block-export DeltaShape
define [DeltaShape] : with-params [df top sw fBarStraight] : union
LambdaShape
df -- df
fBarStraight -- fBarStraight
slabKind -- 0
top -- top
sw -- sw
intersection
HBar.b 0 df.width 0 sw
LambdaMask df fBarStraight top sw
define DeltaConfig : object
straight true
curly false
foreach { suffix fBarStraight } [pairs-of DeltaConfig] : do
create-glyph "grek/Delta.\(suffix)" : glyph-proc
include : MarkSet.capital
include : DeltaShape
df -- [DivFrame 1]
fBarStraight -- fBarStraight
top -- CAP
sw -- Stroke
create-glyph "increment.\(suffix)" : glyph-proc
include : MarkSet.capital
include : DeltaShape
df -- [DivFrame 1]
fBarStraight -- fBarStraight
top -- CAP
sw -- OperatorStroke
create-glyph "increment.aplForm.\(suffix)" : glyph-proc
include : MarkSet.oper
define shapeHeight : OperTop - OperBot
include : DeltaShape
df -- [DivFrame 1]
fBarStraight -- fBarStraight
top -- shapeHeight
sw -- OperatorStroke
include : ApparentTranslate 0 (SymbolMid - shapeHeight / 2)
create-glyph "increment.aplThin.\(suffix)" : glyph-proc
include : MarkSet.oper
define shapeHeight : OperTop - OperBot
include : DeltaShape
df -- [DivFrame 1]
fBarStraight -- fBarStraight
top -- shapeHeight
sw -- [AdviceStroke 3.75]
include : ApparentTranslate 0 (SymbolMid - shapeHeight / 2)
define [CodeNonApl u] : if (para.variantSelector.__enableAplForm === 'enable') null u
define [CodeApl u] : if (para.variantSelector.__enableAplForm === 'enable') u null
select-variant 'grek/Delta' 0x394
select-variant 'increment' [CodeNonApl 0x2206] (follow -- 'grek/Delta')
select-variant 'increment.aplForm' [CodeApl 0x2206] (follow -- 'grek/Delta')
select-variant 'increment.aplThin' (follow -- 'grek/Delta')
CreateTurnedLetter 'nabla' [CodeNonApl 0x2207] 'increment' HalfAdvance (CAP / 2)
CreateTurnedLetter 'nabla.aplForm' [CodeApl 0x2207] 'increment.aplForm' HalfAdvance SymbolMid
CreateTurnedLetter 'nabla.aplThin' null 'increment.aplThin' HalfAdvance SymbolMid
derive-glyphs 'cyrl/De.BGR' null 'grek/Delta' : function [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
local descenderOverflow : if SLAB SideJut ((RightSB - SB) * 0.075)
local xCutLeft SB
local xCutRight RightSB
include : HBar.b (xCutLeft - descenderOverflow) (xCutRight + descenderOverflow) 0
include : VBar.l (xCutLeft - descenderOverflow) (-LongJut + HalfStroke) Stroke
include : VBar.r (xCutRight + descenderOverflow) (-LongJut + HalfStroke) Stroke

View file

@ -12,18 +12,17 @@ glyph-block Letter-Latin-Upper-AA-AO : begin
glyph-block-import Letter-Latin-Lower-M : MEnoughSpaceForFullSerifs dfM glyph-block-import Letter-Latin-Lower-M : MEnoughSpaceForFullSerifs dfM
do "A glyphs" do "A glyphs"
glyph-block-import Letter-Latin-Upper-A : AConfig AMaskShape ALetterShape glyph-block-import Letter-Latin-Upper-A : AShape AConfig
glyph-block-import Letter-Latin-Upper-A : ABottomRightRemoved ABarPosition
define [AHalfShape pShift df top fStraightBar slabKind] : begin define [AHalfShape pShift df top fStraightBar slabKind] : begin
local { subDf shift } : SubDfAndShift pShift df local { subDf shift } : SubDfAndShift pShift df
return : with-transform [ApparentTranslate shift 0] return : with-transform [ApparentTranslate shift 0]
ALetterShape subDf fStraightBar slabKind top df.mvs AShape.Letter subDf fStraightBar slabKind top df.mvs
define [AHalfShapeMask pShift df top fStraightBar slabKind] : begin define [AHalfShapeMask pShift df top fStraightBar slabKind] : begin
local { subDf shift } : SubDfAndShift pShift df local { subDf shift } : SubDfAndShift pShift df
return : with-transform [ApparentTranslate shift 0] return : with-transform [ApparentTranslate shift 0]
AMaskShape subDf fStraightBar top df.mvs AShape.Mask subDf fStraightBar top df.mvs
define SLAB-NONE 0 define SLAB-NONE 0
define SLAB-TOP 1 define SLAB-TOP 1
@ -35,7 +34,7 @@ glyph-block Letter-Latin-Upper-AA-AO : begin
smcpAA { null 'e' XH } smcpAA { null 'e' XH }
foreach { prefix { code mk height } } [Object.entries ALetters] : do foreach { prefix { code mk height } } [Object.entries ALetters] : do
foreach { suffix { fStraightBar slabKind } } [Object.entries AConfig] : do foreach { suffix { bodyShape slabKind } } [Object.entries AConfig] : do
define skLeft : maskOffBits slabKind SLAB-RIGHT define skLeft : maskOffBits slabKind SLAB-RIGHT
define skRight : maskOffBits slabKind SLAB-LEFT define skRight : maskOffBits slabKind SLAB-LEFT
@ -43,39 +42,39 @@ glyph-block Letter-Latin-Upper-AA-AO : begin
define df : include : DivFrame para.diversityM 3.5 define df : include : DivFrame para.diversityM 3.5
include : df.markSet.(mk) include : df.markSet.(mk)
set-base-anchor 'cvDecompose' 0 0 set-base-anchor 'cvDecompose' 0 0
include : AHalfShape 0 df height fStraightBar skLeft include : AHalfShape 0 df height bodyShape skLeft
create-glyph "\(prefix)/LeftMask.\(suffix)" : glyph-proc create-glyph "\(prefix)/LeftMask.\(suffix)" : glyph-proc
define df : include : DivFrame para.diversityM 3.5 define df : include : DivFrame para.diversityM 3.5
include : df.markSet.(mk) include : df.markSet.(mk)
set-base-anchor 'cvDecompose' 0 0 set-base-anchor 'cvDecompose' 0 0
include : AHalfShapeMask 0 df height fStraightBar skLeft include : AHalfShapeMask 0 df height bodyShape skLeft
create-glyph "\(prefix)/Right.\(suffix)" : glyph-proc create-glyph "\(prefix)/Right.\(suffix)" : glyph-proc
define df : DivFrame para.diversityM 3.5 define df : DivFrame para.diversityM 3.5
set-width 0 set-width 0
include : df.markSet.(mk) include : df.markSet.(mk)
set-mark-anchor 'cvDecompose' 0 0 0 0 set-mark-anchor 'cvDecompose' 0 0 0 0
include : AHalfShape 1 df height fStraightBar skRight include : AHalfShape 1 df height bodyShape skRight
create-glyph "\(prefix)/RightMask.\(suffix)" : glyph-proc create-glyph "\(prefix)/RightMask.\(suffix)" : glyph-proc
define df : DivFrame para.diversityM 3.5 define df : DivFrame para.diversityM 3.5
set-width 0 set-width 0
include : df.markSet.(mk) include : df.markSet.(mk)
set-mark-anchor 'cvDecompose' 0 0 0 0 set-mark-anchor 'cvDecompose' 0 0 0 0
include : AHalfShapeMask 1 df height fStraightBar skRight include : AHalfShapeMask 1 df height bodyShape skRight
create-glyph "\(prefix)/AU/Left.\(suffix)" : glyph-proc create-glyph "\(prefix)/AU/Left.\(suffix)" : glyph-proc
define df : include : DivFrame para.diversityM 3.5 define df : include : DivFrame para.diversityM 3.5
local { subDf shift } : SubDfAndShift 1 df local { subDf shift } : SubDfAndShift 1 df
include : ABottomRightRemoved subDf fStraightBar slabKind CAP df.mvs include : AShape.LetterBottomRightRemoved subDf bodyShape slabKind CAP df.mvs
create-glyph "\(prefix)/AU/LeftMask.\(suffix)" : glyph-proc create-glyph "\(prefix)/AU/LeftMask.\(suffix)" : glyph-proc
define df : include : DivFrame para.diversityM 3.5 define df : include : DivFrame para.diversityM 3.5
local { subDf shift } : SubDfAndShift 1 df local { subDf shift } : SubDfAndShift 1 df
include : union include : union
MaskAbove : [ABarPosition slabKind CAP] - df.mvs MaskAbove : [AShape.BarPos bodyShape slabKind CAP] - df.mvs
MaskLeft : subDf.width / 2 MaskLeft : subDf.width / 2
include : ABottomRightRemoved subDf fStraightBar slabKind CAP df.mvs include : AShape.LetterBottomRightRemoved subDf bodyShape slabKind CAP df.mvs
select-variant "\(prefix)/Left" (follow -- 'A') select-variant "\(prefix)/Left" (follow -- 'A')
select-variant "\(prefix)/LeftMask" (follow -- 'A') select-variant "\(prefix)/LeftMask" (follow -- 'A')

View file

@ -72,6 +72,15 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
corner eleft top corner eleft top
corner eleft 0 corner eleft 0
define [AEAHalfRoundTop df top eleft sw] : glyph-proc
include : HBar.t df.leftSB eleft (XH / 2) sw
include : dispiro
widths.rhs sw
flat df.leftSB 0 [heading Upward]
curl pre@ (post@ <-> ArchDepthA)
arcvh
straight.right.end eleft top [heading Rightward]
define [AEAHalfSerifs df top slabKind] : glyph-proc define [AEAHalfSerifs df top slabKind] : glyph-proc
define sw : Math.min df.mvs : AdviceStroke2 3 3 top df.div define sw : Math.min df.mvs : AdviceStroke2 3 3 top df.div
define eleft : df.middle - [HSwToV : 0.25 * sw] define eleft : df.middle - [HSwToV : 0.25 * sw]
@ -84,12 +93,13 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
[Just SLAB-A-TOP] : begin [Just SLAB-A-TOP] : begin
include : HSerif.lt df.middle top [mix MidJutSide LongJut 0.5] include : HSerif.lt df.middle top [mix MidJutSide LongJut 0.5]
define [AEAHalf df top straight slabKind] : glyph-proc define [AEAHalf df bodyShape top slabKind] : glyph-proc
define sw : AESW df top define sw : AESW df top
define eleft : df.middle - [HSwToV : 0.25 * sw] define eleft : df.middle - [HSwToV : 0.25 * sw]
include : if straight include : match bodyShape
AEAHalfStraight df top eleft sw [Just 0] : AEAHalfCurly df top eleft sw
AEAHalfCurly df top eleft sw [Just 1] : AEAHalfStraight df top eleft sw
[Just 2] : AEAHalfRoundTop df top eleft sw
include : AEAHalfSerifs df top slabKind include : AEAHalfSerifs df top slabKind
define [AEEHalf df top slabKind] : glyph-proc define [AEEHalf df top slabKind] : glyph-proc
@ -139,31 +149,33 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
eject-contour 'serifRT' eject-contour 'serifRT'
define AConfig : object define AConfig : object
straightSerifless { true SLAB-A-NONE } straightSerifless { 1 SLAB-A-NONE }
curlySerifless { false SLAB-A-NONE } curlySerifless { 0 SLAB-A-NONE }
straightTopSerifed { true SLAB-A-TOP } roundTopSerifless { 2 SLAB-A-NONE }
curlyTopSerifed { false SLAB-A-TOP } straightTopSerifed { 1 SLAB-A-TOP }
straightBaseSerifed { true SLAB-A-BASE } curlyTopSerifed { 0 SLAB-A-TOP }
curlyBaseSerifed { false SLAB-A-BASE } straightBaseSerifed { 1 SLAB-A-BASE }
straightTriSerifed { true SLAB-A-TRI } curlyBaseSerifed { 0 SLAB-A-BASE }
curlyTriSerifed { false SLAB-A-TRI } roundTopBaseSerifed { 2 SLAB-A-BASE }
straightTriSerifed { 1 SLAB-A-TRI }
curlyTriSerifed { 0 SLAB-A-TRI }
define EConfig : object define EConfig : object
serifless { SLAB-E-NONE } serifless { SLAB-E-NONE }
serifed { SLAB-E-ALL } serifed { SLAB-E-ALL }
serifedCapped { SLAB-E-CAPPED } serifedCapped { SLAB-E-CAPPED }
foreach { suffix { fStraightBar slabKind } } [Object.entries AConfig] : do foreach { suffix { bodyShape slabKind } } [Object.entries AConfig] : do
create-glyph "AE/AHalf.\(suffix)" : glyph-proc create-glyph "AE/AHalf.\(suffix)" : glyph-proc
define df : include : DivFrame para.diversityM 3 define df : include : DivFrame para.diversityM 3
include : df.markSet.capital include : df.markSet.capital
set-base-anchor 'cvDecompose' 0 0 set-base-anchor 'cvDecompose' 0 0
include : AEAHalf df CAP fStraightBar slabKind include : AEAHalf df bodyShape CAP slabKind
create-glyph "smcpAE/AHalf.\(suffix)" : glyph-proc create-glyph "smcpAE/AHalf.\(suffix)" : glyph-proc
define df : include : DivFrame para.diversityM 3 define df : include : DivFrame para.diversityM 3
include : df.markSet.e include : df.markSet.e
set-base-anchor 'cvDecompose' 0 0 set-base-anchor 'cvDecompose' 0 0
include : AEAHalf df XH fStraightBar slabKind include : AEAHalf df bodyShape XH slabKind
foreach { suffix { slabKind } } [Object.entries EConfig] : do foreach { suffix { slabKind } } [Object.entries EConfig] : do
create-glyph "AE/EHalf.\(suffix)" : glyph-proc create-glyph "AE/EHalf.\(suffix)" : glyph-proc

View file

@ -15,34 +15,109 @@ glyph-block Letter-Latin-Upper-A : begin
glyph-block-import Letter-Shared-Shapes : SerifFrame glyph-block-import Letter-Shared-Shapes : SerifFrame
glyph-block-import Letter-Latin-V : VShapeOutline VShape VCornerHalfWidth glyph-block-import Letter-Latin-V : VShapeOutline VShape VCornerHalfWidth
define BODY-CURLY 0
define BODY-STRAIGHT 1
define BODY-ROUND-TOP 2
define SLAB-NONE 0 define SLAB-NONE 0
define SLAB-TOP 1 define SLAB-TOP 1
define SLAB-LEFT 2 define SLAB-LEFT 2
define SLAB-RIGHT 4 define SLAB-RIGHT 4
define SLAB-CYRL-BGR 8 define SLAB-CYRL-BGR 8
glyph-block-export AMaskShape glyph-block-export AShape
define [AMaskShape] : with-params [df fBarStraight top sw] : new-glyph : glyph-proc define AShape : namespace
include : VShapeOutline df fBarStraight top sw export : define [BarPos bodyShape slabKind top] : begin
include : FlipAround (df.width / 2) (top / 2) local fBaseSlabs : maskBits slabKind : bitOr SLAB-LEFT SLAB-RIGHT
return : mix [if fBaseSlabs Stroke 0] top : match bodyShape
[Just BODY-ROUND-TOP] : Math.min 0.5 (XH * 0.75 / CAP)
__ : XH / 2 / CAP
glyph-block-export ABarPosition export : define [Mask df bodyShape top sw] : match bodyShape
define [ABarPosition slabKind top] : begin ([Just BODY-CURLY] || [Just BODY-STRAIGHT]) : new-glyph : glyph-proc
local fBaseSlabs : maskBits slabKind : bitOr SLAB-LEFT SLAB-RIGHT include : VShapeOutline df bodyShape top sw
return : mix [if fBaseSlabs Stroke 0] top (XH / 2 / CAP) include : FlipAround df.middle (top / 2)
[Just BODY-ROUND-TOP] : spiro-outline
corner df.leftSB 0
curl pre@ (post@ <-> ArchDepthA)
arch.rhs top (sw -- sw)
flat post@ (pre@ <-> ArchDepthB)
corner df.rightSB 0
glyph-block-export AConfig export : define [Outer df bodyShape top sw] : match bodyShape
define AConfig : SuffixCfg.weave ([Just BODY-CURLY] || [Just BODY-STRAIGHT]) : new-glyph : glyph-proc
object include : VShape df bodyShape top sw
straight true include : FlipAround df.middle (top / 2)
curly false [Just BODY-ROUND-TOP] : dispiro
widths.rhs sw
flat df.leftSB 0 [heading Upward]
curl pre@ (post@ <-> ArchDepthA)
arch.rhs top (sw -- sw)
flat post@ (pre@ <-> ArchDepthB)
curl df.rightSB 0 [heading Downward]
object define [CrossBar df bodyShape top sw] : begin
serifless SLAB-NONE define yBar : BarPos bodyShape slabKind top
topSerifed SLAB-TOP return : tagged 'crossBar'
baseSerifed [bitOr SLAB-LEFT SLAB-RIGHT] intersection [HBar.t 0 df.width yBar sw] [Mask df bodyShape top sw]
triSerifed [bitOr SLAB-TOP SLAB-LEFT SLAB-RIGHT] export : define [Letter df bodyShape slabKind top sw] : new-glyph : glyph-proc
include : Outer df bodyShape top sw
include : CrossBar df bodyShape top sw
include : ASerifs df top sw slabKind
define [CuspBottomRightRemovedImpl df bodyShape slabKind top sw] : new-glyph : glyph-proc
define yBar : BarPos bodyShape slabKind top
include : VShape df bodyShape top sw
eject-contour 'strokeDown'
include : FlipAround df.middle (top / 2)
local rightStrokeKnots : begin
local s : Seg (df.middle + VCornerHalfWidth * sw / Stroke) top df.rightSB (yBar - sw)
list
s.z (-1) flat
s.z 0 flat
s.zz 0.55 [StrokeWidthBlend 0.48 0.45] [if bodyShape curl g4]
s.z 1 straight.down.end
include : intersection
MaskBelow top
MaskAbove (yBar - sw)
dispiro [widths.rhs sw] rightStrokeKnots
include : tagged 'crossBar'
intersection
HBar.t 0 df.width yBar sw
union
AShape.Mask df bodyShape top sw
intersection
MaskRight df.middle
MaskAbove (yBar - sw)
spiro-outline rightStrokeKnots
corner df.rightSB 0
corner 0 0
corner 0 top
include : ASerifs df top sw slabKind
eject-contour 'serifRB'
define [RoundTopBottomRightRemovedImpl df slabKind top sw] : new-glyph : glyph-proc
define yBar : BarPos BODY-ROUND-TOP slabKind top
include : difference
Outer df BODY-ROUND-TOP top sw
intersection
MaskRight df.middle
MaskBelow (yBar - sw)
include : CrossBar df BODY-ROUND-TOP top sw
include : ASerifs df top sw slabKind
eject-contour 'serifRB'
export : define [LetterBottomRightRemoved df bodyShape slabKind top sw] : match bodyShape
([Just BODY-CURLY] || [Just BODY-STRAIGHT]) : begin
return : CuspBottomRightRemovedImpl df bodyShape slabKind top sw
[Just BODY-ROUND-TOP] : begin
return : RoundTopBottomRightRemovedImpl df slabKind top sw
glyph-block-export ASerifs
define [ASerifs df top sw slabKind] : glyph-proc : begin define [ASerifs df top sw slabKind] : glyph-proc : begin
local sf : SerifFrame.fromDf df top 0 local sf : SerifFrame.fromDf df top 0
if [maskBits slabKind SLAB-LEFT] : include if [maskBits slabKind SLAB-LEFT] : include
@ -54,60 +129,20 @@ glyph-block Letter-Latin-Upper-A : begin
: then : HSerif.lt df.middle top (MidJutSide + [HSwToV : 0.25 * sw]) sf.swSerif : then : HSerif.lt df.middle top (MidJutSide + [HSwToV : 0.25 * sw]) sf.swSerif
: else : HSerif.lt df.middle top [mix MidJutSide LongJut 0.5] sf.swSerif : else : HSerif.lt df.middle top [mix MidJutSide LongJut 0.5] sf.swSerif
glyph-block-export ABottomRightRemoved glyph-block-export AConfig
define [ABottomRightRemoved] : with-params [df fStraightBar slabKind top sw] : new-glyph : glyph-proc define AConfig : SuffixCfg.weave
define yBar : ABarPosition slabKind top object
include : VShape df fStraightBar top sw straight BODY-STRAIGHT
eject-contour 'strokeDown' curly BODY-CURLY
include : FlipAround df.middle (top / 2) roundTop BODY-ROUND-TOP
local rightStrokeKnots : begin object
local s : Seg (df.middle + VCornerHalfWidth * sw / Stroke) top df.rightSB (yBar - sw) serifless SLAB-NONE
list topSerifed SLAB-TOP
s.z (-1) flat baseSerifed [bitOr SLAB-LEFT SLAB-RIGHT]
s.z 0 flat triSerifed [bitOr SLAB-TOP SLAB-LEFT SLAB-RIGHT]
s.zz 0.55 [StrokeWidthBlend 0.48 0.45] [if fStraightBar curl g4]
s.z 1 straight.down.end
include : intersection foreach { suffix { bodyShape slabKind } } [Object.entries AConfig] : do
MaskBelow top
MaskAbove (yBar - sw)
dispiro [widths.rhs sw] rightStrokeKnots
include : tagged 'crossBar'
intersection
HBar.t 0 df.width yBar sw
union
AMaskShape df fStraightBar top sw
intersection
MaskRight df.middle
MaskAbove (yBar - sw)
spiro-outline rightStrokeKnots
corner df.rightSB 0
corner 0 0
corner 0 top
include : ASerifs df top sw slabKind
eject-contour 'serifRB'
return : yBar - sw
glyph-block-export ALetterShape
define [ALetterShape] : with-params [df fStraightBar slabKind top sw] : new-glyph : glyph-proc
include : VShape df fStraightBar top sw
include : FlipAround df.middle (top / 2)
define yBar : ABarPosition slabKind top
include : tagged 'crossBar'
intersection [HBar.t 0 df.width yBar sw] [AMaskShape df fStraightBar top sw]
include : ASerifs df top sw slabKind
glyph-block-export LambdaShape
define [LambdaShape] : with-params [df fBarStraight top sw slabKind] : glyph-proc
include : VShape df fBarStraight top sw
include : FlipAround df.middle (top / 2)
include : ASerifs df top sw slabKind
foreach { suffix { fStraightBar slabKind } } [Object.entries AConfig] : do
define [AShapeImpl mak top fGrek fOverlays] : glyph-proc define [AShapeImpl mak top fGrek fOverlays] : glyph-proc
local df : DivFrame 1 local df : DivFrame 1
include : df.markSet.(mak) include : df.markSet.(mak)
@ -115,15 +150,10 @@ glyph-block Letter-Latin-Upper-A : begin
if fGrek : include : SetGrekUpperTonos if fGrek : include : SetGrekUpperTonos
(df.rightSB - df.leftSB) * [if [maskBits slabKind SLAB-TOP] 0 0.2] (df.rightSB - df.leftSB) * [if [maskBits slabKind SLAB-TOP] 0 0.2]
include : ALetterShape include : AShape.Letter df bodyShape slabKind top Stroke
df -- df
top -- top
sw -- Stroke
fStraightBar -- fStraightBar
slabKind -- slabKind
if fOverlays : begin if fOverlays : begin
define yBar : ABarPosition slabKind top define yBar : AShape.BarPos bodyShape slabKind top
eject-contour 'crossBar' eject-contour 'crossBar'
include : HOverlayBar [mix 0 SB 0.5] [mix Width RightSB 0.5] (yBar - HalfStroke + 0.5 * OverlayStroke) include : HOverlayBar [mix 0 SB 0.5] [mix Width RightSB 0.5] (yBar - HalfStroke + 0.5 * OverlayStroke)
include : HOverlayBar [mix 0 SB 0.5] [mix Width RightSB 0.5] [mix yBar top 0.25] include : HOverlayBar [mix 0 SB 0.5] [mix Width RightSB 0.5] [mix yBar top 0.25]
@ -134,33 +164,6 @@ glyph-block Letter-Latin-Upper-A : begin
create-glyph "currency/australSign.\(suffix)" : AShapeImpl "capital" CAP false true create-glyph "currency/australSign.\(suffix)" : AShapeImpl "capital" CAP false true
create-glyph "grek/Lambda.\(suffix)" : glyph-proc
include : MarkSet.capital
include : LambdaShape
df -- [DivFrame 1]
fBarStraight -- fStraightBar
top -- CAP
sw -- Stroke
slabKind -- slabKind
create-glyph "grek/smcpLambda.\(suffix)" : glyph-proc
include : MarkSet.e
include : LambdaShape
df -- [DivFrame 1]
fBarStraight -- fStraightBar
top -- XH
sw -- Stroke
slabKind -- slabKind
create-glyph "cyrl/el.BGR.\(suffix)" : glyph-proc
include : MarkSet.e
include : LambdaShape
df -- [DivFrame 1]
fBarStraight -- fStraightBar
top -- XH
sw -- Stroke
slabKind -- [bitOr slabKind SLAB-CYRL-BGR]
select-variant 'A' 'A' select-variant 'A' 'A'
link-reduced-variant 'A/sansSerif' 'A' MathSansSerif link-reduced-variant 'A/sansSerif' 'A' MathSansSerif
select-variant 'smcpA' 0x1D00 (follow -- 'A') select-variant 'smcpA' 0x1D00 (follow -- 'A')
@ -170,88 +173,6 @@ glyph-block Letter-Latin-Upper-A : begin
alias 'cyrl/A' 0x410 'A' alias 'cyrl/A' 0x410 'A'
CreateTurnedLetter 'turnA' 0x2C6F 'A' HalfAdvance (CAP / 2) CreateTurnedLetter 'turnA' 0x2C6F 'A' HalfAdvance (CAP / 2)
select-variant 'grek/Lambda' 0x39B
link-reduced-variant 'grek/Lambda/sansSerif' 'grek/Lambda' MathSansSerif
select-variant 'grek/smcpLambda' 0x1D27 (follow -- 'grek/Lambda')
alias 'cyrl/El.BGR' null 'grek/Lambda'
select-variant 'cyrl/el.BGR' (follow -- 'grek/Lambda')
# Delta
glyph-block-export DeltaShape
define [DeltaShape] : with-params [df top sw fBarStraight] : union
LambdaShape
df -- df
fBarStraight -- fBarStraight
top -- top
sw -- sw
slab -- false
intersection
HBar.b 0 df.width 0 sw
AMaskShape df fBarStraight top sw
define DeltaConfig : object
straight true
curly false
foreach { suffix fBarStraight } [pairs-of DeltaConfig] : do
create-glyph "grek/Delta.\(suffix)" : glyph-proc
include : MarkSet.capital
include : DeltaShape
df -- [DivFrame 1]
fBarStraight -- fBarStraight
top -- CAP
sw -- Stroke
create-glyph "increment.\(suffix)" : glyph-proc
include : MarkSet.capital
include : DeltaShape
df -- [DivFrame 1]
fBarStraight -- fBarStraight
top -- CAP
sw -- OperatorStroke
create-glyph "increment.aplForm.\(suffix)" : glyph-proc
include : MarkSet.oper
define shapeHeight : OperTop - OperBot
include : DeltaShape
df -- [DivFrame 1]
fBarStraight -- fBarStraight
top -- shapeHeight
sw -- OperatorStroke
include : ApparentTranslate 0 (SymbolMid - shapeHeight / 2)
create-glyph "increment.aplThin.\(suffix)" : glyph-proc
include : MarkSet.oper
define shapeHeight : OperTop - OperBot
include : DeltaShape
df -- [DivFrame 1]
fBarStraight -- fBarStraight
top -- shapeHeight
sw -- [AdviceStroke 3.75]
include : ApparentTranslate 0 (SymbolMid - shapeHeight / 2)
define [CodeNonApl u] : if (para.variantSelector.__enableAplForm === 'enable') null u
define [CodeApl u] : if (para.variantSelector.__enableAplForm === 'enable') u null
select-variant 'grek/Delta' 0x394
select-variant 'increment' [CodeNonApl 0x2206] (follow -- 'grek/Delta')
select-variant 'increment.aplForm' [CodeApl 0x2206] (follow -- 'grek/Delta')
select-variant 'increment.aplThin' (follow -- 'grek/Delta')
CreateTurnedLetter 'nabla' [CodeNonApl 0x2207] 'increment' HalfAdvance (CAP / 2)
CreateTurnedLetter 'nabla.aplForm' [CodeApl 0x2207] 'increment.aplForm' HalfAdvance SymbolMid
CreateTurnedLetter 'nabla.aplThin' null 'increment.aplThin' HalfAdvance SymbolMid
derive-glyphs 'cyrl/De.BGR' null 'grek/Delta' : function [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
local descenderOverflow : if SLAB SideJut ((RightSB - SB) * 0.075)
local xCutLeft SB
local xCutRight RightSB
include : HBar.b (xCutLeft - descenderOverflow) (xCutRight + descenderOverflow) 0
include : VBar.l (xCutLeft - descenderOverflow) (-LongJut + HalfStroke) Stroke
include : VBar.r (xCutRight + descenderOverflow) (-LongJut + HalfStroke) Stroke
glyph-block-import Letter-Blackboard : BBS BBD glyph-block-import Letter-Blackboard : BBS BBD
glyph-block-import Letter-Latin-V : BBVShape BBVInnerMaskShape glyph-block-import Letter-Latin-V : BBVShape BBVInnerMaskShape

View file

@ -7,8 +7,6 @@ glyph-module
glyph-block Symbol-Math-Letter-Like : begin glyph-block Symbol-Math-Letter-Like : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Latin-Upper-A : DeltaShape
glyph-block-import Letter-Latin-Upper-E : RevEShape
glyph-block-import Digits-Zero : OvalShapeT glyph-block-import Digits-Zero : OvalShapeT
turned 'forall' 0x2200 'A.straightSerifless' Middle (CAP / 2) turned 'forall' 0x2200 'A.straightSerifless' Middle (CAP / 2)

View file

@ -567,6 +567,13 @@ selectorAffix.A = "curly"
selectorAffix."A/sansSerif" = "curly" selectorAffix."A/sansSerif" = "curly"
selectorAffix.AE = "curly" selectorAffix.AE = "curly"
[prime.capital-a.variants-buildup.stages.body.round-top]
rank = 3
descriptionAffix = "round top"
selectorAffix.A = "roundTop"
selectorAffix."A/sansSerif" = "roundTop"
selectorAffix.AE = "curly"
[prime.capital-a.variants-buildup.stages.serifs.serifless] [prime.capital-a.variants-buildup.stages.serifs.serifless]
rank = 1 rank = 1
descriptionAffix = "serifs" descriptionAffix = "serifs"
@ -578,6 +585,7 @@ selectorAffix.AE = ""
[prime.capital-a.variants-buildup.stages.serifs.top-serifed] [prime.capital-a.variants-buildup.stages.serifs.top-serifed]
rank = 2 rank = 2
descriptionAffix = "serifs at top" descriptionAffix = "serifs at top"
enableIf = [{ body = "NOT round-top" }]
selectorAffix.A = "topSerifed" selectorAffix.A = "topSerifed"
selectorAffix."A/sansSerif" = "serifless" selectorAffix."A/sansSerif" = "serifless"
selectorAffix.AE = "" selectorAffix.AE = ""
@ -592,6 +600,7 @@ selectorAffix.AE = ""
[prime.capital-a.variants-buildup.stages.serifs.tri-serifed] [prime.capital-a.variants-buildup.stages.serifs.tri-serifed]
rank = 4 rank = 4
descriptionAffix = "serifs at both top and base" descriptionAffix = "serifs at both top and base"
enableIf = [{ body = "NOT round-top" }]
selectorAffix.A = "triSerifed" selectorAffix.A = "triSerifed"
selectorAffix."A/sansSerif" = "serifless" selectorAffix."A/sansSerif" = "serifless"
selectorAffix.AE = "" selectorAffix.AE = ""
@ -9812,6 +9821,7 @@ tag = "ss10"
description = "Envy Code R Style" description = "Envy Code R Style"
[composite.ss10.design] [composite.ss10.design]
capital-a = "round-top-serifless"
capital-i = "serifed" capital-i = "serifed"
capital-j = "serifless" capital-j = "serifless"
capital-k = "symmetric-touching-serifless" capital-k = "symmetric-touching-serifless"
@ -9852,6 +9862,7 @@ pilcrow = "low"
micro-sign = "toothless-rounded-serifless" micro-sign = "toothless-rounded-serifless"
[composite.ss10.italic] [composite.ss10.italic]
capital-a = "straight-serifless"
a = "single-storey-tailed" a = "single-storey-tailed"
i = "serifed-flat-tailed" i = "serifed-flat-tailed"
j = "serifed" j = "serifed"
@ -9860,6 +9871,7 @@ cyrl-a = "single-storey-tailed"
cyrl-u = "cursive-flat-hook-serifless" cyrl-u = "cursive-flat-hook-serifless"
[composite.ss10.slab-override.design] [composite.ss10.slab-override.design]
capital-a = "round-top-base-serifed"
capital-j = "serifed" capital-j = "serifed"
capital-k = "symmetric-touching-serifed" capital-k = "symmetric-touching-serifed"
capital-w = "straight-vertical-sides-serifed" capital-w = "straight-vertical-sides-serifed"
@ -9882,6 +9894,7 @@ seven = "straight-serifed"
micro-sign = "toothless-rounded-serifed" micro-sign = "toothless-rounded-serifed"
[composite.ss10.slab-override.italic] [composite.ss10.slab-override.italic]
capital-a = "straight-base-serifed"
g = "single-storey-flat-hook-serifless" g = "single-storey-flat-hook-serifless"
i = "serifed-flat-tailed" i = "serifed-flat-tailed"
k = "symmetric-connected-top-left-and-bottom-right-serifed" k = "symmetric-connected-top-left-and-bottom-right-serifed"

View file

@ -1386,7 +1386,7 @@ const CompiledJsFromPtl = file.make(
await target.need(MacroPtlFiles, sfu(ptl)); await target.need(MacroPtlFiles, sfu(ptl));
echo.action(echo.hl.command("Compile Script"), ptl); echo.action(echo.hl.command("Compile Script"), ptl);
await Promise.all([rm(oldOutPath), rm(out.full)]); // Remove old output file await rm(oldOutPath); // Remove old output file
await target.need(de(Path.dirname(out.full))); // Create output directory await target.need(de(Path.dirname(out.full))); // Create output directory
await silently.run(PATEL_C, "--strict", "--esm", ptl, "-o", out.full); await silently.run(PATEL_C, "--strict", "--esm", ptl, "-o", out.full);
}, },