* Add round-top capital A (#2472). * Adjust placement of crossbar. Separate lambda and delta into a new file.
This commit is contained in:
parent
51f573b6fc
commit
304183d434
11 changed files with 322 additions and 224 deletions
1
changes/31.4.0.md
Normal file
1
changes/31.4.0.md
Normal file
|
@ -0,0 +1 @@
|
|||
* Add round-top capital A (#2472).
|
|
@ -101,14 +101,14 @@ glyph-block Letter-Cyrillic-Iotified-A : begin
|
|||
swSerif -- swSerif
|
||||
|
||||
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
|
||||
create-glyph "cyrl/AIotified.\(suffix)" : glyph-proc
|
||||
define df : include : DivFrame para.diversityM 3.5
|
||||
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 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]
|
||||
include : difference
|
||||
with-transform [ApparentTranslate shift 0]
|
||||
ALetterShape subDf fStraightBar slabKind CAP df.mvs
|
||||
AShape.Letter subDf fStraightBar slabKind CAP df.mvs
|
||||
intersection [MaskBelow df.mvs]
|
||||
MaskLeft : mix xIotifiedBarRight [Math.min (subDf.leftSB + shift) (xIotifiedBarRight + botGap)] 0.5
|
||||
|
||||
include : difference
|
||||
Iotified.A df CAP [mix df.leftSB df.rightSB (3 / 4)] (CAP / 2) (fCapital -- true)
|
||||
with-transform [ApparentTranslate shift 0]
|
||||
AMaskShape subDf fStraightBar CAP df.mvs
|
||||
AShape.Mask subDf fStraightBar CAP df.mvs
|
||||
|
||||
do "iotified a"
|
||||
glyph-block-import Letter-Latin-Lower-A : DoubleStorey DoubleStoreyConfig SingleStorey SingleStoreyConfig
|
||||
|
|
|
@ -8,7 +8,8 @@ glyph-block Letter-Cyrillic-SmallYus : begin
|
|||
glyph-block-import CommonShapes
|
||||
glyph-block-import Common-Derivatives
|
||||
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
|
||||
|
||||
define [CyrSmallYusShape df top straightBar _fine] : glyph-proc
|
||||
|
@ -16,12 +17,12 @@ glyph-block Letter-Cyrillic-SmallYus : begin
|
|||
include : LambdaShape
|
||||
df -- df
|
||||
fBarStraight -- straightBar
|
||||
slabKind -- 0
|
||||
top -- top
|
||||
sw -- fine
|
||||
slabKind -- 0
|
||||
include : intersection
|
||||
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
|
||||
|
||||
if SLAB : begin
|
||||
|
@ -41,7 +42,7 @@ glyph-block Letter-Cyrillic-SmallYus : begin
|
|||
slab -- false
|
||||
include : intersection
|
||||
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
|
||||
local sf : SerifFrame.fromDf df top 0 (swSerif -- fine)
|
||||
|
|
|
@ -4,6 +4,7 @@ export : define [apply] : begin
|
|||
define $$Capture$$ this
|
||||
run-glyph-module "./greek/upper-gamma.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/pi.mjs"
|
||||
run-glyph-module "./greek/upper-sigma.mjs"
|
||||
|
|
152
packages/font-glyphs/src/letter/greek/upper-lambda-delta.ptl
Normal file
152
packages/font-glyphs/src/letter/greek/upper-lambda-delta.ptl
Normal 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
|
||||
|
|
@ -12,18 +12,17 @@ glyph-block Letter-Latin-Upper-AA-AO : begin
|
|||
glyph-block-import Letter-Latin-Lower-M : MEnoughSpaceForFullSerifs dfM
|
||||
|
||||
do "A glyphs"
|
||||
glyph-block-import Letter-Latin-Upper-A : AConfig AMaskShape ALetterShape
|
||||
glyph-block-import Letter-Latin-Upper-A : ABottomRightRemoved ABarPosition
|
||||
glyph-block-import Letter-Latin-Upper-A : AShape AConfig
|
||||
|
||||
define [AHalfShape pShift df top fStraightBar slabKind] : begin
|
||||
local { subDf shift } : SubDfAndShift pShift df
|
||||
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
|
||||
local { subDf shift } : SubDfAndShift pShift df
|
||||
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-TOP 1
|
||||
|
@ -35,7 +34,7 @@ glyph-block Letter-Latin-Upper-AA-AO : begin
|
|||
smcpAA { null 'e' XH }
|
||||
|
||||
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 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
|
||||
include : df.markSet.(mk)
|
||||
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
|
||||
define df : include : DivFrame para.diversityM 3.5
|
||||
include : df.markSet.(mk)
|
||||
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
|
||||
define df : DivFrame para.diversityM 3.5
|
||||
set-width 0
|
||||
include : df.markSet.(mk)
|
||||
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
|
||||
define df : DivFrame para.diversityM 3.5
|
||||
set-width 0
|
||||
include : df.markSet.(mk)
|
||||
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
|
||||
define df : include : DivFrame para.diversityM 3.5
|
||||
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
|
||||
define df : include : DivFrame para.diversityM 3.5
|
||||
local { subDf shift } : SubDfAndShift 1 df
|
||||
include : union
|
||||
MaskAbove : [ABarPosition slabKind CAP] - df.mvs
|
||||
MaskAbove : [AShape.BarPos bodyShape slabKind CAP] - df.mvs
|
||||
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)/LeftMask" (follow -- 'A')
|
||||
|
|
|
@ -72,6 +72,15 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
|
|||
corner eleft top
|
||||
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 sw : Math.min df.mvs : AdviceStroke2 3 3 top df.div
|
||||
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
|
||||
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 eleft : df.middle - [HSwToV : 0.25 * sw]
|
||||
include : if straight
|
||||
AEAHalfStraight df top eleft sw
|
||||
AEAHalfCurly df top eleft sw
|
||||
include : match bodyShape
|
||||
[Just 0] : AEAHalfCurly df top eleft sw
|
||||
[Just 1] : AEAHalfStraight df top eleft sw
|
||||
[Just 2] : AEAHalfRoundTop df top eleft sw
|
||||
include : AEAHalfSerifs df top slabKind
|
||||
|
||||
define [AEEHalf df top slabKind] : glyph-proc
|
||||
|
@ -139,31 +149,33 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
|
|||
eject-contour 'serifRT'
|
||||
|
||||
define AConfig : object
|
||||
straightSerifless { true SLAB-A-NONE }
|
||||
curlySerifless { false SLAB-A-NONE }
|
||||
straightTopSerifed { true SLAB-A-TOP }
|
||||
curlyTopSerifed { false SLAB-A-TOP }
|
||||
straightBaseSerifed { true SLAB-A-BASE }
|
||||
curlyBaseSerifed { false SLAB-A-BASE }
|
||||
straightTriSerifed { true SLAB-A-TRI }
|
||||
curlyTriSerifed { false SLAB-A-TRI }
|
||||
straightSerifless { 1 SLAB-A-NONE }
|
||||
curlySerifless { 0 SLAB-A-NONE }
|
||||
roundTopSerifless { 2 SLAB-A-NONE }
|
||||
straightTopSerifed { 1 SLAB-A-TOP }
|
||||
curlyTopSerifed { 0 SLAB-A-TOP }
|
||||
straightBaseSerifed { 1 SLAB-A-BASE }
|
||||
curlyBaseSerifed { 0 SLAB-A-BASE }
|
||||
roundTopBaseSerifed { 2 SLAB-A-BASE }
|
||||
straightTriSerifed { 1 SLAB-A-TRI }
|
||||
curlyTriSerifed { 0 SLAB-A-TRI }
|
||||
|
||||
define EConfig : object
|
||||
serifless { SLAB-E-NONE }
|
||||
serifed { SLAB-E-ALL }
|
||||
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
|
||||
define df : include : DivFrame para.diversityM 3
|
||||
include : df.markSet.capital
|
||||
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
|
||||
define df : include : DivFrame para.diversityM 3
|
||||
include : df.markSet.e
|
||||
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
|
||||
create-glyph "AE/EHalf.\(suffix)" : glyph-proc
|
||||
|
|
|
@ -15,49 +15,59 @@ glyph-block Letter-Latin-Upper-A : begin
|
|||
glyph-block-import Letter-Shared-Shapes : SerifFrame
|
||||
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-TOP 1
|
||||
define SLAB-LEFT 2
|
||||
define SLAB-RIGHT 4
|
||||
define SLAB-CYRL-BGR 8
|
||||
|
||||
glyph-block-export AMaskShape
|
||||
define [AMaskShape] : with-params [df fBarStraight top sw] : new-glyph : glyph-proc
|
||||
include : VShapeOutline df fBarStraight top sw
|
||||
include : FlipAround (df.width / 2) (top / 2)
|
||||
|
||||
glyph-block-export ABarPosition
|
||||
define [ABarPosition slabKind top] : begin
|
||||
glyph-block-export AShape
|
||||
define AShape : namespace
|
||||
export : define [BarPos bodyShape slabKind top] : begin
|
||||
local fBaseSlabs : maskBits slabKind : bitOr SLAB-LEFT SLAB-RIGHT
|
||||
return : mix [if fBaseSlabs Stroke 0] top (XH / 2 / CAP)
|
||||
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 AConfig
|
||||
define AConfig : SuffixCfg.weave
|
||||
object
|
||||
straight true
|
||||
curly false
|
||||
export : define [Mask df bodyShape top sw] : match bodyShape
|
||||
([Just BODY-CURLY] || [Just BODY-STRAIGHT]) : new-glyph : glyph-proc
|
||||
include : VShapeOutline df bodyShape top sw
|
||||
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
|
||||
|
||||
object
|
||||
serifless SLAB-NONE
|
||||
topSerifed SLAB-TOP
|
||||
baseSerifed [bitOr SLAB-LEFT SLAB-RIGHT]
|
||||
triSerifed [bitOr SLAB-TOP SLAB-LEFT SLAB-RIGHT]
|
||||
export : define [Outer df bodyShape top sw] : match bodyShape
|
||||
([Just BODY-CURLY] || [Just BODY-STRAIGHT]) : new-glyph : glyph-proc
|
||||
include : VShape df bodyShape top sw
|
||||
include : FlipAround df.middle (top / 2)
|
||||
[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]
|
||||
|
||||
define [ASerifs df top sw slabKind] : glyph-proc : begin
|
||||
local sf : SerifFrame.fromDf df top 0
|
||||
if [maskBits slabKind SLAB-LEFT] : include
|
||||
if ([maskBits slabKind SLAB-CYRL-BGR] && para.isItalic) sf.lb.outer sf.lb.full
|
||||
if [maskBits slabKind SLAB-RIGHT] : include
|
||||
if ([maskBits slabKind SLAB-CYRL-BGR] && para.isItalic) sf.rb.outer sf.rb.full
|
||||
if [maskBits slabKind SLAB-TOP] : include : intersection [MaskLeft df.middle]
|
||||
if [maskBits slabKind : bitOr SLAB-LEFT SLAB-RIGHT]
|
||||
: 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
|
||||
define [CrossBar df bodyShape top sw] : begin
|
||||
define yBar : BarPos bodyShape slabKind top
|
||||
return : tagged 'crossBar'
|
||||
intersection [HBar.t 0 df.width yBar sw] [Mask df bodyShape top sw]
|
||||
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
|
||||
|
||||
glyph-block-export ABottomRightRemoved
|
||||
define [ABottomRightRemoved] : with-params [df fStraightBar slabKind top sw] : new-glyph : glyph-proc
|
||||
define yBar : ABarPosition slabKind top
|
||||
include : VShape df fStraightBar top sw
|
||||
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)
|
||||
|
||||
|
@ -66,7 +76,7 @@ glyph-block Letter-Latin-Upper-A : begin
|
|||
list
|
||||
s.z (-1) flat
|
||||
s.z 0 flat
|
||||
s.zz 0.55 [StrokeWidthBlend 0.48 0.45] [if fStraightBar curl g4]
|
||||
s.zz 0.55 [StrokeWidthBlend 0.48 0.45] [if bodyShape curl g4]
|
||||
s.z 1 straight.down.end
|
||||
|
||||
include : intersection
|
||||
|
@ -78,7 +88,7 @@ glyph-block Letter-Latin-Upper-A : begin
|
|||
intersection
|
||||
HBar.t 0 df.width yBar sw
|
||||
union
|
||||
AMaskShape df fStraightBar top sw
|
||||
AShape.Mask df bodyShape top sw
|
||||
intersection
|
||||
MaskRight df.middle
|
||||
MaskAbove (yBar - sw)
|
||||
|
@ -90,24 +100,49 @@ glyph-block Letter-Latin-Upper-A : begin
|
|||
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]
|
||||
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'
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
foreach { suffix { fStraightBar slabKind } } [Object.entries AConfig] : do
|
||||
glyph-block-export ASerifs
|
||||
define [ASerifs df top sw slabKind] : glyph-proc : begin
|
||||
local sf : SerifFrame.fromDf df top 0
|
||||
if [maskBits slabKind SLAB-LEFT] : include
|
||||
if ([maskBits slabKind SLAB-CYRL-BGR] && para.isItalic) sf.lb.outer sf.lb.full
|
||||
if [maskBits slabKind SLAB-RIGHT] : include
|
||||
if ([maskBits slabKind SLAB-CYRL-BGR] && para.isItalic) sf.rb.outer sf.rb.full
|
||||
if [maskBits slabKind SLAB-TOP] : include : intersection [MaskLeft df.middle]
|
||||
if [maskBits slabKind : bitOr SLAB-LEFT SLAB-RIGHT]
|
||||
: 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
|
||||
|
||||
glyph-block-export AConfig
|
||||
define AConfig : SuffixCfg.weave
|
||||
object
|
||||
straight BODY-STRAIGHT
|
||||
curly BODY-CURLY
|
||||
roundTop BODY-ROUND-TOP
|
||||
|
||||
object
|
||||
serifless SLAB-NONE
|
||||
topSerifed SLAB-TOP
|
||||
baseSerifed [bitOr SLAB-LEFT SLAB-RIGHT]
|
||||
triSerifed [bitOr SLAB-TOP SLAB-LEFT SLAB-RIGHT]
|
||||
|
||||
foreach { suffix { bodyShape slabKind } } [Object.entries AConfig] : do
|
||||
define [AShapeImpl mak top fGrek fOverlays] : glyph-proc
|
||||
local df : DivFrame 1
|
||||
include : df.markSet.(mak)
|
||||
|
@ -115,15 +150,10 @@ glyph-block Letter-Latin-Upper-A : begin
|
|||
if fGrek : include : SetGrekUpperTonos
|
||||
(df.rightSB - df.leftSB) * [if [maskBits slabKind SLAB-TOP] 0 0.2]
|
||||
|
||||
include : ALetterShape
|
||||
df -- df
|
||||
top -- top
|
||||
sw -- Stroke
|
||||
fStraightBar -- fStraightBar
|
||||
slabKind -- slabKind
|
||||
include : AShape.Letter df bodyShape slabKind top Stroke
|
||||
|
||||
if fOverlays : begin
|
||||
define yBar : ABarPosition slabKind top
|
||||
define yBar : AShape.BarPos bodyShape slabKind top
|
||||
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] [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 "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'
|
||||
link-reduced-variant 'A/sansSerif' 'A' MathSansSerif
|
||||
select-variant 'smcpA' 0x1D00 (follow -- 'A')
|
||||
|
@ -170,88 +173,6 @@ glyph-block Letter-Latin-Upper-A : begin
|
|||
alias 'cyrl/A' 0x410 'A'
|
||||
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-Latin-V : BBVShape BBVInnerMaskShape
|
||||
|
||||
|
|
|
@ -7,8 +7,6 @@ glyph-module
|
|||
glyph-block Symbol-Math-Letter-Like : begin
|
||||
glyph-block-import CommonShapes
|
||||
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
|
||||
|
||||
turned 'forall' 0x2200 'A.straightSerifless' Middle (CAP / 2)
|
||||
|
|
|
@ -567,6 +567,13 @@ selectorAffix.A = "curly"
|
|||
selectorAffix."A/sansSerif" = "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]
|
||||
rank = 1
|
||||
descriptionAffix = "serifs"
|
||||
|
@ -578,6 +585,7 @@ selectorAffix.AE = ""
|
|||
[prime.capital-a.variants-buildup.stages.serifs.top-serifed]
|
||||
rank = 2
|
||||
descriptionAffix = "serifs at top"
|
||||
enableIf = [{ body = "NOT round-top" }]
|
||||
selectorAffix.A = "topSerifed"
|
||||
selectorAffix."A/sansSerif" = "serifless"
|
||||
selectorAffix.AE = ""
|
||||
|
@ -592,6 +600,7 @@ selectorAffix.AE = ""
|
|||
[prime.capital-a.variants-buildup.stages.serifs.tri-serifed]
|
||||
rank = 4
|
||||
descriptionAffix = "serifs at both top and base"
|
||||
enableIf = [{ body = "NOT round-top" }]
|
||||
selectorAffix.A = "triSerifed"
|
||||
selectorAffix."A/sansSerif" = "serifless"
|
||||
selectorAffix.AE = ""
|
||||
|
@ -9812,6 +9821,7 @@ tag = "ss10"
|
|||
description = "Envy Code R Style"
|
||||
|
||||
[composite.ss10.design]
|
||||
capital-a = "round-top-serifless"
|
||||
capital-i = "serifed"
|
||||
capital-j = "serifless"
|
||||
capital-k = "symmetric-touching-serifless"
|
||||
|
@ -9852,6 +9862,7 @@ pilcrow = "low"
|
|||
micro-sign = "toothless-rounded-serifless"
|
||||
|
||||
[composite.ss10.italic]
|
||||
capital-a = "straight-serifless"
|
||||
a = "single-storey-tailed"
|
||||
i = "serifed-flat-tailed"
|
||||
j = "serifed"
|
||||
|
@ -9860,6 +9871,7 @@ cyrl-a = "single-storey-tailed"
|
|||
cyrl-u = "cursive-flat-hook-serifless"
|
||||
|
||||
[composite.ss10.slab-override.design]
|
||||
capital-a = "round-top-base-serifed"
|
||||
capital-j = "serifed"
|
||||
capital-k = "symmetric-touching-serifed"
|
||||
capital-w = "straight-vertical-sides-serifed"
|
||||
|
@ -9882,6 +9894,7 @@ seven = "straight-serifed"
|
|||
micro-sign = "toothless-rounded-serifed"
|
||||
|
||||
[composite.ss10.slab-override.italic]
|
||||
capital-a = "straight-base-serifed"
|
||||
g = "single-storey-flat-hook-serifless"
|
||||
i = "serifed-flat-tailed"
|
||||
k = "symmetric-connected-top-left-and-bottom-right-serifed"
|
||||
|
|
|
@ -1386,7 +1386,7 @@ const CompiledJsFromPtl = file.make(
|
|||
await target.need(MacroPtlFiles, sfu(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 silently.run(PATEL_C, "--strict", "--esm", ptl, "-o", out.full);
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue