Skip to content

Commit

Permalink
Further unify/optimize widths of Lower w/omega under Quasi-Proporti…
Browse files Browse the repository at this point in the history
…onal. (#2617)

* Further unify lower `w`/omega shapes/widths.

* Cleanup.
  • Loading branch information
jmcwilliams403 authored Dec 17, 2024
1 parent ce80ec0 commit 02ef053
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 45 deletions.
17 changes: 8 additions & 9 deletions changes/32.3.0.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
* Make certain M-width characters slightly wider under Quasi-Proportional. Affected characters:
- LATIN CAPITAL LETTER W (`U+0057`).
- LATIN SMALL LETTER M (`U+006D`).
- LATIN SMALL LETTER W (`U+0077`).
- LATIN CAPITAL LETTER AE (`U+00C6`).
- LATIN SMALL LETTER AE (`U+00E6`).
- LATIN CAPITAL LIGATURE OE (`U+0152`) ... LATIN SMALL LIGATURE OE (`U+0153`).
- LATIN CAPITAL LETTER W WITH CIRCUMFLEX (`U+0174`) ... LATIN SMALL LETTER W WITH CIRCUMFLEX (`U+0175`).
- LATIN CAPITAL LETTER W WITH CIRCUMFLEX (`U+0174`).
- LATIN SMALL LETTER HV (`U+0195`).
- LATIN CAPITAL LETTER TURNED M (`U+019C`).
- LATIN CAPITAL LETTER AE WITH MACRON (`U+01E2`) ... LATIN SMALL LETTER AE WITH MACRON (`U+01E3`).
- LATIN CAPITAL LETTER HWAIR (`U+01F6`).
- LATIN CAPITAL LETTER AE WITH ACUTE (`U+01FC`) ... LATIN SMALL LETTER AE WITH ACUTE (`U+01FD`).
- LATIN SMALL LETTER DB DIGRAPH (`U+0238`) ... LATIN SMALL LETTER QP DIGRAPH (`U+0239`).
- LATIN SMALL LETTER TURNED M (`U+026F`) ... LATIN SMALL LETTER M WITH HOOK (`U+0271`).
- LATIN SMALL LETTER TURNED W (`U+028D`).
- LATIN SMALL LETTER DZ DIGRAPH (`U+02A3`) ... LATIN SMALL LETTER LZ DIGRAPH (`U+02AB`).
- MODIFIER LETTER SMALL W (`U+02B7`).
- CYRILLIC CAPITAL LETTER LJE (`U+0409`) ... CYRILLIC CAPITAL LETTER NJE (`U+040A`).
- CYRILLIC CAPITAL LETTER SHA (`U+0428`) ... CYRILLIC CAPITAL LETTER SHCHA (`U+0429`).
- CYRILLIC SMALL LETTER EF (`U+0444`).
Expand All @@ -28,7 +25,7 @@
- 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 NJE (`U+050B`).
- CYRILLIC CAPITAL LETTER YAE (`U+0518`) ... CYRILLIC SMALL LETTER YAE (`U+0519`).
- CYRILLIC CAPITAL LETTER WE (`U+051C`) ... CYRILLIC SMALL LETTER WE (`U+051D`).
- CYRILLIC CAPITAL LETTER WE (`U+051C`).
- CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK (`U+0520`) ... CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK (`U+0523`).
- CYRILLIC CAPITAL LETTER DZZHE (`U+052A`) ... CYRILLIC SMALL LETTER DZZHE (`U+052B`).
- ARMENIAN CAPITAL LETTER XEH (`U+053D`).
Expand All @@ -53,8 +50,11 @@
- LATIN SMALL LETTER M WITH ACUTE (`U+1E3F`).
- LATIN SMALL LETTER M WITH DOT ABOVE (`U+1E41`).
- LATIN SMALL LETTER M WITH DOT BELOW (`U+1E43`).
- LATIN CAPITAL LETTER W WITH GRAVE (`U+1E80`) ... LATIN SMALL LETTER W WITH DOT BELOW (`U+1E89`).
- LATIN SMALL LETTER W WITH RING ABOVE (`U+1E98`).
- LATIN CAPITAL LETTER W WITH GRAVE (`U+1E80`).
- LATIN CAPITAL LETTER W WITH ACUTE (`U+1E82`).
- LATIN CAPITAL LETTER W WITH DIAERESIS (`U+1E84`).
- LATIN CAPITAL LETTER W WITH DOT ABOVE (`U+1E86`).
- LATIN CAPITAL LETTER W WITH DOT BELOW (`U+1E88`).
- LATIN SUBSCRIPT SMALL LETTER M (`U+2098`).
- TELEPHONE SIGN (`U+2121`).
- FACSIMILE SIGN (`U+213B`).
Expand All @@ -66,7 +66,7 @@
- VERY MUCH LESS-THAN (`U+22D8`) ... VERY MUCH GREATER-THAN (`U+22D9`).
- LEFT AND RIGHT DOUBLE TURNSTILE (`U+27DA`) ... LEFT AND RIGHT TACK (`U+27DB`).
- SHUFFLE PRODUCT (`U+29E2`).
- LATIN CAPITAL LETTER W WITH HOOK (`U+2C72`) ... LATIN SMALL LETTER W WITH HOOK (`U+2C73`).
- LATIN CAPITAL LETTER W WITH HOOK (`U+2C72`).
- CYRILLIC CAPITAL LETTER BROAD OMEGA (`U+A64C`).
- CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O (`U+A66C`) ... CYRILLIC LETTER MULTIOCULAR O (`U+A66E`).
- CYRILLIC CAPITAL LETTER ZHWE (`U+A684`) ... CYRILLIC SMALL LETTER CCHE (`U+A687`).
Expand All @@ -82,7 +82,6 @@
- LATIN SMALL LETTER SAKHA YAT (`U+AB60`).
- LATIN SMALL LETTER UO (`U+AB63`).
- LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK (`U+AB66`) ... LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK (`U+AB67`).
- MODIFIER LETTER TURNED W (`U+AB69`).
- LATIN SMALL LIGATURE FFI (`U+FB03`) ... LATIN SMALL LIGATURE ST (`U+FB06`).
- MODIFIER LETTER SMALL AE (`U+10783`).
- LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK (`U+1DF12`).
Expand Down
24 changes: 18 additions & 6 deletions packages/font-glyphs/src/letter/latin-ext/flattened-open-a.ptl
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,27 @@ glyph-block Letter-Latin-Flattened-Open-A : begin
local df : include : DivFrame para.diversityMM 3
include : df.markSet.e

local top : 0.5 * XH

local subDf : df.slice 3 2 OX
local ada : Math.min (top - TINY) : subDf.archDepthA SmallArchDepth df.mvs
local adb : Math.min (top - TINY) : subDf.archDepthB SmallArchDepth df.mvs

include : dispiro
g4.down.start df.leftSB (0.5 * XH) [widths.center.heading df.mvs Downward]
widths.lhs df.mvs
flat (df.leftSB + OX) top [heading Downward]
curl (df.leftSB + OX) adb [heading Downward]
arcvh
g4.right.mid [mix df.middle df.leftSB 0.5] (0.5 * df.mvs) [heading Rightward]
g4 [mix (df.leftSB + OX) (df.middle + [HSwToV : 0.5 * df.mvs]) 0.5] O [heading Rightward]
archv
g4.up.end df.middle (0.5 * XH) [heading Upward]
flat (df.middle + [HSwToV : 0.5 * df.mvs]) ada [heading Upward]
curl (df.middle + [HSwToV : 0.5 * df.mvs]) top [heading Upward]
include : dispiro
g4.down.start df.middle (0.5 * XH) [widths.center.heading df.mvs Downward]
widths.lhs df.mvs
flat (df.middle - [HSwToV : 0.5 * df.mvs]) top [heading Downward]
curl (df.middle - [HSwToV : 0.5 * df.mvs]) adb [heading Downward]
arcvh
g4.right.mid [mix df.middle df.rightSB 0.5] (0.5 * df.mvs) [heading Rightward]
g4 [mix (df.middle - [HSwToV : 0.5 * df.mvs]) (df.rightSB - OX) 0.5] O [heading Rightward]
archv
g4.up.end df.rightSB (0.5 * XH) [heading Upward]
flat (df.rightSB - OX) ada [heading Upward]
curl (df.rightSB - OX) top [heading Upward]
60 changes: 30 additions & 30 deletions packages/font-glyphs/src/letter/latin/w.ptl
Original file line number Diff line number Diff line change
Expand Up @@ -49,26 +49,26 @@ glyph-block Letter-Latin-W : begin

define [WDim df top bodyType] : begin
local strokeOuter : match bodyType
[Just FORM-CURLY] : AdviceStroke CwOuterStrokeCurly [Math.sqrt df.div]
[Just FORM-STRAIGHT] : AdviceStroke CwOuterStrokeStraight1 [Math.sqrt df.div]
[Just FORM-FLAT-TOP] : AdviceStroke CwOuterStrokeStraight2 [Math.sqrt df.div]
[Just FORM-DOUBLE-V] : AdviceStroke CwDoubleV [Math.sqrt df.div]
[Just FORM-ASYMMETRIC] : AdviceStroke CwDoubleV [Math.sqrt df.div]
[Just FORM-CYRL-OMEGA] : AdviceStroke CwCyrlOmega [Math.sqrt df.div]
[Just FORM-CURLY] : AdviceStroke CwOuterStrokeCurly : Math.sqrt df.div
[Just FORM-STRAIGHT] : AdviceStroke CwOuterStrokeStraight1 : Math.sqrt df.div
[Just FORM-FLAT-TOP] : AdviceStroke CwOuterStrokeStraight2 : Math.sqrt df.div
[Just FORM-DOUBLE-V] : AdviceStroke CwDoubleV : Math.sqrt df.div
[Just FORM-ASYMMETRIC] : AdviceStroke CwDoubleV : Math.sqrt df.div
[Just FORM-CYRL-OMEGA] : AdviceStroke CwCyrlOmega : Math.sqrt df.div
local fineOuter : match bodyType
[Just FORM-CURLY] : AdviceStroke CwFineOuter df.div
[Just FORM-STRAIGHT] : AdviceStroke CwFineOuterStraight [Math.sqrt df.div]
[Just FORM-FLAT-TOP] : AdviceStroke CwFineOuterStraight [Math.sqrt df.div]
[Just FORM-DOUBLE-V] : AdviceStroke CwDoubleV [Math.sqrt df.div]
[Just FORM-ASYMMETRIC] : AdviceStroke CwDoubleV [Math.sqrt df.div]
[Just FORM-CYRL-OMEGA] : AdviceStroke CwCyrlOmega [Math.sqrt df.div]
[Just FORM-CURLY] : AdviceStroke CwFineOuter df.div
[Just FORM-STRAIGHT] : AdviceStroke CwFineOuterStraight : Math.sqrt df.div
[Just FORM-FLAT-TOP] : AdviceStroke CwFineOuterStraight : Math.sqrt df.div
[Just FORM-DOUBLE-V] : AdviceStroke CwDoubleV : Math.sqrt df.div
[Just FORM-ASYMMETRIC] : AdviceStroke CwDoubleV : Math.sqrt df.div
[Just FORM-CYRL-OMEGA] : AdviceStroke CwCyrlOmega : Math.sqrt df.div
local fineInner : match bodyType
[Just FORM-CURLY] : AdviceStroke CwFineInner df.div
[Just FORM-STRAIGHT] : AdviceStroke CwFineInnerStraight [Math.sqrt df.div]
[Just FORM-FLAT-TOP] : AdviceStroke CwFineInnerStraight [Math.sqrt df.div]
[Just FORM-DOUBLE-V] : AdviceStroke CwFineInnerDoubleV [Math.sqrt df.div]
[Just FORM-ASYMMETRIC] : AdviceStroke CwDoubleV [Math.sqrt df.div]
[Just FORM-CYRL-OMEGA] : AdviceStroke CwCyrlOmega [Math.sqrt df.div]
[Just FORM-CURLY] : AdviceStroke CwFineInner df.div
[Just FORM-STRAIGHT] : AdviceStroke CwFineInnerStraight : Math.sqrt df.div
[Just FORM-FLAT-TOP] : AdviceStroke CwFineInnerStraight : Math.sqrt df.div
[Just FORM-DOUBLE-V] : AdviceStroke CwFineInnerDoubleV : Math.sqrt df.div
[Just FORM-ASYMMETRIC] : AdviceStroke CwDoubleV : Math.sqrt df.div
[Just FORM-CYRL-OMEGA] : AdviceStroke CwCyrlOmega : Math.sqrt df.div
local fineHeight : (fineOuter + fineInner) / 2

local wCo : match bodyType
Expand Down Expand Up @@ -216,7 +216,7 @@ glyph-block Letter-Latin-W : begin
[Just SERIFS-ASYMMETRIC-ALL] : composite-proc sfm.lt.outer sfm.rt.full
[Just SERIFS-CURSIVE] : NeedSlab SLAB sf.lt.outer
[Just SERIFS-CYRL-OMEGA] : begin
local jut : Math.min Jut ([HSwToV : 0.5 * dim.strokeOuter] + 0.375 * (dim.xLeft2 - df.leftSB - [HSwToV : 1.5 * dim.strokeOuter]))
local jut : Math.min Jut : [HSwToV : 0.5 * dim.strokeOuter] + 0.375 * (dim.xLeft2 - df.leftSB - [HSwToV : 1.5 * dim.strokeOuter])
NeedSlab SLAB : composite-proc
HSerif.mtAsymmetric (df.leftSB + [HSwToV : 0.5 * dim.strokeOuter]) dim.wMidHeight jut jut
HSerif.mtAsymmetric dim.xLeft2 dim.wMidHeight jut jut
Expand Down Expand Up @@ -342,21 +342,21 @@ glyph-block Letter-Latin-W : begin
[Just SERIFS-MOTION] : begin sf.lt.outer
___ : glyph-proc

define [WCursiveImpl df top bodyType serifsType] : WCursiveImplImpl false df top bodyType serifsType
define [WHookTopCursive df top bodyType serifsType] : WCursiveImplImpl true df top bodyType serifsType
define [WCursiveImpl df top bodyType serifsType] : WCursiveImplImpl false df top bodyType serifsType
define [WHookTopCursive df top bodyType serifsType] : WCursiveImplImpl true df top bodyType serifsType

define WConfig : SuffixCfg.weave
# Body
object
straight { WShapeImpl WHooktopShape FORM-STRAIGHT para.diversityM para.diversityM }
straightAsymmetric { WShapeImpl WHooktopShape FORM-ASYMMETRIC para.diversityM para.diversityM }
straightDoubleV { WShapeImpl WHooktopShape FORM-DOUBLE-V para.diversityM para.diversityM }
straightFlatTop { WShapeImpl WHooktopShape FORM-FLAT-TOP para.diversityMM para.diversityMM }
straightVerticalSides { WVertSides WVSHookTopShape FORM-STRAIGHT para.diversityM para.diversityT }
roundedVerticalSides { WRounded WHookTopRounded FORM-CURLY para.diversityMM para.diversityM }
curly { WShapeImpl WHooktopShape FORM-CURLY para.diversityM para.diversityM }
cursive { WCursiveImpl WHookTopCursive FORM-CURLY para.diversityM para.diversityM }
cyrlOmega { WShapeImpl WHooktopShape FORM-CYRL-OMEGA para.diversityMM para.diversityM }
straight { WShapeImpl WHooktopShape FORM-STRAIGHT para.diversityM para.diversityM }
straightAsymmetric { WShapeImpl WHooktopShape FORM-ASYMMETRIC para.diversityM para.diversityM }
straightDoubleV { WShapeImpl WHooktopShape FORM-DOUBLE-V para.diversityM para.diversityM }
straightFlatTop { WShapeImpl WHooktopShape FORM-FLAT-TOP para.diversityMM para.diversityM }
straightVerticalSides { WVertSides WVSHookTopShape FORM-STRAIGHT para.diversityM para.diversityT }
roundedVerticalSides { WRounded WHookTopRounded FORM-CURLY para.diversityMM para.diversityM }
curly { WShapeImpl WHooktopShape FORM-CURLY para.diversityM para.diversityM }
cursive { WCursiveImpl WHookTopCursive FORM-CURLY para.diversityM para.diversityM }
cyrlOmega { WShapeImpl WHooktopShape FORM-CYRL-OMEGA para.diversityMM para.diversityM }

# Serifs
function [body] : if (body == 'cyrlOmega')
Expand Down

0 comments on commit 02ef053

Please sign in to comment.