Further reduce glyphs surrounding a. (#2593)

This commit is contained in:
John McWilliams 2024-11-17 16:55:31 -05:00 committed by GitHub
parent ca16776552
commit 763c932b9b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 142 additions and 133 deletions

View file

@ -147,7 +147,7 @@ glyph-block Letter-Cyrillic-Iotified-A : begin
include : df.markSet.e include : df.markSet.e
local { subDf shift } : SubDfAndShift 1 df local { subDf shift } : SubDfAndShift 1 df
include : with-transform [ApparentTranslate shift 0] [body subDf XH bar no-shape df.mvs] include : with-transform [ApparentTranslate shift 0] [body subDf XH bar df.mvs]
include : Iotified.full df XH (shift + subDf.leftSB + [HSwToV : 0.5 * df.mvs]) (XH / 2) include : Iotified.full df XH (shift + subDf.leftSB + [HSwToV : 0.5 * df.mvs]) (XH / 2)

View file

@ -38,8 +38,9 @@ glyph-block Letter-Greek-Lower-Alpha : begin
foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do
create-glyph "grek/alpha.\(suffix)" : glyph-proc create-glyph "grek/alpha.\(suffix)" : glyph-proc
include : MarkSet.e local df : include : DivFrame 1
include : body [DivFrame 1] XH bar no-shape include : df.markSet.e
include : body df XH bar
select-variant 'grek/alpha' 0x3B1 select-variant 'grek/alpha' 0x3B1
link-reduced-variant 'grek/alpha/sansSerif' 'grek/alpha' MathSansSerif link-reduced-variant 'grek/alpha/sansSerif' 'grek/alpha' MathSansSerif

View file

@ -44,7 +44,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local ada : topHeight - [mix (midyHeight + stroke / 2) (topHeight - O - stroke) (ArchDepthB / (ArchDepthA + ArchDepthB))] - [HSwToV TanSlope] * stroke local ada : topHeight - [mix (midyHeight + stroke / 2) (topHeight - O - stroke) (ArchDepthB / (ArchDepthA + ArchDepthB))] - [HSwToV TanSlope] * stroke
local adb : [mix (stroke + O) (midyHeight - stroke / 2) (ArchDepthB / (ArchDepthA + ArchDepthB))] + [HSwToV TanSlope] * stroke local adb : [mix (stroke + O) (midyHeight - stroke / 2) (ArchDepthB / (ArchDepthA + ArchDepthB))] + [HSwToV TanSlope] * stroke
local fine : stroke * CThin local fine : stroke * CThin
local stemFine : stroke * (ShoulderFine / Stroke) local stemFine : ShoulderFine * (stroke / Stroke)
return : object stroke midx midy ada adb fine stemFine return : object stroke midx midy ada adb fine stemFine
export : define [UpperShape] : begin export : define [UpperShape] : begin
@ -114,7 +114,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local adb : topHeight - [mix (midyHeight + stroke / 2) (topHeight - yo - stroke) (ArchDepthA / (ArchDepthA + ArchDepthB))] + [HSwToV TanSlope] * stroke local adb : topHeight - [mix (midyHeight + stroke / 2) (topHeight - yo - stroke) (ArchDepthA / (ArchDepthA + ArchDepthB))] + [HSwToV TanSlope] * stroke
local ada : [mix (stroke + yo) (midyHeight - stroke / 2) (ArchDepthA / (ArchDepthA + ArchDepthB))] - [HSwToV TanSlope] * stroke local ada : [mix (stroke + yo) (midyHeight - stroke / 2) (ArchDepthA / (ArchDepthA + ArchDepthB))] - [HSwToV TanSlope] * stroke
local fine : stroke * CThin local fine : stroke * CThin
local stemFine : stroke * (ShoulderFine / Stroke) local stemFine : ShoulderFine * (stroke / Stroke)
return : object stroke midx midy ada adb fine stemFine return : object stroke midx midy ada adb fine stemFine
define [UpperShapeT sink] : begin define [UpperShapeT sink] : begin
@ -376,47 +376,47 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
do "Volapuk AE" do "Volapuk AE"
glyph-block-import Letter-Latin-Lower-A : SingleStorey glyph-block-import Letter-Latin-Lower-A : SingleStorey
define [FullBarBody df height bar hook ada2 adb2] : glyph-proc define [FullBarBody df height bar hook ada adb] : glyph-proc
local eps : SmallEpsilon CLOSED-STEM CLOSED-STEM height 0 local eps : SmallEpsilon CLOSED-STEM CLOSED-STEM height 0
blend -- VolBlend blend -- VolBlend
hook -- hook hook -- hook
overflow -- 0 overflow -- 0
ada2 -- ada2 ada2 -- ada
adb2 -- adb2 adb2 -- adb
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : bar df height no-shape stroke include : bar df height stroke
define [EarlessCornerBody df height bar hook ada2 adb2] : glyph-proc define [EarlessCornerBody df height bar hook ada adb] : glyph-proc
local eps : SmallEpsilon SLAB-INWARD CLOSED-STEM height 0 local eps : SmallEpsilon SLAB-INWARD CLOSED-STEM height 0
blend -- VolBlend blend -- VolBlend
hook -- hook hook -- hook
overflow -- 0 overflow -- 0
ada2 -- ada2 ada2 -- ada
adb2 -- adb2 adb2 -- adb
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : bar df (height - DToothlessRise) no-shape stroke include : bar df (height - DToothlessRise) stroke
define [EarlessRoundedBody df height bar hook ada2 adb2] : glyph-proc define [EarlessRoundedBody df height bar hook ada adb] : glyph-proc
local eps : SmallEpsilon CLOSED-ROUND CLOSED-STEM height 0 local eps : SmallEpsilon CLOSED-ROUND CLOSED-STEM height 0
blend -- VolBlend blend -- VolBlend
hook -- hook hook -- hook
overflow -- 0 overflow -- 0
ada2 -- ada2 ada2 -- ada
adb2 -- adb2 adb2 -- adb
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : bar df (height - adb2) no-shape stroke include : bar df (height - adb) stroke
define SingleStoreyConfig : object define SingleStoreyConfig : object
singleStoreySerifless { FullBarBody SingleStorey.SeriflessBar } singleStoreySerifless { FullBarBody SingleStorey.SeriflessBar }
singleStoreyEarlessCornerSerifless { EarlessCornerBody SingleStorey.SeriflessBar } singleStoreyEarlessCornerSerifless { EarlessCornerBody SingleStorey.SeriflessBar }
singleStoreyEarlessRoundedSerifless { EarlessRoundedBody SingleStorey.SeriflessBar } singleStoreyEarlessRoundedSerifless { EarlessRoundedBody SingleStorey.SeriflessBar }
singleStoreySerifed { FullBarBody SingleStorey.SerifedBar } singleStoreySerifed { FullBarBody SingleStorey.BottomSerifedBar }
singleStoreyEarlessCornerSerifed { EarlessCornerBody SingleStorey.SerifedBar } singleStoreyEarlessCornerSerifed { EarlessCornerBody SingleStorey.BottomSerifedBar }
singleStoreyEarlessRoundedSerifed { EarlessRoundedBody SingleStorey.SerifedBar } singleStoreyEarlessRoundedSerifed { EarlessRoundedBody SingleStorey.BottomSerifedBar }
singleStoreyDoubleSerifed { FullBarBody SingleStorey.DoubleSerifedBar } singleStoreyDoubleSerifed { FullBarBody SingleStorey.DoubleSerifedBar }
@ -428,61 +428,63 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do
create-glyph "AeVolapuk.\(suffix)" : glyph-proc create-glyph "AeVolapuk.\(suffix)" : glyph-proc
include : MarkSet.capital local df : include : DivFrame 1
include : body [DivFrame 1] CAP bar Hook ArchDepthA ArchDepthB include : df.markSet.capital
include : body df CAP bar Hook ArchDepthA ArchDepthB
create-glyph "aeVolapuk.\(suffix)" : glyph-proc create-glyph "aeVolapuk.\(suffix)" : glyph-proc
include : MarkSet.e local df : include : DivFrame 1
include : body [DivFrame 1] XH bar SHook SmallArchDepthA SmallArchDepthB include : df.markSet.e
include : body df XH bar SHook SmallArchDepthA SmallArchDepthB
do "Volapuk UE" do "Volapuk UE"
glyph-block-import Letter-Latin-U : USerifs glyph-block-import Letter-Latin-U : USerifs
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar glyph-block-import Letter-Shared-Shapes : RightwardTailedBar
define [UToothed df height slab hook ada2 adb2] : glyph-proc define [UToothed df height slab hook ada adb] : glyph-proc
set-base-anchor 'trailing' df.rightSB 0 set-base-anchor 'trailing' df.rightSB 0
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0 local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0
blend -- VolBlend blend -- VolBlend
hook -- hook hook -- hook
overflow -- 0 overflow -- 0
ada2 -- ada2 ada2 -- ada
adb2 -- adb2 adb2 -- adb
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : VBar.r df.rightSB 0 height stroke include : VBar.r df.rightSB 0 height stroke
include : slab df height include : slab df height
define [UTailed df height slab hook ada2 adb2] : glyph-proc define [UTailed df height slab hook ada adb] : glyph-proc
set-base-anchor 'trailing' (df.rightSB + SideJut) 0 set-base-anchor 'trailing' (df.rightSB + SideJut) 0
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0 local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0
blend -- VolBlend blend -- VolBlend
hook -- hook hook -- hook
overflow -- 0 overflow -- 0
ada2 -- ada2 ada2 -- ada
adb2 -- adb2 adb2 -- adb
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : RightwardTailedBar df.rightSB 0 height stroke include : RightwardTailedBar df.rightSB 0 height stroke
include : slab df height include : slab df height
define [UToothlessRounded df height slab hook ada2 adb2] : glyph-proc define [UToothlessRounded df height slab hook ada adb] : glyph-proc
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-ROUND height 0 local eps : SmallEpsilon OPEN-VERTICAL CLOSED-ROUND height 0
blend -- VolBlend blend -- VolBlend
hook -- hook hook -- hook
overflow -- 0 overflow -- 0
ada2 -- ada2 ada2 -- ada
adb2 -- adb2 adb2 -- adb
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : VBar.r df.rightSB ada2 height stroke include : VBar.r df.rightSB ada height stroke
include : slab df height include : slab df height
define [UToothlessCorner df height slab hook ada2 adb2] : glyph-proc define [UToothlessCorner df height slab hook ada adb] : glyph-proc
local eps : SmallEpsilon OPEN-VERTICAL SLAB-INWARD height 0 local eps : SmallEpsilon OPEN-VERTICAL SLAB-INWARD height 0
blend -- VolBlend blend -- VolBlend
hook -- hook hook -- hook
overflow -- 0 overflow -- 0
ada2 -- ada2 ada2 -- ada
adb2 -- adb2 adb2 -- adb
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : VBar.r df.rightSB DToothlessRise height stroke include : VBar.r df.rightSB DToothlessRise height stroke

View file

@ -9,11 +9,10 @@ glyph-block Letter-Latin-Lower-A : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Mark-Shared-Metrics : markHalfStroke glyph-block-import Mark-Shared-Metrics : markHalfStroke
glyph-block-import Letter-Shared : CreateAccentedComposition glyph-block-import Letter-Shared : CreateAccentedComposition CreateTurnedLetter
glyph-block-import Letter-Shared : CreateTurnedLetter
glyph-block-import Letter-Shared-Shapes : SerifFrame OBarLeft OBarRight ArcStartSerif glyph-block-import Letter-Shared-Shapes : SerifFrame OBarLeft OBarRight ArcStartSerif
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar InvRightwardTailedBar glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend
glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend RetroflexHook InwardSlabArcStart glyph-block-import Letter-Shared-Shapes : RetroflexHook InwardSlabArcStart
glyph-block-export DoubleStorey glyph-block-export DoubleStorey
define DoubleStorey : namespace define DoubleStorey : namespace
@ -142,105 +141,112 @@ glyph-block Letter-Latin-Lower-A : begin
glyph-block-export SingleStorey glyph-block-export SingleStorey
define SingleStorey : namespace define SingleStorey : namespace
export : define [FullBarBody df height bar mask _sw] : glyph-proc define [EaredBodyImpl df top sw] : OBarRight.shape
top -- top
left -- df.leftSB
right -- df.rightSB
sw -- sw
fine -- (ShoulderFine * (sw / Stroke))
ada -- [df.archDepthA SmallArchDepth sw]
adb -- [df.archDepthB SmallArchDepth sw]
export : define [FullBarBody df top bar _sw] : glyph-proc
local sw : fallback _sw df.mvs local sw : fallback _sw df.mvs
include : OBarRight.shape include : EaredBodyImpl df top sw
top -- height include : bar df top sw
left -- df.leftSB export : define [ScriptCutBody df top bar _sw] : glyph-proc
right -- df.rightSB local sw : fallback _sw df.mvs
sw -- sw include : EaredBodyImpl df top sw
fine -- sw * (ShoulderFine / Stroke) include : bar df (top - sw / 2) sw
ada -- [df.archDepthA SmallArchDepth sw] include : spiro-outline
adb -- [df.archDepthB SmallArchDepth sw] corner df.rightSB top
include : bar df height mask sw corner df.rightSB (top - sw / 2)
export : define [EarlessCornerBody df height bar mask _sw] : glyph-proc corner (df.rightSB - [HSwToV sw]) (top - sw / 2)
export : define [EarlessCornerBody df top bar _sw] : glyph-proc
local sw : fallback _sw df.mvs local sw : fallback _sw df.mvs
include : OBarLeft.toothless include : OBarLeft.toothless
top -- height top -- top
left -- df.leftSB left -- df.leftSB
right -- df.rightSB right -- df.rightSB
sw -- sw sw -- sw
fine -- sw * (ShoulderFine / Stroke) fine -- (ShoulderFine * (sw / Stroke))
ada -- [df.archDepthA SmallArchDepth sw] ada -- [df.archDepthA SmallArchDepth sw]
adb -- [df.archDepthB SmallArchDepth sw] adb -- [df.archDepthB SmallArchDepth sw]
rise -- DToothlessRise rise -- DToothlessRise
mBlend -- DMBlend mBlend -- DMBlend
include : FlipAround df.middle (height / 2) include : FlipAround df.middle (top / 2)
include : bar df (height - DToothlessRise) mask sw include : bar df (top - DToothlessRise) sw
export : define [EarlessRoundedBody df height bar mask _sw] : glyph-proc export : define [EarlessRoundedBody df top bar _sw] : glyph-proc
local sw : fallback _sw df.mvs local sw : fallback _sw df.mvs
local ada : df.archDepthA SmallArchDepth sw local ada : df.archDepthA SmallArchDepth sw
local adb : df.archDepthB SmallArchDepth sw local adb : df.archDepthB SmallArchDepth sw
include : OBarLeft.rounded include : OBarLeft.rounded
top -- height top -- top
left -- df.leftSB left -- df.leftSB
right -- df.rightSB right -- df.rightSB
sw -- sw sw -- sw
fine -- sw * (ShoulderFine / Stroke) fine -- (ShoulderFine * (sw / Stroke))
ada -- ada ada -- ada
adb -- adb adb -- adb
yTerminal -- (height - ada) yTerminal -- (top - ada)
include : FlipAround df.middle (height / 2) include : FlipAround df.middle (top / 2)
include : bar df (height - adb) mask sw include : bar df (top - adb) sw
export : define [SeriflessBar df height mask sw] : glyph-proc export : define [SeriflessBar df top sw] : glyph-proc
set-base-anchor 'trailing' df.rightSB 0 set-base-anchor 'trailing' df.rightSB 0
include : difference include : VBar.r df.rightSB 0 top sw
VBar.r df.rightSB 0 height sw export : define [TopSerifedBar df top sw] : glyph-proc
mask df height sw include : SeriflessBar df top sw
export : define [SerifedBar df height mask sw] : glyph-proc local sf : SerifFrame.fromDf df top 0 (swSerif -- sw)
include : SeriflessBar df height mask sw include sf.rt.outer
include [SerifFrame.fromDf df height 0 (swSerif -- sw)].rb.outer export : define [BottomSerifedBar df top sw] : glyph-proc
export : define [TopSerifedBar df height mask sw] : glyph-proc include : SeriflessBar df top sw
include : SeriflessBar df height mask sw local sf : SerifFrame.fromDf df top 0 (swSerif -- sw)
include [SerifFrame.fromDf df height 0 (swSerif -- sw)].rt.outer include sf.rb.outer
export : define [DoubleSerifedBar df height mask sw] : glyph-proc export : define [DoubleSerifedBar df top sw] : glyph-proc
include : SerifedBar df height mask sw include : SeriflessBar df top sw
include [SerifFrame.fromDf df height 0 (swSerif -- sw)].rt.outer local sf : SerifFrame.fromDf df top 0 (swSerif -- sw)
export : define [TailedBar df height mask sw] : glyph-proc include : composite-proc sf.rt.outer sf.rb.outer
export : define [TailedBar df top sw] : glyph-proc
set-base-anchor 'trailing' (df.rightSB + SideJut) 0 set-base-anchor 'trailing' (df.rightSB + SideJut) 0
include : difference include : RightwardTailedBar df.rightSB 0 top sw
RightwardTailedBar df.rightSB 0 height sw export : define [TailedSerifedBar df top sw] : glyph-proc
mask df height sw include : TailedBar df top sw
export : define [TailedSerifedBar df height mask sw] : glyph-proc local sf : SerifFrame.fromDf df top 0 (swSerif -- sw)
include : TailedBar df height mask sw include sf.rt.outer
include [SerifFrame.fromDf df height 0 (swSerif -- sw)].rt.outer
export : define [ScriptCut df y sw] : spiro-outline
corner df.rightSB y
corner (df.rightSB - [HSwToV sw]) y
corner (df.rightSB - [HSwToV sw]) (y - sw / 2)
glyph-block-export SingleStoreyConfig glyph-block-export SingleStoreyConfig
define SingleStoreyConfig : object define SingleStoreyConfig : object
singleStoreySerifless { SingleStorey.FullBarBody SingleStorey.SeriflessBar } singleStoreySerifless { SingleStorey.FullBarBody SingleStorey.SeriflessBar }
singleStoreyEarlessCornerSerifless { SingleStorey.EarlessCornerBody SingleStorey.SeriflessBar } singleStoreyEarlessCornerSerifless { SingleStorey.EarlessCornerBody SingleStorey.SeriflessBar }
singleStoreyEarlessRoundedSerifless { SingleStorey.EarlessRoundedBody SingleStorey.SeriflessBar } singleStoreyEarlessRoundedSerifless { SingleStorey.EarlessRoundedBody SingleStorey.SeriflessBar }
singleStoreyScriptCutSerifless { SingleStorey.ScriptCutBody SingleStorey.SeriflessBar }
singleStoreyTopSerifed { SingleStorey.FullBarBody SingleStorey.TopSerifedBar } singleStoreyTopSerifed { SingleStorey.FullBarBody SingleStorey.TopSerifedBar }
singleStoreySerifed { SingleStorey.FullBarBody SingleStorey.SerifedBar } singleStoreySerifed { SingleStorey.FullBarBody SingleStorey.BottomSerifedBar }
singleStoreyEarlessCornerSerifed { SingleStorey.EarlessCornerBody SingleStorey.SerifedBar } singleStoreyEarlessCornerSerifed { SingleStorey.EarlessCornerBody SingleStorey.BottomSerifedBar }
singleStoreyEarlessRoundedSerifed { SingleStorey.EarlessRoundedBody SingleStorey.SerifedBar } singleStoreyEarlessRoundedSerifed { SingleStorey.EarlessRoundedBody SingleStorey.BottomSerifedBar }
singleStoreyScriptCutSerifed { SingleStorey.ScriptCutBody SingleStorey.BottomSerifedBar }
singleStoreyDoubleSerifed { SingleStorey.FullBarBody SingleStorey.DoubleSerifedBar } singleStoreyDoubleSerifed { SingleStorey.FullBarBody SingleStorey.DoubleSerifedBar }
singleStoreyTailed { SingleStorey.FullBarBody SingleStorey.TailedBar } singleStoreyTailed { SingleStorey.FullBarBody SingleStorey.TailedBar }
singleStoreyEarlessCornerTailed { SingleStorey.EarlessCornerBody SingleStorey.TailedBar } singleStoreyEarlessCornerTailed { SingleStorey.EarlessCornerBody SingleStorey.TailedBar }
singleStoreyEarlessRoundedTailed { SingleStorey.EarlessRoundedBody SingleStorey.TailedBar } singleStoreyEarlessRoundedTailed { SingleStorey.EarlessRoundedBody SingleStorey.TailedBar }
singleStoreyScriptCutTailed { SingleStorey.ScriptCutBody SingleStorey.TailedBar }
singleStoreyTailedSerifed { SingleStorey.FullBarBody SingleStorey.TailedSerifedBar } singleStoreyTailedSerifed { SingleStorey.FullBarBody SingleStorey.TailedSerifedBar }
foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do
create-glyph "a.\(suffix)" : glyph-proc create-glyph "a.\(suffix)" : glyph-proc
include : MarkSet.e local df : include : DivFrame 1
include : body [DivFrame 1] XH bar no-shape include : df.markSet.e
include : body df XH bar
create-glyph "AScript.\(suffix)" : glyph-proc create-glyph "AScript.\(suffix)" : glyph-proc
include : MarkSet.capital local df : include : DivFrame 1
include : body [DivFrame 1] CAP bar SingleStorey.ScriptCut include : df.markSet.capital
create-glyph "aScript.\(suffix)" : glyph-proc include : body df CAP bar
include : MarkSet.e
include : body [DivFrame 1] XH bar SingleStorey.ScriptCut
select-variant 'a' 'a' select-variant 'a' 'a'
link-reduced-variant 'a/sansSerif' 'a' MathSansSerif link-reduced-variant 'a/sansSerif' 'a' MathSansSerif
@ -253,10 +259,10 @@ glyph-block Letter-Latin-Lower-A : begin
derive-composites 'aRetroflexHook' 0x1D8F 'a/rtailBase' derive-composites 'aRetroflexHook' 0x1D8F 'a/rtailBase'
RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke) RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke)
select-variant 'aScript' 0x251 (follow -- [conditional-follow SLAB 'aScript/autoSerifed/slab' 'aScript/autoSerifed/sans']) select-variant 'aScript' 0x251 (follow -- [conditional-follow SLAB 'aScript/autoSerifed/slab' 'aScript/autoSerifed/sans']) (shapeFrom -- 'a')
select-variant 'AScript' 0x2C6D (follow -- [conditional-follow SLAB 'aScript/autoSerifed/slab' 'aScript/autoSerifed/sans']) select-variant 'AScript' 0x2C6D (follow -- [conditional-follow SLAB 'aScript/autoSerifed/slab' 'aScript/autoSerifed/sans'])
derive-composites 'aScriptRetroflexHook' 0x1D90 'aScript.singleStoreySerifless' derive-composites 'aScriptRetroflexHook' 0x1D90 'a.singleStoreyScriptCutSerifless'
RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke) RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke)
CreateTurnedLetter 'turnaScript' 0x252 'aScript' HalfAdvance (XH / 2) CreateTurnedLetter 'turnaScript' 0x252 'aScript' HalfAdvance (XH / 2)

View file

@ -21,7 +21,7 @@ glyph-block Letter-Latin-Lower-G : begin
# overlay bar width for double-storey g # overlay bar width for double-storey g
define obwDoubleStorey : Math.min [AdviceStroke 5] (0.5 / 3 * (CAP - Stroke * 4)) define obwDoubleStorey : Math.min [AdviceStroke 5] (0.5 / 3 * (CAP - Stroke * 4))
create-glyph 'g.doubleStorey' : glyph-proc create-glyph 'g.doubleStoreyClosed' : glyph-proc
include : MarkSet.p include : MarkSet.p
local obot : XH * DesignParameters.gBarPos - O - Stroke * 0.4 local obot : XH * DesignParameters.gBarPos - O - Stroke * 0.4
include : OShape XH obot SB (RightSB - 0.3 * SB) include : OShape XH obot SB (RightSB - 0.3 * SB)
@ -51,7 +51,7 @@ glyph-block Letter-Latin-Lower-G : begin
set-base-anchor 'overlay' Middle [mix (Descender + O) groundy 0.5] set-base-anchor 'overlay' Middle [mix (Descender + O) groundy 0.5]
set-base-anchor 'strike' Middle (XH / 2) set-base-anchor 'strike' Middle (XH / 2)
derive-composites "gBar.doubleStorey" null "g.doubleStorey" [OverlayW obwDoubleStorey] derive-composites "gBar.doubleStoreyClosed" null "g.doubleStoreyClosed" [OverlayW obwDoubleStorey]
create-glyph 'g.doubleStoreyOpen' : glyph-proc create-glyph 'g.doubleStoreyOpen' : glyph-proc
include : MarkSet.p include : MarkSet.p
@ -147,7 +147,7 @@ glyph-block Letter-Latin-Lower-G : begin
define SingleStoreyConfig : SuffixCfg.weave define SingleStoreyConfig : SuffixCfg.weave
object # hook object # hook
singleStorey SingleStorey.BentHook singleStoreyBentHook SingleStorey.BentHook
singleStoreyFlatHook SingleStorey.FlatHook singleStoreyFlatHook SingleStorey.FlatHook
object # ear/serif object # ear/serif
serifless { SingleStorey.SeriflessBody 0 } serifless { SingleStorey.SeriflessBody 0 }

View file

@ -141,7 +141,7 @@ glyph-block Letter-Latin-Lower-J : begin
alias 'grek/yot' 0x3F3 'j' alias 'grek/yot' 0x3F3 'j'
alias 'cyrl/je' 0x458 'j' alias 'cyrl/je' 0x458 'j'
create-glyph 'dotlessjCurlyTail.serifless' : glyph-proc create-glyph 'dotlessjCurlyTail.bentHookSerifless' : glyph-proc
include : MarkSet.p include : MarkSet.p
set-base-anchor 'above' (Middle + JBalance) XH set-base-anchor 'above' (Middle + JBalance) XH
local fine : AdviceStroke 3.5 local fine : AdviceStroke 3.5
@ -155,8 +155,8 @@ glyph-block Letter-Latin-Lower-J : begin
x2 -- RightSB + [HSwToV : 0.5 * fine] x2 -- RightSB + [HSwToV : 0.5 * fine]
y2 -- Descender + 0.5 * fine y2 -- Descender + 0.5 * fine
create-glyph 'dotlessjCurlyTail.serifed' : glyph-proc create-glyph 'dotlessjCurlyTail.bentHookSerifed' : glyph-proc
include [refer-glyph 'dotlessjCurlyTail.serifless'] AS_BASE ALSO_METRICS include [refer-glyph 'dotlessjCurlyTail.bentHookSerifless'] AS_BASE ALSO_METRICS
include : HSerif.lt (Middle + JBalance) XH LongJut include : HSerif.lt (Middle + JBalance) XH LongJut
select-variant 'dotlessjCurlyTail' select-variant 'dotlessjCurlyTail'

View file

@ -2139,8 +2139,8 @@ selectorAffix."a/rtailBase" = "doubleStorey"
selectorAffix."a/doubleStorey" = "doubleStorey" selectorAffix."a/doubleStorey" = "doubleStorey"
selectorAffix."a/singleStorey/autoSerifed/slab" = "singleStorey" selectorAffix."a/singleStorey/autoSerifed/slab" = "singleStorey"
selectorAffix."a/singleStorey/autoSerifed/sans" = "singleStorey" selectorAffix."a/singleStorey/autoSerifed/sans" = "singleStorey"
selectorAffix."aScript/autoSerifed/slab" = "singleStorey" selectorAffix."aScript/autoSerifed/slab" = "singleStoreyScriptCut"
selectorAffix."aScript/autoSerifed/sans" = "singleStorey" selectorAffix."aScript/autoSerifed/sans" = "singleStoreyScriptCut"
[prime.a.variants-buildup.stages.storey.single-storey] [prime.a.variants-buildup.stages.storey.single-storey]
rank = 2 rank = 2
@ -2200,8 +2200,8 @@ selectorAffix."a/rtailBase" = ""
selectorAffix."a/doubleStorey" = "" selectorAffix."a/doubleStorey" = ""
selectorAffix."a/singleStorey/autoSerifed/slab" = "" selectorAffix."a/singleStorey/autoSerifed/slab" = ""
selectorAffix."a/singleStorey/autoSerifed/sans" = "" selectorAffix."a/singleStorey/autoSerifed/sans" = ""
selectorAffix."aScript/autoSerifed/slab" = "" selectorAffix."aScript/autoSerifed/slab" = "scriptCut"
selectorAffix."aScript/autoSerifed/sans" = "" selectorAffix."aScript/autoSerifed/sans" = "scriptCut"
[prime.a.variants-buildup.stages.ear.earless-corner] [prime.a.variants-buildup.stages.ear.earless-corner]
rank = 2 rank = 2
@ -2213,8 +2213,8 @@ selectorAffix."a/rtailBase" = "earlessCorner"
selectorAffix."a/doubleStorey" = "" selectorAffix."a/doubleStorey" = ""
selectorAffix."a/singleStorey/autoSerifed/slab" = "earlessCorner" selectorAffix."a/singleStorey/autoSerifed/slab" = "earlessCorner"
selectorAffix."a/singleStorey/autoSerifed/sans" = "earlessCorner" selectorAffix."a/singleStorey/autoSerifed/sans" = "earlessCorner"
selectorAffix."aScript/autoSerifed/slab" = "" selectorAffix."aScript/autoSerifed/slab" = "scriptCut"
selectorAffix."aScript/autoSerifed/sans" = "" selectorAffix."aScript/autoSerifed/sans" = "scriptCut"
[prime.a.variants-buildup.stages.ear.earless-rounded] [prime.a.variants-buildup.stages.ear.earless-rounded]
rank = 3 rank = 3
@ -2226,8 +2226,8 @@ selectorAffix."a/rtailBase" = "earlessRounded"
selectorAffix."a/doubleStorey" = "" selectorAffix."a/doubleStorey" = ""
selectorAffix."a/singleStorey/autoSerifed/slab" = "earlessRounded" selectorAffix."a/singleStorey/autoSerifed/slab" = "earlessRounded"
selectorAffix."a/singleStorey/autoSerifed/sans" = "earlessRounded" selectorAffix."a/singleStorey/autoSerifed/sans" = "earlessRounded"
selectorAffix."aScript/autoSerifed/slab" = "" selectorAffix."aScript/autoSerifed/slab" = "scriptCut"
selectorAffix."aScript/autoSerifed/sans" = "" selectorAffix."aScript/autoSerifed/sans" = "scriptCut"
[prime.a.variants-buildup.stages.bar.serifless] [prime.a.variants-buildup.stages.bar.serifless]
rank = 1 rank = 1
@ -2765,10 +2765,10 @@ rank = 1
descriptionAffix = "double-storey shape" descriptionAffix = "double-storey shape"
selectorAffix.g = "doubleStorey" selectorAffix.g = "doubleStorey"
selectorAffix."g/sansSerif" = "doubleStorey" selectorAffix."g/sansSerif" = "doubleStorey"
selectorAffix."g/hookTopBase" = "singleStoreySerifless" selectorAffix."g/hookTopBase" = "singleStoreyBentHookSerifless"
selectorAffix."g/singleStorey/autoSerifed/slab" = "singleStoreySerifed" selectorAffix."g/singleStorey/autoSerifed/slab" = "singleStoreyBentHookSerifed"
selectorAffix."g/singleStorey/autoSerifed/sans" = "singleStoreySerifless" selectorAffix."g/singleStorey/autoSerifed/sans" = "singleStoreyBentHookSerifless"
selectorAffix.gScript = "singleStoreyScriptCut" selectorAffix.gScript = "singleStoreyBentHookScriptCut"
[prime.g.variants-buildup.stages.openness."*"] [prime.g.variants-buildup.stages.openness."*"]
next = "END" next = "END"
@ -2776,8 +2776,8 @@ next = "END"
[prime.g.variants-buildup.stages.openness.closed] [prime.g.variants-buildup.stages.openness.closed]
rank = 1 rank = 1
keyAffix = "" keyAffix = ""
selectorAffix.g = "" selectorAffix.g = "closed"
selectorAffix."g/sansSerif" = "" selectorAffix."g/sansSerif" = "closed"
selectorAffix."g/hookTopBase" = "" selectorAffix."g/hookTopBase" = ""
selectorAffix."g/singleStorey/autoSerifed/slab" = "" selectorAffix."g/singleStorey/autoSerifed/slab" = ""
selectorAffix."g/singleStorey/autoSerifed/sans" = "" selectorAffix."g/singleStorey/autoSerifed/sans" = ""
@ -2810,12 +2810,12 @@ next = "ear"
[prime.g.variants-buildup.stages.hook.bent-hook] [prime.g.variants-buildup.stages.hook.bent-hook]
rank = 1 rank = 1
keyAffix = "" keyAffix = ""
selectorAffix.g = "" selectorAffix.g = "bentHook"
selectorAffix."g/sansSerif" = "" selectorAffix."g/sansSerif" = "bentHook"
selectorAffix."g/hookTopBase" = "" selectorAffix."g/hookTopBase" = "bentHook"
selectorAffix."g/singleStorey/autoSerifed/slab" = "" selectorAffix."g/singleStorey/autoSerifed/slab" = "bentHook"
selectorAffix."g/singleStorey/autoSerifed/sans" = "" selectorAffix."g/singleStorey/autoSerifed/sans" = "bentHook"
selectorAffix.gScript = "" selectorAffix.gScript = "bentHook"
[prime.g.variants-buildup.stages.hook.flat-hook] [prime.g.variants-buildup.stages.hook.flat-hook]
rank = 2 rank = 2
@ -3085,7 +3085,7 @@ description = "`j` without serif"
selector.dotlessj = "bentHookSerifless" selector.dotlessj = "bentHookSerifless"
selector."dotlessj/sansSerif" = "bentHookSerifless" selector."dotlessj/sansSerif" = "bentHookSerifless"
selector.dotlessjHookTop = "bentHookSerifless" selector.dotlessjHookTop = "bentHookSerifless"
selector.dotlessjCurlyTail = "serifless" selector.dotlessjCurlyTail = "bentHookSerifless"
[prime.j.variants.serifed] [prime.j.variants.serifed]
rank = 2 rank = 2
@ -3093,7 +3093,7 @@ description = "`j` with top serif"
selector.dotlessj = "bentHookSerifed" selector.dotlessj = "bentHookSerifed"
selector."dotlessj/sansSerif" = "bentHookSerifless" selector."dotlessj/sansSerif" = "bentHookSerifless"
selector.dotlessjHookTop = "bentHookShortSerifed" selector.dotlessjHookTop = "bentHookShortSerifed"
selector.dotlessjCurlyTail = "serifed" selector.dotlessjCurlyTail = "bentHookSerifed"
[prime.j.variants.straight-line] [prime.j.variants.straight-line]
rank = 3 rank = 3
@ -3101,7 +3101,7 @@ description = "`j` like a straight line"
selector.dotlessj = "straightSerifless" selector.dotlessj = "straightSerifless"
selector."dotlessj/sansSerif" = "straightSerifless" selector."dotlessj/sansSerif" = "straightSerifless"
selector.dotlessjHookTop = "straightSerifless" selector.dotlessjHookTop = "straightSerifless"
selector.dotlessjCurlyTail = "serifless" selector.dotlessjCurlyTail = "bentHookSerifless"
[prime.j.variants.hooky] [prime.j.variants.hooky]
rank = 4 rank = 4
@ -3109,7 +3109,7 @@ description = "`j` like a straight line with top serif"
selector.dotlessj = "straightSerifed" selector.dotlessj = "straightSerifed"
selector."dotlessj/sansSerif" = "straightSerifless" selector."dotlessj/sansSerif" = "straightSerifless"
selector.dotlessjHookTop = "straightShortSerifed" selector.dotlessjHookTop = "straightShortSerifed"
selector.dotlessjCurlyTail = "serifed" selector.dotlessjCurlyTail = "bentHookSerifed"
[prime.j.variants.flat-hook-serifless] [prime.j.variants.flat-hook-serifless]
rank = 5 rank = 5
@ -3117,7 +3117,7 @@ description = "`j` with flat terminal hook"
selector.dotlessj = "flatHookSerifless" selector.dotlessj = "flatHookSerifless"
selector."dotlessj/sansSerif" = "flatHookSerifless" selector."dotlessj/sansSerif" = "flatHookSerifless"
selector.dotlessjHookTop = "flatHookSerifless" selector.dotlessjHookTop = "flatHookSerifless"
selector.dotlessjCurlyTail = "serifless" selector.dotlessjCurlyTail = "bentHookSerifless"
[prime.j.variants.flat-hook-serifed] [prime.j.variants.flat-hook-serifed]
rank = 6 rank = 6
@ -3125,7 +3125,7 @@ description = "`j` with flat terminal hook and top serif"
selector.dotlessj = "flatHookSerifed" selector.dotlessj = "flatHookSerifed"
selector."dotlessj/sansSerif" = "flatHookSerifless" selector."dotlessj/sansSerif" = "flatHookSerifless"
selector.dotlessjHookTop = "flatHookShortSerifed" selector.dotlessjHookTop = "flatHookShortSerifed"
selector.dotlessjCurlyTail = "serifed" selector.dotlessjCurlyTail = "bentHookSerifed"
[prime.j.variants.diagonal-tailed-serifless] [prime.j.variants.diagonal-tailed-serifless]
rank = 7 rank = 7
@ -3133,7 +3133,7 @@ description = "`j` with diagonal tail"
selector.dotlessj = "diagonalTailedSerifless" selector.dotlessj = "diagonalTailedSerifless"
selector."dotlessj/sansSerif" = "diagonalTailedSerifless" selector."dotlessj/sansSerif" = "diagonalTailedSerifless"
selector.dotlessjHookTop = "diagonalTailedSerifless" selector.dotlessjHookTop = "diagonalTailedSerifless"
selector.dotlessjCurlyTail = "serifless" selector.dotlessjCurlyTail = "bentHookSerifless"
[prime.j.variants.diagonal-tailed-serifed] [prime.j.variants.diagonal-tailed-serifed]
rank = 8 rank = 8
@ -3141,7 +3141,7 @@ description = "`j` with top serif and diagonal tail"
selector.dotlessj = "diagonalTailedSerifed" selector.dotlessj = "diagonalTailedSerifed"
selector."dotlessj/sansSerif" = "diagonalTailedSerifless" selector."dotlessj/sansSerif" = "diagonalTailedSerifless"
selector.dotlessjHookTop = "diagonalTailedShortSerifed" selector.dotlessjHookTop = "diagonalTailedShortSerifed"
selector.dotlessjCurlyTail = "serifed" selector.dotlessjCurlyTail = "bentHookSerifed"