From a08e6c85a5844bade2a170fa4982077968550ab3 Mon Sep 17 00:00:00 2001 From: be5invis Date: Sat, 10 Jul 2021 13:04:32 -0700 Subject: [PATCH] Add rounded lowercase Xi (#856). --- changes/7.3.0.md | 3 +- font-src/glyphs/letter/greek/lower-delta.ptl | 2 +- .../glyphs/letter/greek/lower-epsilon.ptl | 10 ++-- font-src/glyphs/letter/greek/lower-xi.ptl | 59 +++++++++++++++---- params/variants.toml | 23 +++++++- 5 files changed, 76 insertions(+), 21 deletions(-) diff --git a/changes/7.3.0.md b/changes/7.3.0.md index 17467edc0..a37987f6a 100644 --- a/changes/7.3.0.md +++ b/changes/7.3.0.md @@ -1 +1,2 @@ - * Add flat-topped lowercase Delta (#856). \ No newline at end of file + * Add flat-topped lowercase Delta (#856). + * Add rounded lowercase Xi (#856). \ No newline at end of file diff --git a/font-src/glyphs/letter/greek/lower-delta.ptl b/font-src/glyphs/letter/greek/lower-delta.ptl index ece7b96c1..377ac80ed 100644 --- a/font-src/glyphs/letter/greek/lower-delta.ptl +++ b/font-src/glyphs/letter/greek/lower-delta.ptl @@ -45,7 +45,7 @@ glyph-block Letter-Greek-Lower-Delta : begin local yMid : CAP * 0.6 local yMid2 : mix yMid [YSmoothMidR yMid 0 SmallSmoothA SmallSmoothB] 0.95 local yMid3 : mix yMid [YSmoothMidR yMid 0 SmallSmoothA SmallSmoothB] 0.5 - local yMockBarStart : yMid3 + 2 * Stroke + local yMockBarStart : yMid3 + 2.25 * Stroke local pStraightBarStart : 0.75 - (Stroke / CAP) include : HBarTop SB RightSB CAP diff --git a/font-src/glyphs/letter/greek/lower-epsilon.ptl b/font-src/glyphs/letter/greek/lower-epsilon.ptl index 0cf493a37..b42c9c156 100644 --- a/font-src/glyphs/letter/greek/lower-epsilon.ptl +++ b/font-src/glyphs/letter/greek/lower-epsilon.ptl @@ -42,7 +42,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin [Just SLAB-CLASSICAL] : SerifedArcStart_RtlLhs RightSB Middle top stroke hook [Just SLAB-INWARD] : InwardSlabArcStart_RtlLhs RightSB Middle top stroke hook __ : list [g4 (RightSB + O) (top - hook) [widths.lhs]] [hookstart (top - O)] - g4 (SB + (OX - O)) (top - sma) + g4 SB (top - sma) arcvh flat Middle (midy - (fine - stroke / 2)) [widths.heading fine 0 Rightward] curl midx (midy - (fine - stroke / 2)) [heading Rightward] @@ -53,7 +53,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin flat midx (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward] curl Middle (midy + (fine - stroke / 2)) [heading Leftward] archv - g4 (SB + (OX - O) + O * 2) (bot + smb) [widths.lhs] + g4 (SB + OX * 2) (bot + smb) [widths.lhs] match slabType [Just SLAB-CLASSICAL] : SerifedArcEnd_LtrLhs RightSB Middle bot stroke hook [Just SLAB-INWARD] : InwardSlabArcEnd_LtrLhs RightSB Middle bot stroke hook @@ -91,7 +91,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin [Just SLAB-CLASSICAL] : SerifedArcStart_LtrRhs SB Middle top stroke hook [Just SLAB-INWARD] : InwardSlabArcStart_LtrRhs SB Middle top stroke hook __ : list [g4 (SB - O) (top - hook) : widths.rhs] [hookstart (top - O)] - g4 (RightSB - (OX - O)) (top - smb) + g4 RightSB (top - smb) arcvh flat Middle (midy - (fine - stroke / 2)) [widths.heading 0 fine Leftward] curl midx (midy - (fine - stroke / 2)) [heading Leftward] @@ -102,7 +102,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin flat midx (midy + (fine - stroke / 2)) [widths.rhs.heading fine Rightward] curl Middle (midy + (fine - stroke / 2)) [heading Rightward] archv - g4 (RightSB - (OX - O) - O * 2) (bot + sma) [widths.rhs stroke] + g4 (RightSB - OX * 2) (bot + sma) [widths.rhs stroke] match slabType [Just SLAB-CLASSICAL] : SerifedArcEnd_RtlRhs SB Middle bot stroke hook [Just SLAB-INWARD] : InwardSlabArcEnd_RtlRhs SB Middle bot stroke hook @@ -118,7 +118,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin arcvh g4 (Middle + CorrectionOMidS) 0 [widths.lhs] archv - g4 (RightSB - (OX - O) - O * 2) (bot + sma) + g4 (RightSB - OX * 2) (bot + sma) arcvh flat Middle (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward] curl midx (midy + (fine - stroke / 2)) [heading Leftward] diff --git a/font-src/glyphs/letter/greek/lower-xi.ptl b/font-src/glyphs/letter/greek/lower-xi.ptl index 8f83820ee..4aabd88f8 100644 --- a/font-src/glyphs/letter/greek/lower-xi.ptl +++ b/font-src/glyphs/letter/greek/lower-xi.ptl @@ -9,32 +9,67 @@ glyph-block Letter-Greek-Lower-Xi : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - create-glyph 'grek/xi' 0x3BE : glyph-proc - include : MarkSet.if - include : HBarTop SB RightSB CAP + define SHAPE-ROUNDED 0 + define SHAPE-FLAT-TOP 1 + define [LowerXiShape shape] : glyph-proc local smaTop : SmoothAOf (Smooth * 0.45) Width local smbTop : SmoothBOf (Smooth * 0.45) Width local smaBot : SmoothAOf (Smooth * 0.55) Width local smbBot : SmoothBOf (Smooth * 0.55) Width local fine : Stroke * CThin - local xbar : mix SB RightSB 0.85 - local ybar : mix 0 CAP 0.55 + local xBarStart : mix SB RightSB : match shape + [Just SHAPE-ROUNDED] 0.625 + [Just SHAPE-FLAT-TOP] 0.75 + local xBarEnd : mix SB RightSB : match shape + [Just SHAPE-ROUNDED] 0.75 + [Just SHAPE-FLAT-TOP] 0.85 + local yBar : mix 0 CAP 0.55 + + local xUpperArcLeft : match shape + [Just SHAPE-ROUNDED] : SB + 0 + [Just SHAPE-FLAT-TOP] : [mix SB RightSB 0.075] + OX + local xLowerArcLeft : match shape + [Just SHAPE-ROUNDED] : SB + OX * 2 + [Just SHAPE-FLAT-TOP] : [mix SB RightSB 0.025] + OX * 2 + + include : match shape + [Just SHAPE-FLAT-TOP] : HBarTop SB RightSB CAP + __ : glyph-proc + include : dispiro - g4.left.start xbar (CAP - Stroke + fine) [widths.lhs fine] - archv 16 - g4 (SB - O * 2) [YSmoothMidL CAP (ybar - Stroke) smaTop smbTop] [widths.lhs] + match shape + [Just SHAPE-ROUNDED] : list + g4 (RightSB + O) (CAP - Hook) [widths.lhs] + hookstart (CAP - O) + [Just SHAPE-FLAT-TOP] : list + flat xBarEnd (CAP - Stroke + fine) [widths.lhs fine] + curl xBarStart (CAP - Stroke + fine) [widths.lhs fine] + archv 16 + g4 xUpperArcLeft [YSmoothMidL CAP (yBar - Stroke) smaTop smbTop] [widths.lhs] arcvh 16 - g4.right.end xbar (ybar - fine) [widths.lhs.heading fine Rightward] + flat xBarStart (yBar - fine) [widths.lhs.heading fine Rightward] + curl xBarEnd (yBar - fine) [widths.lhs.heading fine Rightward] include : dispiro - g4.left.start xbar (ybar - Stroke + fine) [widths.lhs.heading fine Leftward] + flat xBarEnd (yBar - Stroke + fine) [widths.lhs.heading fine Leftward] + curl xBarStart (yBar - Stroke + fine) [widths.lhs.heading fine Leftward] archv 16 - g4 SB (0.9 * [YSmoothMidL (ybar - Stroke) Stroke smaBot smbBot]) [widths.lhs] + g4 xLowerArcLeft (0.9 * [YSmoothMidL (yBar - Stroke) Stroke smaBot smbBot]) [widths.lhs] arcvh 16 - g4 [mix (SB + HVContrast * Stroke) (RightSB - HVContrast * Stroke) 0.6] 0 [heading Rightward] + g4 [mix (xLowerArcLeft + HVContrast * Stroke) (RightSB - HVContrast * Stroke) 0.6] 0 [heading Rightward] archv 16 g4.down.mid (RightSB - Stroke * HVContrast) [mix Descender Stroke 0.5] [heading Downward] arcvh 16 flat (RightSB - (Stroke - [mix Descender Stroke 0.5]) * 1.1) (Descender + Stroke) curl [Math.min (RightSB - (Stroke - [mix Descender Stroke 0.5]) * 1.1 - 1) [mix SB RightSB 0.5]] (Descender + Stroke) + + create-glyph 'grek/xi.flatTop' : glyph-proc + include : MarkSet.if + include : LowerXiShape SHAPE-FLAT-TOP + + create-glyph 'grek/xi.rounded' : glyph-proc + include : MarkSet.if + include : LowerXiShape SHAPE-ROUNDED + + select-variant 'grek/xi' 0x3BE \ No newline at end of file diff --git a/params/variants.toml b/params/variants.toml index 9f9995148..8b566c42d 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -4575,12 +4575,12 @@ tag = "VXAA" [prime.lower-delta.variants.rounded] rank = 1 -description = "Greek lower Delta (`δ`) with a cross-like shape at right" +description = "Greek lower Delta (`δ`) with rounded top" selector."grek/delta" = "rounded" [prime.lower-delta.variants.flat-top] rank = 2 -description = "Greek lower Delta (`δ`) with a straight right bar and tail" +description = "Greek lower Delta (`δ`) with flat top" selector."grek/delta" = "flatTop" @@ -4686,6 +4686,23 @@ selector."grek/lambda" = "curlyTurn" +[prime.lower-xi] +sampler = "ξ" +samplerExplain = "Greek lower Xi" +tag = "VXAB" + +[prime.lower-xi.variants.rounded] +rank = 1 +description = "Greek lower Xi (`ξ`) with rounded top" +selector."grek/xi" = "rounded" + +[prime.lower-xi.variants.flat-top] +rank = 2 +description = "Greek lower Xi (`ξ`) with flat top" +selector."grek/xi" = "flatTop" + + + [prime.cyrl-capital-ze] sampler = "З" samplerExplain = "Cyrillic Capital Ze" @@ -6240,6 +6257,7 @@ turn-v = "straight" latn-phi = "serifless" lower-alpha = "crossing" lower-delta = "rounded" +lower-xi = "flat-top" capital-gamma = "serifless" lower-iota = "serifed-flat-tailed" lower-lambda = "straight" @@ -7102,6 +7120,7 @@ y = "straight" long-s = "flat-hook" lower-alpha = "tailed-barred" lower-delta = "flat-top" +lower-xi = "rounded" cyrl-capital-ka = "symmetric-connected-serifless" cyrl-ka = "symmetric-connected-serifless" cyrl-capital-u = "straight"