Optimize glyphs for Iotified A, Closed Little Yus.

This commit is contained in:
John McWilliams 2025-04-21 06:50:24 -04:00
parent 8547436f4b
commit c3ca79eca8
5 changed files with 78 additions and 79 deletions

View file

@ -4,6 +4,9 @@
- CYRILLIC CAPITAL LETTER KOMI DZJE (`U+0506`).
- CYRILLIC SMALL LETTER KOMI DZJE (`U+0507`).
- THERE DOES NOT EXIST (`U+2204`).
- CYRILLIC CAPITAL LETTER IOTIFIED A (`U+A656`).
- CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS (`U+A65C`).
- CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS (`U+A65D`).
- LATIN CAPITAL LETTER VOLAPUK UE (`U+A79E`).
- LATIN SMALL LETTER VOLAPUK UE (`U+A79F`).
- MODIFIER LETTER SMALL CAPITAL G WITH HOOK (`U+10794`).

View file

@ -100,7 +100,6 @@ glyph-block Letter-Cyrillic-BigYus : begin
define divSub : (df.width - gap - df.mvs) / Width
define dfSub : DivFrame divSub 3
include : CyrBigYusShape dfSub top yp df.mvs
eject-contour 'serifRB'
include : Translate (Width * (df.adws - divSub)) 0
include : Iotified.outer df top
@ -108,10 +107,6 @@ glyph-block Letter-Cyrillic-BigYus : begin
hBarY -- (top * yp - df.mvs * 0.5)
fCapital -- fCapital
if SLAB : begin
local sf : SerifFrame.fromDf df top 0 (swSerif -- df.mvs)
include sf.rb.outer
create-glyph 'cyrl/BigYusIotified' 0x46C : glyph-proc
local df : include : DivFrame (para.advanceScaleM ** 2) 4.25
include : df.markSet.capital

View file

@ -102,28 +102,28 @@ glyph-block Letter-Cyrillic-Iotified-A : begin
do "iotified A"
glyph-block-import Letter-Latin-Upper-A : AShape AConfig
foreach { suffix { fStraightBar slabKind } } [Object.entries AConfig] : do
foreach { suffix { bodyShape slabKind } } [Object.entries AConfig] : do
create-glyph "cyrl/AIotified.\(suffix)" : glyph-proc
define df : include : DivFrame para.advanceScaleM 3.5
include : df.markSet.capital
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
local subDf : DivFrame divSub 2
local shift : Width * (df.adws - divSub)
local xIotifiedBarRight : df.leftSB + [HSwToV df.mvs]
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
with-transform [ApparentTranslate shift 0]
AShape.Letter subDf fStraightBar slabKind CAP df.mvs
AShape.Letter subDf bodyShape 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]
AShape.Mask subDf fStraightBar CAP df.mvs
AShape.Mask subDf bodyShape CAP df.mvs
do "iotified a"
glyph-block-import Letter-Latin-Lower-A : DoubleStorey DoubleStoreyConfig SingleStorey SingleStoreyConfig

View file

@ -79,24 +79,25 @@ glyph-block Letter-Cyrillic-SmallYus : begin
select-variant 'cyrl/smallYusClosed' 0xA659 (follow -- 'grek/Delta')
define [CyrIotifiedSmallYusShape fClosed fCapital df top straightBar] : glyph-proc
local gap : (df.width - 2 * df.leftSB - 4 * df.mvs) / 3
local gap : (df.width - 2 * df.leftSB - [if fClosed 3 4] * df.mvs) / 3
define divSub : (df.width - gap - df.mvs) / Width
define dfSub : DivFrame divSub 3
if fClosed
include : CyrClosedSmallYusShape dfSub top straightBar df.mvs
include : CyrSmallYusShape dfSub top straightBar df.mvs
eject-contour 'serifRB'
include : Translate (Width * (df.adws - divSub)) 0
define dfSub : DivFrame divSub : if fClosed 2 3
local shift : Width * (df.adws - divSub)
local xIotifiedBarRight : df.leftSB + [HSwToV df.mvs]
local botGap : Math.max ((df.rightSB - df.leftSB) * 0.08) : AdviceStroke 6
include : difference
with-transform [ApparentTranslate shift 0] : if fClosed
CyrClosedSmallYusShape dfSub top straightBar df.mvs
CyrSmallYusShape dfSub top straightBar df.mvs
intersection [MaskBelow df.mvs]
MaskLeft : mix xIotifiedBarRight [Math.min (dfSub.leftSB + shift) (xIotifiedBarRight + botGap)] 0.5
include : Iotified.A df top
hBarRight -- [mix df.leftSB df.rightSB (2 / 3)]
hBarY -- (top / 2 - df.mvs * 0.5)
fCapital -- fCapital
if SLAB : begin
local sf : SerifFrame.fromDf df top 0 (swSerif -- df.mvs)
include sf.rb.outer
create-glyph : glyph-proc
local df : include : DivFrame (para.advanceScaleM ** 2) 4.25
include : df.markSet.capital
@ -114,7 +115,7 @@ glyph-block Letter-Cyrillic-SmallYus : begin
CyrIotifiedSmallYusShape false false df XH false
create-glyph : glyph-proc
local df : include : DivFrame para.advanceScaleM 4.25
local df : include : DivFrame para.advanceScaleM 3.5
include : df.markSet.capital
create-forked-glyph 'cyrl/SmallYusClosedIotified.straight'
CyrIotifiedSmallYusShape true true df CAP true
@ -122,7 +123,7 @@ glyph-block Letter-Cyrillic-SmallYus : begin
CyrIotifiedSmallYusShape true true df CAP false
create-glyph : glyph-proc
local df : include : DivFrame para.advanceScaleM 4.25
local df : include : DivFrame para.advanceScaleM 3.5
include : df.markSet.e
create-forked-glyph 'cyrl/smallYusClosedIotified.straight'
CyrIotifiedSmallYusShape true false df XH true

View file

@ -209,6 +209,6 @@ glyph-block Letter-Latin-Upper-Lambda-Delta : begin
local xCutLeft SB
local xCutRight RightSB
include : HBar.b (xCutLeft - descenderOverflow) (xCutRight + descenderOverflow) 0
include : VBar.l (xCutLeft - descenderOverflow) (-LongVJut + HalfStroke) Stroke
include : VBar.r (xCutRight + descenderOverflow) (-LongVJut + HalfStroke) Stroke
include : VBar.l (xCutLeft - descenderOverflow) ((-LongVJut) + QuarterStroke) Stroke
include : VBar.r (xCutRight + descenderOverflow) ((-LongVJut) + QuarterStroke) Stroke