Skip to content

Commit 4dc0557

Browse files
authored
Collection of around 30 arithmetic symbols (#2610)
* arithmetic * triangles * znotation angle bracket * sw fixes * log
1 parent f21ad29 commit 4dc0557

File tree

9 files changed

+237
-6
lines changed

9 files changed

+237
-6
lines changed

changes/32.2.1.md

+26
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,29 @@
1313
- CYRILLIC SMALL LETTER TCHE (`U+A693`).
1414
- LATIN EPIGRAPHIC LETTER ARCHAIC M (`U+A7FF`).
1515
- MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER (`U+1E06C`).
16+
* Add characters:
17+
- DOUBLE INTERSECTION (`U+22D2`).
18+
- DOUBLE UNION (`U+22D3`).
19+
- LEFT OUTER JOIN (`U+27D5`).
20+
- RIGHT OUTER JOIN (`U+27D6`).
21+
- FULL OUTER JOIN (`U+27D7`).
22+
- Z NOTATION LEFT BINDING BRACKET (`U+2989`).
23+
- Z NOTATION RIGHT BINDING BRACKET (`U+298A`).
24+
- TRIANGLE WITH DOT ABOVE (`U+29CA`).
25+
- TRIANGLE WITH UNDERBAR (`U+29CB`).
26+
- TRIANGLE WITH SERIFS AT BOTTOM (`U+29CD`).
27+
- N-ARY TIMES OPERATOR (`U+2A09`).
28+
- JOIN (`U+2A1D`).
29+
- LARGE LEFT TRIANGLE OPERATOR (`U+2A1E`).
30+
- CLOSED UNION WITH SERIFS (`U+2A4C`).
31+
- CLOSED INTERSECTION WITH SERIFS (`U+2A4D`).
32+
- DOUBLE SQUARE INTERSECTION (`U+2A4E`).
33+
- DOUBLE SQUARE UNION (`U+2A4F`).
34+
- SLOPING LARGE OR (`U+2A57`).
35+
- SLOPING LARGE AND (`U+2A58`).
36+
- LOGICAL AND WITH MIDDLE STEM (`U+2A5A`).
37+
- LOGICAL OR WITH MIDDLE STEM (`U+2A5B`).
38+
- Z NOTATION DOMAIN ANTIRESTRICTION (`U+2A64`).
39+
- Z NOTATION RANGE ANTIRESTRICTION (`U+2A65`).
40+
- SMALLER THAN (`U+2AAA`) ... LARGER THAN OR EQUAL TO (`U+2AAD`).
41+
- CLOSED SUBSET (`U+2ACF`) ... CLOSED SUPERSET OR EQUAL TO (`U+2AD2`).

packages/font-glyphs/src/letter/latin/c.ptl

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ glyph-block Letter-Latin-C : begin
6363
g4 (df.leftSB + offset) (top - [fallback hook Hook])
6464
hookstart (top - offset) (sw -- sw)
6565

66-
flatside.rd (df.rightSB + offset) bot top ada adb
66+
flatside.rd (df.rightSB - offset) bot top ada adb
6767

6868
match sb
6969
[Just SLAB-CLASSICAL] : SerifedArcEnd.RtlRhs (df.leftSB + offset) bot sw [fallback hook Hook]

packages/font-glyphs/src/symbol/geometric/masked.ptl

+17
Original file line numberDiff line numberDiff line change
@@ -432,3 +432,20 @@ glyph-block Symbol-Geometric-Masked : for-width-kinds WideWidth1
432432
intersection
433433
refer-glyph : MangleName 'blackLozenge'
434434
HBar.m 0 MosaicWidth Geom.MidY GeometryStroke
435+
436+
define triangleSideRadius : Geom.Size * 2.1 / [Math.sqrt 3]
437+
derive-multi-part-glyphs [MangleName 'whiteTriangleUpDotAbove'] [MangleUnicode 0x29CA] { [MangleName 'whiteTriangleUp'] 'dotAbove' } : lambda [srcs gr] : glyph-proc
438+
local { base mark } srcs
439+
include : refer-glyph mark
440+
include : Translate (Middle + Geom.MidX) (Geom.Top - XH)
441+
include [refer-glyph base] AS_BASE ALSO_METRICS
442+
443+
create-glyph [MangleName 'whiteTriangleUpBarBelow'] [MangleUnicode 0x29CB] : glyph-proc
444+
include [refer-glyph : MangleName 'whiteTriangleUp'] AS_BASE ALSO_METRICS
445+
include : HBar.t (Geom.MidX - triangleSideRadius) (Geom.MidX + triangleSideRadius) (Geom.Bot - AccentClearance) GeometryStroke
446+
447+
create-glyph [MangleName 'whiteTriangleUpSerifBottom'] [MangleUnicode 0x29CD] : glyph-proc
448+
define jut : clamp 0 (MosaicMiddle - triangleSideRadius) (SideJut * MosaicWidthScalar)
449+
include [refer-glyph : MangleName 'whiteTriangleUp'] AS_BASE ALSO_METRICS
450+
include : HSerif.lb (Geom.MidX - triangleSideRadius) Geom.Bot jut GeometryStroke
451+
include : HSerif.rb (Geom.MidX + triangleSideRadius) Geom.Bot jut GeometryStroke

packages/font-glyphs/src/symbol/geometric/plain.ptl

+2-2
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,7 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1
614614
do "Other Polygon"
615615
glyph-block-import Shared-Symbol-Shapes : TriangleShape HZigzag
616616

617-
define fineGeometryStroke : AdviceStroke2 4 4 (Geom.Size * 2)
617+
define fineGeometryStroke : AdviceStroke2 4 4 Geom.Size
618618

619619
create-glyph [MangleName 'straightness'] [MangleUnicode 0x23E4] : glyph-proc
620620
set-width Geom.Width
@@ -631,7 +631,7 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1
631631
create-glyph [MangleName 'conicalTaper'] [MangleUnicode 0x2332] : glyph-proc
632632
set-width Geom.Width
633633
include : TriangleShape Geom.Left (Geom.MidY - Geom.Size * 0.8) Geom.Left (Geom.MidY + Geom.Size * 0.8) Geom.Right Geom.MidY fineGeometryStroke
634-
include : HBar.m [mix 0 Geom.Left 0.5] [mix Geom.Right Geom.Width 0.5] Geom.MidY fineGeometryStroke
634+
include : HBar.m [mix 0 Geom.Left 0.5] [mix Geom.Right Geom.Width 0.5] Geom.MidY GeometryStroke
635635

636636
create-glyph [MangleName 'slope'] [MangleUnicode 0x2333] : glyph-proc
637637
set-width Geom.Width

packages/font-glyphs/src/symbol/math/arith.ptl

+34-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ glyph-block Symbol-Math-Arith : begin
137137
intersection
138138
MultiplyMask 1 1 1
139139
union
140-
VBar.l (Middle - Size) (SymbolMid - Size) (SymbolMid + Size) swBowtieHv
140+
VBar.l (Middle - Size) (SymbolMid - Size) (SymbolMid + Size) swBowtieHv
141141
VBar.r (Middle + Size) (SymbolMid - Size) (SymbolMid + Size) swBowtieHv
142142
intersection
143143
Rect ParenTop ParenBot (Middle - Size) (Middle + Size)
@@ -198,6 +198,39 @@ glyph-block Symbol-Math-Arith : begin
198198
refer-glyph 'bowtieRight'
199199
MultiplyMask 1 0 1
200200

201+
define [JoinLeft ] : union
202+
HBar.t [Math.max 0 : Middle - Size - Jut + [HSwToV : 0.5 * swBowtieHv]] (Middle - Size) (SymbolMid + Size) swBowtie
203+
HBar.b [Math.max 0 : Middle - Size - Jut + [HSwToV : 0.5 * swBowtieHv]] (Middle - Size) (SymbolMid - Size) swBowtie
204+
define [JoinRight] : union
205+
HBar.t (Middle + Size) [Math.min Width : Middle + Size + Jut - [HSwToV : 0.5 * swBowtieHv]] (SymbolMid + Size) swBowtie
206+
HBar.b (Middle + Size) [Math.min Width : Middle + Size + Jut - [HSwToV : 0.5 * swBowtieHv]] (SymbolMid - Size) swBowtie
207+
define [JoinLeftMask ] : union
208+
MaskAboveLine 0 (SymbolMid + Size) Middle (SymbolMid + Size)
209+
MaskBelowLine 0 (SymbolMid - Size) Middle (SymbolMid - Size)
210+
define [JoinRightMask] : union
211+
MaskAboveLine Middle (SymbolMid + Size) Width (SymbolMid + Size)
212+
MaskBelowLine Middle (SymbolMid - Size) Width (SymbolMid - Size)
213+
create-glyph 'joinLeft' 0x27D5 : glyph-proc
214+
include : difference
215+
union
216+
refer-glyph 'bowtie'
217+
JoinLeft
218+
JoinLeftMask
219+
create-glyph 'joinRight' 0x27D6 : glyph-proc
220+
include : difference
221+
union
222+
refer-glyph 'bowtie'
223+
JoinRight
224+
JoinRightMask
225+
create-glyph 'joinFull' 0x27D7 : glyph-proc
226+
include : difference
227+
union
228+
refer-glyph 'bowtie'
229+
JoinLeft
230+
JoinRight
231+
JoinLeftMask
232+
JoinRightMask
233+
201234
define HourglassStretch 1.6
202235
create-glyph 'whiteHourglass' 0x29D6 : glyph-proc
203236
include : union

packages/font-glyphs/src/symbol/math/large-operators.ptl

+43
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ glyph-module
77
glyph-block Symbol-Math-Large-Operators : for-width-kinds WideWidth1
88
glyph-block-import CommonShapes
99
glyph-block-import Common-Derivatives
10+
glyph-block-import Shared-Symbol-Shapes : TriangleShape
1011
glyph-block-import Letter-Latin-Long-S : LongSShape
1112
glyph-block-import Letter-Latin-U : UShape
1213
glyph-block-import Letter-Greek-Upper-Sigma : SigmaShape
@@ -96,3 +97,45 @@ glyph-block Symbol-Math-Large-Operators : for-width-kinds WideWidth1
9697
include : PiShape df BgOpTop BgOpBot (shrinkRate -- 0) (fine -- OperatorStroke) (doSerif -- false)
9798

9899
turned [MangleName 'SquareCup'] [MangleUnicode 0x2A06] [MangleName 'SquareCap'] df.middle SymbolMid
100+
101+
create-glyph [MangleName 'Multiply'] [MangleUnicode 0x2A09] : glyph-proc
102+
set-width df.width
103+
include : dispiro
104+
widths.center OperatorStroke
105+
corner df.leftSB BgOpTop
106+
corner df.rightSB BgOpBot
107+
include : dispiro
108+
widths.center OperatorStroke
109+
corner df.leftSB BgOpBot
110+
corner df.rightSB BgOpTop
111+
112+
create-glyph [MangleName 'Bowtie'] [MangleUnicode 0x2A1D] : glyph-proc
113+
set-width df.width
114+
define swBowtie : Math.min OperatorStroke : AdviceStroke 4.25 MosaicWidthScalar
115+
define swBowtieHv : Math.min OperatorStroke : AdviceStroke 4.75 MosaicWidthScalar
116+
include : union
117+
intersection
118+
MaskRight df.leftSB
119+
MaskLeft df.rightSB
120+
union
121+
dispiro
122+
widths.center swBowtie
123+
corner df.leftSB BgOpTop
124+
corner df.rightSB BgOpBot
125+
dispiro
126+
widths.center swBowtie
127+
corner df.leftSB BgOpBot
128+
corner df.rightSB BgOpTop
129+
intersection
130+
spiro-outline
131+
corner df.leftSB BgOpBot
132+
corner df.rightSB BgOpTop
133+
corner df.rightSB BgOpBot
134+
corner df.leftSB BgOpTop
135+
union
136+
VBar.l df.leftSB BgOpBot BgOpTop swBowtieHv
137+
VBar.r df.rightSB BgOpBot BgOpTop swBowtieHv
138+
139+
create-glyph [MangleName 'WhiteTriangleLeft'] [MangleUnicode 0x2A1E] : glyph-proc
140+
set-width df.width
141+
include : TriangleShape df.leftSB SymbolMid df.rightSB BgOpTop df.rightSB BgOpBot OperatorStroke

packages/font-glyphs/src/symbol/math/relation.ptl

+51
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,14 @@ glyph-block Symbol-Math-Relation-Inequality : begin
450450
Rect ([mix top bot 0.5] + gap / 2) ([mix top bot 0.5] - gap / 2) (l + O) (r - O)
451451

452452
define [NormalSubsetShape top bot l r s] : LigationLessShape top bot l r s s 0
453+
define [AntirestrictionLeftShape top bot l r s s2] : union [NormalSubsetShape top bot l r s]
454+
intersection
455+
LessMaskShape top bot l r
456+
HBar.m l r [mix top bot 0.5] [fallback s2 s OperatorStroke]
457+
define [SmallerShape top bot l r s] : union [LessShape top bot l r s]
458+
intersection
459+
LessMaskShape top bot l r
460+
HBar.m l r [mix top bot 0.5] [fallback s OperatorStroke]
453461

454462
glyph-block-export GreaterShape
455463
define [GreaterShape top bot l r s] : union
@@ -473,6 +481,14 @@ glyph-block Symbol-Math-Relation-Inequality : begin
473481
Rect ([mix top bot 0.5] + gap / 2) ([mix top bot 0.5] - gap / 2) (l + O) (r - O)
474482

475483
define [NormalSupersetShape top bot l r s] : LigationGreaterShape top bot l r s s 0
484+
define [AntirestrictionRightShape top bot l r s s2] : union [NormalSupersetShape top bot l r s]
485+
intersection
486+
GreaterMaskShape top bot l r
487+
HBar.m l r [mix top bot 0.5] [fallback s2 s OperatorStroke]
488+
define [LargerShape top bot l r s] : union [GreaterShape top bot l r s]
489+
intersection
490+
GreaterMaskShape top bot l r
491+
HBar.m l r [mix top bot 0.5] [fallback s OperatorStroke]
476492

477493
create-glyph 'less' '<' : glyph-proc
478494
include : LessShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB
@@ -484,6 +500,12 @@ glyph-block Symbol-Math-Relation-Inequality : begin
484500
create-glyph 'normalSubsetOf' 0x22B2 : glyph-proc
485501
include : NormalSubsetShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB
486502

503+
create-glyph 'zNotationDomainAntirestriction' 0x2A64 : glyph-proc
504+
include : AntirestrictionLeftShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB OperatorStroke [AdviceStroke 4.5]
505+
506+
create-glyph 'smaller' 0x2AAA : glyph-proc
507+
include : SmallerShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB
508+
487509
create-glyph 'greater' '>' : glyph-proc
488510
include : GreaterShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB
489511

@@ -494,10 +516,18 @@ glyph-block Symbol-Math-Relation-Inequality : begin
494516
create-glyph 'normalSupersetOf' 0x22B3 : glyph-proc
495517
include : NormalSupersetShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB
496518

519+
create-glyph 'zNotationRangeAntirestriction' 0x2A65 : glyph-proc
520+
include : AntirestrictionRightShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB OperatorStroke [AdviceStroke 4.5]
521+
522+
create-glyph 'larger' 0x2AAB : glyph-proc
523+
include : LargerShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB
524+
497525
create-glyph 'lessEqUpper' : LessShape (SymbolMid + dSH + lessEqDist) (SymbolMid - dSH + lessEqDist) SB RightSB
498526
create-glyph 'greaterEqUpper' : GreaterShape (SymbolMid + dSH + lessEqDist) (SymbolMid - dSH + lessEqDist) SB RightSB
499527
create-glyph 'normalSubsetUpper' : NormalSubsetShape (SymbolMid + dSH + lessEqDist) (SymbolMid - dSH + lessEqDist) SB RightSB
500528
create-glyph 'normalSupersetUpper' : NormalSupersetShape (SymbolMid + dSH + lessEqDist) (SymbolMid - dSH + lessEqDist) SB RightSB
529+
create-glyph 'smallerEqUpper' : SmallerShape (SymbolMid + dSH + lessEqDist) (SymbolMid - dSH + lessEqDist) SB RightSB
530+
create-glyph 'largerEqUpper' : LargerShape (SymbolMid + dSH + lessEqDist) (SymbolMid - dSH + lessEqDist) SB RightSB
501531

502532
derive-composites 'less.narrow' null 'lessEqUpper' [ApparentTranslate 0 (-lessEqDist)]
503533
derive-composites 'lessEq' 0x2264 'lessEqUpper' 'eqLower'
@@ -527,6 +557,8 @@ glyph-block Symbol-Math-Relation-Inequality : begin
527557

528558
derive-composites 'normalSubsetEq' 0x22B4 'normalSubsetUpper' 'eqLower'
529559
derive-composites 'normalSupersetEq' 0x22B5 'normalSupersetUpper' 'eqLower'
560+
derive-composites 'smallerEq' 0x2AAC 'smallerEqUpper' 'eqLower'
561+
derive-composites 'largerEq' 0x2AAD 'largerEqUpper' 'eqLower'
530562

531563
turned 'turnGreaterEq' 0x22DC 'greaterEq' Middle SymbolMid
532564
turned 'turnLessEq' 0x22DD 'lessEq' Middle SymbolMid
@@ -593,6 +625,9 @@ glyph-block Symbol-Math-Relation-Inequality : begin
593625
include : GreaterShape (SymbolMid + llggHeight / 2 + lessEqDist) (SymbolMid - llggHeight / 6 + lessEqDist * 2) SB RightSB lesslessSW
594626
include : LessShape (SymbolMid + llggHeight / 6 - lessEqDist * 2) (SymbolMid - llggHeight / 2 - lessEqDist) SB RightSB lesslessSW
595627
include : HBar.m SB RightSB (SymbolMid) lesslessSW
628+
create-glyph 'normalSupersetNormalSubset' 0x29CE : glyph-proc
629+
include : NormalSupersetShape (SymbolMid + llggHeight / 2) (SymbolMid - llggHeight / 6 + lessEqDist) SB RightSB lesslessSW
630+
include : NormalSubsetShape (SymbolMid + llggHeight / 6 - lessEqDist) (SymbolMid - llggHeight / 2) SB RightSB lesslessSW
596631

597632
create-glyph 'lessless' 0x226A : glyph-proc
598633
include : LessShape (SymbolMid + dH) (SymbolMid - dH) (SB - lessEqDist / 2) (RightSB - lessEqDist * 2) lesslessSW
@@ -749,6 +784,12 @@ glyph-block Symbol-Math-Relation-Subset : begin
749784
define [SupsetShape top bot sw] : glyph-proc
750785
include : SubsetShape top bot sw
751786
include : FlipAround Middle [mix top bot 0.5]
787+
define [SubsetClosedShape top bot sw] : glyph-proc
788+
include : SubsetShape top bot sw
789+
include : VBar.r RightSB bot top sw
790+
define [SupsetClosedShape top bot sw] : glyph-proc
791+
include : SubsetClosedShape top bot sw
792+
include : FlipAround Middle [mix top bot 0.5]
752793

753794
create-glyph 'subst' 0x2282
754795
SubsetShape (SymbolMid + dHSubstSimple) (SymbolMid - dHSubstSimple)
@@ -760,9 +801,12 @@ glyph-block Symbol-Math-Relation-Subset : begin
760801

761802
include : SubsetShape (SymbolMid + dHSubstSimple) (SymbolMid - dHSubstSimple) (sw -- sw)
762803
include : SubsetShape (SymbolMid + dHSubstSimple) (SymbolMid - dHSubstSimple) (sw -- sw) (offset -- gap + sw)
804+
create-glyph 'substClosed' 0x2ACF
805+
SubsetClosedShape (SymbolMid + dHSubstSimple) (SymbolMid - dHSubstSimple) OperatorStroke
763806

764807
turned 'supst' 0x2283 'subst' Middle SymbolMid
765808
turned 'doubleSupst' 0x22D1 'doubleSubst' Middle SymbolMid
809+
turned 'supstClosed' 0x2AD0 'substClosed' Middle SymbolMid
766810

767811
create-glyph 'substBarUpper'
768812
SubsetShape (SymbolMid + dSH + lessEqDist) (SymbolMid - dSH + lessEqDist)
@@ -776,6 +820,13 @@ glyph-block Symbol-Math-Relation-Subset : begin
776820
derive-composites 'supstBarNoRise' null 'supst' 'eqLower2'
777821
derive-composites 'supstBarNegated' 0x228B 'supstBarUpper' 'eqBarNegatedLower'
778822

823+
create-glyph 'substClosedBar' 0x2AD1 : composite-proc
824+
SubsetClosedShape (SymbolMid + dSH + lessEqDist) (SymbolMid - dSH + lessEqDist) OperatorStroke
825+
refer-glyph 'eqLower'
826+
create-glyph 'supstClosedBar' 0x2AD2 : composite-proc
827+
SupsetClosedShape (SymbolMid + dSH + lessEqDist) (SymbolMid - dSH + lessEqDist) OperatorStroke
828+
refer-glyph 'eqLower'
829+
779830
define supstDotShift : SB + [Math.max (OperatorStroke * 1.5) dHSubstSimple] - Middle
780831
derive-composites 'substDot' 0x2ABD 'mathCDot' [ApparentTranslate (+supstDotShift) 0] 'subst'
781832
derive-composites 'supstDot' 0x2ABE 'mathCDot' [ApparentTranslate (-supstDotShift) 0] 'supst'

packages/font-glyphs/src/symbol/math/v-and-cup.ptl

+46-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ glyph-module
77
glyph-block Symbol-Math-VAndCup : begin
88
glyph-block-import CommonShapes
99
glyph-block-import Common-Derivatives
10-
glyph-block-import Letter-Latin-U : UShape
10+
glyph-block-import Letter-Latin-U : UShape USerifs
1111
glyph-block-import Letter-Greek-Pi : PiShape
1212
glyph-block-import Letter-Cyrillic-Sha : CyrShaShape
1313
glyph-block-import Symbol-Arrow : ArrowShape
@@ -126,6 +126,31 @@ glyph-block Symbol-Math-VAndCup : begin
126126
turned 'math/logic/equalOr' 0x2A62 'math/logic/andEqual' Middle SymbolMid
127127
turned 'math/logic/orEqual' 0x2A63 'math/logic/equalAnd' Middle SymbolMid
128128

129+
create-glyph 'wedgeMiddleStem' 0x2A5A : glyph-proc
130+
include : union
131+
WedgeShape OperTop OperBot [AdviceStroke 4]
132+
VBar.m Middle OperBot OperTop [AdviceStroke 4]
133+
134+
create-glyph 'veeMiddleStem' 0x2A5B : glyph-proc
135+
include : union
136+
VeeShape OperTop OperBot [AdviceStroke 4]
137+
VBar.m Middle OperBot OperTop [AdviceStroke 4]
138+
139+
create-glyph 'veeSlanted' 0x2A57 : glyph-proc
140+
include : union
141+
dispiro
142+
widths.lhs OperatorStroke
143+
flat SB OperTop [heading Downward]
144+
curl SB OperBot [heading Downward]
145+
dispiro
146+
widths.rhs OperatorStroke
147+
flat RightSB OperTop [heading Downward]
148+
curl (SB + [HSwToV Stroke]) OperBot [heading Downward]
149+
150+
turned 'wedgeSlanted' 0x2A58 'veeSlanted' Middle SymbolMid
151+
152+
# Cup
153+
129154
create-glyph 'cup' 0x222A : glyph-proc
130155
include : UShape [DivFrame 1] OperTop OperBot (stroke -- OperatorStroke)
131156

@@ -171,7 +196,7 @@ glyph-block Symbol-Math-VAndCup : begin
171196

172197
create-glyph 'doubleCup' 0x22D3 : glyph-proc
173198
local sw : AdviceStroke 6
174-
local gap : Math.max (Width / 8) (sw / 2)
199+
local gap : Math.min [Math.max (Width / 8) (sw / 2)] : (RightSB - SB - [HSwToV : 4 * sw]) / 3
175200
include : UShape [DivFrame 1] OperTop OperBot (stroke -- sw)
176201
include : UShape [DivFrame 1] OperTop OperBot
177202
stroke -- sw
@@ -230,6 +255,16 @@ glyph-block Symbol-Math-VAndCup : begin
230255
flat SB OperBot
231256
curl RightSB OperTop
232257

258+
create-glyph 'cupClosedSerifed' 0x2A4C : glyph-proc
259+
include : UShape [DivFrame 1] OperTop OperBot (stroke -- OperatorStroke)
260+
include : HBar.t SB RightSB OperTop OperatorStroke
261+
include : USerifs.Toothless [DivFrame 1] OperTop OperatorStroke
262+
263+
turned 'capClosedSerifed' 0x2A4D 'cupClosedSerifed' Middle SymbolMid
264+
265+
266+
# Square Cup
267+
233268
create-glyph 'squareCap' 0x2293 : glyph-proc
234269
include : PiShape [DivFrame 1] OperTop OperBot (shrinkRate -- 0) (fine -- OperatorStroke) (doSerif -- false)
235270

@@ -238,3 +273,12 @@ glyph-block Symbol-Math-VAndCup : begin
238273
create-glyph 'shuffleProduct' 0x29E2 : glyph-proc
239274
local df : include : DivFrame para.diversityM 3
240275
include : CyrShaShape df OperTop OperBot (fine -- OperatorStroke) (doSerif -- false)
276+
277+
create-glyph 'doubleSquareCap' 0x2A4E : glyph-proc
278+
local sw : AdviceStroke 6
279+
local gap : Math.min [Math.max (Width / 8) (sw / 2)] : (RightSB - SB - [HSwToV : 4 * sw]) / 3
280+
local shrinkRate : (sw + gap) / (RightSB - SB)
281+
include : PiShape [DivFrame 1] OperTop OperBot (fine -- sw) (shrinkRate -- 0) (fine -- sw) (doSerif -- false)
282+
include : PiShape [DivFrame 1] (OperTop - sw - gap) OperBot (fine -- sw) (shrinkRate -- shrinkRate) (endShrink -- shrinkRate) (doSerif -- false)
283+
284+
turned 'doubleSquareCup' 0x2A4F 'doubleSquareCap' Middle SymbolMid

0 commit comments

Comments
 (0)