From 411b15ae65e8158d9e37dead332a69da25a0e66b Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Tue, 5 Sep 2023 19:37:35 -0400 Subject: [PATCH] Fix variants for nine phonetic characters (#1982) * Fix variants for seven phonetic characters * turned v * d palatal hook * math ss y --- changes/26.3.3.md | 6 ++++++ font-src/glyphs/auto-build/transformed.ptl | 6 +++--- font-src/glyphs/letter/latin/lower-d.ptl | 3 ++- font-src/glyphs/letter/latin/lower-n.ptl | 9 +++++---- font-src/glyphs/letter/latin/v.ptl | 4 ++-- params/variants.toml | 23 +++++++++++++++++++--- 6 files changed, 38 insertions(+), 13 deletions(-) diff --git a/changes/26.3.3.md b/changes/26.3.3.md index 086842aee..75bff17b9 100644 --- a/changes/26.3.3.md +++ b/changes/26.3.3.md @@ -1,2 +1,8 @@ * Remove serifs in `U+0320` (#1979). * Harmonize dot sizes in ellipsis shapes (#1980). +* Remove duplicate serif variants for `U+0266` and `U+2C74`. +* Allow cursive variants of turned `v` (`U+028C`) to match turned `w` (`U+028D`). +* Allow turned tail variants for Mathematical Sans-Serif `y` (`U+1D5D2`). +* Only allow toothed variants of `d` with palatal hook (`U+1D81`) to match `a` and `u` with hook attachments (`U+1D8F`, `U+1D99`). +* Fix variant selection for `U+1D4A`, `U+1DEA`, and `U+2094`. +* Remove bottom serifs in LATIN {CAPITAL|SMALL} LETTER INSULAR R (`U+A782`, `U+A783`). diff --git a/font-src/glyphs/auto-build/transformed.ptl b/font-src/glyphs/auto-build/transformed.ptl index 541fc2ff8..702c322f9 100644 --- a/font-src/glyphs/auto-build/transformed.ptl +++ b/font-src/glyphs/auto-build/transformed.ptl @@ -140,7 +140,7 @@ glyph-block Autobuild-Transformed : begin list 0x1D47 'b' list 0x1D48 'd' list 0x1D49 'e' - list 0x1D4A 'turne' + list 0x1D4A 'schwa' list 0x1D4B 'latn/epsilon' list 0x1D4C 'turnepsilon' list 0x1D4D 'g' @@ -400,7 +400,7 @@ glyph-block Autobuild-Transformed : begin list 0x2091 'e' list 0x2092 'o' list 0x2093 'x' - list 0x2094 'turne' + list 0x2094 'schwa' list 0x2095 'h' list 0x2096 'k' list 0x2097 'l' @@ -521,7 +521,7 @@ glyph-block Autobuild-Transformed : begin list 0x1DE4 's' list 0x1DE6 'z' list 0x1DE7 'scripta' - list 0x1DEA 'turne' + list 0x1DEA 'schwa' list 0x1DED 'oWithLightCentralizationStroke' list 0x1DF0 'uWithLightCentralizationStroke' list 0x1DF1 'w' diff --git a/font-src/glyphs/letter/latin/lower-d.ptl b/font-src/glyphs/letter/latin/lower-d.ptl index a90ce1c12..7ce957333 100644 --- a/font-src/glyphs/letter/latin/lower-d.ptl +++ b/font-src/glyphs/letter/latin/lower-d.ptl @@ -158,7 +158,8 @@ glyph-block Letter-Latin-Lower-D : begin select-variant 'cyrl/djeKomi' 0x503 - derive-composites 'dPalatalHook' 0x1D81 'd/hookBottomBase' : PalatalHook.r + link-reduced-variant 'd/descBase' 'd' + derive-composites 'dPalatalHook' 0x1D81 'd/descBase' : PalatalHook.r xLink -- RightSB x -- (RightSB + SideJut) y -- 0 diff --git a/font-src/glyphs/letter/latin/lower-n.ptl b/font-src/glyphs/letter/latin/lower-n.ptl index 378da7f84..89d443757 100644 --- a/font-src/glyphs/letter/latin/lower-n.ptl +++ b/font-src/glyphs/letter/latin/lower-n.ptl @@ -189,7 +189,6 @@ glyph-block Letter-Latin-Lower-N : begin include : RetroflexHook.rExt RightSB (-Descender) include : VBar.l SB Descender 0 if sLT : include : sLT CAP - if sLB : include : sLB Descender create-glyph "rInsular.\(suffix)" : glyph-proc include : MarkSet.p @@ -197,7 +196,6 @@ glyph-block Letter-Latin-Lower-N : begin include : RetroflexHook.rExt RightSB (-Descender) include : VBar.l SB Descender 0 if sLT : include : sLT XH - if sLB : include : sLB Descender select-variant 'n' 'n' link-reduced-variant 'n/sansSerif' 'n' MathSansSerif @@ -213,8 +211,11 @@ glyph-block Letter-Latin-Lower-N : begin select-variant 'nCurlyTail' 0x235 (follow -- 'eng') select-variant 'nCrossedTail' 0xAB3B (follow -- 'eng') select-variant 'engCrossedTail' 0xAB3C (follow -- 'eng') - select-variant 'RInsular' 0xA782 (follow -- 'eng') - select-variant 'rInsular' 0xA783 (follow -- 'eng') + + select-variant 'eng/lTailBase' (shapeFrom -- 'eng') + select-variant 'RInsular' 0xA782 (follow -- 'eng/lTailBase') + select-variant 'rInsular' 0xA783 (follow -- 'eng/lTailBase') + select-variant 'grek/eta' 0x3B7 link-reduced-variant 'grek/eta/sansSerif' 'grek/eta' MathSansSerif select-variant 'NExt' 0x220 (follow -- 'n') diff --git a/font-src/glyphs/letter/latin/v.ptl b/font-src/glyphs/letter/latin/v.ptl index aeb1369e6..3a2e98d26 100644 --- a/font-src/glyphs/letter/latin/v.ptl +++ b/font-src/glyphs/letter/latin/v.ptl @@ -313,7 +313,7 @@ glyph-block Letter-Latin-V : begin select-variant 'cyrl/ukUnblended' 0x1C88 (follow -- 'v/nonCursive') select-variant 'cyrl/yn' 0xA65F (follow -- 'v/nonCursive') - select-variant 'vLoop' 0x2C74 (follow -- 'v/nonCursive') + select-variant 'vLoop' 0x2C74 select-variant 'cyrl/Izhitsa' 0x474 (follow -- 'VHookRight') (shapeFrom -- 'VHookRight') select-variant 'cyrl/Uk' 0xA64A (follow -- 'VHookRight') @@ -321,7 +321,7 @@ glyph-block Letter-Latin-V : begin alias 'cyrl/izhitsa' 0x475 'vHookRight' turned 'turnV' 0x245 'V' Middle (CAP / 2) - turned 'turnv' 0x28C 'v/nonCursive' Middle (XH / 2) + turned 'turnv' 0x28C 'v' Middle (XH / 2) glyph-block-export BBVShape BBVInnerMaskShape BBVOuterMaskShape define [BBVShape l r kd ks top] : glyph-proc diff --git a/params/variants.toml b/params/variants.toml index 9dd800893..6456ab17f 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -1701,6 +1701,7 @@ descriptionAffix = "toothed shape" selectorAffix.d = "toothed" selectorAffix."d/sansSerif" = "toothed" selectorAffix."d/phoneticLeft" = "toothed" +selectorAffix."d/descBase" = "toothed" selectorAffix."d/hookBottomBase" = "toothed" selectorAffix.dCurlyTail = "toothed" selectorAffix.dHookTop = "toothed" @@ -1713,6 +1714,7 @@ descriptionAffix = "toothless (cornered) shape" selectorAffix.d = "toothlessCorner" selectorAffix."d/sansSerif" = "toothlessCorner" selectorAffix."d/phoneticLeft" = "toothed" +selectorAffix."d/descBase" = "toothed" selectorAffix."d/hookBottomBase" = "toothlessCornerHBB" selectorAffix.dCurlyTail = "toothed" selectorAffix.dHookTop = "toothlessCorner" @@ -1725,6 +1727,7 @@ descriptionAffix = "toothless (rounded) shape" selectorAffix.d = "toothlessRounded" selectorAffix."d/sansSerif" = "toothlessRounded" selectorAffix."d/phoneticLeft" = "toothed" +selectorAffix."d/descBase" = "toothed" selectorAffix."d/hookBottomBase" = "toothlessRoundedHBB" selectorAffix.dCurlyTail = "toothed" selectorAffix.dHookTop = "toothlessRounded" @@ -1737,6 +1740,7 @@ descriptionAffix = "tailed shape" selectorAffix.d = "tailed" selectorAffix."d/sansSerif" = "tailed" selectorAffix."d/phoneticLeft" = "toothed" +selectorAffix."d/descBase" = "toothed" selectorAffix."d/hookBottomBase" = "toothed" selectorAffix.dCurlyTail = "toothed" selectorAffix.dHookTop = "tailed" @@ -1750,6 +1754,7 @@ descriptionJoiner = "without" selectorAffix.d = "serifless" selectorAffix."d/sansSerif" = "serifless" selectorAffix."d/phoneticLeft" = "serifless" +selectorAffix."d/descBase" = "serifless" selectorAffix."d/hookBottomBase" = "serifless" selectorAffix.dCurlyTail = "serifless" selectorAffix.dHookTop = "serifless" @@ -1763,6 +1768,7 @@ descriptionAffix = "serif at top" selectorAffix.d = "topSerifed" selectorAffix."d/sansSerif" = "serifless" selectorAffix."d/phoneticLeft" = "topSerifed" +selectorAffix."d/descBase" = "topSerifed" selectorAffix."d/hookBottomBase" = "topSerifed" selectorAffix.dCurlyTail = "topSerifed" selectorAffix.dHookTop = "serifless" @@ -1777,6 +1783,7 @@ descriptionAffix = "serif at top" selectorAffix.d = "serifed" selectorAffix."d/sansSerif" = "serifless" selectorAffix."d/phoneticLeft" = "topSerifed" +selectorAffix."d/descBase" = "topSerifed" selectorAffix."d/hookBottomBase" = "topSerifed" selectorAffix.dCurlyTail = "topSerifed" selectorAffix.dHookTop = "bottomSerifed" @@ -1791,6 +1798,7 @@ descriptionAffix = "serif at top" selectorAffix.d = "topSerifed" selectorAffix."d/sansSerif" = "serifless" selectorAffix."d/phoneticLeft" = "topSerifed" +selectorAffix."d/descBase" = "topSerifed" selectorAffix."d/hookBottomBase" = "topSerifed" selectorAffix.dCurlyTail = "topSerifed" selectorAffix.dHookTop = "serifless" @@ -2152,7 +2160,7 @@ selectorAffix.h = "motionSerifed" selectorAffix."h/tailless" = "motionSerifed" selectorAffix."h/descBase" = "topLeftSerifed" selectorAffix."h/sansSerif" = "serifless" -selectorAffix.hHookTop = "motionSerifed" +selectorAffix.hHookTop = { if = [{ tail = "straight" }], then = "motionSerifed", else = "serifless" } selectorAffix.hengHookTop = "serifless" selectorAffix.heng = "topLeftSerifed" selectorAffix."cyrl/shha" = "motionSerifed" @@ -2849,6 +2857,7 @@ selectorAffix."n/descBase" = "" selectorAffix."n/lTailBase" = "" selectorAffix.eng = "" selectorAffix."eng/phoneticRight" = "" +selectorAffix."eng/lTailBase" = "" selectorAffix."grek/eta" = "" selectorAffix."grek/eta/sansSerif" = "" selectorAffix."cyrl/pe.italic" = "" @@ -2863,6 +2872,7 @@ selectorAffix."n/descBase" = "earlessCorner" selectorAffix."n/lTailBase" = "earlessCorner" selectorAffix.eng = "earlessCorner" selectorAffix."eng/phoneticRight" = "earlessCornerHTB" +selectorAffix."eng/lTailBase" = "earlessCorner" selectorAffix."grek/eta" = "earlessCorner" selectorAffix."grek/eta/sansSerif" = "earlessCorner" selectorAffix."cyrl/pe.italic" = "" @@ -2877,6 +2887,7 @@ selectorAffix."n/descBase" = "earlessRounded" selectorAffix."n/lTailBase" = "earlessRounded" selectorAffix.eng = "earlessRounded" selectorAffix."eng/phoneticRight" = "earlessRoundedHTB" +selectorAffix."eng/lTailBase" = "earlessRounded" selectorAffix."grek/eta" = "earlessRounded" selectorAffix."grek/eta/sansSerif" = "earlessRounded" selectorAffix."cyrl/pe.italic" = "" @@ -2894,6 +2905,7 @@ selectorAffix."n/descBase" = "straight" selectorAffix."n/lTailBase" = "straight" selectorAffix.eng = "straight" selectorAffix."eng/phoneticRight" = "straight" +selectorAffix."eng/lTailBase" = "straight" selectorAffix."grek/eta" = "straight" selectorAffix."grek/eta/sansSerif" = "straight" selectorAffix."cyrl/pe.italic" = "straight" @@ -2908,6 +2920,7 @@ selectorAffix."n/descBase" = "straight" selectorAffix."n/lTailBase" = "tailed" selectorAffix.eng = "straight" selectorAffix."eng/phoneticRight" = "straight" +selectorAffix."eng/lTailBase" = "straight" selectorAffix."grek/eta" = "straight" selectorAffix."grek/eta/sansSerif" = "straight" selectorAffix."cyrl/pe.italic" = "tailed" @@ -2923,6 +2936,7 @@ selectorAffix."n/descBase" = "serifless" selectorAffix."n/lTailBase" = "serifless" selectorAffix.eng = "serifless" selectorAffix."eng/phoneticRight" = "serifless" +selectorAffix."eng/lTailBase" = "serifless" selectorAffix."grek/eta" = "serifless" selectorAffix."grek/eta/sansSerif" = "serifless" selectorAffix."cyrl/pe.italic" = "serifless" @@ -2938,6 +2952,7 @@ selectorAffix."n/descBase" = "topLeftSerifed" selectorAffix."n/lTailBase" = "topLeftSerifed" selectorAffix.eng = "topLeftSerifed" selectorAffix."eng/phoneticRight" = "topLeftSerifed" +selectorAffix."eng/lTailBase" = "topLeftSerifed" selectorAffix."grek/eta" = "topLeftSerifed" selectorAffix."grek/eta/sansSerif" = "serifless" selectorAffix."cyrl/pe.italic" = "topLeftSerifed" @@ -2953,6 +2968,7 @@ selectorAffix."n/descBase" = { if = [{ body = "normal" }], then = "topLeftSerife selectorAffix."n/lTailBase" = { if = [{ terminal = "straight" }], then = "motionSerifed", else = { if = [{ body = "normal" }], then = "topLeftSerifed", else = "serifless" } } selectorAffix.eng = { if = [{ body = "normal" }], then = "topLeftSerifed", else = "serifless" } selectorAffix."eng/phoneticRight" = { if = [{ body = "normal" }], then = "topLeftSerifed", else = "serifless" } +selectorAffix."eng/lTailBase" = { if = [{ body = "normal" }], then = "topLeftSerifed", else = "serifless" } selectorAffix."grek/eta" = { if = [{ body = "normal" }], then = "topLeftSerifed", else = "serifless" } selectorAffix."grek/eta/sansSerif" = "serifless" selectorAffix."cyrl/pe.italic" = "motionSerifed" @@ -2967,6 +2983,7 @@ selectorAffix."n/descBase" = "serifed" selectorAffix."n/lTailBase" = { if = [{ terminal = "straight" }], then = "serifed", else = { if = [{ body = "normal" }], then = "topLeftSerifed", else = "serifless" } } selectorAffix.eng = "serifed" selectorAffix."eng/phoneticRight" = "serifed" +selectorAffix."eng/lTailBase" = { if = [{ body = "normal" }], then = "topLeftSerifed", else = "serifless" } selectorAffix."grek/eta" = { if = [{ body = "normal" }], then = "topLeftSerifed", else = "serifless" } selectorAffix."grek/eta/sansSerif" = "serifless" selectorAffix."cyrl/pe.italic" = "serifed" @@ -3644,7 +3661,7 @@ selectorAffix.v = "cursive" selectorAffix."v/sansSerif" = "cursive" selectorAffix."v/nonCursive" = "straight" selectorAffix.vHookTop = "" -selectorAffix.vLoop = "" +selectorAffix.vLoop = "straight" [prime.v.variants-buildup.stages.serifs.serifless] rank = 1 @@ -3884,7 +3901,7 @@ disableIf = [{ body = "cursive" }] descriptionAffix = "a tail turns leftward" selectorAffix.y = "turn" selectorAffix.yLoop = "" -selectorAffix."y/sansSerif" = "" +selectorAffix."y/sansSerif" = "turn" selectorAffix."y/nonCursive" = "turn" selectorAffix.yHookTop = "turn"