From f517e4fb8d1c64db4f7b4a1d6664bec0d3ab1f83 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Mon, 27 May 2024 17:58:48 -0400 Subject: [PATCH] Finish support for Modifier Tone Letters block. (#2347) * Add the rest of the Chinantec tone letters (`U+A717`..`U+A719`). * Add Dotted Obelos (`U+2E13`). * Make ccmp feature apply to negated maths. --- changes/30.1.2.md | 3 ++ .../src/auto-build/transformed.ptl | 4 ++ packages/font-glyphs/src/marks/above.ptl | 7 --- .../src/meta/unicode-knowledge.ptl | 47 ++++++++++++++++++- .../font-glyphs/src/symbol/math/arith.ptl | 24 +++++++++- .../font-glyphs/src/symbol/math/logicals.ptl | 1 + 6 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 changes/30.1.2.md diff --git a/changes/30.1.2.md b/changes/30.1.2.md new file mode 100644 index 000000000..a88ca854f --- /dev/null +++ b/changes/30.1.2.md @@ -0,0 +1,3 @@ +* Add characters: + - DOTTED OBELOS (`U+2E13`). + - MODIFIER LETTER DOT VERTICAL BAR (`U+A717`) ... MODIFIER LETTER DOT HORIZONTAL BAR (`U+A719`). diff --git a/packages/font-glyphs/src/auto-build/transformed.ptl b/packages/font-glyphs/src/auto-build/transformed.ptl index e78390a74..96bd68846 100644 --- a/packages/font-glyphs/src/auto-build/transformed.ptl +++ b/packages/font-glyphs/src/auto-build/transformed.ptl @@ -236,6 +236,10 @@ glyph-block Autobuild-Transformed : begin list 0xA703 'substBarNoRise' list 0xA704 'supst' list 0xA705 'supstBarNoRise' + list 0xA717 'dotvbar' + list 0xA718 'dotslash' + list 0xA719 'dotminus' + list 0xA71A 'turnedRevNegate' list 0xA71B 'arrowUp.NWID' list 0xA71C 'arrowDown.NWID' list 0xA71D 'alveolarclick' diff --git a/packages/font-glyphs/src/marks/above.ptl b/packages/font-glyphs/src/marks/above.ptl index 84fd3409c..793df2550 100644 --- a/packages/font-glyphs/src/marks/above.ptl +++ b/packages/font-glyphs/src/marks/above.ptl @@ -705,13 +705,6 @@ glyph-block Mark-Above : begin include : VBar.m (RightSB - Width) aboveMarkBot aboveMarkTop (markFine * 2) include : HBar.t (SB - Width) (RightSB - Width) aboveMarkTop (markFine * 2) - create-glyph 'lowerRightAngleAbove' : glyph-proc - set-width 0 - include : StdAnchors.mediumWide - - include : VBar.r (markMiddle + markExtend) aboveMarkBot aboveMarkTop (markFine * 2) - include : HBar.b (markMiddle - markExtend) (markMiddle + markExtend) aboveMarkBot (markFine * 2) - create-glyph 'yerikAbove' 0x33E : glyph-proc set-width 0 include : StdAnchors.narrow diff --git a/packages/font-glyphs/src/meta/unicode-knowledge.ptl b/packages/font-glyphs/src/meta/unicode-knowledge.ptl index cb2a73b77..9d1e92816 100644 --- a/packages/font-glyphs/src/meta/unicode-knowledge.ptl +++ b/packages/font-glyphs/src/meta/unicode-knowledge.ptl @@ -102,7 +102,6 @@ export : define decompOverrides : object 0x1FFD { 'markBaseSpace' 'acuteAbove' } 0x1FFE { 'markBaseSpace' 'revCommaAbove' } 0x2E2F { 'markBaseSpace' 'yerikAbove' } - 0xA71A { 'markBaseSpace' 'lowerRightAngleAbove' } 0xA788 { 'markBaseSpace' 'circumflexBelow' } 0xA78A { 'markBaseSpace' 'equalOver' } 0xAB6A { 'markBaseSpace' 'leftTackOver' } @@ -218,8 +217,49 @@ export : define decompOverrides : object 0x1DF1A { 'iRetroflexHook' 'barOver' } -# List of non-canonical combinations but applicable for ccmp feature +# List of canonical and non-canonical combinations but applicable for ccmp feature export : define ccmpCombinations : list + # Long solidus overlays + list {0x003C 0x0338} 0x226E # < + list {0x003D 0x0338} 0x2260 # = + list {0x003E 0x0338} 0x226F # > + list {0x2203 0x0338} 0x2204 # ∃ + list {0x2208 0x0338} 0x2209 # ∈ + list {0x220B 0x0338} 0x220C # ∋ + list {0x2223 0x0338} 0x2224 # ∣ + list {0x2225 0x0338} 0x2226 # ∥ + list {0x223C 0x0338} 0x2241 # ∼ + list {0x2243 0x0338} 0x2244 # ≃ + list {0x2245 0x0338} 0x2247 # ≅ + list {0x2248 0x0338} 0x2249 # ≈ + list {0x224D 0x0338} 0x226D # ≍ + list {0x2261 0x0338} 0x2262 # ≡ + list {0x2264 0x0338} 0x2270 # ≤ + list {0x2265 0x0338} 0x2271 # ≥ + list {0x2272 0x0338} 0x2274 # ≲ + list {0x2273 0x0338} 0x2275 # ≳ + list {0x2276 0x0338} 0x2278 # ≶ + list {0x2277 0x0338} 0x2279 # ≷ + list {0x227A 0x0338} 0x2280 # ≺ + list {0x227B 0x0338} 0x2281 # ≻ + list {0x227C 0x0338} 0x22E0 # ≼ + list {0x227D 0x0338} 0x22E1 # ≽ + list {0x2282 0x0338} 0x2284 # ⊂ + list {0x2283 0x0338} 0x2285 # ⊃ + list {0x2286 0x0338} 0x2288 # ⊆ + list {0x2287 0x0338} 0x2289 # ⊇ + list {0x2291 0x0338} 0x22E2 # ⊑ + list {0x2292 0x0338} 0x22E3 # ⊒ + list {0x22A2 0x0338} 0x22AC # ⊢ + list {0x22A8 0x0338} 0x22AD # ⊨ + list {0x22A9 0x0338} 0x22AE # ⊩ + list {0x22AB 0x0338} 0x22AF # ⊫ + list {0x22B2 0x0338} 0x22EA # ⊲ + list {0x22B3 0x0338} 0x22EB # ⊳ + list {0x22B4 0x0338} 0x22EC # ⊴ + list {0x22B5 0x0338} 0x22ED # ⊵ + list {0x2ADD 0x0338} 0x2ADC # ⫝ + ########## Data from L2/24-021 # Tilde overlays @@ -340,3 +380,6 @@ export : define ccmpCombinations : list # Ring overlays list {0x006C 0x20D8} 0xAB39 # l + + # Reverse solidus overlays + list {0x2223 0x20E5} 0x2AEE # ∣ diff --git a/packages/font-glyphs/src/symbol/math/arith.ptl b/packages/font-glyphs/src/symbol/math/arith.ptl index d953744d1..229e96d9c 100644 --- a/packages/font-glyphs/src/symbol/math/arith.ptl +++ b/packages/font-glyphs/src/symbol/math/arith.ptl @@ -237,9 +237,21 @@ glyph-block Symbol-Math-Arith : begin refer-glyph 'plus' DrawAt Middle (SymbolMid * 2 - OperatorStroke / 2) (dr + gap - overshoot) - create-glyph "dotminus.\(suffix)" : composite-proc [refer-glyph 'minus'] + create-glyph "dotminus.\(suffix)" : composite-proc + refer-glyph 'minus' DrawAt Middle PlusTop (dr - overshoot) + create-glyph "dotslash.\(suffix)" : composite-proc + dispiro + widths.center OperatorStroke + flat [mix Middle SB Math.SQRT1_2] [mix SymbolMid PlusBot Math.SQRT1_2] + curl [mix Middle RightSB Math.SQRT1_2] [mix SymbolMid PlusTop Math.SQRT1_2] + DrawAt [mix Middle SB Math.SQRT1_2] [mix SymbolMid PlusTop Math.SQRT1_2] (dr - overshoot) + + create-glyph "dotvbar.\(suffix)" : composite-proc + VBar.m [mix Middle RightSB 0.5] PlusTop PlusBot OperatorStroke + DrawAt [mix Middle SB 0.5] SymbolMid (dr - overshoot) + create-glyph "dottimes.\(suffix)" : glyph-proc include : refer-glyph "multiply" define sw : AdviceStroke 4 @@ -270,6 +282,12 @@ glyph-block Symbol-Math-Arith : begin include : DrawAt Middle (SymbolMid + gap) (dr - overshoot) include : DrawAt Middle (SymbolMid - gap) (dr - overshoot) + create-glyph "rotatedDivide.\(suffix)" : glyph-proc + include : refer-glyph "multiplyStroke1" + define gap : (RightSB - SB) / 2 + include : DrawAt (Middle - Math.SQRT1_2 * gap) (SymbolMid + Math.SQRT1_2 * gap) (dr - overshoot) + include : DrawAt (Middle + Math.SQRT1_2 * gap) (SymbolMid - Math.SQRT1_2 * gap) (dr - overshoot) + create-glyph "innerDivide.\(suffix)" : glyph-proc include : refer-glyph "innerMinus" define sw : MathEnclosureSw / 1.5 @@ -309,11 +327,15 @@ glyph-block Symbol-Math-Arith : begin select-variant 'dotminus' 0x2238 (follow -- 'punctuationDot') turned 'minusdot' 0x2A2A 'dotminus' Middle SymbolMid + select-variant 'dotslash' null (follow -- 'punctuationDot') + select-variant 'dotvbar' null (follow -- 'punctuationDot') + select-variant 'dottimes' 0x2A30 (follow -- 'punctuationDot') select-variant 'geometricProportion' 0x223A (follow -- 'punctuationDot') select-variant 'minusColon' 0x2239 (follow -- 'punctuationDot') select-variant 'divide' 0xF7 (follow -- 'punctuationDot') + select-variant 'rotatedDivide' 0x2E13 (follow -- 'punctuationDot') select-variant 'innerDivide' null (follow -- 'punctuationDot') select-variant 'rotatedInnerDivide' null (follow -- 'punctuationDot') select-variant 'divisionTimes' 0x22C7 (follow -- 'punctuationDot') diff --git a/packages/font-glyphs/src/symbol/math/logicals.ptl b/packages/font-glyphs/src/symbol/math/logicals.ptl index c9485d380..0c5c3ca9d 100644 --- a/packages/font-glyphs/src/symbol/math/logicals.ptl +++ b/packages/font-glyphs/src/symbol/math/logicals.ptl @@ -20,6 +20,7 @@ glyph-block Symbol-Math-Logicals : begin include : VBar.l SB (SymbolMid - (RightSB - SB) * 0.55) SymbolMid OperatorStroke turned 'turnedNegate' 0x2319 'negate' Middle SymbolMid + turned 'turnedRevNegate' null 'revNegate' Middle SymbolMid local top TackTop local bot TackBot