From 550f7bdd86d67a1e395a273babf2bcc10dc575cb Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Tue, 25 Feb 2025 20:26:50 -0500 Subject: [PATCH] Optimize glyph for Greek Capital Sho. (#2691) --- changes/33.0.0.md | 1 + packages/font-glyphs/src/letter/greek/phi.ptl | 13 +++++-- .../src/letter/latin-ext/thorn.ptl | 34 +++++++++++-------- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/changes/33.0.0.md b/changes/33.0.0.md index 5d968febb..949ad9a8e 100644 --- a/changes/33.0.0.md +++ b/changes/33.0.0.md @@ -9,6 +9,7 @@ * Refine shape of the following characters: - GREEK CAPITAL LETTER HETA (`U+0370`). - GREEK SMALL LETTER HETA (`U+0371`). + - GREEK CAPITAL LETTER SHO (`U+03F7`). - CYRILLIC CAPITAL LETTER SHHA (`U+04BA`). - CYRILLIC CAPITAL LETTER KOMI DJE (`U+0502`) ... CYRILLIC SMALL LETTER KOMI ZJE (`U+0505`). - CYRILLIC CAPITAL LETTER KOMI LJE (`U+0508`) ... CYRILLIC SMALL LETTER KOMI TJE (`U+050F`). diff --git a/packages/font-glyphs/src/letter/greek/phi.ptl b/packages/font-glyphs/src/letter/greek/phi.ptl index 1c9f4e398..35fff756d 100644 --- a/packages/font-glyphs/src/letter/greek/phi.ptl +++ b/packages/font-glyphs/src/letter/greek/phi.ptl @@ -15,7 +15,10 @@ glyph-block Letter-Greek-Phi : begin include : VBar.m df.middle y2 y3 df.mvs include : if fFlatTB OShapeFlatTB y3 y2 df.leftSB df.rightSB df.mvs ada adb - Math.max (0.25 * (df.rightSB - df.leftSB)) : HSwToV df.mvs + Math.max + (df.rightSB - df.leftSB) - (y3 - y2) + (df.rightSB - df.leftSB) * 0.25 + HSwToV df.mvs OShape y3 y2 df.leftSB df.rightSB df.mvs ada adb define [CyrlEfSplitRing fFlatTB df y2 y3 ada adb] : glyph-proc @@ -100,9 +103,13 @@ glyph-block Letter-Greek-Phi : begin define [MtSerif df y sw] : tagged 'serifMT' : HSerif.lt df.middle y Jut sw define [MbSerif df y sw] : tagged 'serifMB' : HSerif.mb df.middle y Jut sw + glyph-block-export yCapitalPhiBowlBot yCapitalPhiBowlTop + define [yCapitalPhiBowlBot top slab] : mix [if slab Stroke 0] [if slab (top - Stroke) top] 0.125 + define [yCapitalPhiBowlTop top slab] : mix [if slab Stroke 0] [if slab (top - Stroke) top] 0.875 + define [GrekCapitalPhiImpl fFlatTB df] : glyph-proc - local y2 : mix [if SLAB Stroke 0] [if SLAB (CAP - Stroke) CAP] 0.125 - local y3 : mix [if SLAB Stroke 0] [if SLAB (CAP - Stroke) CAP] 0.875 + local y2 : yCapitalPhiBowlBot CAP SLAB + local y3 : yCapitalPhiBowlTop CAP SLAB include : VarPhiRing fFlatTB df y2 y3 df.archDepthA df.archDepthB include : StraightBar df 0 y2 y3 CAP diff --git a/packages/font-glyphs/src/letter/latin-ext/thorn.ptl b/packages/font-glyphs/src/letter/latin-ext/thorn.ptl index b7963a76a..5ff84b8c5 100644 --- a/packages/font-glyphs/src/letter/latin-ext/thorn.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/thorn.ptl @@ -8,29 +8,31 @@ glyph-block Letter-Latin-Thorn : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives glyph-block-import Mark-Adjustment : LeaningAnchor - glyph-block-import Letter-Shared-Shapes : OBarLeft LetterBarOverlay SerifFrame - glyph-block-import Letter-Latin-Lower-P + glyph-block-import Letter-Shared-Shapes : LetterBarOverlay SerifFrame + glyph-block-import Letter-Greek-Phi : yCapitalPhiBowlBot yCapitalPhiBowlTop define xThornLeftStroke : SB * 1.25 - define [yThornBowlSymmetricBot top slab] : top * 0.19 + [if slab (Stroke * 0.375) 0] - define [yThornBowlSymmetricTop top slab] : top - [yThornBowlSymmetricBot top slab] + define [yThornBowlBot top slab] : top * 0.19 + [if slab (Stroke * 0.375) 0] + define [yThornBowlTop top slab] : top - [yThornBowlBot top slab] define [yThornBowlAsymmetricBot top slab] : top * 0.25 + [if slab (Stroke * 0.125) 0] define [yThornBowlAsymmetricTop top slab] : top - 0.7 * [yThornBowlAsymmetricBot top slab] + [if slab (-0.125) 0.25] * Stroke define [ThornShapeImpl top slabTop slabBot yBowlBot yBowlTop] : glyph-proc - local turn : mix yBowlTop yBowlBot (ArchDepthB / (ArchDepthA + ArchDepthB)) - local turnRadius : (yBowlTop - yBowlBot) / 2 + local xTurn : Math.max + RightSB - (yBowlTop - yBowlBot) * 0.5 + mix xThornLeftStroke RightSB 0.25 + xThornLeftStroke + [HSwToV Stroke] include : dispiro widths.rhs flat xThornLeftStroke yBowlTop [heading Rightward] - curl [arch.adjust-x.top (RightSB - turnRadius)] yBowlTop + curl [arch.adjust-x.top xTurn] yBowlTop archv - g4 (RightSB - O) turn + g4 (RightSB - O) [mix yBowlTop yBowlBot (ArchDepthB / (ArchDepthA + ArchDepthB))] arcvh - flat [arch.adjust-x.bot (RightSB - turnRadius)] yBowlBot + flat [arch.adjust-x.bot xTurn] yBowlBot curl xThornLeftStroke yBowlBot [heading Leftward] include : VBar.l xThornLeftStroke 0 top @@ -43,9 +45,9 @@ glyph-block Letter-Latin-Thorn : begin include : LeaningAnchor.Above.VBar.l xThornLeftStroke include : LeaningAnchor.Below.VBar.l xThornLeftStroke - define [ThornSymmetricShape top slabTop slabBot] : ThornShapeImpl top slabTop slabBot - yThornBowlSymmetricBot top slabBot - yThornBowlSymmetricTop top slabBot + define [ThornShape top slabTop slabBot] : ThornShapeImpl top slabTop slabBot + yThornBowlBot top slabBot + yThornBowlTop top slabBot define [ThornAsymmetricShape top slabTop slabBot] : ThornShapeImpl top slabTop slabBot yThornBowlAsymmetricBot top slabBot @@ -53,7 +55,7 @@ glyph-block Letter-Latin-Thorn : begin define ThornConfig : SuffixCfg.weave object # symmetry - "" ThornSymmetricShape + "" ThornShape asymmetric ThornAsymmetricShape object # serifs serifless { false false } @@ -88,4 +90,8 @@ glyph-block Letter-Latin-Thorn : begin select-variant 'ThornStroke' 0xA764 select-variant 'ThornStrokeBottom' 0xA766 - alias 'grek/Sho' 0x3F7 : if SLAB 'Thorn.serifed' 'Thorn.serifless' + create-glyph 'grek/Sho' 0x3F7 : glyph-proc + include : MarkSet.capital + include : ThornShapeImpl CAP SLAB SLAB + yCapitalPhiBowlBot CAP SLAB + yCapitalPhiBowlTop CAP SLAB