From 0e7579e4bf7851cae75d19ff9fade183114b0981 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:59:55 -0500 Subject: [PATCH] Improve consistency of combining parentheses' anchor points for overlines in Serbian localized forms. (#2585) * Let `cyrl/ghe.SRB` respond to `serifed-asymmetric` variants. * Improve parentheses anchors for Serbian overlines. --- .../font-glyphs/src/letter/latin/lower-il.ptl | 8 +++-- .../font-glyphs/src/letter/latin/lower-m.ptl | 4 +-- packages/font-glyphs/src/letter/latin/u.ptl | 2 +- packages/font-glyphs/src/marks/above.ptl | 31 ++++++++++++++++--- params/variants.toml | 2 +- 5 files changed, 35 insertions(+), 12 deletions(-) diff --git a/packages/font-glyphs/src/letter/latin/lower-il.ptl b/packages/font-glyphs/src/letter/latin/lower-il.ptl index bb63675d2..d2c005b04 100644 --- a/packages/font-glyphs/src/letter/latin/lower-il.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-il.ptl @@ -136,6 +136,7 @@ glyph-block Letter-Latin-Lower-I : begin define Serifs : namespace export : define [Hooky df top xMiddle] : HSerif.lt xMiddle top (LongJut * df.div) Stroke df.mvs + export : define [HookyShort df top xMiddle] : HSerif.lt xMiddle top [mix Jut (LongJut * df.div) 0.5] Stroke df.mvs export : define [Serifed df top xMiddle] : HSerif.lt xMiddle top ((LongJut * df.div) - (xMiddle - df.middle)) Stroke df.mvs export : define [SerifedShort df top xMiddle] : HSerif.lt xMiddle top [mix Jut ((LongJut * df.div) - (xMiddle - df.middle)) 0.5] Stroke df.mvs @@ -158,6 +159,7 @@ glyph-block Letter-Latin-Lower-I : begin 'hooky' { Body.Serifless Serifs.Hooky Marks.Serifed XMiddle.Hooky para.diversityI 0 } 'hookyBottom' { Body.HookyBottom null Marks.Serifless XMiddle.HookyBottom para.diversityI Stroke } 'zshaped' { Body.HookyBottom Serifs.Hooky Marks.Serifed XMiddle.Center para.diversityI Stroke } + 'zshapedAsymmetric' { Body.HookyBottom Serifs.HookyShort Marks.Serifed XMiddle.Center para.diversityI Stroke } 'serifed' { Body.Serifed Serifs.Serifed Marks.Serifed XMiddle.Serifed para.diversityI Stroke } 'serifedAsymmetric' { Body.Serifed Serifs.SerifedShort Marks.Serifed XMiddle.Serifed para.diversityI Stroke } 'tailed' { Body.Tailed null Marks.Serifless XMiddle.Tailed para.diversityI Stroke } @@ -317,8 +319,8 @@ glyph-block Letter-Latin-Lower-I : begin alias 'cyrl/Iota' 0xA646 'latn/Iota' select-variant 'cyrl/ghe.SRB/base' (shapeFrom -- 'dotlessi') (follow -- 'cyrl/ghe.SRB') - CreateAccentedComposition 'cyrl/ghe.SRB' null 'cyrl/ghe.SRB/base' 'sbRsbOverlineAbove/diversityI' - CreateMultiAccentedComposition 'cyrl/gje.SRB' null 'cyrl/ghe.SRB/base' { 'sbRsbOverlineAbove/diversityI' 'acuteAbove' } + CreateAccentedComposition 'cyrl/ghe.SRB' null 'cyrl/ghe.SRB/base' 'cyrl/ghe.SRB/overlineAbove' + CreateMultiAccentedComposition 'cyrl/gje.SRB' null 'cyrl/ghe.SRB/base' { 'cyrl/ghe.SRB/overlineAbove' 'acuteAbove' } CreateTurnedLetter 'turni' 0x1D09 'i' HalfAdvance (XH / 2) CreateTurnedLetter 'grek/turniota' 0x2129 'latn/iota' HalfAdvance (XH / 2) @@ -339,7 +341,7 @@ glyph-block Letter-Latin-Lower-I : begin CreateTurnedLetter 'turnl' 0xA781 'l' HalfAdvance (XH / 2) select-variant 'l/phoneticLeft' (shapeFrom -- 'l') select-variant 'l/compLigRight' (shapeFrom -- 'l') - select-variant 'lDotBase' null (follow -- 'l') + select-variant 'lDotBase' (follow -- 'l') select-variant 'lRTail' 0x26D (follow -- 'l/reduced/rtail') select-variant 'llWelsh' 0x1EFB (follow -- 'l') select-variant 'lPalatalHook' 0x1D85 (follow -- 'l') diff --git a/packages/font-glyphs/src/letter/latin/lower-m.ptl b/packages/font-glyphs/src/letter/latin/lower-m.ptl index 7b40cb8ac..bc5215f93 100644 --- a/packages/font-glyphs/src/letter/latin/lower-m.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-m.ptl @@ -440,8 +440,8 @@ glyph-block Letter-Latin-Lower-M : begin select-variant 'cyrl/shcha/reduced.italic' (shapeFrom -- 'cyrl/shcha.italic') (follow -- 'cyrl/shcha.italic/reduced') alias 'cyrl/shcha/reduced.BGR' null 'cyrl/shcha/reduced.italic' - derive-composites 'cyrl/te.SRB' null 'cyrl/sha.italic' 'sbRsbOverlineAbove/diversityM' - derive-composites 'cyrl/te/reduced.SRB' null 'cyrl/sha/reduced.italic' 'sbRsbOverlineAbove/diversityM' + derive-composites 'cyrl/te.SRB' null 'cyrl/sha.italic' 'cyrl/te.SRB/overlineAbove' + derive-composites 'cyrl/te/reduced.SRB' null 'cyrl/sha/reduced.italic' 'cyrl/te.SRB/overlineAbove' glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft create-glyph 'mathbb/m' 0x1D55E : glyph-proc diff --git a/packages/font-glyphs/src/letter/latin/u.ptl b/packages/font-glyphs/src/letter/latin/u.ptl index aec3a451b..6750f1979 100644 --- a/packages/font-glyphs/src/letter/latin/u.ptl +++ b/packages/font-glyphs/src/letter/latin/u.ptl @@ -350,7 +350,7 @@ glyph-block Letter-Latin-U : begin derive-glyphs 'cyrl/pe.SRB' null 'cyrl/i.italic' : lambda [src gr] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS - include [refer-glyph 'sbRsbOverlineAbove'] + include [refer-glyph 'cyrl/pe.SRB/overlineAbove'] derive-glyphs 'cyrl/tetse.italic' null 'cyrl/tse.italic' : lambda [src gr] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS diff --git a/packages/font-glyphs/src/marks/above.ptl b/packages/font-glyphs/src/marks/above.ptl index 5a37bc5ec..eb5a81d36 100644 --- a/packages/font-glyphs/src/marks/above.ptl +++ b/packages/font-glyphs/src/marks/above.ptl @@ -491,26 +491,47 @@ glyph-block Mark-Above : begin flat (SB - Width) aboveMarkMid [widths.center : 2 * markHalfStroke] curl (RightSB - Width) aboveMarkMid - create-glyph 'sbRsbOverlineAbove/diversityI' : glyph-proc + create-glyph 'cyrl/ghe.SRB/overlineAbove' : glyph-proc local df : DivFrame para.diversityI set-width 0 - include : StdAnchors.impl 'above' 0 (1.5 * df.div) + set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack local leftEnd : markMiddle - (df.rightSB - df.leftSB) / 2 local rightEnd : markMiddle + (df.rightSB - df.leftSB) / 2 + set-base-anchor 'aboveBraceL' leftEnd aboveMarkMid + set-base-anchor 'aboveBraceR' rightEnd aboveMarkMid + include : dispiro flat leftEnd aboveMarkMid [widths.center : 2 * markHalfStroke] curl rightEnd aboveMarkMid - create-glyph 'sbRsbOverlineAbove/diversityM' : glyph-proc - local df : DivFrame para.diversityM + create-glyph 'cyrl/pe.SRB/overlineAbove' : glyph-proc + local df : DivFrame 1 set-width 0 - include : StdAnchors.impl 'above' 0 (1.5 * df.div) + set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack local leftEnd : markMiddle - (df.rightSB - df.leftSB) / 2 local rightEnd : markMiddle + (df.rightSB - df.leftSB) / 2 + set-base-anchor 'aboveBraceL' leftEnd aboveMarkMid + set-base-anchor 'aboveBraceR' rightEnd aboveMarkMid + + include : dispiro + flat leftEnd aboveMarkMid [widths.center : 2 * markHalfStroke] + curl rightEnd aboveMarkMid + + create-glyph 'cyrl/te.SRB/overlineAbove' : glyph-proc + local df : DivFrame para.diversityM 3 + set-width 0 + set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack + + local leftEnd : markMiddle - (df.rightSB - df.leftSB) / 2 + local rightEnd : markMiddle + (df.rightSB - df.leftSB) / 2 + + set-base-anchor 'aboveBraceL' leftEnd aboveMarkMid + set-base-anchor 'aboveBraceR' rightEnd aboveMarkMid + include : dispiro flat leftEnd aboveMarkMid [widths.center : 2 * markHalfStroke] curl rightEnd aboveMarkMid diff --git a/params/variants.toml b/params/variants.toml index 1ee1a9569..7dece6b7b 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -2999,7 +2999,7 @@ description = "`i` with shorter top serif and full bottom serif" selector.dotlessi = "serifedAsymmetric" selector."dotlessi/sansSerif" = "serifless" selector."dotlessi/compLigRight" = "serifed" -selector."cyrl/ghe.SRB" = "zshaped" +selector."cyrl/ghe.SRB" = "zshapedAsymmetric" [prime.i.variants.tailed] rank = 7