Merge pull request #2709 from jmcwilliams403/composites-cleanup
Optimize metrics of sub-glyphs for a handful of composite characters.
This commit is contained in:
commit
e442ce3405
9 changed files with 73 additions and 45 deletions
4
changes/33.1.1.md
Normal file
4
changes/33.1.1.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
* Refine shape of the following characters:
|
||||
- ARMENIAN SMALL LIGATURE ECH YIWN (`U+0587`).
|
||||
- LATIN CAPITAL LETTER AU (`U+A736`).
|
||||
- LATIN SMALL LIGATURE FFI (`U+FB03`).
|
|
@ -1621,7 +1621,7 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
|
|||
createPhoneticLigatures ToLetter 'phonetic1' [Math.max 1 : para.advanceScaleF * para.advanceScaleMM] 2 stdShrink 1 : list
|
||||
list 0xFB00 { 'f' 'f' } null
|
||||
list 0xFB01 { 'f/compLigLeft1' 'dotlessi/compLigRight' } null
|
||||
list 0xFB02 { 'f/compLigLeft2' 'l/compLigRight' } null
|
||||
list 0xFB02 { 'f/compLigLeft3' 'l/compLigRight' } null
|
||||
|
||||
createPhoneticLigatures ToLetter 'phonetic2' para.advanceScaleMM 2 stdShrink 1 : list
|
||||
list 0x02A3 { 'd/phoneticLeft' 'z/phoneticRight' } 'b'
|
||||
|
@ -1643,8 +1643,8 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
|
|||
list 0xFB06 { 's/compLigLeft' 't/compLigRight' } null
|
||||
|
||||
createPhoneticLigatures ToLetter 'phonetic3' [Math.max para.advanceScaleMM : para.advanceScaleF * [mix 1 para.advanceScaleMM 2]] 3 stdShrink 1 : list
|
||||
list 0xFB03 { 'f/compLigLeft1' 'f/compLigLeft1' 'dotlessi/compLigRight' } null
|
||||
list 0xFB04 { 'f/compLigLeft3' 'f/compLigLeft2' 'l/compLigRight' } null
|
||||
list 0xFB03 { 'f/compLigLeft2' 'f/compLigLeft1' 'dotlessi/compLigRight' } null
|
||||
list 0xFB04 { 'f/compLigLeft4' 'f/compLigLeft3' 'l/compLigRight' } null
|
||||
|
||||
createPhoneticLigatures ToLetter 'phoneticSmcp' (para.advanceScaleM * para.advanceScaleMM) 3 1 0.5 : list
|
||||
list 0x2121 { 'smcpT' 'smcpE' 'smcpL' } 'e'
|
||||
|
|
|
@ -423,9 +423,11 @@ glyph-block Letter-Armenian-Lower-U-Group : begin
|
|||
|
||||
do "Ew"
|
||||
create-glyph 'armn/ew' 0x587 : glyph-proc
|
||||
local df : include : DivFrame para.advanceScaleM
|
||||
local adws : Math.max para.advanceScaleM
|
||||
[mix 1 para.advanceScaleF 0.5] * para.advanceScaleMM
|
||||
local df : include : DivFrame adws
|
||||
include : df.markSet.b
|
||||
local subDf : DivFrame (0.75 * para.advanceScaleM) 2
|
||||
local subDf : DivFrame [Math.min 1 : (8/11) * adws] 2
|
||||
include : uBowl.shape
|
||||
top -- Ascender
|
||||
bottom -- 0
|
||||
|
|
|
@ -23,23 +23,23 @@ glyph-block Letter-Greek-Phi : begin
|
|||
|
||||
define [CyrlEfSplitRing fFlatTB df y2 y3 ada adb] : glyph-proc
|
||||
include : VBar.m df.middle y2 y3 df.mvs
|
||||
include : let [subDf : df.slice 3 2 OX] : union
|
||||
OBarRight.shape
|
||||
top -- y3
|
||||
bot -- y2
|
||||
left -- df.leftSB
|
||||
right -- (df.middle + [HSwToV : 0.5 * df.mvs])
|
||||
sw -- df.mvs
|
||||
ada -- subDf.smallArchDepthA
|
||||
adb -- subDf.smallArchDepthB
|
||||
OBarLeft.shape
|
||||
top -- y3
|
||||
bot -- y2
|
||||
left -- (df.middle - [HSwToV : 0.5 * df.mvs])
|
||||
right -- df.rightSB
|
||||
sw -- df.mvs
|
||||
ada -- subDf.smallArchDepthA
|
||||
adb -- subDf.smallArchDepthB
|
||||
local subDf : df.slice 3 2 OX
|
||||
include : OBarRight.shape
|
||||
top -- y3
|
||||
bot -- y2
|
||||
left -- df.leftSB
|
||||
right -- (df.middle + [HSwToV : 0.5 * df.mvs])
|
||||
sw -- df.mvs
|
||||
ada -- subDf.smallArchDepthA
|
||||
adb -- subDf.smallArchDepthB
|
||||
include : OBarLeft.shape
|
||||
top -- y3
|
||||
bot -- y2
|
||||
left -- (df.middle - [HSwToV : 0.5 * df.mvs])
|
||||
right -- df.rightSB
|
||||
sw -- df.mvs
|
||||
ada -- subDf.smallArchDepthA
|
||||
adb -- subDf.smallArchDepthB
|
||||
|
||||
define [GrekLowerPhiCursiveRing fFlatTB df y2 y3 ada adb] : glyph-proc
|
||||
local l : df.leftSB + OX * 2
|
||||
|
@ -61,10 +61,13 @@ glyph-block Letter-Greek-Phi : begin
|
|||
include : VBar.m df.middle (y3 - HalfStroke) y4 sw
|
||||
|
||||
define [CursiveBar df y1 y2 y3 y4 sw] : glyph-proc
|
||||
local hd : FlatHookDepth df
|
||||
local dfHook : DivFrame para.advanceScaleF
|
||||
local hd : FlatHookDepth dfHook
|
||||
|
||||
local xCrossLeft : mix 0 df.leftSB : mix 1 df.adws 2
|
||||
local xCrossRight : mix df.width df.rightSB : mix 1 df.adws 2
|
||||
local m : mix 1 para.advanceScaleF 1.5
|
||||
|
||||
local xCrossLeft : df.middle - dfHook.middle + dfHook.leftSB * m
|
||||
local xCrossRight : df.middle + dfHook.middle - dfHook.leftSB * m
|
||||
|
||||
local xBarLeft : df.middle - [HSwToV : 0.5 * sw]
|
||||
local xBarRight : df.middle + [HSwToV : 0.5 * sw]
|
||||
|
@ -84,9 +87,12 @@ glyph-block Letter-Greek-Phi : begin
|
|||
curl xBarRight (y2 - O)
|
||||
|
||||
define [DiagonalTailCursiveBar df y1 y2 y3 y4 sw] : glyph-proc
|
||||
local hd : FlatHookDepth df
|
||||
local dfHook : DivFrame para.advanceScaleF
|
||||
local hd : FlatHookDepth dfHook
|
||||
|
||||
local xCrossRight : mix df.width df.rightSB : mix 1 df.adws 2
|
||||
local m : mix 1 para.advanceScaleF 1.5
|
||||
|
||||
local xCrossRight : df.middle + dfHook.middle - dfHook.leftSB * m
|
||||
local xBarLeft : df.middle - [HSwToV : 0.5 * sw]
|
||||
|
||||
include : dispiro
|
||||
|
@ -98,7 +104,7 @@ glyph-block Letter-Greek-Phi : begin
|
|||
|
||||
include : dispiro
|
||||
flat df.middle (y2 - O) [widths.center.heading sw Downward]
|
||||
DiagTail.L df.middle y1 [DiagTail.StdDepth [DivFrame para.advanceScaleF] sw] sw
|
||||
DiagTail.L df.middle y1 [DiagTail.StdDepth dfHook sw] 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
|
||||
|
|
|
@ -107,11 +107,14 @@ glyph-block Letter-Latin-Upper-AA-AO : begin
|
|||
include : difference [refer-glyph right] [refer-glyph leftMask]
|
||||
|
||||
do "U subglyphs"
|
||||
glyph-block-import Letter-Latin-U : CapitalUConfig
|
||||
foreach { suffix { Base {Slabs fLTSlab} } } [Object.entries CapitalUConfig] : do
|
||||
glyph-block-import Letter-Latin-U : UShapeGroup CapitalUConfigT
|
||||
|
||||
define df : DivFrame para.advanceScaleMM 3.5
|
||||
define { subDf shift } : SubDfAndShift 1 df
|
||||
define sg : UShapeGroup subDf.archDepthA subDf.archDepthB
|
||||
|
||||
foreach { suffix { Base {Slabs fLTSlab} } } [Object.entries : CapitalUConfigT sg] : do
|
||||
create-glyph "AU/Right.\(suffix)" : glyph-proc
|
||||
define df : DivFrame para.advanceScaleMM 3.5
|
||||
local { subDf shift } : SubDfAndShift 1 df
|
||||
include : with-transform [ApparentTranslate shift 0]
|
||||
union [Base subDf CAP df.mvs] [Slabs subDf CAP df.mvs]
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay PalatalHook
|
||||
|
||||
define [SetPalatalHookPos barLeft] : glyph-proc
|
||||
set-base-anchor 'palatalHookPos' (barLeft + [HSwToV : Stroke + [Math.max VJutStroke (Width / 12)]]) 0
|
||||
set-base-anchor 'palatalHookPos' (barLeft + [HSwToV : Stroke + [Math.max VJutStroke : Width / 12]]) 0
|
||||
|
||||
glyph-block-export fbar
|
||||
define fbar : XH * DesignParameters.fBarPosToXH + Stroke * DesignParameters.fbarStrokeAdj
|
||||
|
@ -88,13 +88,15 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
[Just 1] Width
|
||||
[Just 2] Jut
|
||||
[Just 3] Jut
|
||||
[Just 4] Jut
|
||||
__ 0
|
||||
local topHookHdExt : match clcStyle
|
||||
[Just 1] 1
|
||||
__ 0
|
||||
local crossBarExt : match clcStyle
|
||||
[Just 1] Jut
|
||||
[Just 3] Jut
|
||||
[Just 2] Jut
|
||||
[Just 4] Jut
|
||||
__ 0
|
||||
|
||||
local barAtCenter : (counterHook === CH-HOOK) || (counterHook === CH-DIAGONAL-HOOK)
|
||||
|
@ -144,6 +146,7 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
flatHookCLC1 { [NarrowFShape 1] dfNarrowF }
|
||||
flatHookCLC2 { [NarrowFShape 2] dfNarrowF }
|
||||
flatHookCLC3 { [NarrowFShape 3] dfNarrowF }
|
||||
flatHookCLC4 { [NarrowFShape 4] dfNarrowF }
|
||||
function [body] : object # hooks
|
||||
serifless { [if body pNarrowSide 0.95] CH-NONE 'b' }
|
||||
serifed { [if body pNarrowSide 0.95] CH-SERIF 'b' }
|
||||
|
@ -179,6 +182,7 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
select-variant 'f/compLigLeft1' (shapeFrom -- 'f')
|
||||
select-variant 'f/compLigLeft2' (shapeFrom -- 'f')
|
||||
select-variant 'f/compLigLeft3' (shapeFrom -- 'f')
|
||||
select-variant 'f/compLigLeft4' (shapeFrom -- 'f')
|
||||
select-variant 'f/phoneticLeft' (shapeFrom -- 'f')
|
||||
select-variant 'fPalatalHook' 0x1D82 (follow -- 'f/tailless')
|
||||
|
||||
|
|
|
@ -149,13 +149,13 @@ glyph-block Letter-Latin-U : begin
|
|||
local sf : SerifFrame.fromDf df top 0 (swSerif -- _sw)
|
||||
return : composite-proc sf.lt.full sf.rt.full
|
||||
|
||||
glyph-block-export CapitalUConfig
|
||||
define CapitalUConfig : SuffixCfg.weave
|
||||
glyph-block-export CapitalUConfigT
|
||||
define [CapitalUConfigT shapeGroup] : SuffixCfg.weave
|
||||
object # body
|
||||
toothed UUpper.Toothed
|
||||
tailed UUpper.Tailed
|
||||
toothlessCorner UUpper.ToothlessCorner
|
||||
toothlessRounded UUpper.ToothlessRounded
|
||||
toothed shapeGroup.Toothed
|
||||
tailed shapeGroup.Tailed
|
||||
toothlessCorner shapeGroup.ToothlessCorner
|
||||
toothlessRounded shapeGroup.ToothlessRounded
|
||||
function [body] : object # serifs
|
||||
serifless { no-shape false }
|
||||
bottomRightSerifed { USerifs.BottomRight false }
|
||||
|
@ -168,7 +168,7 @@ glyph-block Letter-Latin-U : begin
|
|||
[Just 'tailed'] { USerifs.Tailed true }
|
||||
__ { USerifs.Toothless true }
|
||||
|
||||
foreach { suffix { Base {Slabs fLTSlab} } } [Object.entries CapitalUConfig] : do
|
||||
foreach { suffix { Base {Slabs fLTSlab} } } [Object.entries : CapitalUConfigT UUpper] : do
|
||||
create-glyph "U.\(suffix)" : glyph-proc
|
||||
local df : DivFrame 1
|
||||
include : MarkSet.capital
|
||||
|
|
|
@ -12,7 +12,7 @@ glyph-block Symbol-Counting-Rod : begin
|
|||
define rodDiv : Math.min 2 : mix 1 para.advanceScaleMM 3
|
||||
define rodDf : DivFrame rodDiv 5
|
||||
define rodSw rodDf.mvs
|
||||
define hRodSw : AdviceStroke 3 rodDiv
|
||||
define hRodSw : AdviceStroke 3
|
||||
define rodSpace : rodDf.width / 5
|
||||
|
||||
# Ones
|
||||
|
|
|
@ -2726,6 +2726,7 @@ selectorAffix."f/sansSerif" = ""
|
|||
selectorAffix."f/compLigLeft1" = "flatHookCLC1"
|
||||
selectorAffix."f/compLigLeft2" = "flatHookCLC2"
|
||||
selectorAffix."f/compLigLeft3" = "flatHookCLC3"
|
||||
selectorAffix."f/compLigLeft4" = "flatHookCLC4"
|
||||
selectorAffix."f/phoneticLeft" = ""
|
||||
selectorAffix."f/tailless" = ""
|
||||
selectorAffix.fLenis = ""
|
||||
|
@ -2739,6 +2740,7 @@ selectorAffix."f/sansSerif" = "flatHook"
|
|||
selectorAffix."f/compLigLeft1" = "flatHookCLC1"
|
||||
selectorAffix."f/compLigLeft2" = "flatHookCLC2"
|
||||
selectorAffix."f/compLigLeft3" = "flatHookCLC3"
|
||||
selectorAffix."f/compLigLeft4" = "flatHookCLC4"
|
||||
selectorAffix."f/phoneticLeft" = "flatHook"
|
||||
selectorAffix."f/tailless" = "flatHook"
|
||||
selectorAffix.fLenis = "flatHook"
|
||||
|
@ -2756,6 +2758,7 @@ selectorAffix."f/sansSerif" = "serifless"
|
|||
selectorAffix."f/compLigLeft1" = "serifless"
|
||||
selectorAffix."f/compLigLeft2" = "serifless"
|
||||
selectorAffix."f/compLigLeft3" = "serifless"
|
||||
selectorAffix."f/compLigLeft4" = "serifless"
|
||||
selectorAffix."f/phoneticLeft" = "serifless"
|
||||
selectorAffix."f/tailless" = "serifless"
|
||||
selectorAffix.fLenis = "serifless"
|
||||
|
@ -2769,6 +2772,7 @@ selectorAffix."f/sansSerif" = "serifless"
|
|||
selectorAffix."f/compLigLeft1" = "serifed"
|
||||
selectorAffix."f/compLigLeft2" = "serifed"
|
||||
selectorAffix."f/compLigLeft3" = "serifed"
|
||||
selectorAffix."f/compLigLeft4" = "serifed"
|
||||
selectorAffix."f/phoneticLeft" = "serifed"
|
||||
selectorAffix."f/tailless" = "serifed"
|
||||
selectorAffix.fLenis = "serifless"
|
||||
|
@ -2782,6 +2786,7 @@ selectorAffix."f/sansSerif" = "extended"
|
|||
selectorAffix."f/compLigLeft1" = "extended"
|
||||
selectorAffix."f/compLigLeft2" = "extended"
|
||||
selectorAffix."f/compLigLeft3" = "extended"
|
||||
selectorAffix."f/compLigLeft4" = "extended"
|
||||
selectorAffix."f/phoneticLeft" = "extended"
|
||||
selectorAffix."f/tailless" = "serifless"
|
||||
selectorAffix.fLenis = "serifless"
|
||||
|
@ -2795,6 +2800,7 @@ selectorAffix."f/sansSerif" = "tailed"
|
|||
selectorAffix."f/compLigLeft1" = "tailed"
|
||||
selectorAffix."f/compLigLeft2" = "tailed"
|
||||
selectorAffix."f/compLigLeft3" = "tailed"
|
||||
selectorAffix."f/compLigLeft4" = "tailed"
|
||||
selectorAffix."f/phoneticLeft" = "tailed"
|
||||
selectorAffix."f/tailless" = "serifless"
|
||||
selectorAffix.fLenis = "serifless"
|
||||
|
@ -2808,6 +2814,7 @@ selectorAffix."f/sansSerif" = "diagonalTailed"
|
|||
selectorAffix."f/compLigLeft1" = "diagonalTailed"
|
||||
selectorAffix."f/compLigLeft2" = "diagonalTailed"
|
||||
selectorAffix."f/compLigLeft3" = "diagonalTailed"
|
||||
selectorAffix."f/compLigLeft4" = "diagonalTailed"
|
||||
selectorAffix."f/phoneticLeft" = "diagonalTailed"
|
||||
selectorAffix."f/tailless" = "serifless"
|
||||
selectorAffix.fLenis = "serifless"
|
||||
|
@ -2819,8 +2826,9 @@ keyAffix = ""
|
|||
selectorAffix.f = ""
|
||||
selectorAffix."f/sansSerif" = ""
|
||||
selectorAffix."f/compLigLeft1" = "crossbarAtXHeight"
|
||||
selectorAffix."f/compLigLeft2" = ""
|
||||
selectorAffix."f/compLigLeft2" = "crossbarAtXHeight"
|
||||
selectorAffix."f/compLigLeft3" = ""
|
||||
selectorAffix."f/compLigLeft4" = ""
|
||||
selectorAffix."f/phoneticLeft" = "crossbarAtXHeight"
|
||||
selectorAffix."f/tailless" = ""
|
||||
selectorAffix.fLenis = ""
|
||||
|
@ -2832,8 +2840,9 @@ descriptionAffix = "crossbar at X-height"
|
|||
selectorAffix.f = "crossbarAtXHeight"
|
||||
selectorAffix."f/sansSerif" = "crossbarAtXHeight"
|
||||
selectorAffix."f/compLigLeft1" = "crossbarAtXHeight"
|
||||
selectorAffix."f/compLigLeft2" = ""
|
||||
selectorAffix."f/compLigLeft2" = "crossbarAtXHeight"
|
||||
selectorAffix."f/compLigLeft3" = ""
|
||||
selectorAffix."f/compLigLeft4" = ""
|
||||
selectorAffix."f/phoneticLeft" = "crossbarAtXHeight"
|
||||
selectorAffix."f/tailless" = "crossbarAtXHeight"
|
||||
selectorAffix.fLenis = "crossbarAtXHeight"
|
||||
|
@ -4892,7 +4901,7 @@ rank = 3
|
|||
descriptionAffix = "serifs"
|
||||
selectorAffix.w = "serifed"
|
||||
selectorAffix."w/sansSerif" = "serifless"
|
||||
selectorAffix.wHookTop = "serifed"
|
||||
selectorAffix.wHookTop = { if = [{ body = "straight-double-v" }, { body = "straight-asymmetric" }], then = "motionSerifed", else = "serifed" }
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue