diff --git a/changes/26.3.0.md b/changes/26.3.0.md index d2462eb7a..ec7947ad0 100644 --- a/changes/26.3.0.md +++ b/changes/26.3.0.md @@ -6,5 +6,6 @@ - COMBINING LONG DOUBLE SOLIDUS OVERLAY (`U+20EB`). * Generate TTFAutohint control files for better glyph display for variant glyphs (#1963). * Make the shape of motion-serifed and serifed variants of toothed/tailed `u` no longer identical under Italic. Now "serifed" `u` will always preserve all serifs (#1967). +* Make the fully-serifed form of cursive lower `y` match the serifs of lower `u`. * Make MICRO SIGN (`ยต`) tailed under italics by default, to match `u`. * Improve glyphs for COLON SIGN (`U+20A1`), GUARANI SIGN (`U+20B2`), and CEDI SIGN (`U+20B5`). diff --git a/font-src/glyphs/letter/latin/lower-y.ptl b/font-src/glyphs/letter/latin/lower-y.ptl index b9a9dc588..8e7869343 100644 --- a/font-src/glyphs/letter/latin/lower-y.ptl +++ b/font-src/glyphs/letter/latin/lower-y.ptl @@ -313,10 +313,10 @@ glyph-block Letter-Latin-Lower-Y : begin export : define [Serifs top slabType] : begin local { doSlabTop doSlabBottom doSlabMotion } slabKind - local sf : SerifFrame.fromDf [DivFrame 1] top 0 - return : if [not doSlabTop] [no-shape] : composite-proc - if doSlabMotion sf.lt.outer sf.lt.full - if doSlabMotion [no-shape] sf.rt.full + return : if [not doSlabTop] [no-shape] : glyph-proc + local sf : SerifFrame.fromDf [DivFrame 1] top 0 + include sf.lt.outer + if [not doSlabMotion] : include sf.rt.inner define CursiveConfig : SuffixCfg.weave object # body @@ -336,7 +336,7 @@ glyph-block Letter-Latin-Lower-Y : begin include : hookShape XH Descender include : Cursive.Serifs XH slabKind - create-glyph "yHookTop.\(suffix)" : glyph-proc + if (slabKind !== SLAB-ALL) : create-glyph "yHookTop.\(suffix)" : glyph-proc include : MarkSet.p include : Cursive.Arc XH 0 include : hookShape (XH - TailY - HalfStroke) Descender @@ -370,7 +370,7 @@ glyph-block Letter-Latin-Lower-Y : begin select-variant 'yDotBelowDot1' (follow -- 'diacriticDot') CreateAccentedComposition 'yDotBelow' 0x1EF5 'y' 'yDotBelowDot1' - select-variant 'yHookTop' 0x1B4 (follow -- 'y') + select-variant 'yHookTop' 0x1B4 select-variant 'cyrl/U' 0x423 (shapeFrom -- 'yCap') select-variant 'yLoop' 0x1EFF (shapeFrom -- 'y') diff --git a/params/variants.toml b/params/variants.toml index d2e200e5b..4a00cbdbf 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -3834,6 +3834,7 @@ selectorAffix.y = "straight" selectorAffix.yLoop = "straightLoop" selectorAffix."y/sansSerif" = "straight" selectorAffix."y/nonCursive" = "straight" +selectorAffix.yHookTop = "straight" [prime.y.variants-buildup.stages.body.curly] rank = 2 @@ -3842,6 +3843,7 @@ selectorAffix.y = "curly" selectorAffix.yLoop = "curlyLoop" selectorAffix."y/sansSerif" = "curly" selectorAffix."y/nonCursive" = "curly" +selectorAffix.yHookTop = "curly" [prime.y.variants-buildup.stages.body.cursive] rank = 3 @@ -3850,6 +3852,7 @@ selectorAffix.y = "cursive" selectorAffix.yLoop = "straightLoop" selectorAffix."y/sansSerif" = "cursive" selectorAffix."y/nonCursive" = "straight" +selectorAffix.yHookTop = "cursive" [prime.y.variants-buildup.stages.hook."*"] next = "serifs" @@ -3861,6 +3864,7 @@ selectorAffix.y = "" selectorAffix.yLoop = "" selectorAffix."y/sansSerif" = "" selectorAffix."y/nonCursive" = "" +selectorAffix.yHookTop = "" [prime.y.variants-buildup.stages.hook.turn] rank = 2 @@ -3870,6 +3874,7 @@ selectorAffix.y = "turn" selectorAffix.yLoop = "" selectorAffix."y/sansSerif" = "" selectorAffix."y/nonCursive" = "turn" +selectorAffix.yHookTop = "turn" [prime.y.variants-buildup.stages.hook.flat-hook] rank = 3 @@ -3879,6 +3884,7 @@ selectorAffix.y = "flatHook" selectorAffix.yLoop = "" selectorAffix."y/sansSerif" = "flatHook" selectorAffix."y/nonCursive" = "" +selectorAffix.yHookTop = "flatHook" [prime.y.variants-buildup.stages.serifs.serifless] rank = 1 @@ -3888,6 +3894,7 @@ selectorAffix.y = "serifless" selectorAffix.yLoop = "serifless" selectorAffix."y/sansSerif" = "serifless" selectorAffix."y/nonCursive" = "serifless" +selectorAffix.yHookTop = "serifless" [prime.y.variants-buildup.stages.serifs.motion-serifed] rank = 2 @@ -3896,6 +3903,7 @@ selectorAffix.y = "motionSerifed" selectorAffix.yLoop = "motionSerifed" selectorAffix."y/sansSerif" = "serifless" selectorAffix."y/nonCursive" = "motionSerifed" +selectorAffix.yHookTop = "motionSerifed" [prime.y.variants-buildup.stages.serifs.serifed] rank = 3 @@ -3904,6 +3912,7 @@ selectorAffix.y = "serifed" selectorAffix.yLoop = "serifed" selectorAffix."y/sansSerif" = "serifless" selectorAffix."y/nonCursive" = "serifed" +selectorAffix.yHookTop = { if = [{ body = "cursive" }], then = "motionSerifed", else = "serifed" } @@ -7817,6 +7826,7 @@ k = "symmetric-connected-top-left-serifed" l = "serifed-flat-tailed" x = "straight-motion-serifed" y = "cursive-flat-hook-motion-serifed" +cyrl-capital-u = "cursive-flat-hook-motion-serifed" micro-sign = "toothless-rounded-motion-serifed"