From bb761668f065abf638a702fc534ec3e3e432f7f4 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Fri, 13 Jun 2025 20:35:15 -0400 Subject: [PATCH] =?UTF-8?q?Optimize=20width/overshoot/archdepth=20of=20Cyr?= =?UTF-8?q?illic=C2=A0Broad=C2=A0Omega=20(`=EA=99=8C`,=C2=A0`=EA=99=8D`).?= =?UTF-8?q?=20(#2803)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changes/33.2.5.md | 4 ++ .../font-glyphs/src/letter/cyrillic/omega.ptl | 61 +++++++++---------- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/changes/33.2.5.md b/changes/33.2.5.md index 0591f61d3..909b52d77 100644 --- a/changes/33.2.5.md +++ b/changes/33.2.5.md @@ -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`). diff --git a/packages/font-glyphs/src/letter/cyrillic/omega.ptl b/packages/font-glyphs/src/letter/cyrillic/omega.ptl index 64a726811..fbb4af636 100644 --- a/packages/font-glyphs/src/letter/cyrillic/omega.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/omega.ptl @@ -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