Optimize glyph for Greek Capital Sho. (#2691)

This commit is contained in:
John McWilliams 2025-02-25 20:26:50 -05:00 committed by GitHub
parent 85fe85ff2e
commit 550f7bdd86
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 31 additions and 17 deletions

View file

@ -9,6 +9,7 @@
* Refine shape of the following characters: * Refine shape of the following characters:
- GREEK CAPITAL LETTER HETA (`U+0370`). - GREEK CAPITAL LETTER HETA (`U+0370`).
- GREEK SMALL LETTER HETA (`U+0371`). - GREEK SMALL LETTER HETA (`U+0371`).
- GREEK CAPITAL LETTER SHO (`U+03F7`).
- CYRILLIC CAPITAL LETTER SHHA (`U+04BA`). - CYRILLIC CAPITAL LETTER SHHA (`U+04BA`).
- CYRILLIC CAPITAL LETTER KOMI DJE (`U+0502`) ... CYRILLIC SMALL LETTER KOMI ZJE (`U+0505`). - 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`). - CYRILLIC CAPITAL LETTER KOMI LJE (`U+0508`) ... CYRILLIC SMALL LETTER KOMI TJE (`U+050F`).

View file

@ -15,7 +15,10 @@ glyph-block Letter-Greek-Phi : begin
include : VBar.m df.middle y2 y3 df.mvs include : VBar.m df.middle y2 y3 df.mvs
include : if fFlatTB include : if fFlatTB
OShapeFlatTB y3 y2 df.leftSB df.rightSB df.mvs ada adb 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 OShape y3 y2 df.leftSB df.rightSB df.mvs ada adb
define [CyrlEfSplitRing fFlatTB df y2 y3 ada adb] : glyph-proc 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 [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 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 define [GrekCapitalPhiImpl fFlatTB df] : glyph-proc
local y2 : mix [if SLAB Stroke 0] [if SLAB (CAP - Stroke) CAP] 0.125 local y2 : yCapitalPhiBowlBot CAP SLAB
local y3 : mix [if SLAB Stroke 0] [if SLAB (CAP - Stroke) CAP] 0.875 local y3 : yCapitalPhiBowlTop CAP SLAB
include : VarPhiRing fFlatTB df y2 y3 df.archDepthA df.archDepthB include : VarPhiRing fFlatTB df y2 y3 df.archDepthA df.archDepthB
include : StraightBar df 0 y2 y3 CAP include : StraightBar df 0 y2 y3 CAP

View file

@ -8,29 +8,31 @@ glyph-block Letter-Latin-Thorn : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Mark-Adjustment : LeaningAnchor glyph-block-import Mark-Adjustment : LeaningAnchor
glyph-block-import Letter-Shared-Shapes : OBarLeft LetterBarOverlay SerifFrame glyph-block-import Letter-Shared-Shapes : LetterBarOverlay SerifFrame
glyph-block-import Letter-Latin-Lower-P glyph-block-import Letter-Greek-Phi : yCapitalPhiBowlBot yCapitalPhiBowlTop
define xThornLeftStroke : SB * 1.25 define xThornLeftStroke : SB * 1.25
define [yThornBowlSymmetricBot top slab] : top * 0.19 + [if slab (Stroke * 0.375) 0] define [yThornBowlBot top slab] : top * 0.19 + [if slab (Stroke * 0.375) 0]
define [yThornBowlSymmetricTop top slab] : top - [yThornBowlSymmetricBot top slab] define [yThornBowlTop top slab] : top - [yThornBowlBot top slab]
define [yThornBowlAsymmetricBot top slab] : top * 0.25 + [if slab (Stroke * 0.125) 0] 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 [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 define [ThornShapeImpl top slabTop slabBot yBowlBot yBowlTop] : glyph-proc
local turn : mix yBowlTop yBowlBot (ArchDepthB / (ArchDepthA + ArchDepthB)) local xTurn : Math.max
local turnRadius : (yBowlTop - yBowlBot) / 2 RightSB - (yBowlTop - yBowlBot) * 0.5
mix xThornLeftStroke RightSB 0.25
xThornLeftStroke + [HSwToV Stroke]
include : dispiro include : dispiro
widths.rhs widths.rhs
flat xThornLeftStroke yBowlTop [heading Rightward] flat xThornLeftStroke yBowlTop [heading Rightward]
curl [arch.adjust-x.top (RightSB - turnRadius)] yBowlTop curl [arch.adjust-x.top xTurn] yBowlTop
archv archv
g4 (RightSB - O) turn g4 (RightSB - O) [mix yBowlTop yBowlBot (ArchDepthB / (ArchDepthA + ArchDepthB))]
arcvh arcvh
flat [arch.adjust-x.bot (RightSB - turnRadius)] yBowlBot flat [arch.adjust-x.bot xTurn] yBowlBot
curl xThornLeftStroke yBowlBot [heading Leftward] curl xThornLeftStroke yBowlBot [heading Leftward]
include : VBar.l xThornLeftStroke 0 top include : VBar.l xThornLeftStroke 0 top
@ -43,9 +45,9 @@ glyph-block Letter-Latin-Thorn : begin
include : LeaningAnchor.Above.VBar.l xThornLeftStroke include : LeaningAnchor.Above.VBar.l xThornLeftStroke
include : LeaningAnchor.Below.VBar.l xThornLeftStroke include : LeaningAnchor.Below.VBar.l xThornLeftStroke
define [ThornSymmetricShape top slabTop slabBot] : ThornShapeImpl top slabTop slabBot define [ThornShape top slabTop slabBot] : ThornShapeImpl top slabTop slabBot
yThornBowlSymmetricBot top slabBot yThornBowlBot top slabBot
yThornBowlSymmetricTop top slabBot yThornBowlTop top slabBot
define [ThornAsymmetricShape top slabTop slabBot] : ThornShapeImpl top slabTop slabBot define [ThornAsymmetricShape top slabTop slabBot] : ThornShapeImpl top slabTop slabBot
yThornBowlAsymmetricBot top slabBot yThornBowlAsymmetricBot top slabBot
@ -53,7 +55,7 @@ glyph-block Letter-Latin-Thorn : begin
define ThornConfig : SuffixCfg.weave define ThornConfig : SuffixCfg.weave
object # symmetry object # symmetry
"" ThornSymmetricShape "" ThornShape
asymmetric ThornAsymmetricShape asymmetric ThornAsymmetricShape
object # serifs object # serifs
serifless { false false } serifless { false false }
@ -88,4 +90,8 @@ glyph-block Letter-Latin-Thorn : begin
select-variant 'ThornStroke' 0xA764 select-variant 'ThornStroke' 0xA764
select-variant 'ThornStrokeBottom' 0xA766 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