Add Characters (#1747)

This commit is contained in:
John McWilliams 2023-05-25 20:13:55 -04:00 committed by GitHub
parent 171d64acf2
commit 392e31e7a1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 229 additions and 33 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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'

View file

@ -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

View file

@ -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')

View file

@ -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