Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Further unify/optimize widths of Lower w/omega under Quasi-Proportional. #2617

Merged
merged 2 commits into from
Dec 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading