From 75937100110bb39d3a4c6724fcfd88cccc8e5218 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Sat, 26 Oct 2024 16:31:08 -0400 Subject: [PATCH] Initial cleanup of #2556 . (#2560) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial cleanup of #2556 . * Fix serifs of `լ` under Etoile. * Optimize side bearings of `Ա`. * Improve serifs under italics and monospace. --- .../src/letter/armenian/aliases.ptl | 1 - .../src/letter/armenian/eh-liun-hiun.ptl | 4 +- .../font-glyphs/src/letter/armenian/keh.ptl | 4 +- .../src/letter/armenian/lower-q-group.ptl | 26 +++---- .../src/letter/armenian/lower-u-group.ptl | 73 ++++++++++--------- .../font-glyphs/src/letter/armenian/to.ptl | 4 +- .../src/letter/armenian/upper-u-group.ptl | 12 ++- .../src/letter/armenian/upper-xeh.ptl | 6 +- .../font-glyphs/src/letter/latin/lower-g.ptl | 25 +++---- .../font-glyphs/src/letter/latin/lower-q.ptl | 48 ++++++------ packages/font-glyphs/src/letter/shared.ptl | 2 +- params/variants.toml | 27 +++---- 12 files changed, 118 insertions(+), 114 deletions(-) diff --git a/packages/font-glyphs/src/letter/armenian/aliases.ptl b/packages/font-glyphs/src/letter/armenian/aliases.ptl index c6841ed0a9..4239461314 100644 --- a/packages/font-glyphs/src/letter/armenian/aliases.ptl +++ b/packages/font-glyphs/src/letter/armenian/aliases.ptl @@ -7,7 +7,6 @@ glyph-module glyph-block Letter-Armenian-Aliases : begin glyph-block-import Common-Derivatives - alias 'armn/Seh' 0x54D 'U' alias 'armn/Tiun' 0x54F 'S/sansSerif' alias 'armn/Piur' 0x553 'grek/Phi' alias 'armn/Oh' 0x555 'O' diff --git a/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl index 37477b0824..43c3e49199 100644 --- a/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl +++ b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl @@ -54,9 +54,7 @@ glyph-block Letter-Armenian-Eh-Liun-Hiun : begin local xMiddle : df.middle - [IBalance2 df] include : VBar.m xMiddle Descender XH df.mvs include : HBar.b xMiddle (xMiddle + LongJut * df.div) Descender df.mvs - if SLAB : begin - local sf : SerifFrame.fromDf df XH Descender - include : sf.mt.leftAt xMiddle + if SLAB : include : HSerif.lt xMiddle XH Jut df.mvs do "Hiun" create-glyph 'armn/Hiun' 0x552 : glyph-proc diff --git a/packages/font-glyphs/src/letter/armenian/keh.ptl b/packages/font-glyphs/src/letter/armenian/keh.ptl index 6aa7bbeab0..cbdb3e2d28 100644 --- a/packages/font-glyphs/src/letter/armenian/keh.ptl +++ b/packages/font-glyphs/src/letter/armenian/keh.ptl @@ -48,6 +48,4 @@ glyph-block Letter-Armenian-Keh : begin include : HCrossBar (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) df.rightSB 0 ostroke if SLAB : begin local sf : SerifFrame.fromDf df XH Descender - include sf.lt.outer - if [not para.isItalic] : begin - include sf.lb.full + include : composite-proc sf.lt.outer sf.lb.full diff --git a/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl index 57dc1180f5..e00f013467 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix linreg clamp fallback] from "@iosevka/util" +import [mix linreg clamp fallback SuffixCfg] from "@iosevka/util" import [DependentSelector] from "@iosevka/glyph/relation" glyph-module @@ -10,18 +10,16 @@ glyph-block Letter-Armenian-Lower-Q-Group : begin glyph-block-import Common-Derivatives glyph-block-import Letter-Shared-Shapes : SerifFrame glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + glyph-block-import Letter-Latin-Lower-Q : QConfig - do "Gim" - create-glyph 'armn/gim' 0x563 : glyph-proc - local df : include : DivFrame 1 - include : df.markSet.p - include : refer-glyph 'q/tailless' - include : [ArmHBar.right df 0].base + foreach { suffix { Body {terminal fTail} {sRT sRB} } } [Object.entries QConfig] : if [not fTail] : do + create-glyph "armn/gim.\(suffix)" : glyph-proc + include [refer-glyph "q.\(suffix)"] AS_BASE ALSO_METRICS + include : [ArmHBar.right [DivFrame 1] 0].base - do "Za" - create-glyph 'armn/za' 0x566 : glyph-proc - local df : include : DivFrame 1 - include : df.markSet.p - include : refer-glyph 'q/tailless' - eject-contour 'serifRB' - include : [ArmHBar.right df 0].desc + if [not sRB] : create-glyph "armn/za.\(suffix)" : glyph-proc + include [refer-glyph "q.\(suffix)"] AS_BASE ALSO_METRICS + include : [ArmHBar.right [DivFrame 1] 0].desc + + select-variant 'armn/gim' 0x563 (follow -- 'q/tailless') + select-variant 'armn/za' 0x566 (follow -- 'qRTail') diff --git a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl index e4a4b0b22f..adfd40ee71 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl @@ -32,17 +32,30 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include : [ArmHBar.normal df 0].base if SLAB : begin local sf : SerifFrame.fromDf df XH Descender - include sf.lt.outer + include : composite-proc sf.lt.outer sf.lb.full if [not para.isItalic] : begin local sf2 : SerifFrame.fromDf df XH (XH / 2) - include : composite-proc sf.lb.full sf2.rb.full + include sf2.rb.full do "Da" create-glyph 'armn/da' 0x564 : glyph-proc local df : include : DivFrame 1 include : df.markSet.p - include : refer-glyph 'latn/eta' + include : VBar.l df.leftSB 0 XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- Descender + stroke -- df.mvs include : [ArmHBar.right df 0].base + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + local sf2 : SerifFrame.fromDf df XH Descender + if para.isItalic + include sf.lt.outer + include : composite-proc sf.lt.outer sf.lb.full + include sf2.rb.full do "Ech" create-glyph 'armn/ech' 0x565 : glyph-proc @@ -76,9 +89,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin local sf : SerifFrame.fromDf df XH Descender local sf2 : SerifFrame.fromDf df XH 0 include sf.lt.outer - if para.isItalic - include sf2.rb.outer - include : composite-proc sf.lb.full sf2.rb.full + include : if para.isItalic sf2.rb.outer sf2.rb.full do "Ini" create-glyph 'armn/ini' 0x56B : glyph-proc @@ -94,10 +105,8 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df Ascender Descender local sf2 : SerifFrame.fromDf df XH 0 - include sf.lt.outer - if para.isItalic - include sf2.rb.outer - include : composite-proc sf.lb.full sf2.rb.full + include : composite-proc sf.lt.outer sf.lb.full + include : if para.isItalic sf2.rb.outer sf2.rb.full do "Xeh" create-glyph 'armn/xeh' 0x56D : glyph-proc @@ -121,10 +130,10 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df Ascender Descender local sf2 : SerifFrame.fromDf df XH 0 - include sf.lt.outer - if para.isItalic + include : composite-proc sf.lt.outer sf.lb.full + if ([not para.isItalic] && sf2.enoughSpaceForFullSerifs) + include : composite-proc sf2.rt.inner sf2.rb.outer include sf2.rb.outer - include : composite-proc sf.lb.full sf2.rt.inner sf2.rb.outer do "Ken" create-glyph 'armn/ken' 0x56F : glyph-proc @@ -143,7 +152,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin local sf2 : SerifFrame.fromDf df XH Descender include sf.lt.outer if para.isItalic - include sf2.rb.outer + include sf2.rb.full include : composite-proc sf2.rt.inner sf2.rb.full do "Ghat" @@ -157,13 +166,11 @@ glyph-block Letter-Armenian-Lower-U-Group : begin top -- XH bottom -- Descender stroke -- df.mvs - include : [ArmHBar.right df 0 (SLAB && [not para.isItalic])].desc + include : [ArmHBar.right df 0].desc if SLAB : begin local sf : SerifFrame.fromDf df XH 0 include sf.lt.outer - if [not para.isItalic] : begin - local sf2 : SerifFrame.fromDf df XH Descender - include : composite-proc sf.lb.full sf2.rb.full + if [not para.isItalic] : include sf.lb.full do "Men" create-glyph 'armn/men' 0x574 : glyph-proc @@ -253,10 +260,8 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df XH 0 - include sf.lt.outer - if [not para.isItalic] : begin - local sf2 : SerifFrame.fromDf df Ascender Descender - include sf2.rt.inner + local sf2 : SerifFrame.fromDf df Ascender Descender + include : composite-proc sf.lt.outer sf2.rt.inner do "Tiun" create-glyph 'armn/tiun' 0x57F : glyph-proc @@ -278,8 +283,10 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include : VBar.m df.middle 0 XH df.mvs if SLAB : begin local sf : SerifFrame.fromDf df XH 0 - include : composite-proc sf.lt.outer sf.rb.outer - if [not para.isItalic] : include : composite-proc sf.mt.left sf.mb.right sf.rb.outer + include sf.lt.outer + if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + include : composite-proc sf.mt.left sf.mb.right sf.rb.full + include sf.rb.outer do "Reh" create-glyph 'armn/reh' 0x580 : glyph-proc @@ -295,10 +302,8 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df XH Descender local sf2 : SerifFrame.fromDf df XH 0 - include sf.lt.outer - if para.isItalic - include sf2.rb.outer - include : composite-proc sf.lb.full sf2.rb.full + include : composite-proc sf.lt.outer sf.lb.full + include : if para.isItalic sf2.rb.outer sf2.rb.full do "P'iur" create-glyph 'armn/piur' 0x583 : glyph-proc @@ -321,10 +326,10 @@ glyph-block Letter-Armenian-Lower-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df XH 0 local sf2 : SerifFrame.fromDf df Ascender Descender - include sf.lt.outer - if para.isItalic - include sf.rb.outer - include : composite-proc sf2.mt.left sf2.mb.full sf.rb.full + include : if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + composite-proc sf.lt.outer sf.rb.full + composite-proc sf.lt.outer sf.rb.outer + include : composite-proc sf2.mt.left sf2.mb.full do "Ew" create-glyph 'armn/ew' 0x587 : glyph-proc @@ -341,7 +346,7 @@ glyph-block Letter-Armenian-Lower-U-Group : begin include : HBar.b df.middle df.rightSB 0 df.mvs if SLAB : begin local sf : SerifFrame.fromDf df Ascender 0 + local sf2 : SerifFrame.fromDf df XH 0 include sf.lt.outer - if [not para.isItalic] : begin - local sf2 : SerifFrame.fromDf df XH 0 + if ([not para.isItalic] && sf2.enoughSpaceForFullSerifs) : begin include sf2.mt.left diff --git a/packages/font-glyphs/src/letter/armenian/to.ptl b/packages/font-glyphs/src/letter/armenian/to.ptl index 3a6deebeef..0000c2de5d 100644 --- a/packages/font-glyphs/src/letter/armenian/to.ptl +++ b/packages/font-glyphs/src/letter/armenian/to.ptl @@ -58,6 +58,4 @@ glyph-block Letter-Armenian-To : begin curl (df.rightSB + jut - [HSwToV : 0.5 * df.mvs]) barPosT if SLAB : begin local sf : SerifFrame.fromDf df XH Descender - include sf.lt.outer - if [not para.isItalic] : begin - include sf.lb.full \ No newline at end of file + include : composite-proc sf.lt.outer sf.lb.full diff --git a/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl index 0b31c80a9c..a72ddabc0f 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl @@ -15,10 +15,10 @@ glyph-block Letter-Armenian-Upper-U-Group : begin do "Ayb" glyph-block-import Letter-Latin-Upper-Q : QCrossing create-glyph 'armn/Ayb' 0x531 : glyph-proc - local df : include : DivFrame 1 3 + local df : include : DivFrame 1 include : df.markSet.capital include : UShape df CAP 1 df.mvs - include : QCrossing df CAP df.mvs + include : QCrossing df CAP [AdviceStroke 4] if SLAB : include : USerifs.Toothless df CAP df.mvs do "Men" @@ -50,3 +50,11 @@ glyph-block Letter-Armenian-Upper-U-Group : begin if SLAB : begin local sf : SerifFrame.fromDf df CAP 0 include : composite-proc sf.lb.full sf.rb.full + + do "Seh" + create-glyph 'armn/Seh' 0x54D : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : UShape df CAP 1 df.mvs + if SLAB : begin + include : USerifs.Toothless df CAP df.mvs diff --git a/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl b/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl index 28d25f124f..f8d1720655 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl @@ -23,5 +23,7 @@ glyph-block Letter-Armenian-Upper-Xeh : begin if SLAB : begin local sf : SerifFrame.fromDf df CAP 0 local sf2 : SerifFrame.fromDf df XH 0 - include : composite-proc sf.lt.full sf.lb.full sf2.rt.full - if sf2.enoughSpaceForFullSerifs : include sf2.mt.full + include : composite-proc sf.lt.full sf.lb.full + if sf2.enoughSpaceForFullSerifs + include : composite-proc sf2.mt.full sf2.rt.full + include sf2.rt.outer diff --git a/packages/font-glyphs/src/letter/latin/lower-g.ptl b/packages/font-glyphs/src/letter/latin/lower-g.ptl index f71a014739..f8d6a561f9 100644 --- a/packages/font-glyphs/src/letter/latin/lower-g.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-g.ptl @@ -116,8 +116,8 @@ glyph-block Letter-Latin-Lower-G : begin include : SeriflessBody df top include : spiro-outline corner df.rightSB top - corner df.rightSB (top - Stroke / 2) - corner (df.rightSB - [HSwToV Stroke]) (top - Stroke / 2) + corner df.rightSB (top - HalfStroke) + corner (df.rightSB - [HSwToV Stroke]) (top - HalfStroke) export : define [SeriflessBody df top] : glyph-proc include : OBarRight.shape (top -- top) (left -- df.leftSB) (right -- df.rightSB) (sw -- df.mvs) @@ -154,13 +154,12 @@ glyph-block Letter-Latin-Lower-G : begin singleStorey SingleStorey.RoundHook singleStoreyFlatHook SingleStorey.FlatHook object # ear/serif - "" { SingleStorey.AutoSerifedBody 0 } serifless { SingleStorey.SeriflessBody 0 } serifed { SingleStorey.SerifedBody 0 } earlessCorner { SingleStorey.EarlessCornerBody DToothlessRise } earlessCornerHTB { SingleStorey.EarlessCornerBody 0 } earlessRounded { SingleStorey.EarlessRoundedBody (XH - SmallArchDepthA) } - scriptCut { SingleStorey.ScriptCutBody (Stroke / 2) } + scriptCut { SingleStorey.ScriptCutBody HalfStroke } foreach { suffix { hookShape {bodyShape hookStart} } } [Object.entries SingleStoreyConfig] : do create-glyph "g.\(suffix)" : glyph-proc @@ -196,33 +195,31 @@ glyph-block Letter-Latin-Lower-G : begin include [refer-glyph "g.\(suffix)"] AS_BASE ALSO_METRICS include : OverlayW [AdviceStroke2 2 4 XH] - create-glyph "gScriptCrossedTail.\(suffix)" : glyph-proc - include : MarkSet.p - set-base-anchor 'overlay' Middle (XH / 2) - define df : DivFrame 1 - include : bodyShape df XH - include : SingleStorey.CrossedHook df (XH - hookStart) - select-variant 'g' 'g' link-reduced-variant 'g/sansSerif' 'g' MathSansSerif CreateTurnedLetter 'turng' 0x1D77 'g' HalfAdvance [mix Descender XH 0.5] select-variant "gBar" 0x1E5 (follow -- 'g') - select-variant 'g/hookTopBase' null (shapeFrom -- 'g') - select-variant 'gScript' 0x261 (shapeFrom -- 'g') (follow -- 'gScript') select-variant 'GScript' 0xA7AC (follow -- 'gScript') select-variant 'gScriptPalatalHook' 0x1D83 (follow -- 'gScript') - select-variant 'gScriptCrossedTail' 0xAB36 select-variant 'cyrl/de.BGR' (shapeFrom -- 'g') (follow -- [conditional-follow SLAB 'g/single/autoSerifed/slab' 'g/single/autoSerifed/sans']) alias 'cyrl/de.SRB' null 'cyrl/de.BGR' + select-variant 'g/hookTopBase' (shapeFrom -- 'g') derive-glyphs 'gHookTop' 0x260 "g/hookTopBase" : function [src gr] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : TopHook.rBarOuter RightSB 0 XH include : LeaningAnchor.Above.VBar.r RightSB + create-glyph 'gScriptCrossedTail' 0xAB36 : glyph-proc + include : MarkSet.p + set-base-anchor 'overlay' Middle (XH / 2) + define df : DivFrame 1 + include : SingleStorey.ScriptCutBody df XH + include : SingleStorey.CrossedHook df (XH - HalfStroke) + glyph-block-import Letter-Blackboard : BBS BBD BBBarRight create-glyph 'mathbb/g' 0x1D558 : glyph-proc include : MarkSet.p diff --git a/packages/font-glyphs/src/letter/latin/lower-q.ptl b/packages/font-glyphs/src/letter/latin/lower-q.ptl index 9acb7ba242..099e7f4d8e 100644 --- a/packages/font-glyphs/src/letter/latin/lower-q.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-q.ptl @@ -20,7 +20,6 @@ glyph-block Letter-Latin-Lower-Q : begin glyph-block-export RDiagTailedBar define [RDiagTailedBar x0 yb yt _sw] : begin - local df : DivFrame 1 local sw : fallback _sw Stroke local xMid : x0 - [HSwToV : 0.5 * sw] return : dispiro @@ -31,7 +30,7 @@ glyph-block Letter-Latin-Lower-Q : begin set-base-anchor 'trailing' (RightSB - markHalfStroke) Descender include : OBarRight.shape (top -- top) include : match terminal - [Just TERMINAL-NORMAL] : VBar.r RightSB bottom top + [Just TERMINAL-NORMAL] : VBar.r RightSB bottom top [Just TERMINAL-TAILED] : RightwardTailedBar RightSB bottom top [Just TERMINAL-DIAG] : RDiagTailedBar RightSB bottom top @@ -40,7 +39,7 @@ glyph-block Letter-Latin-Lower-Q : begin include : OBarLeft.toothless (top -- top) (rise -- DToothlessRise) (mBlend -- DMBlend) include : FlipAround Middle (top / 2) include : match terminal - [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - DToothlessRise) + [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - DToothlessRise) [Just TERMINAL-TAILED] : RightwardTailedBar RightSB bottom (top - DToothlessRise) [Just TERMINAL-DIAG] : RDiagTailedBar RightSB bottom (top - DToothlessRise) @@ -49,7 +48,7 @@ glyph-block Letter-Latin-Lower-Q : begin include : OBarLeft.rounded (top -- top) (yTerminal -- (SmallArchDepthB - O)) include : FlipAround Middle (top / 2) include : match terminal - [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - SmallArchDepthB) + [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - SmallArchDepthB) [Just TERMINAL-TAILED] : RightwardTailedBar RightSB bottom (top - SmallArchDepthB) [Just TERMINAL-DIAG] : RDiagTailedBar RightSB bottom (top - SmallArchDepthB) @@ -60,22 +59,23 @@ glyph-block Letter-Latin-Lower-Q : begin HSerif.rb (RightSB - [HSwToV HalfStroke]) y Jut define [RbSerifAuto y] : NeedSlab SLAB : RbSerif y + glyph-block-export QConfig define QConfig : SuffixCfg.weave object # body "" EaredBody earlessCorner EarlessCornerBody earlessRounded EarlessRoundedBody object # tail - straight TERMINAL-NORMAL - tailed TERMINAL-TAILED - diagonalTailed TERMINAL-DIAG + straight { TERMINAL-NORMAL false } + tailed { TERMINAL-TAILED true } + diagonalTailed { TERMINAL-DIAG true } object # serifs serifless { nothing nothing } motionSerifed { RtSerif nothing } bottomSerifed { nothing RbSerif } serifed { RtSerif RbSerif } - foreach { suffix { Body terminal {sRT sRB} } } [Object.entries QConfig] : do + foreach { suffix { Body {terminal fTail} {sRT sRB} } } [Object.entries QConfig] : do create-glyph "q.\(suffix)" : glyph-proc include : MarkSet.p include : Body terminal XH Descender @@ -83,26 +83,26 @@ glyph-block Letter-Latin-Lower-Q : begin if sRB : include : sRB Descender include : LeaningAnchor.Below.VBar.r RightSB - create-glyph "QRTail.\(suffix)" : glyph-proc - include : MarkSet.capDesc - include : Body terminal CAP 0 - include : RetroflexHook.rExt RightSB 0 - if sRT : include : sRT CAP - include : LeaningAnchor.Below.VBar.r RightSB - - create-glyph "qRTail.\(suffix)" : glyph-proc - include : MarkSet.p - include : Body terminal XH 0 - include : RetroflexHook.rExt RightSB 0 - if sRT : include : sRT XH - include : LeaningAnchor.Below.VBar.r RightSB + if (!fTail && !sRB) : begin + create-glyph "QRTail.\(suffix)" : glyph-proc + include : MarkSet.capDesc + include : Body terminal CAP 0 + include : RetroflexHook.rExt RightSB 0 + if sRT : include : sRT CAP + include : LeaningAnchor.Below.VBar.r RightSB + + create-glyph "qRTail.\(suffix)" : glyph-proc + include : MarkSet.p + include : Body terminal XH 0 + include : RetroflexHook.rExt RightSB 0 + if sRT : include : sRT XH + include : LeaningAnchor.Below.VBar.r RightSB select-variant 'q' 'q' link-reduced-variant 'q/sansSerif' 'q' MathSansSerif alias 'cyrl/qa' 0x51B 'q' - select-variant 'QRTail' 0x24A (follow -- "q/tailless") - select-variant 'qRTail' 0x24B (follow -- "q/tailless") - select-variant "q/tailless" (shapeFrom -- 'q') + select-variant 'QRTail' 0x24A (follow -- 'qRTail') + select-variant 'qRTail' 0x24B select-variant "q/hookTopBase" (shapeFrom -- 'q') derive-glyphs 'qHookTop' 0x2A0 "q/hookTopBase" : function [src gr] : glyph-proc diff --git a/packages/font-glyphs/src/letter/shared.ptl b/packages/font-glyphs/src/letter/shared.ptl index 5d47aadd41..777b4873f7 100644 --- a/packages/font-glyphs/src/letter/shared.ptl +++ b/packages/font-glyphs/src/letter/shared.ptl @@ -126,7 +126,7 @@ glyph-block Letter-Blackboard : begin glyph-block Letter-Shared-Metrics : begin glyph-block-export BowlXDepth define [BowlXDepth top bottom left right sw] : begin - local trShrink : Math.pow (((right - left) / (top - bottom))) 0.5 + local trShrink : Math.sqrt : (right - left) / (top - bottom) return : Math.max HSwToV : 1.25 * sw trShrink * [Math.min ((top - bottom) * 0.45) ((right - left + [HSwToV sw]) * 0.875)] diff --git a/params/variants.toml b/params/variants.toml index 7832712a4a..439073d113 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -2767,7 +2767,6 @@ selectorAffix.g = "" selectorAffix."g/sansSerif" = "" selectorAffix."g/hookTopBase" = "" selectorAffix."gScript" = "" -selectorAffix."gScriptCrossedTail" = "" selectorAffix."g/single/autoSerifed/slab" = "" selectorAffix."g/single/autoSerifed/sans" = "" @@ -2781,7 +2780,6 @@ selectorAffix.g = "doubleStorey" selectorAffix."g/sansSerif" = "doubleStorey" selectorAffix."g/hookTopBase" = "singleStoreySerifless" selectorAffix."gScript" = "singleStoreyScriptCut" -selectorAffix."gScriptCrossedTail" = "singleStoreyScriptCut" selectorAffix."g/single/autoSerifed/slab" = "singleStoreySerifed" selectorAffix."g/single/autoSerifed/sans" = "singleStoreySerifless" @@ -2792,7 +2790,6 @@ selectorAffix.g = "openDoubleStorey" selectorAffix."g/sansSerif" = "openDoubleStorey" selectorAffix."g/hookTopBase" = "singleStoreySerifless" selectorAffix."gScript" = "singleStoreyScriptCut" -selectorAffix."gScriptCrossedTail" = "singleStoreyScriptCut" selectorAffix."g/single/autoSerifed/slab" = "singleStoreySerifed" selectorAffix."g/single/autoSerifed/sans" = "singleStoreySerifless" @@ -2804,7 +2801,6 @@ selectorAffix.g = "singleStorey" selectorAffix."g/sansSerif" = "singleStorey" selectorAffix."g/hookTopBase" = "singleStorey" selectorAffix."gScript" = "singleStorey" -selectorAffix."gScriptCrossedTail" = "singleStorey" selectorAffix."g/single/autoSerifed/slab" = "singleStorey" selectorAffix."g/single/autoSerifed/sans" = "singleStorey" @@ -2818,7 +2814,6 @@ selectorAffix.g = "" selectorAffix."g/sansSerif" = "" selectorAffix."g/hookTopBase" = "" selectorAffix."gScript" = "" -selectorAffix."gScriptCrossedTail" = "" selectorAffix."g/single/autoSerifed/slab" = "" selectorAffix."g/single/autoSerifed/sans" = "" @@ -2829,7 +2824,6 @@ selectorAffix.g = "flatHook" selectorAffix."g/sansSerif" = "flatHook" selectorAffix."g/hookTopBase" = "flatHook" selectorAffix."gScript" = "flatHook" -selectorAffix."gScriptCrossedTail" = "" selectorAffix."g/single/autoSerifed/slab" = "flatHook" selectorAffix."g/single/autoSerifed/sans" = "flatHook" @@ -2839,7 +2833,6 @@ selectorAffix.g = "serifless" selectorAffix."g/sansSerif" = "serifless" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" selectorAffix."g/single/autoSerifed/slab" = "serifless" selectorAffix."g/single/autoSerifed/sans" = "serifless" @@ -2850,7 +2843,6 @@ selectorAffix.g = "serifed" selectorAffix."g/sansSerif" = "serifless" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" selectorAffix."g/single/autoSerifed/slab" = "serifed" selectorAffix."g/single/autoSerifed/sans" = "serifed" @@ -2861,7 +2853,6 @@ selectorAffix.g = "earlessCorner" selectorAffix."g/sansSerif" = "earlessCorner" selectorAffix."g/hookTopBase" = "earlessCornerHTB" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" selectorAffix."g/single/autoSerifed/slab" = "earlessCorner" selectorAffix."g/single/autoSerifed/sans" = "earlessCorner" @@ -2872,7 +2863,6 @@ selectorAffix.g = "earlessRounded" selectorAffix."g/sansSerif" = "earlessRounded" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" selectorAffix."g/single/autoSerifed/slab" = "earlessRounded" selectorAffix."g/single/autoSerifed/sans" = "earlessRounded" @@ -3954,6 +3944,7 @@ selectorAffix.q = "" selectorAffix."q/sansSerif" = "" selectorAffix."q/hookTopBase" = "" selectorAffix."q/tailless" = "" +selectorAffix.qRTail = "" selectorAffix.gha = "" [prime.q.variants-buildup.stages.body.earless-corner] @@ -3963,6 +3954,7 @@ selectorAffix.q = "earlessCorner" selectorAffix."q/sansSerif" = "earlessCorner" selectorAffix."q/hookTopBase" = "earlessCorner" selectorAffix."q/tailless" = "earlessCorner" +selectorAffix.qRTail = "earlessCorner" selectorAffix.gha = "" [prime.q.variants-buildup.stages.body.earless-rounded] @@ -3972,6 +3964,7 @@ selectorAffix.q = "earlessRounded" selectorAffix."q/sansSerif" = "earlessRounded" selectorAffix."q/hookTopBase" = "" selectorAffix."q/tailless" = "earlessRounded" +selectorAffix.qRTail = "earlessRounded" selectorAffix.gha = "" [prime.q.variants-buildup.stages.terminal."*"] @@ -3984,6 +3977,7 @@ selectorAffix.q = "straight" selectorAffix."q/sansSerif" = "straight" selectorAffix."q/hookTopBase" = "straight" selectorAffix."q/tailless" = "straight" +selectorAffix.qRTail = "straight" selectorAffix.gha = "straight" [prime.q.variants-buildup.stages.terminal.tailed] @@ -3993,6 +3987,7 @@ selectorAffix.q = "tailed" selectorAffix."q/sansSerif" = "tailed" selectorAffix."q/hookTopBase" = "tailed" selectorAffix."q/tailless" = "straight" +selectorAffix.qRTail = "straight" selectorAffix.gha = "tailed" [prime.q.variants-buildup.stages.terminal.diagonal-tailed] @@ -4002,6 +3997,7 @@ selectorAffix.q = "diagonalTailed" selectorAffix."q/sansSerif" = "diagonalTailed" selectorAffix."q/hookTopBase" = "diagonalTailed" selectorAffix."q/tailless" = "straight" +selectorAffix.qRTail = "straight" selectorAffix.gha = "diagonalTailed" [prime.q.variants-buildup.stages.serifs.serifless] @@ -4012,6 +4008,7 @@ selectorAffix.q = "serifless" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "serifless" selectorAffix."q/tailless" = "serifless" +selectorAffix.qRTail = "serifless" selectorAffix.gha = "serifless" [prime.q.variants-buildup.stages.serifs.bottom-serifed] @@ -4021,7 +4018,8 @@ descriptionAffix = "serif at bottom" selectorAffix.q = "bottomSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix."q/tailless" = "serifless" +selectorAffix."q/tailless" = "bottomSerifed" +selectorAffix.qRTail = "serifless" selectorAffix.gha = "bottomSerifed" [prime.q.variants-buildup.stages.serifs.motion-serifed] @@ -4032,6 +4030,7 @@ selectorAffix.q = "motionSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "serifless" selectorAffix."q/tailless" = "motionSerifed" +selectorAffix.qRTail = "motionSerifed" selectorAffix.gha = "serifless" [prime.q.variants-buildup.stages.serifs.serifed__eared] @@ -4042,7 +4041,8 @@ descriptionAffix = "serifs" selectorAffix.q = "serifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix."q/tailless" = "motionSerifed" +selectorAffix."q/tailless" = "serifed" +selectorAffix.qRTail = "motionSerifed" selectorAffix.gha = "bottomSerifed" [prime.q.variants-buildup.stages.serifs.serifed__eareless] @@ -4053,7 +4053,8 @@ descriptionAffix = "serifs" selectorAffix.q = "bottomSerifed" selectorAffix."q/sansSerif" = "serifless" selectorAffix."q/hookTopBase" = "bottomSerifed" -selectorAffix."q/tailless" = "serifless" +selectorAffix."q/tailless" = "bottomSerifed" +selectorAffix.qRTail = "serifless" selectorAffix.gha = "bottomSerifed"