From 392e31e7a19c2abb93e442e1df2ac5094fec9bb5 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Thu, 25 May 2023 20:13:55 -0400 Subject: [PATCH] Add Characters (#1747) --- changes/24.0.0.md | 17 +++ font-src/glyphs/symbol/geometric/plain.ptl | 1 + font-src/glyphs/symbol/math/negation.ptl | 3 - font-src/glyphs/symbol/math/not-glyph-fn.ptl | 2 +- font-src/glyphs/symbol/math/other.ptl | 47 +++++++- font-src/glyphs/symbol/math/relation.ptl | 43 ++++++- font-src/glyphs/symbol/math/v-and-cup.ptl | 107 ++++++++++++++---- font-src/glyphs/symbol/punctuation/bar.ptl | 19 +++- .../glyphs/symbol/punctuation/brackets.ptl | 7 ++ .../glyphs/symbol/punctuation/ellipsis.ptl | 12 ++ .../punctuation/slashes-and-number-sign.ptl | 4 +- 11 files changed, 229 insertions(+), 33 deletions(-) diff --git a/changes/24.0.0.md b/changes/24.0.0.md index b5fb6a02e..9100bafcf 100644 --- a/changes/24.0.0.md +++ b/changes/24.0.0.md @@ -3,10 +3,17 @@ * \[**BREAKING**\] Rectify the variant atlas. As a result, if a character's variant list has motion-serifed, then it will have serifless and serifed variants: the serifed-ness will no longer be controlled by SLAB variable. The characters influenced are `M`, `N`, `P`, `R`, `U`, `V`, `W`, `b`, `h`, `m`, `n`, `p`, `q`, `u`, `v`, `w`, `y`. * \[**BREAKING**\] Renamed and/or reordered various variants. * Add Characters: + - VERTICAL BAR WITH HORIZONTAL STROKE (`U+27CA`). + - ELEMENT OF OPENING UPWARDS (`U+27D2`). + - TRIPLE VERTICAL BAR DELIMITER (`U+2980`). + - Z NOTATION SPOT (`U+2981`). + - DOTTED FENCE (`U+2999`). - CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN (`U+29BC`). - CIRCLED WHITE BULLET (`U+29BE`). - CIRCLED BULLET (`U+29BF`). - SQUARED RISING DIAGONAL SLASH (`U+29C4`) ... SQUARED SQUARE (`U+29C8`). + - EQUALS SIGN AND SLANTED PARALLEL (`U+29E3`) ... IDENTICAL TO AND SLANTED PARALLEL (`U+29E5`). + - THERMODYNAMIC (`U+29E7`). - REVERSE SOLIDUS OPERATOR (`U+29F5`) ... REVERSE SOLIDUS WITH HORIZONTAL STROKE (`U+29F7`). - PLUS SIGN WITH SMALL CIRCLE ABOVE (`U+2A22`) ... PLUS SIGN WITH TILDE ABOVE (`U+2A24`). - PLUS SIGN WITH TILDE BELOW (`U+2A26`). @@ -14,9 +21,19 @@ - PLUS SIGN IN RIGHT HALF CIRCLE (`U+2A2E`). - MULTIPLICATION SIGN IN LEFT HALF CIRCLE (`U+2A34`) ... CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT (`U+2A36`). - CIRCLED DIVISION SIGN (`U+2A38`). + - UNION WITH MINUS SIGN (`U+2A41`) ... INTERSECTION WITH OVERBAR (`U+2A43`). + - LOGICAL AND WITH DOUBLE OVERBAR (`U+2A5E`) ... LOGICAL OR WITH DOUBLE UNDERBAR (`U+2A63`). + - TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE (`U+2A68`). + - TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE (`U+2A69`). - ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT (`U+2A6F`). + - ELEMENT OF OPENING DOWNWARDS (`U+2AD9`) ... NONFORKING (`U+2ADD`). + - PARALLEL WITH HORIZONTAL STROKE (`U+2AF2`) ... TRIPLE COLON OPERATOR (`U+2AF6`). + - LARGE TRIPLE VERTICAL BAR OPERATOR (`U+2AFC`). + - GROUP MARK (`U+2BD2`). - HYPHEN WITH DIAERESIS (`U+2E1A`). - TILDE WITH RING ABOVE (`U+2E1B`). + - LEFT VERTICAL BAR WITH QUILL (`U+2E20`). + - RIGHT VERTICAL BAR WITH QUILL (`U+2E21`). - DOUBLE HYPHEN (`U+2E40`). * Add diagonal-tailed variants for lowercase Iota (#1737). * Make `VXSF` to influence Eth too (#1738). diff --git a/font-src/glyphs/symbol/geometric/plain.ptl b/font-src/glyphs/symbol/geometric/plain.ptl index ca04ecee4..a681a966f 100644 --- a/font-src/glyphs/symbol/geometric/plain.ptl +++ b/font-src/glyphs/symbol/geometric/plain.ptl @@ -440,6 +440,7 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1 StdBlackShape CircleShape 'blackVerySmallCircle' null Size.VerySmall StdBlackShape CircleShape 'blackSmallCircle' null Size.Small + StdBlackShape CircleShape 'blackMediumSmallCircle' 0x2981 Size.MediumSmall StdBlackShape CircleShape 'blackSlightlySmallCircle' 0x1F784 Size.SlightlySmall StdBlackShape CircleShape 'blackMediumCircle' 0x26AB Size.Medium StdBlackShape CircleShape 'blackLargeCircle' 0x2B24 Size.Large diff --git a/font-src/glyphs/symbol/math/negation.ptl b/font-src/glyphs/symbol/math/negation.ptl index 356624a9e..20b47338a 100644 --- a/font-src/glyphs/symbol/math/negation.ptl +++ b/font-src/glyphs/symbol/math/negation.ptl @@ -6,8 +6,6 @@ glyph-module glyph-block Symbol-Math-Negation : begin glyph-block-import NotGlyphFn : notGlyph - notGlyph null 0x2224 'mathBar' [mix SymbolMid BgOpTop 0.5] [mix SymbolMid BgOpBot 0.5] 0.1 - notGlyph null 0x2226 'parallel' [mix SymbolMid BgOpTop 0.5] [mix SymbolMid BgOpBot 0.5] 0 notGlyph null 0x2260 'equal' notGlyph null 0x2262 'ident' notGlyph null 0x226D 'equivalentTo' @@ -44,4 +42,3 @@ glyph-block Symbol-Math-Negation : begin notGlyph null 0x2278 'lessGreater' notGlyph null 0x2279 'greaterLess' notGlyph.right2 null 0x2204 'exists' (CAP - Descender / 2) (Descender / 2) 0.4 - notGlyph 'revNotmathBar' 0x2AEE 'mathBar' [mix SymbolMid BgOpBot 0.5] [mix SymbolMid BgOpTop 0.5] 0.1 diff --git a/font-src/glyphs/symbol/math/not-glyph-fn.ptl b/font-src/glyphs/symbol/math/not-glyph-fn.ptl index da2ef86e4..47fd806e6 100644 --- a/font-src/glyphs/symbol/math/not-glyph-fn.ptl +++ b/font-src/glyphs/symbol/math/not-glyph-fn.ptl @@ -7,7 +7,7 @@ glyph-module glyph-block NotGlyphFn : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-export notGlyph + glyph-block-export NotGlyphSw notGlyph define NotGlyphSw : AdviceStroke 4.5 diff --git a/font-src/glyphs/symbol/math/other.ptl b/font-src/glyphs/symbol/math/other.ptl index dd39b7c7e..bebcb8bc2 100644 --- a/font-src/glyphs/symbol/math/other.ptl +++ b/font-src/glyphs/symbol/math/other.ptl @@ -5,12 +5,57 @@ import [mix linreg clamp fallback] from"../../../support/utils.mjs" glyph-module glyph-block Symbol-Math-Other : begin - glyph-block-import Common-Derivatives : alias + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import NotGlyphFn : NotGlyphSw alias 'mathBullet' 0x2219 'bullet' alias 'whiteDiamondOperator' 0x22C4 'whiteDiamondOperatorImpl.NWID' alias 'mathstar' 0x22C6 'blackStar.NWID' + alias 'divides' 0x2223 'bar.upright' + + create-glyph 'notdivides' 0x2224 : glyph-proc + include : refer-glyph 'divides' + include : dispiro + widths.center NotGlyphSw + flat [mix SB RightSB 0.1] [mix SymbolMid ParenBot 0.5] + curl [mix SB RightSB 0.9] [mix SymbolMid ParenTop 0.5] + + alias 'parallel' 0x2225 'doubleBar.upright' + + create-glyph 'notparallel' 0x2226 : glyph-proc + include : refer-glyph 'parallel' + include : dispiro + widths.center NotGlyphSw + flat SB [mix SymbolMid ParenBot 0.5] + curl RightSB [mix SymbolMid ParenTop 0.5] + + create-glyph 'barStroke' 0x27CA : glyph-proc + include : refer-glyph 'divides' + include : HBar.m [mix SB RightSB 0.1] [mix SB RightSB 0.9] SymbolMid OverlayStroke + + create-glyph 'revnotdivides' 0x2AEE : glyph-proc + include : refer-glyph 'divides' + include : dispiro + widths.center NotGlyphSw + flat [mix SB RightSB 0.1] [mix SymbolMid ParenTop 0.5] + curl [mix SB RightSB 0.9] [mix SymbolMid ParenBot 0.5] + + create-glyph 'doubleBarStroke' 0x2AF2 : glyph-proc + include : refer-glyph 'parallel' + include : HBar.m SB RightSB SymbolMid OverlayStroke + + create-glyph 'doubleBarTilde' 0x2AF3 : composite-proc + refer-glyph 'parallel' + refer-glyph 'sym' + + alias 'interleave' 0x2AF4 'tripleBar.upright' + + create-glyph 'tripleBarStroke' 0x2AF5 : glyph-proc + include : refer-glyph 'interleave' + include : HBar.m [mix SB 0 0.5] [mix RightSB Width 0.5] SymbolMid OverlayStroke + create-glyph 'sqrt' 0x221A : glyph-proc include : dispiro widths.center OperatorStroke diff --git a/font-src/glyphs/symbol/math/relation.ptl b/font-src/glyphs/symbol/math/relation.ptl index 237b8a221..013c41f23 100644 --- a/font-src/glyphs/symbol/math/relation.ptl +++ b/font-src/glyphs/symbol/math/relation.ptl @@ -42,6 +42,8 @@ glyph-block Symbol-Math-Relation-Equal : begin glyph-block-import Common-Derivatives glyph-block-import Symbol-Math-Relation-Common : EqualHalfSpace dH EqualHoleWidth glyph-block-export EqualShape EqualHole IdentShape IdentHole + glyph-block-import Mark-Shared-Metrics : markExtend markHalfStroke + glyph-block-import Mark-Above : TildeShape glyph-block-export : EqualShape define [EqualShape left right] : union @@ -65,10 +67,6 @@ glyph-block Symbol-Math-Relation-Equal : begin create-glyph 'equal' '=' : glyph-proc include : EqualShape SB RightSB - create-glyph 'equalParallel' 0x22D5 : composite-proc - refer-glyph 'equal' - refer-glyph 'parallel' - define EqDotDistance : EqualHalfSpace * 2 + DotRadius * OperatorStroke / Stroke WithDotVariants 'oneDotApproxEq' 0x2250 : function [DrawAt kr ov] : glyph-proc @@ -165,6 +163,31 @@ glyph-block Symbol-Math-Relation-Equal : begin g4 Middle (SymbolMid - EqualHalfSpace) [heading Rightward] g4 [mix Middle RightSB kArcExtX] (SymbolMid - EqualHalfSpace * kArcExtY1) + create-glyph 'equalParallel' 0x22D5 : composite-proc + refer-glyph 'equal' + refer-glyph 'parallel' + + create-glyph 'equalDoubleSlash' 0x29E3 : composite-proc + EqualShape [mix SB 0 0.5] [mix RightSB Width 0.5] + refer-glyph 'doubleSlash' + + create-glyph 'equalDoubleSlashTilde' 0x29E4 : composite-proc + refer-glyph 'equalDoubleSlash' + TildeShape + ttop -- ParenTop + AccentClearance + AccentHeight * 0.75 + tbot -- ParenTop + AccentClearance + leftEnd -- (Middle - markExtend * 1.5) + rightEnd -- (Middle + markExtend * 1.5) + hs -- markHalfStroke + + create-glyph 'identDoubleSlash' 0x29E5 : composite-proc + IdentShape [mix SB 0 0.5] [mix RightSB Width 0.5] + refer-glyph 'doubleSlash' + + create-glyph 'equalDivides' 0x29E7 : composite-proc + refer-glyph 'equal' + refer-glyph 'divides' + turned 'equalDot' 0x2A66 'oneDotApproxEq' Middle SymbolMid WithDotVariants 'oneDotIdent' 0x2A67 : function [DrawAt kr ov] : glyph-proc @@ -172,6 +195,18 @@ glyph-block Symbol-Math-Relation-Equal : begin include : refer-glyph 'ident' include : DrawAt Middle (SymbolMid + EqualHalfSpace * 0.5 + EqDotDistance) (dr - ov) + create-glyph 'identParallel' 0x2A68 : composite-proc + refer-glyph 'ident' + refer-glyph 'parallel' + + create-glyph 'identInterleave' 0x2A69 : composite-proc + IdentShape [mix SB 0 0.5] [mix RightSB Width 0.5] + refer-glyph 'interleave' + + create-glyph 'identDivides' 0x2BD2 : composite-proc + refer-glyph 'ident' + refer-glyph 'divides' + glyph-block Symbol-Math-Relation-Addons : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives diff --git a/font-src/glyphs/symbol/math/v-and-cup.ptl b/font-src/glyphs/symbol/math/v-and-cup.ptl index 9d5b4c301..e7b386f7b 100644 --- a/font-src/glyphs/symbol/math/v-and-cup.ptl +++ b/font-src/glyphs/symbol/math/v-and-cup.ptl @@ -10,6 +10,8 @@ glyph-block Symbol-Math-VAndCup : begin glyph-block-import Letter-Latin-U : UShape glyph-block-import Letter-Greek-Pi : PiShape glyph-block-import Symbol-Arrow : ArrowShape + glyph-block-import Symbol-Math-Relation-Common : EqualHalfSpace + glyph-block-import NotGlyphFn : NotGlyphSw define [VeeShape top bot sw] : union dispiro @@ -31,10 +33,6 @@ glyph-block Symbol-Math-VAndCup : begin create-glyph 'wedge/aplThin' : WedgeShape OperTop OperBot [AdviceStroke 4] create-glyph 'vee/aplThin' : VeeShape OperTop OperBot [AdviceStroke 4] - create-glyph 'mt/projection' 0x2305 : union - HBar.t SB RightSB OperTop OperatorStroke - WedgeShape (OperTop - OperatorStroke) OperBot - define [WedgeBarGap] : Math.max [AdviceStroke 4] ((OperTop - OperBot) / 8) create-glyph 'math/logic/xor' 0x22BB : let [gap : WedgeBarGap] : union @@ -49,11 +47,6 @@ glyph-block Symbol-Math-VAndCup : begin HBar.t SB RightSB OperTop OperatorStroke VeeShape (OperTop - OperatorStroke - gap) OperBot - create-glyph 'mt/perspective' 0x2306 : let [gap : WedgeBarGap] : union - HBar.t SB RightSB OperTop OperatorStroke - HBar.t SB RightSB (OperTop - OperatorStroke - gap) OperatorStroke - WedgeShape (OperTop - 2 * OperatorStroke - gap) OperBot - create-glyph 'curlyVee' 0x22CE : glyph-proc local fine : CThin * OperatorStroke include : dispiro @@ -67,6 +60,15 @@ glyph-block Symbol-Math-VAndCup : begin turned 'curlyWedge' 0x22CF 'curlyVee' Middle SymbolMid + create-glyph 'mt/projection' 0x2305 : union + HBar.t SB RightSB OperTop OperatorStroke + WedgeShape (OperTop - OperatorStroke) OperBot + + create-glyph 'mt/perspective' 0x2306 : let [gap : WedgeBarGap] : union + HBar.t SB RightSB OperTop OperatorStroke + HBar.t SB RightSB (OperTop - OperatorStroke - gap) OperatorStroke + WedgeShape (OperTop - 2 * OperatorStroke - gap) OperBot + create-glyph 'doubleVee' 0x2A54 : glyph-proc define sw : AdviceStroke 6 include : dispiro @@ -102,9 +104,29 @@ glyph-block Symbol-Math-VAndCup : begin turned 'doubleWedge' 0x2A53 'doubleVee' Middle SymbolMid + create-glyph 'math/logic/equalAnd' 0x2A5E : let [gap : WedgeBarGap] : union + HBar.t SB RightSB (OperTop + EqualHalfSpace * 0.75) OperatorStroke + HBar.t SB RightSB (OperTop - EqualHalfSpace * 0.75) OperatorStroke + WedgeShape (OperTop - OperatorStroke - EqualHalfSpace * 0.75 - gap) OperBot + + create-glyph 'math/logic/xand' 0x2A5F : let [gap : WedgeBarGap] : union + HBar.b SB RightSB OperBot OperatorStroke + WedgeShape OperTop (OperBot + OperatorStroke + gap) + + create-glyph 'math/logic/andEqual' 0x2A60 : let [gap : WedgeBarGap] : union + HBar.b SB RightSB (OperBot - EqualHalfSpace * 0.75) OperatorStroke + HBar.b SB RightSB (OperBot + EqualHalfSpace * 0.75) OperatorStroke + WedgeShape OperTop (OperBot + OperatorStroke + EqualHalfSpace * 0.75 + gap) + + alias 'veeUnderbar' 0x2A61 'math/logic/xor' + turned 'math/logic/equalOr' 0x2A62 'math/logic/andEqual' Middle SymbolMid + turned 'math/logic/orEqual' 0x2A63 'math/logic/equalAnd' Middle SymbolMid + create-glyph 'cup' 0x222A : glyph-proc include : UShape [DivFrame 1] OperTop OperBot (stroke -- OperatorStroke) + turned 'cap' 0x2229 'cup' Middle SymbolMid + define ThinCupStroke : AdviceStroke 4 create-glyph 'thinCup' : glyph-proc include : UShape [DivFrame 1] OperTop OperBot (stroke -- ThinCupStroke) @@ -130,18 +152,18 @@ glyph-block Symbol-Math-VAndCup : begin include : Translate Middle (OperBot + ArchDepth) include : Regizmo + define cupInnerPlusSw : AdviceStroke 6 + define cupInnerPlusSize : Math.min (RightSB - SB - ThinCupStroke * HVContrast * (2 + 0.5 * cupInnerPlusSw / ThinCupStroke)) ((RightSB - SB) * 0.8) create-glyph 'cupPlus' 0x228E : glyph-proc include [refer-glyph 'thinCup'] AS_BASE ALSO_METRICS - local sw : AdviceStroke 6 - local size : Math.min (RightSB - SB - ThinCupStroke * HVContrast * (2 + 0.5 * sw / ThinCupStroke)) ((RightSB - SB) * 0.8) include : dispiro - widths.center sw - corner (Middle - size / 2) (OperBot + ArchDepth) - corner (Middle + size / 2) (OperBot + ArchDepth) + widths.center cupInnerPlusSw + corner (Middle - cupInnerPlusSize / 2) (OperBot + ArchDepth) + corner (Middle + cupInnerPlusSize / 2) (OperBot + ArchDepth) include : dispiro - widths.center sw - corner Middle (OperBot + ArchDepth - size / 2) - corner Middle (OperBot + ArchDepth + size / 2) + widths.center cupInnerPlusSw + corner Middle (OperBot + ArchDepth - cupInnerPlusSize / 2) + corner Middle (OperBot + ArchDepth + cupInnerPlusSize / 2) create-glyph 'doubleCup' 0x22D3 : glyph-proc local sw : AdviceStroke 6 @@ -153,14 +175,59 @@ glyph-block Symbol-Math-VAndCup : begin ada -- [ArchDepthAOf (ArchDepth - sw - gap) Width] adb -- [ArchDepthBOf (ArchDepth - sw - gap) Width] - turned 'cap' 0x2229 'cup' Middle SymbolMid - turned 'capDot' 0x2A40 'cupDot' Middle SymbolMid turned 'doubleCap' 0x22D2 'doubleCup' Middle SymbolMid + define pitchForkTop : [mix OperBot OperTop 1.2] + Stroke / 4 create-glyph 'pitchFork' 0x22D4 : composite-proc UShape [DivFrame 1] OperTop OperBot (stroke -- [AdviceStroke 3.25]) FlipAround Middle SymbolMid - VBar.m Middle OperBot ([mix OperBot OperTop 1.2] + Stroke / 4) [AdviceStroke 3.25] + VBar.m Middle OperBot pitchForkTop [AdviceStroke 3.25] + + create-glyph 'elementUp' 0x27D2 : glyph-proc + include [refer-glyph 'thinCup'] AS_BASE ALSO_METRICS + include : VBar.m Middle OperBot OperTop ThinCupStroke + + turned 'capDot' 0x2A40 'cupDot' Middle SymbolMid + + create-glyph 'cupMinus' 0x2A41 : glyph-proc + include [refer-glyph 'thinCup'] AS_BASE ALSO_METRICS + include : HBar.m (Middle - cupInnerPlusSize / 2) (Middle + cupInnerPlusSize / 2) (OperBot + ArchDepth) cupInnerPlusSw + + create-glyph 'cupOverbar' 0x2A42 : let [gap : WedgeBarGap] : glyph-proc + include : UShape [DivFrame 1] (OperTop - OperatorStroke - gap) OperBot (stroke -- OperatorStroke) + include : HBar.t SB RightSB OperTop OperatorStroke + + create-glyph 'capOverbar' 0x2A43 : let [gap : WedgeBarGap] : glyph-proc + include : UShape [DivFrame 1] OperTop (OperBot + OperatorStroke + gap) (stroke -- OperatorStroke) + include : FlipAround Middle SymbolMid + include : HBar.t SB RightSB OperTop OperatorStroke + + turned 'elementDown' 0x2AD9 'elementUp' Middle SymbolMid + + create-glyph 'transversalIntersection' 0x2ADB : glyph-proc + local top : mix SymbolMid OperTop 0.5 + local bot : mix SymbolMid OperBot 0.5 + include : UShape [DivFrame 1] top bot (stroke -- ThinCupStroke) + include : FlipAround Middle [mix top bot 0.5] + include : VBar.m Middle OperBot OperTop ThinCupStroke + + create-glyph 'pitchForkTeeTop' 0x2ADA : glyph-proc + include [refer-glyph 'pitchFork'] AS_BASE ALSO_METRICS + include : HBar.t [mix Middle SB 0.5] [mix Middle RightSB 0.5] pitchForkTop OperatorStroke + + create-glyph 'nonForking' 0x2ADD : glyph-proc + local top : mix SymbolMid OperTop 0.75 + local bot : mix SymbolMid OperBot 0.75 + local mid : mix SymbolMid OperTop 0.25 + include : UShape [DivFrame 1] mid bot (stroke -- ThinCupStroke) + include : VBar.m Middle bot top ThinCupStroke + + create-glyph 'forking' 0x2ADC : glyph-proc + include [refer-glyph 'nonForking'] AS_BASE ALSO_METRICS + include : dispiro + widths.center NotGlyphSw + flat SB OperBot + curl RightSB OperTop create-glyph 'squareCap' 0x2293 : glyph-proc include : PiShape [DivFrame 1] OperTop OperBot (shrinkRate -- 0) (fine -- OperatorStroke) (doSerif -- false) diff --git a/font-src/glyphs/symbol/punctuation/bar.ptl b/font-src/glyphs/symbol/punctuation/bar.ptl index b18e81b33..0cfdb5052 100644 --- a/font-src/glyphs/symbol/punctuation/bar.ptl +++ b/font-src/glyphs/symbol/punctuation/bar.ptl @@ -47,6 +47,20 @@ glyph-block Symbol-Punctuation-Bar : begin include : ForceUpright include : DoubleBarShape + define [TripleBarShape] : glyph-proc + set-base-anchor 'above' Middle ParenTop + set-base-anchor 'below' Middle ParenBot + local sw : AdviceStroke 4.25 + include : VBar.m (Middle - Width * 0.2625) ParenBot ParenTop sw + include : VBar.m Middle ParenBot ParenTop sw + include : VBar.m (Middle + Width * 0.2625) ParenBot ParenTop sw + + create-glyph 'tripleBar.upright' : TripleBarShape + create-glyph 'tripleBar.slanted.naturalSlope' : TripleBarShape + create-glyph 'tripleBar.slanted.forceUpright' : glyph-proc + include : ForceUpright + include : TripleBarShape + define [BrokenBarShape] : glyph-proc local breakDist : Math.max Stroke (CAP / 8) include : VBar.m Middle (SymbolMid + breakDist / 2) ParenTop @@ -67,9 +81,10 @@ glyph-block Symbol-Punctuation-Bar : begin orthographic-slanted 'bar' '|' select-variant 'doubleBar.slanted' (follow -- 'bar.slanted') orthographic-slanted 'doubleBar' 0x2016 + select-variant 'tripleBar.slanted' (follow -- 'bar.slanted') + orthographic-slanted 'tripleBar' 0x2AFC select-variant 'brokenBar.slanted' (follow -- 'bar.slanted') orthographic-slanted 'brokenBar' 0xA6 alias 'dentalclick' 0x1C0 'bar.upright' alias 'alveolarlateralclick' 0x1C1 'doubleBar.upright' - alias 'mathBar' 0x2223 'bar.upright' - alias 'parallel' 0x2225 'doubleBar.upright' + alias 'retroflexlateralclick' 0x2980 'tripleBar.upright' diff --git a/font-src/glyphs/symbol/punctuation/brackets.ptl b/font-src/glyphs/symbol/punctuation/brackets.ptl index 4f84732f1..a30df9b45 100644 --- a/font-src/glyphs/symbol/punctuation/brackets.ptl +++ b/font-src/glyphs/symbol/punctuation/brackets.ptl @@ -183,6 +183,12 @@ glyph-block Symbol-Punctuation-Brackets : begin HBar.m hDim.l hDim.r [mix ParenBot ParenTop 0.5] VBar.l hDim.l ParenBot ParenTop + create-glyph 'barBarLeft' 0x2E20 : glyph-proc + local hDim : Bracket.HDim + include : union + HBar.m hDim.l hDim.r [mix ParenBot ParenTop 0.5] + VBar.l hDim.l ParenBot ParenTop + turned 'bracketRight' ']' 'bracketLeft' Middle SymbolMid turned 'bracketRightUHalf' 0x2E23 'bracketLeftLHalf' Middle SymbolMid turned 'bracketRightLHalf' 0x2E25 'bracketLeftUHalf' Middle SymbolMid @@ -191,6 +197,7 @@ glyph-block Symbol-Punctuation-Brackets : begin turned 'bracketRightUpper' 0x23A4 'bracketLeftLower' Middle SymbolMid turned 'dblBracketRight' 0x27E7 'dblBracketLeft' Middle SymbolMid turned 'bracketBarRight' 0x2046 'bracketBarLeft' Middle SymbolMid + turned 'barBarRight' 0x2E21 'barBarLeft' Middle SymbolMid create-glyph 'ligExtBracketRight' : glyph-proc include [refer-glyph 'ligExtBracketLeft'] AS_BASE ALSO_METRICS diff --git a/font-src/glyphs/symbol/punctuation/ellipsis.ptl b/font-src/glyphs/symbol/punctuation/ellipsis.ptl index a363e809c..268dca302 100644 --- a/font-src/glyphs/symbol/punctuation/ellipsis.ptl +++ b/font-src/glyphs/symbol/punctuation/ellipsis.ptl @@ -88,5 +88,17 @@ glyph-block Symbol-Punctuation-Ellipsis : begin set-width df.width include : VFourDotShape DrawAt kDotRadius overshoot df.middle (-XH / 6) (XH * 7 / 6) + create-glyph "mathTriColon.\(suffix)" : glyph-proc + local df : DivFrame para.diversityF + set-width df.width + include : VThreeDotsShape DrawAt kDotRadius overshoot 0 df.width 0 (SymbolMid - XH / 2) (SymbolMid + XH / 2) + + create-glyph "mathQuadColon.\(suffix)" : glyph-proc + local df : DivFrame para.diversityF + set-width df.width + include : VFourDotShape DrawAt kDotRadius overshoot df.middle (SymbolMid - XH * 2 / 3) (SymbolMid + XH * 2 / 3) + select-variant "triColon" 0x205D (follow -- 'punctuationDot') select-variant "quadColon" 0x205E (follow -- 'punctuationDot') + select-variant "mathTriColon" 0x2AF6 (follow -- 'punctuationDot') + select-variant "mathQuadColon" 0x2999 (follow -- 'punctuationDot') diff --git a/font-src/glyphs/symbol/punctuation/slashes-and-number-sign.ptl b/font-src/glyphs/symbol/punctuation/slashes-and-number-sign.ptl index 19c16afb9..402c5b12a 100644 --- a/font-src/glyphs/symbol/punctuation/slashes-and-number-sign.ptl +++ b/font-src/glyphs/symbol/punctuation/slashes-and-number-sign.ptl @@ -62,7 +62,7 @@ glyph-block Symbol-Punctuation-Slashes-And-Number-Sign : begin include : BackslashShape (Middle - backslashWidth / 2) (Middle + backslashWidth / 2) alias 'mathSetMinus' 0x2216 'backslash' - alias 'mathBackSlash' 0x29F5 'backslash' + alias 'mathBackslash' 0x29F5 'backslash' create-glyph 'slashOverbar' 0x29F6 : glyph-proc include : refer-glyph "slash" @@ -70,7 +70,7 @@ glyph-block Symbol-Punctuation-Slashes-And-Number-Sign : begin create-glyph 'backslashBar' 0x29F7 : glyph-proc include : refer-glyph "backslash" - include : HBar.m SB RightSB SymbolMid OperatorStroke + include : HBar.m SB RightSB SymbolMid OverlayStroke create-glyph 'backslash.left' : glyph-proc Joining.set currentGlyph Joining.Classes.Right