Optimize width/overshoot/archdepth of Cyrillic Broad Omega (). (#2803)

This commit is contained in:
John McWilliams 2025-06-13 20:35:15 -04:00 committed by GitHub
parent 4e80b01385
commit bb761668f0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 33 additions and 32 deletions

View file

@ -3,9 +3,13 @@
- GREEK SMALL LETTER PSI (`U+03C8`).
- GREEK LETTER STIGMA (`U+03DA`).
- CYRILLIC SMALL LETTER PSI (`U+0471`).
- CYRILLIC CAPITAL LETTER OMEGA WITH TITLO (`U+047C`).
- CYRILLIC SMALL LETTER OMEGA WITH TITLO (`U+047D`).
- LATIN LETTER AIN (`U+1D25`).
- MODIFIER LETTER SMALL AIN (`U+1D5C`).
- TURKISH LIRA SIGN (`U+20BA`).
- MANAT SIGN (`U+20BC`).
- CYRILLIC CAPITAL LETTER BROAD OMEGA (`U+A64C`).
- CYRILLIC SMALL LETTER BROAD OMEGA (`U+A64D`).
- LATIN CAPITAL LETTER RAMS HORN (`U+A7CB`).
- MODIFIER LETTER SMALL RAMS HORN (`U+10791`).

View file

@ -7,53 +7,50 @@ glyph-module
glyph-block Letter-Cyrillic-Omega : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Latin-W
glyph-block-import Letter-Cyrillic-Te-Comb
define [CyrlOmegaShape df top p1 p2] : glyph-proc
local fine : AdviceStroke 3 df.adws
local mfine : fine * CThin
define [CyrlOmegaShape df top p _ada _adb] : glyph-proc
local fine : df.mvs * CThin
local minHookDepth : Math.min (0.625 * (df.middle - df.leftSB - [HSwToV fine])) ((1 / 3) * (df.rightSB - df.leftSB))
local xMidBarLeft : df.middle - [HSwToV : fine / 2]
local xMidBarRight : df.middle + [HSwToV : fine / 2]
local xMidBarCoLeft : df.middle - [HSwToV : mfine - fine / 2]
local xMidBarCoRight : df.middle + [HSwToV : mfine - fine / 2]
local y3 : top * p1
local y4 : top * p2
local minHookDepth : Math.min (0.625 * (df.middle - df.leftSB - [HSwToV df.mvs])) ((df.rightSB - df.leftSB) / 3)
local xMidBarLeft : df.middle - [HSwToV : df.mvs / 2]
local xMidBarRight : df.middle + [HSwToV : df.mvs / 2]
local xMidBarCoLeft : df.middle - [HSwToV : fine - df.mvs / 2]
local xMidBarCoRight : df.middle + [HSwToV : fine - df.mvs / 2]
local yMidBar : top * p
local xOpenL : Math.max [mix df.leftSB xMidBarRight 0.5] (df.leftSB + [HSwToV fine] + minHookDepth)
local xOpenR : Math.min [mix df.rightSB xMidBarLeft 0.5] (df.rightSB - [HSwToV fine] - minHookDepth)
local xOpenL : Math.max [mix df.leftSB xMidBarRight 0.5] (df.leftSB + [HSwToV df.mvs] + minHookDepth)
local xOpenR : Math.min [mix df.rightSB xMidBarLeft 0.5] (df.rightSB - [HSwToV df.mvs] - minHookDepth)
local ada : _ada * (2 / 3) * df.adws
local adb : _adb * (2 / 3) * df.adws
include : dispiro
widths.lhs fine
g4.left.start [arch.adjust-x.top xOpenL (sw -- fine)] top
widths.lhs df.mvs
g4.left.start [arch.adjust-x.top xOpenL (sw -- df.mvs)] top
archv 8
flat df.leftSB (top - ArchDepthA)
curl df.leftSB ArchDepthB
flatside.ld df.leftSB 0 top ada adb
arcvh 8
g4 [mix df.leftSB xMidBarRight 0.5] O [heading Rightward]
archv 8
flat xMidBarCoRight y3 [widths.heading mfine 0 Upward]
curl xMidBarCoRight y4 [heading Upward]
flat xMidBarCoRight [Math.min ada (yMidBar - TINY)] [widths.lhs.heading fine Upward]
curl xMidBarCoRight yMidBar [heading Upward]
include : dispiro
widths.rhs fine
g4.right.start [arch.adjust-x.top xOpenR (sw -- fine)] top
widths.rhs df.mvs
g4.right.start [arch.adjust-x.top xOpenR (sw -- df.mvs)] top
archv 8
flat df.rightSB (top - ArchDepthB)
curl df.rightSB ArchDepthA
flatside.rd df.rightSB 0 top ada adb
arcvh 8
g4 [mix df.rightSB xMidBarLeft 0.5] O [heading Leftward]
archv 8
flat xMidBarCoLeft y3 [widths.heading 0 mfine Upward]
curl xMidBarCoLeft y4 [heading Upward]
flat xMidBarCoLeft [Math.min adb (yMidBar - TINY)] [widths.rhs.heading fine Upward]
curl xMidBarCoLeft yMidBar [heading Upward]
create-glyph 'cyrl/BroadOmega' 0xA64C : glyph-proc
define df : include : DivFrame para.advanceScaleMM 3
include : [DivFrame df.adws].markSet.capital
include : CyrlOmegaShape df CAP 0.30 0.31
local df : include : DivFrame para.advanceScaleMM 3
include : df.markSet.capital
include : CyrlOmegaShape df CAP 0.3 ArchDepthA ArchDepthB
create-glyph 'cyrl/broadOmega' 0xA64D : glyph-proc
define df : include : DivFrame para.advanceScaleM 3
include : [DivFrame df.adws].markSet.e
include : CyrlOmegaShape df XH 0.30 0.31
local df : include : DivFrame para.advanceScaleMM 3
include : df.markSet.e
include : CyrlOmegaShape df XH 0.3 SmallArchDepthA SmallArchDepthB