Miscellaneous optimizations for metrics of certain phonetic/etc. characters. (#2504)

* Fix variant application to half parentheses.

* Make Capital/Lower Small Capital I slightly wider.

* Make Komi Dje slightly wider.

* Optimize bowl height of Cyrillic Tje.

* Optimize descender offset for Cyrillic Dhe/The.
This commit is contained in:
John McWilliams 2024-09-17 19:05:53 -04:00 committed by GitHub
parent 3289cc13c4
commit 3cbbfaa88a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 43 additions and 33 deletions

View file

@ -2,6 +2,9 @@
* Improve widths of overline marks of Serbian italic lower Ghe/Pe/Te. * Improve widths of overline marks of Serbian italic lower Ghe/Pe/Te.
* Remove crossbar variants for `Z`/`z` when under Polish locale (`PLK`) to avoid confusion with the handwritten `Ż`/`ż` allograph, `Ƶ`/`ƶ`. * Remove crossbar variants for `Z`/`z` when under Polish locale (`PLK`) to avoid confusion with the handwritten `Ż`/`ż` allograph, `Ƶ`/`ƶ`.
* Make serif variants for Latin Capital/Small Schwa (`Ə`/`ə`) only appear under Turkic (Turkish/Azerbaijani/etc.) locales (`TRK`, `AZE`, `GAG`, `KAZ`, `TAT`, `CRT`) as other languages that use Latin Schwa (including the IPA) unify its metrics with Open O (`Ɔ`/`ɔ`) or a literal Turned E (`Ǝ`/`ǝ`). * Make serif variants for Latin Capital/Small Schwa (`Ə`/`ə`) only appear under Turkic (Turkish/Azerbaijani/etc.) locales (`TRK`, `AZE`, `GAG`, `KAZ`, `TAT`, `CRT`) as other languages that use Latin Schwa (including the IPA) unify its metrics with Open O (`Ɔ`/`ɔ`) or a literal Turned E (`Ǝ`/`ǝ`).
* Make serifs of Latin Letter Small Capital I (`ɪ`) slightly wider under Quasi-Proportional.
* Make Cyrillic Small Letter Komi Dje (`ԃ`) slightly wider under Quasi-Proportional.
* Make Latin Capital Letter Small Capital I (`Ɪ`) slightly wider under Etoile.
* Add Characters: * Add Characters:
- CYRILLIC CAPITAL LETTER TJE (`U+1C89`) ... CYRILLIC SMALL LETTER TJE (`U+1C8A`). - CYRILLIC CAPITAL LETTER TJE (`U+1C89`) ... CYRILLIC SMALL LETTER TJE (`U+1C8A`).
- COMPOSITION SYMBOL (`U+2384`). - COMPOSITION SYMBOL (`U+2384`).

View file

@ -36,7 +36,7 @@ glyph-block Letter-Cyrillic-Tje : begin
left -- [mix df.leftSB df.rightSB 0.3] + OX left -- [mix df.leftSB df.rightSB 0.3] + OX
right -- df.rightSB right -- df.rightSB
stroke -- df.mvs stroke -- df.mvs
bowl -- [Math.min (YeriBarPos * top + HalfStroke) (top - 1.25 * jutTop)] bowl -- YeriBarPos * top + [Math.min HalfStroke jutMid]
eject-contour 'serifYeriLT' eject-contour 'serifYeriLT'
eject-contour 'serifYeriLB' eject-contour 'serifYeriLB'

View file

@ -100,11 +100,10 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
glyph-block-export CyrZe glyph-block-export CyrZe
define [CyrZe] : with-params [ define [CyrZe] : with-params [
slabTop slabBot top bot left right blend hook _stroke slabTop slabBot top bot left right blend hook [stroke : AdviceStroke2 2 3 (top - bot)]
[xo OX] [yo O] [op OverlayPos] [ada2 SmallArchDepthA] [adb2 SmallArchDepthB] [xo OX] [yo O] [op OverlayPos] [ada2 SmallArchDepthA] [adb2 SmallArchDepthB]
] : namespace ] : namespace
export : define [Dim] : begin export : define [Dim] : begin
local stroke : fallback _stroke : AdviceStroke2 2 3 (top - bot)
local midx : mix right left blend local midx : mix right left blend
local midy : mix bot top op local midy : mix bot top op
local topHeight : top - bot local topHeight : top - bot
@ -247,7 +246,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
include : let [zeNoO : CyrZe slabTop slabBot CAP 0 SB RightSB StdBlend Hook (xo -- 0) (yo -- 0)] include : let [zeNoO : CyrZe slabTop slabBot CAP 0 SB RightSB StdBlend Hook (xo -- 0) (yo -- 0)]
difference difference
VBar.m Middle (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5] VBar.m [arch.adjust-x.bot Middle] (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5]
zeNoO.ShapeMask zeNoO.ShapeMask
create-glyph "cyrl/dhe.\(suffix)" : glyph-proc create-glyph "cyrl/dhe.\(suffix)" : glyph-proc
@ -255,7 +254,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
include : let [zeNoO : CyrZe slabTop slabBot XH 0 SB RightSB StdBlend SHook (xo -- 0) (yo -- 0)] include : let [zeNoO : CyrZe slabTop slabBot XH 0 SB RightSB StdBlend SHook (xo -- 0) (yo -- 0)]
difference difference
VBar.m Middle (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5] VBar.m [arch.adjust-x.bot Middle] (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5]
zeNoO.ShapeMask zeNoO.ShapeMask
create-glyph "cyrl/DzjeKomi.\(suffix)" : glyph-proc create-glyph "cyrl/DzjeKomi.\(suffix)" : glyph-proc

View file

@ -359,7 +359,7 @@ glyph-block Letter-Latin-C : begin
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
include : difference include : difference
VBar.m Middle (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5] VBar.m [arch.adjust-x.bot Middle] (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5]
OShapeOutline.NoOvershoot CAP 0 SB RightSB Stroke ArchDepthA ArchDepthB OShapeOutline.NoOvershoot CAP 0 SB RightSB Stroke ArchDepthA ArchDepthB
derive-multi-part-glyphs 'cyrl/The.BSH' null { 'cyrl/Es' 'invCommaBelow' } : lambda [srcs gr] : glyph-proc derive-multi-part-glyphs 'cyrl/The.BSH' null { 'cyrl/Es' 'invCommaBelow' } : lambda [srcs gr] : glyph-proc
@ -375,7 +375,7 @@ glyph-block Letter-Latin-C : begin
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
include : difference include : difference
VBar.m Middle (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5] VBar.m [arch.adjust-x.bot Middle] (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5]
OShapeOutline.NoOvershoot XH 0 SB RightSB Stroke SmallArchDepthA SmallArchDepthB OShapeOutline.NoOvershoot XH 0 SB RightSB Stroke SmallArchDepthA SmallArchDepthB
derive-multi-part-glyphs 'cyrl/the.BSH' null { 'cyrl/es' 'invCommaBelow' } : lambda [srcs gr] : glyph-proc derive-multi-part-glyphs 'cyrl/the.BSH' null { 'cyrl/es' 'invCommaBelow' } : lambda [srcs gr] : glyph-proc

View file

@ -124,7 +124,7 @@ glyph-block Letter-Latin-Lower-D : begin
include : LeaningAnchor.Above.VBar.r df.rightSB include : LeaningAnchor.Above.VBar.r df.rightSB
if [not bottomSerif] : create-glyph "cyrl/djeKomi.\(suffix)" : glyph-proc if [not bottomSerif] : create-glyph "cyrl/djeKomi.\(suffix)" : glyph-proc
local df : DivFrame 1 3 local df : include : DivFrame para.diversityM 3
include : df.markSet.b include : df.markSet.b
local dfHalf : df.slice 3 2 local dfHalf : df.slice 3 2

View file

@ -14,11 +14,13 @@ glyph-block Letter-Latin-Upper-I : begin
define [ISeriflessShape df top bot jut] : glyph-proc define [ISeriflessShape df top bot jut] : glyph-proc
include : VBar.m df.middle bot top include : VBar.m df.middle bot top
define [ISerifShape df top bot jut] : glyph-proc define [ISerifShapeImpl df top bot jut] : glyph-proc
include : VBar.m df.middle bot top include : VBar.m df.middle bot top
include : HSerif.mb df.middle bot (jut * df.div) include : HSerif.mb df.middle bot jut
include : HSerif.mt df.middle top (jut * df.div) include : HSerif.mt df.middle top jut
set-base-anchor 'trailing' (df.middle + jut * df.div) bot set-base-anchor 'trailing' (df.middle + jut) bot
define [ISerifShape df top bot jut] : ISerifShapeImpl df top bot (jut * df.div)
define UpperIConfig : object define UpperIConfig : object
'straight' { para.diversityI ISeriflessShape LongJut } 'straight' { para.diversityI ISeriflessShape LongJut }
@ -63,7 +65,9 @@ glyph-block Letter-Latin-Upper-I : begin
create-glyph 'smcpI' 0x26A : glyph-proc create-glyph 'smcpI' 0x26A : glyph-proc
local df : include : DivFrame para.diversityI local df : include : DivFrame para.diversityI
include : df.markSet.e include : df.markSet.e
include : ISerifShape df XH 0 MidJutCenter include : ISerifShapeImpl df XH 0 MidJutCenter
CreateAccentedComposition 'smcpIBarOver' 0x1D7B 'smcpI' 'barOver'
glyph-block-import Letter-Blackboard : BBS BBD BBBarCenter glyph-block-import Letter-Blackboard : BBS BBD BBBarCenter
create-glyph 'mathbb/I' 0x1D540 : glyph-proc create-glyph 'mathbb/I' 0x1D540 : glyph-proc
@ -71,5 +75,3 @@ glyph-block Letter-Latin-Upper-I : begin
include : BBBarCenter Middle 0 CAP include : BBBarCenter Middle 0 CAP
include : HBar.t (Middle - BBD / 2 - Jut) (Middle + BBD / 2 + Jut) CAP BBS include : HBar.t (Middle - BBD / 2 - Jut) (Middle + BBD / 2 + Jut) CAP BBS
include : HBar.b (Middle - BBD / 2 - Jut) (Middle + BBD / 2 + Jut) 0 BBS include : HBar.b (Middle - BBD / 2 - Jut) (Middle + BBD / 2 + Jut) 0 BBS
CreateAccentedComposition 'smcpIBarOver' 0x1D7B 'smcpI' 'barOver'

View file

@ -195,16 +195,8 @@ glyph-block Letter-Latin-Upper-T : begin
CreateAccentedComposition 'TCedilla' 0x0162 'T' 'cedillaBelow' CreateAccentedComposition 'TCedilla' 0x0162 'T' 'cedillaBelow'
CreateAccentedComposition 'TComma' 0x021A 'T' 'commaBelow' CreateAccentedComposition 'TComma' 0x021A 'T' 'commaBelow'
create-glyph 'mathbb/T' 0x1D54B : glyph-proc
local df : DivFrame 1
include : df.markSet.capital
include : HBar.t [TLeftX df] [TRightX df] CAP BBS
include : VBar.m (df.middle - BBD / 2) 0 CAP BBS
include : VBar.m (df.middle + BBD / 2) 0 CAP BBS
include : HBar.b (df.middle - BBD / 2) (df.middle + BBD / 2) 0 BBS
create-glyph 'capitalSmcpI' 0xA7AE : glyph-proc create-glyph 'capitalSmcpI' 0xA7AE : glyph-proc
local df : include : DivFrame 1 local df : include : DivFrame [if SLAB [mix 1 para.diversityM 0.5] 1]
include : df.markSet.capital include : df.markSet.capital
local l : TLeftX df local l : TLeftX df
local r : TRightX df local r : TRightX df
@ -218,3 +210,11 @@ glyph-block Letter-Latin-Upper-T : begin
include : tagged 'serifLT' : VSerif.dl l CAP VJut include : tagged 'serifLT' : VSerif.dl l CAP VJut
include : tagged 'serifRB' : VSerif.ur r 0 VJut include : tagged 'serifRB' : VSerif.ur r 0 VJut
include : tagged 'serifLB' : VSerif.ul l 0 VJut include : tagged 'serifLB' : VSerif.ul l 0 VJut
create-glyph 'mathbb/T' 0x1D54B : glyph-proc
local df : DivFrame 1
include : df.markSet.capital
include : HBar.t [TLeftX df] [TRightX df] CAP BBS
include : VBar.m (df.middle - BBD / 2) 0 CAP BBS
include : VBar.m (df.middle + BBD / 2) 0 CAP BBS
include : HBar.b (df.middle - BBD / 2) (df.middle + BBD / 2) 0 BBS

View file

@ -102,11 +102,26 @@ glyph-block Symbol-Punctuation-Brackets : begin
turned "parenRight.\(suffix)" null "parenLeft.\(suffix)" Middle SymbolMid turned "parenRight.\(suffix)" null "parenLeft.\(suffix)" Middle SymbolMid
turned "doubleParenRight.\(suffix)" null "doubleParenLeft.\(suffix)" Middle SymbolMid turned "doubleParenRight.\(suffix)" null "doubleParenLeft.\(suffix)" Middle SymbolMid
create-glyph "parenLeftUHalf.\(suffix)" : intersection
refer-glyph "parenLeft.\(suffix)"
MaskAbove SymbolMid
create-glyph "parenLeftLHalf.\(suffix)" : intersection
refer-glyph "parenLeft.\(suffix)"
MaskBelow SymbolMid
turned "parenRightUHalf.\(suffix)" null "parenLeftLHalf.\(suffix)" Middle SymbolMid
turned "parenRightLHalf.\(suffix)" null "parenLeftUHalf.\(suffix)" Middle SymbolMid
select-variant 'parenLeft' '(' select-variant 'parenLeft' '('
select-variant 'parenRight' ')' select-variant 'parenRight' ')'
select-variant 'doubleParenLeft' 0x2E28 (follow -- 'parenLeft') select-variant 'doubleParenLeft' 0x2E28 (follow -- 'parenLeft')
select-variant 'doubleParenRight' 0x2E29 (follow -- 'parenRight') select-variant 'doubleParenRight' 0x2E29 (follow -- 'parenRight')
select-variant 'parenLeftUHalf' 0x2E59 (follow -- 'parenLeft')
select-variant 'parenRightUHalf' 0x2E5A (follow -- 'parenRight')
select-variant 'parenLeftLHalf' 0x2E5B (follow -- 'parenLeft')
select-variant 'parenRightLHalf' 0x2E5C (follow -- 'parenRight')
alias 'flattenedParenLeft' 0x27EE 'parenLeft.flatArc' alias 'flattenedParenLeft' 0x27EE 'parenLeft.flatArc'
alias 'flattenedParenRight' 0x27EF 'parenRight.flatArc' alias 'flattenedParenRight' 0x27EF 'parenRight.flatArc'
@ -140,15 +155,6 @@ glyph-block Symbol-Punctuation-Brackets : begin
turned 'zNotationParenRight' 0x2988 'zNotationParenLeft' Middle SymbolMid turned 'zNotationParenRight' 0x2988 'zNotationParenLeft' Middle SymbolMid
create-glyph 'parenLeftUHalf' 0x2E59 : intersection
refer-glyph 'parenLeft'
MaskAbove SymbolMid
create-glyph 'parenLeftLHalf' 0x2E5B : intersection
refer-glyph 'parenLeft'
MaskBelow SymbolMid
turned 'parenRightUHalf' 0x2E5A 'parenLeftLHalf' Middle SymbolMid
turned 'parenRightLHalf' 0x2E5C 'parenLeftUHalf' Middle SymbolMid
define Bracket : namespace define Bracket : namespace
export : define [HDim barLeft ext] : namespace export : define [HDim barLeft ext] : namespace
export : define l : fallback barLeft : [mix SB RightSB DesignParameters.bracketOutside] - [HSwToV DesignParameters.bracketOutsideSwAdj] * Stroke export : define l : fallback barLeft : [mix SB RightSB DesignParameters.bracketOutside] - [HSwToV DesignParameters.bracketOutsideSwAdj] * Stroke