Files
Iosevka/glyphs/symbol-math.ptl
T

1379 lines
51 KiB
Plaintext

###### Mathematical symbols
$$include '../meta/macros.ptl'
import [mix linreg clamp fallback] from '../support/utils'
import [designParameters] from '../meta/aesthetics'
glyph-module
glyph-block NotGlyphFn : begin
glyph-block-export notGlyph
define [notGlyph unicode oldid top bot prop shift newid]
create-glyph [fallback newid ('not' + oldid)] : glyph-construction
if unicode : assign-unicode unicode
include glyphs.(oldid)
include : dispiro
widths.center [adviceBlackness 4]
flat ([fallback shift 0] + [mix SB RIGHTSB [fallback prop 0.25]]) [fallback bot bgopBot]
curl ([fallback shift 0] + [mix RIGHTSB SB [fallback prop 0.25]]) [fallback top bgopTop]
define [notGlyph.right unicode oldid top bot prop shift]
notGlyph unicode oldid top bot prop (-OPERATORSTROKE * 0.5)
define [notGlyph.left unicode oldid top bot prop shift]
notGlyph unicode oldid top bot prop (OPERATORSTROKE * 0.5)
glyph-block Symbol-Math-Letter-Like : begin
glyph-block-import CommonShapes
glyph-block-import Overmarks
glyph-block-import LetterUnified-Basic : LambdaShape AMaskShape DeltaShape
sketch # micro
include glyphs.mu AS_BASE
if SLAB : if (!para.isItalic) : begin
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) DESCENDER JUT
tag-contour 'serifLB'
save 'micro' 0xB5
sketch # forall
include : LambdaShape CAP OPERATORSTROKE true
eject-contour 'serif'
include : intersection
AMaskShape CAP OPERATORSTROKE true
HBar 0 WIDTH (XH / 2) OPERATORSTROKE
include : FlipAround MIDDLE (CAP / 2)
save 'forall' 0x2200
sketch # exists
include : HBarTop (SB * 1.5 - O) RIGHTSB CAP OPERATORSTROKE
include : HBarBottom (SB * 1.5 - O) RIGHTSB 0 OPERATORSTROKE
include : HBar (SB * 1.5 - O) (RIGHTSB - HALFSTROKE) (CAP * 0.5) OPERATORSTROKE
include : VBarLeft (SB * 1.5) 0 CAP OPERATORSTROKE
include : FlipAround MIDDLE (CAP / 2)
save 'exists' 0x2203
sketch # emptyset
include : OShape CAP 0 SB RIGHTSB OPERATORSTROKE
local fine : OPERATORSTROKE / 2
include : dispiro
widths.center OPERATORSTROKE
flat (SB + O + fine) [mix CAP 0 1.05]
curl (RIGHTSB - O - fine) [mix 0 CAP 1.05]
save 'emptyset' 0x2205
sketch # increment
include MarkSet.capital
include : DeltaShape CAP OPERATORSTROKE true
save 'increment' 0x2206
turned 'nabla' 0x2207 'increment' MIDDLE (CAP / 2)
if [not recursive] : for-width-kinds WIDE-WIDTH-1 : do
local s : (RIGHTSB - SB - O * 4 + (MosaicWidth - WIDTH) * 0.5) / CAP
local df : Miniature
glyphs -- {'eight' 'rotetedpropto'}
crowd -- 4
scale -- s
slantAngle -- 0
unfair -- true
sketch # infty
set-width MosaicWidth
include df.eight
apply-transform : Translate (-(WIDTH / 2)) (-CAP / 2)
apply-transform : Rotate (Math.PI / 2)
apply-transform : Scale s
apply-transform : Translate (MosaicWidth / 2) symbolMid
apply-transform : Italify
refair currentGlyph
save [MangleName 'infty'] [MangleUnicode 0x221E]
sketch # propto
set-width MosaicWidth
include df.rotetedpropto
apply-transform : Translate (-(WIDTH / 2)) (-CAP / 2)
apply-transform : Rotate (Math.PI / 2)
apply-transform : Scale s
apply-transform : Translate (MosaicWidth / 2) symbolMid
apply-transform : Italify
refair currentGlyph
save [MangleName 'propto'] [MangleUnicode 0x221D]
sketch # partial
include MarkSet.b
include : OShape (CAP * 0.65) 0 SB RIGHTSB OPERATORSTROKE
include : dispiro
widths.lhs OPERATORSTROKE
flat (RIGHTSB - OX) SMALLSMOOTHA
curl (RIGHTSB - OX) (CAP - SMALLSMOOTHB)
hookend CAPO
g4 SB (CAP - HOOK)
save 'partial' 0x2202
glyph-block Symbol-Math-Frame-And-Geometry : begin
glyph-block-import CommonShapes
local sw GEOMETRYSTROKE
local kBox : 2 / 3
local leftBox : SB * kBox
local rightBox : WIDTH - SB * kBox
local radiusBox : (rightBox - leftBox) / 2
local topBox : symbolMid + radiusBox
local bottomBox : symbolMid - radiusBox
local kCircle : 2 / 3
local leftCircle : SB * kCircle
local rightCircle : WIDTH - SB * kCircle
local radiusCircle : (rightCircle - leftCircle) / 2
local radiusBig : (tackTop - tackBot) / 2
local leftBig : MIDDLE - radiusBig
local rightBig : MIDDLE + radiusBig
sketch # mathO
include : dispiro
widths.lhs GEOMETRYSTROKE
g4 MIDDLE (symbolMid + radiusCircle - O)
archv nothing 2
g4 (leftCircle + O) symbolMid
arcvh nothing 2
g4 MIDDLE (symbolMid - radiusCircle + O)
archv nothing 2
g4 (rightCircle - O) symbolMid
arcvh nothing 2
close
save 'mathO'
sketch # mathO-outline
include : spiro-outline
g4 MIDDLE (symbolMid + radiusCircle)
archv nothing 2
g4 (leftCircle) symbolMid
arcvh nothing 2
g4 MIDDLE (symbolMid - radiusCircle)
archv nothing 2
g4 (rightCircle) symbolMid
arcvh nothing 2
close
save 'mathOOutline'
sketch # mathOBig
include : dispiro
widths.lhs GEOMETRYSTROKE
g4 MIDDLE (symbolMid + radiusBig - O)
archv nothing 2
g4 (leftBig + O) symbolMid
arcvh nothing 2
g4 MIDDLE (symbolMid - radiusBig + O)
archv nothing 2
g4 (rightBig - O) symbolMid
arcvh nothing 2
close
save 'mathOBig'
sketch # mathO-outline
include : spiro-outline
g4 MIDDLE (symbolMid + radiusBig)
archv nothing 2
g4 (leftBig) symbolMid
arcvh nothing 2
g4 MIDDLE (symbolMid - radiusBig)
archv nothing 2
g4 (rightBig) symbolMid
arcvh nothing 2
close
save 'mathOOutlineBig'
sketch # mathBoxOutline
include : spiro-outline
corner leftBox topBox
corner leftBox bottomBox
corner rightBox bottomBox
corner rightBox topBox
save 'mathBoxOutline'
sketch # mathBox
include : intersection glyphs.mathBoxOutline : union
dispiro [widths.lhs sw] [flat leftBox topBox] [curl leftBox bottomBox]
dispiro [widths.lhs sw] [flat leftBox bottomBox] [curl rightBox bottomBox]
dispiro [widths.lhs sw] [flat rightBox bottomBox] [curl rightBox topBox]
dispiro [widths.lhs sw] [flat rightBox topBox] [curl leftBox topBox]
save 'mathBox'
do "Geometry"
sketch
include : intersection
spiro-outline
corner leftBox bottomBox
corner rightBox bottomBox
corner rightBox topBox
union
dispiro [widths.lhs sw] [flat leftBox bottomBox] [curl rightBox bottomBox]
dispiro [widths.lhs sw] [flat rightBox bottomBox] [curl rightBox topBox]
dispiro [widths.lhs sw] [flat rightBox topBox] [curl leftBox bottomBox]
save 'mathRightTriangle' 0x22BF
sketch
include : intersection
spiro-outline
corner leftBox bottomBox
corner rightBox bottomBox
corner rightBox topBox
union
dispiro [widths.lhs sw] [flat leftBox bottomBox] [curl rightBox bottomBox]
dispiro [widths.lhs sw] [flat rightBox topBox] [curl leftBox bottomBox]
save 'angle' 0x2220
sketch
include : intersection
spiro-outline
corner leftBox bottomBox
corner rightBox bottomBox
corner rightBox topBox
corner leftBox topBox
union
dispiro [widths.lhs sw] [flat leftBox bottomBox] [curl rightBox bottomBox]
dispiro [widths.lhs sw] [flat leftBox topBox] [curl leftBox bottomBox]
save 'rightAngle' 0x221F
glyph-block Symbol-Math-Arith : begin
glyph-block-import CommonShapes
glyph-block-export PlusShape
define [PlusShape left right s sw] : union
HBar left right symbolMid [fallback sw OPERATORSTROKE]
VBar (MIDDLE + [fallback s 0]) plusTop plusBot [fallback sw OPERATORSTROKE]
sketch # plus
include MarkSet.plus
include : PlusShape SB RIGHTSB
save 'plus' '+'
sketch # plus
include MarkSet.plus
include : PlusShape SB RIGHTSB 0 GEOMETRYSTROKE
save 'innerPlus'
sketch # minus
include MarkSet.plus
include : HBar SB RIGHTSB symbolMid OPERATORSTROKE
save 'minus' 0x2212
include : DotAt MIDDLE plusTop DOTRADIUS
save 'minusDot' 0x2238
sketch # colon-equal
include glyphs.'baselineDot'
include glyphs.'xhDot'
local sbSquash 0.5
local delta : Math.max 0 : WIDTH / 2 - DOTRADIUS - SB * sbSquash
apply-transform : Upright
apply-transform : Translate (+delta) (symbolMid - XH / 2)
apply-transform : Italify
include : HBar (SB * sbSquash) (RIGHTSB - DOTSIZE) symbolMid OPERATORSTROKE
save 'minusColon' 0x2239
sketch # innerMinus
include MarkSet.plus
include : HBar SB RIGHTSB symbolMid GEOMETRYSTROKE
save 'innerMinus'
sketch # plusminus
include MarkSet.plus
include : HBarBottom SB RIGHTSB 0 OPERATORSTROKE
include glyphs.plus
save 'plusminus' 0xB1
turned 'minusplus' 0x2213 'plusminus' MIDDLE symbolMid
sketch # multiply
include MarkSet.plus
local radius : (RIGHTSB - SB) / 2
include : dispiro
widths.center OPERATORSTROKE
flat (MIDDLE - radius) (symbolMid - radius)
curl (MIDDLE + radius) (symbolMid + radius)
save 'multiplyStroke1'
sketch # multiply
include MarkSet.plus
local radius : (RIGHTSB - SB) / 2
include : dispiro
widths.center OPERATORSTROKE
flat (MIDDLE + radius) (symbolMid - radius)
curl (MIDDLE - radius) (symbolMid + radius)
save 'multiplyStroke2'
sketch # multiply
include MarkSet.plus
local radius : (RIGHTSB - SB) / 2
include : dispiro
widths.center GEOMETRYSTROKE
flat (MIDDLE - radius) (symbolMid - radius)
curl (MIDDLE + radius) (symbolMid + radius)
save 'innerMultiplyStroke1'
sketch # multiply
include MarkSet.plus
local radius : (RIGHTSB - SB) / 2
include : dispiro
widths.center GEOMETRYSTROKE
flat (MIDDLE + radius) (symbolMid - radius)
curl (MIDDLE - radius) (symbolMid + radius)
save 'innerMultiplyStroke2'
sketch # multiply
include MarkSet.plus
include glyphs.multiplyStroke1
include glyphs.multiplyStroke2
save 'multiply' 0xD7
sketch # innerMultiply
include MarkSet.plus
include glyphs.innerMultiplyStroke1
include glyphs.innerMultiplyStroke2
save 'innerMultiply'
sketch # divide
include MarkSet.plus
include glyphs.minus
local radius : (RIGHTSB - SB) / 2
include : Ring (symbolMid + radius + DOTRADIUS) (symbolMid + radius - DOTRADIUS) (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
include : Ring (symbolMid - radius + DOTRADIUS) (symbolMid - radius - DOTRADIUS) (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
save 'divide' 0xF7
do
define fine : adviceBlackness 5.5
define radius : Math.max ((RIGHTSB - SB) / 12) (fine / 2)
define barOffset : fine * 1.5 + radius * 2
define dotCenterOffset : OX + fine + radius
sketch
include MarkSet.plus
include : union
HBar (SB + barOffset) (RIGHTSB - barOffset) symbolMid OPERATORSTROKE
DotAt (RIGHTSB - dotCenterOffset) symbolMid (radius + fine)
difference
DotAt (SB + dotCenterOffset) symbolMid (radius + fine)
DotAt (SB + dotCenterOffset) symbolMid radius
save 'originalOf' 0x22b6
sketch
include MarkSet.plus
include : union
HBar (SB + barOffset) (RIGHTSB - barOffset) symbolMid OPERATORSTROKE
DotAt (SB + dotCenterOffset) symbolMid (radius + fine)
difference
DotAt (RIGHTSB - dotCenterOffset) symbolMid (radius + fine)
DotAt (RIGHTSB - dotCenterOffset) symbolMid radius
save 'imageOf' 0x22b7
sketch
include MarkSet.plus
include : union
HBar SB (RIGHTSB - barOffset) symbolMid OPERATORSTROKE
difference
DotAt (RIGHTSB - dotCenterOffset) symbolMid (radius + fine)
DotAt (RIGHTSB - dotCenterOffset) symbolMid radius
save 'multimap' 0x22b8
glyph-block Symbol-Math-Dots-And-Colons : begin
glyph-block-import CommonShapes
local radius1 PERIODRADIUS
local radius : Math.min PERIODRADIUS (0.5 * [adviceBlackness 3.5] * PERIODSIZE / STROKE)
local left : mix 0 WIDTH (1 / 4)
local right : mix 0 WIDTH (3 / 4)
sketch
include : Ring (XH - O) (XH - radius * 2 + O) (MIDDLE - radius + O) (MIDDLE + radius - O) true
include : Ring (radius * 2 - O) O (left - radius + O) (left + radius - O) true
include : Ring (radius * 2 - O) O (right - radius + O) (right + radius - O) true
save 'therefore' 0x2234
sketch
include : Ring (XH - O) (XH - radius * 2 + O) (left - radius + O) (left + radius - O) true
include : Ring (XH - O) (XH - radius * 2 + O) (right - radius + O) (right + radius - O) true
include : Ring (radius * 2 - O) O (MIDDLE - radius + O) (MIDDLE + radius - O) true
save 'because' 0x2235
sketch
include : Ring (PERIODRADIUS * 2 - O) O (MIDDLE - PERIODRADIUS + O) (MIDDLE + PERIODRADIUS - O) true
include : Ring (XH - O) (XH - PERIODRADIUS * 2 + O) (MIDDLE - PERIODRADIUS + O) (MIDDLE + PERIODRADIUS - O) true
save 'mathcolon' 0x2236
sketch # coloncolon
include : Ring (radius * 2 - O) O (left - radius + O) (left + radius - O) true
include : Ring (radius * 2 - O) O (right - radius + O) (right + radius - O) true
include : Ring (XH - O) (XH - radius * 2 + O) (left - radius + O) (left + radius - O) true
include : Ring (XH - O) (XH - radius * 2 + O) (right - radius + O) (right + radius - O) true
save 'coloncolon' 0x2237
sketch # mathcdot
include : Ring (symbolMid + PERIODRADIUS - O) (symbolMid - PERIODRADIUS + O) (MIDDLE - PERIODRADIUS + O) (MIDDLE + PERIODRADIUS - O) true
save 'mathcdot'
composite 'mathAsterisk' glyphs.'opAsterisk.low' [into-unicode 0x2217]
glyph-block Symbol-Math-Circled : begin
glyph-block-import CommonShapes
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerPlus] [into-unicode 0x2295]
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerMinus] [into-unicode 0x2296]
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerMultiply] [into-unicode 0x2297]
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerMultiplyStroke1] [into-unicode 0x2298]
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.mathcdot] [into-unicode 0x2299]
composite glyphs.mathOBig [intersection glyphs.mathOOutlineBig glyphs.mathcdot] [into-unicode 0x2A00]
composite glyphs.mathOBig [intersection glyphs.mathOOutlineBig glyphs.innerPlus] [into-unicode 0x2A01]
composite glyphs.mathOBig [intersection glyphs.mathOOutlineBig glyphs.innerMultiply] [into-unicode 0x2A02]
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.'smallwhitecircle.hwid'] [into-unicode 0x229A]
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.mathAsterisk] [into-unicode 0x229B]
composite
begin glyphs.mathO
intersection
begin glyphs.mathOOutline
HBar (SB + GEOMETRYSTROKE) (RIGHTSB - GEOMETRYSTROKE) symbolMid GEOMETRYSTROKE
into-unicode 0x229D
local eqS : Math.min GEOMETRYSTROKE ((RIGHTSB - SB) / 8)
local eqD : Math.max eqS ((RIGHTSB - SB) / 6)
composite glyphs.mathO
intersection glyphs.mathOOutline : union
HBar (SB + eqS) (RIGHTSB - eqS) (symbolMid + eqD) eqS
HBar (SB + eqS) (RIGHTSB - eqS) (symbolMid - eqD) eqS
into-unicode 0x229C
glyph-block Symbol-Math-Boxed : begin
glyph-block-import CommonShapes
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.innerPlus] [into-unicode 0x229E]
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.innerMinus] [into-unicode 0x229F]
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.innerMultiply] [into-unicode 0x22A0]
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.mathcdot] [into-unicode 0x22A1]
glyph-block Symbol-Math-VAndCup : begin
glyph-block-import CommonShapes
glyph-block-import LetterUnified-Basic : UShape
glyph-block-import LetterUnified-Extended : PiShape
sketch # vee
include : dispiro
widths.center OPERATORSTROKE
flat SB operTop [heading DOWNWARD]
curl MIDDLE operBot [heading DOWNWARD]
include : dispiro
widths.center OPERATORSTROKE
flat RIGHTSB operTop [heading DOWNWARD]
curl MIDDLE operBot [heading DOWNWARD]
save 'vee' 0x2228
turned 'wedge' 0x2227 'vee' MIDDLE symbolMid
sketch # curlyVee
local fine : CTHIN * OPERATORSTROKE
include : dispiro
g4 SB operTop [widths.center OPERATORSTROKE]
straight.down.end (MIDDLE - OPERATORSTROKE / 2 * HVCONTRAST) operBot [widths.heading fine 0 DOWNWARD]
include : dispiro
widths.center OPERATORSTROKE
g4 RIGHTSB operTop [widths.center OPERATORSTROKE]
straight.down.end (MIDDLE + OPERATORSTROKE / 2 * HVCONTRAST) operBot [widths.heading 0 fine DOWNWARD]
save 'curlyVee' 0x22CE
turned 'curlyWedge' 0x22CF 'curlyVee' MIDDLE symbolMid
sketch # doubleVee
define sw : adviceBlackness 6
include : dispiro
widths.center sw
flat SB operTop [heading DOWNWARD]
curl MIDDLE operBot [heading DOWNWARD]
include : dispiro
widths.center sw
flat RIGHTSB operTop [heading DOWNWARD]
curl MIDDLE operBot [heading DOWNWARD]
define offsetRatio : 1 / 4
define bias : (RIGHTSB - SB) * offsetRatio
define a : dispiro
widths.center sw
flat (SB + bias) operTop [heading DOWNWARD]
curl (MIDDLE + bias) operBot [heading DOWNWARD]
define b : dispiro
widths.center sw
flat (RIGHTSB - bias) operTop [heading DOWNWARD]
curl (MIDDLE - bias) operBot [heading DOWNWARD]
include : union
intersection a b
difference
union a b
spiro-outline
corner 0 operBot
corner WIDTH operBot
corner WIDTH [mix operBot operTop (1 - 2 * offsetRatio)]
corner 0 [mix operBot operTop (1 - 2 * offsetRatio)]
save 'doubleVee' 0x2A54
turned 'doubleWedge' 0x2A53 'doubleVee' MIDDLE symbolMid
sketch # cup
include : UShape operTop operBot OPERATORSTROKE true
save 'cup' 0x222A
branch
include : DotAt MIDDLE (operBot + SMOOTH) [Math.min DOTRADIUS ((RIGHTSB - SB - OPERATORSTROKE * HVCONTRAST * 2) * (1 / 3))]
save 'cupDot' 0x228E
turned 'cap' 0x2229 'cup' MIDDLE symbolMid
turned 'capDot' 0x2A40 'cupDot' MIDDLE symbolMid
sketch # squareCap
include : PiShape operTop operBot (shrinkrate -- 0) (_fine -- OPERATORSTROKE) (div -- 1)
save 'squareCap' 0x2293
turned 'squareCup' 0x2294 'squareCap' MIDDLE symbolMid
glyph-block Symbol-Math-Logicals : begin
glyph-block-import CommonShapes
sketch # negate
include glyphs.minus
include : VBarRight RIGHTSB (symbolMid - (RIGHTSB - SB) * 0.55) symbolMid OPERATORSTROKE
save 'negate' 0xAC
local top tackTop
local bot tackBot
sketch # vdash
include MarkSet.tack
include : HBar SB RIGHTSB symbolMid OPERATORSTROKE
include : VBarLeft SB top bot OPERATORSTROKE
save 'vdash' 0x22A2
turned 'dashv' 0x22A3 'vdash' MIDDLE symbolMid
sketch # assert
include MarkSet.tack
local l : mix MIDDLE SB designParameters.logic_narrow_shrink
local r : mix MIDDLE RIGHTSB designParameters.logic_narrow_shrink
include : HBar l r symbolMid OPERATORSTROKE
include : VBarLeft l top bot OPERATORSTROKE
save 'assert' 0x22A6
sketch # models
include MarkSet.tack
local l : mix MIDDLE SB designParameters.logic_narrow_shrink
local r : mix MIDDLE RIGHTSB designParameters.logic_narrow_shrink
include : HBar l r [mix symbolMid top (1 / 3)] OPERATORSTROKE
include : HBar l r [mix symbolMid bot (1 / 3)] OPERATORSTROKE
include : VBarLeft l top bot OPERATORSTROKE
save 'models' 0x22A7
sketch # tautology
include MarkSet.tack
local l : mix MIDDLE SB 1
local r : mix MIDDLE RIGHTSB 1
include : HBar l r [mix symbolMid top (1 / 3)] OPERATORSTROKE
include : HBar l r [mix symbolMid bot (1 / 3)] OPERATORSTROKE
include : VBarLeft l top bot OPERATORSTROKE
save 'tautology' 0x22A8
sketch # top
include MarkSet.tack
include : HBarTop SB RIGHTSB top OPERATORSTROKE
include : VBar MIDDLE top bot OPERATORSTROKE
save 'top' 0x22A4
composite 'bot' glyphs.top [FlipAround MIDDLE symbolMid] [into-unicode 0x22A5]
sketch # topring
define mid : mix bot (top - OPERATORSTROKE / 2) 0.5
define w : (RIGHTSB - SB) * 0.4
define fine : Math.min (w / 2.5) [adviceBlackness 5]
include : HBarTop SB RIGHTSB top OPERATORSTROKE
include : VBar MIDDLE top (mid + w) OPERATORSTROKE
include : VBar MIDDLE (mid - w) bot OPERATORSTROKE
include : VBar MIDDLE (mid + w) (mid - w) fine
include : OShape (mid + w) (mid - w) (MIDDLE - w) (MIDDLE + w) fine
save 'topring' 0x2355
composite 'botring' glyphs.topring [FlipAround MIDDLE symbolMid] [into-unicode 0x234E]
sketch # perp
include MarkSet.tack
include : HBarBottom SB RIGHTSB 0 OPERATORSTROKE
include : VBar MIDDLE (symbolMid * 2) 0 OPERATORSTROKE
save 'perpendicular' 0x27C2
sketch # endOfProof
include : Rect tackTop tackBot SB RIGHTSB
save 'endOfProof' 0x220E
glyph-block Symbol-Math-Relation : begin
glyph-block-import CommonShapes
glyph-block-import Overmarks : TildeShape
glyph-block-export dH lessSlantness
glyph-block-export LessShape GreaterShape LigationLessShape LigationGreaterShape
glyph-block-export EqualShape EqualHole IdentShape IdentHole
define equalHalfSpace : (operTop - operBot) * 2 * designParameters.equal_wideness
define lessSlantness : (4 / 13) * (operTop - operBot) / (RIGHTSB - SB)
define dH : lessSlantness * (RIGHTSB - SB)
define lessEqDist : Math.max [adviceBlackness 4] (XH * 0.16)
define [EqualShape left right] : union
HBar left right (symbolMid + equalHalfSpace) OPERATORSTROKE
HBar left right (symbolMid - equalHalfSpace) OPERATORSTROKE
define [EqualHole x]
VBar x (symbolMid - equalHalfSpace) (symbolMid + equalHalfSpace) [adviceBlackness 6]
define [IdentShape left right] : union
HBar left right (symbolMid + equalHalfSpace * 1.5) OPERATORSTROKE
HBar left right symbolMid OPERATORSTROKE
HBar left right (symbolMid - equalHalfSpace * 1.5) OPERATORSTROKE
define [IdentHole x]
VBar x (symbolMid - equalHalfSpace * 1.5) (symbolMid + equalHalfSpace * 1.5) [adviceBlackness 6]
sketch # equal
include MarkSet.plus
include : EqualShape SB RIGHTSB
save 'equal' '='
branch
include : DotAt [mix SB RIGHTSB (1/6)] (symbolMid + equalHalfSpace * 2.5) DOTRADIUS
include : DotAt [mix SB RIGHTSB (5/6)] (symbolMid - equalHalfSpace * 2.5) DOTRADIUS
save 'twodotapproxeq' 0x2252
sketch # colon-equal
include glyphs.'baselineDot'
include glyphs.'xhDot'
local sbSquash 0.5
local delta : Math.max 0 : WIDTH / 2 - DOTRADIUS - SB * sbSquash
apply-transform : Upright
apply-transform : Translate (-delta) (symbolMid - XH / 2)
apply-transform : Italify
include : EqualShape (SB + DOTSIZE) (WIDTH - SB * sbSquash)
save 'colonEq' 0x2254
sketch # ident
include MarkSet.plus
include : IdentShape SB RIGHTSB
save 'ident' 0x2261
sketch # iiiident
include MarkSet.plus
include : HBar SB RIGHTSB (symbolMid + equalHalfSpace * 2.25) OPERATORSTROKE
include : HBar SB RIGHTSB (symbolMid + equalHalfSpace * 0.75) OPERATORSTROKE
include : HBar SB RIGHTSB (symbolMid - equalHalfSpace * 0.75) OPERATORSTROKE
include : HBar SB RIGHTSB (symbolMid - equalHalfSpace * 2.25) OPERATORSTROKE
save 'iiiident' 0x2263
define [LessGreaterExpansion top bot l r]
Math.sqrt : 1 + (top - bot) / (2 * (r - l)) * (top - bot) / (2 * (r - l))
define [LessMaskShape top bot l r] : spiro-outline
corner r top
corner r bot
corner l [mix bot top 0.5]
define [GreaterMaskShape top bot l r] : spiro-outline
corner l top
corner l bot
corner r [mix bot top 0.5]
define [LessShapeA top bot l r s p] : begin
define exp : LessGreaterExpansion top bot l r
define pp : fallback p 1
return : dispiro
widths.center s
flat [mix l r pp] [mix [mix top bot 0.5] top pp]
curl l [mix top bot 0.5] [widths.heading (s / 2 * exp) (s / 2 * exp) LEFTWARD]
define [LessShapeB top bot l r s p] : begin
define exp : LessGreaterExpansion top bot l r
define pp : fallback p 1
return : dispiro
widths.center s
flat [mix l r pp] [mix [mix top bot 0.5] bot pp]
curl l [mix top bot 0.5] [widths.heading (s / 2 * exp) (s / 2 * exp) LEFTWARD]
define [GreaterShapeA top bot l r s p] : begin
define exp : LessGreaterExpansion top bot l r
define pp : fallback p 1
return : dispiro
widths.center s
flat [mix r l pp] [mix [mix top bot 0.5] top pp]
curl r [mix top bot 0.5] [widths.heading (s / 2 * exp) (s / 2 * exp) RIGHTWARD]
define [GreaterShapeB top bot l r s p] : begin
define exp : LessGreaterExpansion top bot l r
define pp : fallback p 1
return : dispiro
widths.center s
flat [mix r l pp] [mix [mix top bot 0.5] bot pp]
curl r [mix top bot 0.5] [widths.heading (s / 2 * exp) (s / 2 * exp) RIGHTWARD]
define [LessShape top bot l r s] : union
LessShapeA top bot l r [fallback s OPERATORSTROKE]
LessShapeB top bot l r [fallback s OPERATORSTROKE]
define [LigationLessShape top bot l r s t gap] : union
intersection
Rect [mix bot top 2] [mix top bot 2] [mix r l 2] r
union
LessShapeA top bot l r [fallback s OPERATORSTROKE] 2
LessShapeB top bot l r [fallback s OPERATORSTROKE] 2
intersection
LessMaskShape top bot l r
difference
dispiro
widths.lhs [fallback t OPERATORSTROKE]
corner r bot
corner r top
Rect ([mix top bot 0.5] + gap / 2) ([mix top bot 0.5] - gap / 2) (l + O) (r - O)
define [GreaterShape top bot l r s] : union
GreaterShapeA top bot l r [fallback s OPERATORSTROKE]
GreaterShapeB top bot l r [fallback s OPERATORSTROKE]
define [LigationGreaterShape top bot l r s t gap] : union
intersection
Rect [mix bot top 2] [mix top bot 2] [mix l r 2] l
union
GreaterShapeA top bot l r [fallback s OPERATORSTROKE] 2
GreaterShapeB top bot l r [fallback s OPERATORSTROKE] 2
intersection
GreaterMaskShape top bot l r
difference
dispiro
widths.rhs [fallback t OPERATORSTROKE]
corner l bot
corner l top
Rect ([mix top bot 0.5] + gap / 2) ([mix top bot 0.5] - gap / 2) (l + O) (r - O)
# Sym parameters
local approxDist : equalHalfSpace * 1.75
local symMag : (operTop - symbolMid) * 0.17
define [symWave height mul] : TildeShape
ttop -- height + symMag * mul
tbot -- height - symMag * mul
leftEnd -- SB
rightEnd -- RIGHTSB
hs -- OPERATORSTROKE / 2
define [BarNegator symbolBottom dist] : begin
local swo : Math.max (OPERATORSTROKE * 1.5) (dist * 1.5)
return : dispiro
widths.center OPERATORSTROKE
flat (MIDDLE + dist) (symbolBottom - dist + swo) [heading DOWNWARD]
flat (MIDDLE - dist) (symbolBottom - dist - swo) [heading DOWNWARD]
sketch # less
include MarkSet.plus
include : LessShape (symbolMid + dH) (symbolMid - dH) SB RIGHTSB
save 'less' '<'
sketch # greater
include glyphs.less AS_BASE
include : FlipAround MIDDLE symbolMid
save 'greater' '>'
sketch # lesseq
include MarkSet.plus
include : LessShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist) SB RIGHTSB
branch
include : Upright
include : Translate 0 (-lessEqDist)
include : Italify
save 'less.narrow'
branch
include : HBar SB RIGHTSB (symbolMid - dH - lessEqDist) OPERATORSTROKE
save 'lesseq' 0x2264
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x2A87
branch
include : symWave (symbolMid - dH - lessEqDist) 1
save 'lesssym' 0x2272
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x22E6
branch
include : LessShapeB (symbolMid + dH - lessEqDist) (symbolMid - dH - lessEqDist) SB RIGHTSB OPERATORSTROKE
save 'lesseqslant' 0x2A7D
sketch # greatereq
include MarkSet.plus
include : GreaterShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist) SB RIGHTSB
branch
include : Upright
include : Translate 0 (-lessEqDist)
include : Italify
save 'greater.narrow'
branch
include : HBar SB RIGHTSB (symbolMid - dH - lessEqDist) OPERATORSTROKE
save 'greatereq' 0x2265
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x2A88
branch
include : symWave (symbolMid - dH - lessEqDist) 1
save 'greatersym' 0x2273
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x22E7
branch
include : GreaterShapeB (symbolMid + dH - lessEqDist) (symbolMid - dH - lessEqDist) SB RIGHTSB OPERATORSTROKE
save 'greatereqslant' 0x2A7E
# Ligation
sketch
define l : 0.3 * WIDTH
define r : 2 * WIDTH - l
define l2 : l - WIDTH
define r2 : r - WIDTH
include MarkSet.plus
branch
include : LessShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist) l r
save 'less.lig2'
branch
include : GreaterShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist) l r
save 'greater.lig2'
branch
include : HBar l2 r2 (symbolMid - dH - lessEqDist) OPERATORSTROKE
save 'eq.at-lteq.lig2.flat'
save 'eq.at-gteq.lig2.flat'
branch
include : LessShapeB (symbolMid + dH - lessEqDist) (symbolMid - dH - lessEqDist) l2 r2 OPERATORSTROKE
save 'eq.at-lteq.lig2.slanted'
branch
include : GreaterShapeB (symbolMid + dH - lessEqDist) (symbolMid - dH - lessEqDist) l2 r2 OPERATORSTROKE
save 'eq.at-gteq.lig2.slanted'
select-variant 'eq.at-lteq.lig2'
select-variant 'eq.at-gteq.lig2'
do
define lesslessSW : adviceBlackness 4
define lesslessSWO : Math.max lesslessSW lessEqDist
define llggHeight : dH * 2 + lessEqDist * 2
sketch
include MarkSet.plus
branch
include : GreaterShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist * 1.75) SB RIGHTSB lesslessSW
include : HBar SB RIGHTSB (symbolMid - dH + lessEqDist * 2 / 3) lesslessSW
include : HBar SB RIGHTSB (symbolMid - dH - lessEqDist) lesslessSW
save 'greatereqeq' 0x2267
include : dispiro
widths.center lesslessSW
flat (MIDDLE + lessEqDist) (symbolMid - dH + lessEqDist * 2 / 3 + lesslessSWO) [heading DOWNWARD]
flat (MIDDLE - lessEqDist) (symbolMid - dH - lessEqDist - lesslessSWO) [heading DOWNWARD]
save nothing 0x2269
branch
include : GreaterShape (symbolMid + llggHeight / 2) (symbolMid - llggHeight / 6 + lessEqDist) SB RIGHTSB lesslessSW
include : LessShape (symbolMid + llggHeight / 6 - lessEqDist) (symbolMid - llggHeight / 2) SB RIGHTSB lesslessSW
save 'greaterless' 0x2277
branch
include : GreaterShape (symbolMid + llggHeight / 2 + lessEqDist) (symbolMid - llggHeight / 6 + lessEqDist * 2) SB RIGHTSB lesslessSW
include : LessShape (symbolMid + llggHeight / 6 - lessEqDist * 2) (symbolMid - llggHeight / 2 - lessEqDist) SB RIGHTSB lesslessSW
include : HBar SB RIGHTSB (symbolMid) lesslessSW
save 'greatereqless' 0x22DB
sketch
include MarkSet.plus
branch
include : LessShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist * 1.75) SB RIGHTSB lesslessSW
include : HBar SB RIGHTSB (symbolMid - dH + lessEqDist * 2 / 3) lesslessSW
include : HBar SB RIGHTSB (symbolMid - dH - lessEqDist) lesslessSW
save 'lesseqeq' 0x2266
include : dispiro
widths.center lesslessSW
flat (MIDDLE + lessEqDist) (symbolMid - dH + lessEqDist * 2 / 3 + lesslessSWO) [heading DOWNWARD]
flat (MIDDLE - lessEqDist) (symbolMid - dH - lessEqDist - lesslessSWO) [heading DOWNWARD]
save nothing 0x2268
branch
include : LessShape (symbolMid + llggHeight / 2) (symbolMid - llggHeight / 6 + lessEqDist) SB RIGHTSB lesslessSW
include : GreaterShape (symbolMid + llggHeight / 6 - lessEqDist) (symbolMid - llggHeight / 2) SB RIGHTSB lesslessSW
save 'lessgreater' 0x2276
branch
include : LessShape (symbolMid + llggHeight / 2 + lessEqDist) (symbolMid - llggHeight / 6 + lessEqDist * 2) SB RIGHTSB lesslessSW
include : GreaterShape (symbolMid + llggHeight / 6 - lessEqDist * 2) (symbolMid - llggHeight / 2 - lessEqDist) SB RIGHTSB lesslessSW
include : HBar SB RIGHTSB (symbolMid) lesslessSW
save 'lesseqgreater' 0x22DA
sketch
include MarkSet.plus
include : LessShape (symbolMid + dH) (symbolMid - dH) (SB - lessEqDist / 2) (RIGHTSB - lessEqDist * 2) lesslessSW
include : LessShape (symbolMid + dH) (symbolMid - dH) (SB + lessEqDist * 2) (RIGHTSB + lessEqDist / 2) lesslessSW
save 'lessless' 0x226A
sketch
include MarkSet.plus
include : GreaterShape (symbolMid + dH) (symbolMid - dH) (SB - lessEqDist / 2) (RIGHTSB - lessEqDist * 2) lesslessSW
include : GreaterShape (symbolMid + dH) (symbolMid - dH) (SB + lessEqDist * 2) (RIGHTSB + lessEqDist / 2) lesslessSW
save 'greatergreater' 0x226B
define [PrecedesShapeA top bot l r s cth] : begin
local fine : s * cth
return : dispiro
widths.center s
g4 r top
straight.left.end l ([mix top bot 0.5] + s / 2) [widths.heading fine 0 LEFTWARD]
define [PrecedesShapeB top bot l r s cth] : begin
local fine : s * cth
return : dispiro
widths.center s
g4 r bot
straight.left.end l ([mix top bot 0.5] - s / 2) [widths.heading 0 fine LEFTWARD]
define [SucceedsShapeA top bot l r s cth] : begin
local fine : s * cth
return : dispiro
widths.center s
g4 l top
straight.right.end r ([mix top bot 0.5] + s / 2) [widths.heading 0 fine RIGHTWARD]
define [SucceedsShapeB top bot l r s cth] : begin
local fine : s * cth
return : dispiro
widths.center s
g4 l bot
straight.right.end r ([mix top bot 0.5] - s / 2) [widths.heading fine 0 RIGHTWARD]
define [PrecedesShape top bot l r s] : glyph-construction
include : PrecedesShapeA top bot l r [fallback s OPERATORSTROKE] CTHIN
include : PrecedesShapeB top bot l r [fallback s OPERATORSTROKE] CTHIN
define [SucceedsShape top bot l r s] : glyph-construction
include : SucceedsShapeA top bot l r [fallback s OPERATORSTROKE] CTHIN
include : SucceedsShapeB top bot l r [fallback s OPERATORSTROKE] CTHIN
sketch # precedes
include MarkSet.plus
include : PrecedesShape (symbolMid + dH) (symbolMid - dH) SB RIGHTSB
save 'precedes' 0x227a
sketch # succeeds
include MarkSet.plus
include : SucceedsShape (symbolMid + dH) (symbolMid - dH) SB RIGHTSB
save 'succeeds' 0x227b
sketch # precedeseq
include MarkSet.plus
include : PrecedesShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist) SB RIGHTSB
branch
include : Upright
include : Translate 0 (-lessEqDist)
include : Italify
save 'precedes.narrow'
branch
include : HBar SB RIGHTSB (symbolMid - dH - lessEqDist) OPERATORSTROKE
save 'precedeseq' 0x2AAF
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x2AB1
branch
include : symWave (symbolMid - dH - lessEqDist) 1
save 'precedessym' 0x227E
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x22E8
branch
include : PrecedesShapeB (symbolMid + dH - lessEqDist) (symbolMid - dH - lessEqDist) SB RIGHTSB OPERATORSTROKE 1
save 'precedeseqslant' 0x227C
sketch # succeedseq
include MarkSet.plus
include : SucceedsShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist) SB RIGHTSB
branch
include : Upright
include : Translate 0 (-lessEqDist)
include : Italify
save 'succeeds.narrow'
branch
include : HBar SB RIGHTSB (symbolMid - dH - lessEqDist) OPERATORSTROKE
save 'succeedseq' 0x2AB0
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x2AB2
branch
include : symWave (symbolMid - dH - lessEqDist) 1
save 'succeedssym' 0x227F
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x22E9
branch
include : SucceedsShapeB (symbolMid + dH - lessEqDist) (symbolMid - dH - lessEqDist) SB RIGHTSB OPERATORSTROKE 1
save 'succeedseqslant' 0x227D
sketch # sym
include MarkSet.plus
include : symWave symbolMid 1
save 'sym' 0x223C
sketch # flipsym
include MarkSet.plus
include : symWave symbolMid (-1)
save 'flipsym' 0x223D
vdual 'approx' 0x2248 'sym' approxDist
sketch # aapprox
include MarkSet.plus
include : symWave (symbolMid + approxDist) 1
include : symWave symbolMid 1
branch
include : symWave (symbolMid - approxDist) 1
save 'aapprox' 0x224B
branch
include : HBar SB RIGHTSB (symbolMid - approxDist) OPERATORSTROKE
save 'approxBar' 0x224A
sketch # symbar
include glyphs.sym AS_BASE
include : Upright
include : Translate 0 (approxDist / 2)
include : Italify
include : HBar SB RIGHTSB (symbolMid - approxDist / 2) OPERATORSTROKE
save 'symBar' 0x2243
sketch # symBarBar
local sympShift : approxDist + equalHalfSpace * 1.5
include glyphs.sym AS_BASE
include : Upright
include : Translate 0 (sympShift / 2)
include : Italify
include : HBar SB RIGHTSB (symbolMid - sympShift / 2 + equalHalfSpace * 1.5) OPERATORSTROKE
include : HBar SB RIGHTSB (symbolMid - sympShift / 2) OPERATORSTROKE
save 'symBarBar' 0x2245
sketch # flipsymBarBar
local sympShift : approxDist + equalHalfSpace * 1.5
include glyphs.flipsym AS_BASE
include : Upright
include : Translate 0 (sympShift / 2)
include : Italify
include : HBar SB RIGHTSB (symbolMid - sympShift / 2 + equalHalfSpace * 1.5) OPERATORSTROKE
include : HBar SB RIGHTSB (symbolMid - sympShift / 2) OPERATORSTROKE
save 'flipsymBarBar' 0x224C
define [SubsetShape top bot sw] : dispiro
widths.lhs [fallback sw OPERATORSTROKE]
flat RIGHTSB top [heading LEFTWARD]
curl (SB + (top - bot) / 2) top
archv
g4 SB [mix top bot 0.5]
arcvh
flat (SB + (top - bot) / 2) bot
curl RIGHTSB bot [heading RIGHTWARD]
define [PrefixShape top bot sw] : union
VBarLeft SB bot top [fallback sw OPERATORSTROKE]
HBarTop SB RIGHTSB top [fallback sw OPERATORSTROKE]
HBarBottom SB RIGHTSB bot [fallback sw OPERATORSTROKE]
define [SupsetShape top bot sw] : glyph-construction
include : SubsetShape top bot sw
include : FlipAround MIDDLE [mix top bot 0.5]
define [SuffixShape top bot sw] : glyph-construction
include : PrefixShape top bot sw
include : FlipAround MIDDLE [mix top bot 0.5]
sketch # subst
include MarkSet.plus
include : SubsetShape (symbolMid + dH) (symbolMid - dH)
save 'subst' 0x2282
sketch # supst
include MarkSet.plus
include : SupsetShape (symbolMid + dH) (symbolMid - dH)
save 'supst' 0x2283
sketch # substBar
include MarkSet.plus
include : SubsetShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist)
branch
include : HBar SB RIGHTSB (symbolMid - dH - lessEqDist) OPERATORSTROKE
save 'substBar' 0x2286
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x228A
branch
include : FlipAround MIDDLE (symbolMid + lessEqDist)
include : HBar SB RIGHTSB (symbolMid - dH - lessEqDist) OPERATORSTROKE
save 'supstBar' 0x2287
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x228B
sketch # element
include MarkSet.plus
include : SubsetShape (symbolMid + dH * 4 / 3) (symbolMid - dH * 4 / 3)
include : HBar (SB + HALFSTROKE) RIGHTSB symbolMid
save 'element' 0x2208
turned nothing 0x220B 'element' MIDDLE symbolMid
sketch # small element
include glyphs.subst AS_BASE
include : HBar (SB + HALFSTROKE) RIGHTSB symbolMid OPERATORSTROKE
save 'smallElement' 0x220A
turned nothing 0x220D 'smallElement' MIDDLE symbolMid
sketch # prefix
include MarkSet.plus
include : PrefixShape (symbolMid + dH) (symbolMid - dH)
save 'prefix' 0x228F
sketch # suffix
include MarkSet.plus
include : SuffixShape (symbolMid + dH) (symbolMid - dH)
save 'suffix' 0x2290
sketch # substBar
include MarkSet.plus
include : PrefixShape (symbolMid + dH + lessEqDist) (symbolMid - dH + lessEqDist)
branch
include : HBar SB RIGHTSB (symbolMid - dH - lessEqDist) OPERATORSTROKE
save 'prefixBar' 0x2291
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x22E4
branch
include : FlipAround MIDDLE (symbolMid + lessEqDist)
include : HBar SB RIGHTSB (symbolMid - dH - lessEqDist) OPERATORSTROKE
save 'suffixBar' 0x2292
include : BarNegator (symbolMid - dH) lessEqDist
save nothing 0x22E5
composite glyphs.element glyphs.underlineBelow [into-unicode 0x22F8]
glyph-block Symbol-Math-Complement : begin
glyph-block-import LetterUnified-Basic : CShape
sketch # complement
include : CShape operTop operBot OPERATORSTROKE
save 'complement' 0x2201
glyph-block Symbol-Math-Negation : begin
glyph-block-import NotGlyphFn : notGlyph
notGlyph 0x2260 'equal'
notGlyph 0x2262 'ident'
notGlyph 0x22AC 'vdash'
notGlyph 0x22AD 'tautology'
notGlyph.left 0x226E 'less'
notGlyph.right 0x226F 'greater'
notGlyph.left 0x2280 'precedes'
notGlyph.right 0x2281 'succeeds'
notGlyph 0x2241 'sym' [mix symbolMid bgopTop 0.75] [mix symbolMid bgopBot 0.75]
notGlyph 0x2244 'symBar' [mix symbolMid bgopTop 0.75] [mix symbolMid bgopBot 0.75]
notGlyph 0x2247 'symBarBar'
notGlyph 0x2249 'approx' [mix symbolMid bgopTop 0.75] [mix symbolMid bgopBot 0.75]
notGlyph.left 0x2284 'subst'
notGlyph.right 0x2285 'supst'
notGlyph.left 0x2288 'substBar'
notGlyph.right 0x2289 'supstBar'
notGlyph.left 0x22E2 'prefixBar'
notGlyph.right 0x22E3 'suffixBar'
notGlyph.left 0x2209 'element'
notGlyph.right 0x220C 'turnelement'
notGlyph.left 0x2270 'lesseq'
notGlyph.right 0x2271 'greatereq'
notGlyph.left 0x2274 'lesssym'
notGlyph.right 0x2275 'greatersym'
notGlyph.left 0x22E0 'precedeseqslant'
notGlyph.right 0x22E1 'succeedseqslant'
notGlyph 0x2278 'lessgreater'
notGlyph 0x2279 'greaterless'
notGlyph.right 0x2204 'exists' (CAP - DESCENDER / 2) (DESCENDER / 2) 0.4
glyph-block Symbol-Math-Large-Operators : for-width-kinds WIDE-WIDTH-1
glyph-block-import CommonShapes
glyph-block-import LetterUnified-Basic : LongSShape UShape
glyph-block-import LetterUnified-Extended : SigmaShape PiShape
define diversityLargeOperators : Math.max para.diversityM (MosaicWidth / WIDTH)
define df : DivFrame diversityLargeOperators 0 [if FMosaifWide diversityLargeOperators 1]
sketch # sum
set-width df.width
include : SigmaShape df bgopTop bgopBot OPERATORSTROKE
save [MangleName 'sum'] [MangleUnicode 0x2211]
sketch # product
set-width df.width
include : PiShape bgopTop bgopBot (shrinkrate -- 0) (_fine -- OPERATORSTROKE) (df -- df)
save [MangleName 'product'] [MangleUnicode 0x220F]
turned [MangleName 'coproduct'] [MangleUnicode 0x2210] [MangleName 'product'] df.middle symbolMid
sketch # Vee
set-width df.width
include : dispiro
widths.center OPERATORSTROKE
flat df.leftSB bgopTop
curl df.middle bgopBot [heading DOWNWARD]
include : dispiro
widths.center OPERATORSTROKE
flat df.rightSB bgopTop
curl df.middle bgopBot [heading DOWNWARD]
save [MangleName 'Vee'] [MangleUnicode 0x22C1]
turned [MangleName 'Wedge'] [MangleUnicode 0x22C0] [MangleName 'Vee'] df.middle symbolMid
sketch # Cup
set-width df.width
include : UShape df bgopTop bgopBot OPERATORSTROKE true
save [MangleName 'Cup'] [MangleUnicode 0x22C3]
turned [MangleName 'Cap'] [MangleUnicode 0x22C2] [MangleName 'Cup'] df.middle symbolMid
glyph-block Symbol-Math-Integrals : begin
glyph-block-import CommonShapes
glyph-block-import LetterUnified-Basic : LongSShape
sketch # integrate
include : LongSShape bgopTop bgopBot HOOK (HOOK * 0.75) OPERATORSTROKE
save 'integrate' 0x222B
dual 'doubleintegrate' 0x222C 'integrate' (0.5 * WIDTH)
sketch
define [shape] : LongSShape bgopTop bgopBot HOOK (HOOK * 0.75) [adviceBlackness 3.75]
include [shape]
include : Translate (-WIDTH / 3) 0
include [shape]
include : Translate (-WIDTH / 3) 0
include [shape]
include : Translate (WIDTH / 3) 0
save 'tripleintegrate' 0x222D
sketch # ringintegrate
include glyphs.integrate
include : OShape (symbolMid + (RIGHTSB - SB) / 2) (symbolMid - (RIGHTSB - SB) / 2) SB RIGHTSB OPERATORSTROKE
save 'ringintegrate' 0x222E
glyph-block Symbol-Math-APL : begin
glyph-block-import CommonShapes
glyph-block-import LetterUnified-Basic : UShape
define aplBoxInnerTop bgopTop
define aplBoxInnerBot bgopBot
define aplBoxSW : adviceBlackness 4.5
define aplBoxTop : mix symbolMid aplBoxInnerTop 1.1
define aplBoxBot : mix symbolMid aplBoxInnerBot 1.1
define aplBoxInnerScale : Math.min ((WIDTH - aplBoxSW * 1.75) / WIDTH) ((aplBoxInnerTop - aplBoxInnerBot) / (parenTop - parenBot))
sketch # aplsquare
local l [mix 0 SB (1 / 3)]
local r [mix WIDTH RIGHTSB (1 / 3)]
include : HBarTop l r aplBoxTop aplBoxSW
include : HBarBottom l r aplBoxBot aplBoxSW
include : VBarLeft l aplBoxTop aplBoxBot aplBoxSW
include : VBarRight r aplBoxTop aplBoxBot aplBoxSW
save 'aplsquare' 0x2395
sketch # aplsquareShadow
local l [mix 0 SB (1 / 3)]
local r [mix WIDTH RIGHTSB (1 / 3)]
start-from l aplBoxTop
line-to r aplBoxTop
line-to r aplBoxBot
line-to l aplBoxBot
save 'aplsquareShadow'
sketch # aplibar
local l [mix 0 SB (1 / 3)]
local r [mix WIDTH RIGHTSB (1 / 3)]
include : HBarTop l r operTop aplBoxSW
include : HBarBottom l r operBot aplBoxSW
include : VBar MIDDLE operTop operBot aplBoxSW
save 'aplibar' 0x2336
sketch # aplsquish
local l : mix SB RIGHTSB (1 / 8)
local r : mix RIGHTSB SB (1 / 8)
include : union
HBarTop l r aplBoxTop aplBoxSW
HBarBottom l r aplBoxBot aplBoxSW
VBarLeft l aplBoxTop aplBoxBot aplBoxSW
VBarRight r aplBoxTop aplBoxBot aplBoxSW
save 'aplsquish' 0x2337
sketch # aplbar
include : VBar MIDDLE aplBoxTop aplBoxBot aplBoxSW
save 'aplbar'
sketch # aplLongBar
include : VBar MIDDLE aplBoxTop aplBoxBot aplBoxSW
save 'aplLongBar'
sketch # aplminus
include : dispiro
widths.center aplBoxSW
flat RIGHTSB [mix operTop operBot 0.5]
curl SB [mix operTop operBot 0.5]
save 'aplminus'
sketch # aplslash
include : dispiro
widths.center aplBoxSW
flat RIGHTSB operTop
curl SB operBot
save 'aplslash'
sketch # aplbackslash
include : dispiro
widths.center aplBoxSW
flat SB operTop
curl RIGHTSB operBot
save 'aplbackslash'
define [aplBoxed shape] : Overlay glyphs.aplsquare : glyph-construction
include : intersection glyphs.aplsquareShadow shape
include : ScaleAround MIDDLE symbolMid aplBoxInnerScale
composite glyphs.space [aplBoxed glyphs.equal] [into-unicode 0x2338]
composite glyphs.space [aplBoxed glyphs.divide] [into-unicode 0x2339]
composite glyphs.space [aplBoxed glyphs.'whitediamond.hwid'] [into-unicode 0x233A]
composite glyphs.space [aplBoxed glyphs.'smallwhitecircle.hwid'] [into-unicode 0x233B]
composite glyphs.space [aplBoxed glyphs.'whitecircle.hwid'] [into-unicode 0x233C]
composite glyphs.space [Overlay glyphs.aplbar glyphs.'whitecircle.hwid'] [into-unicode 0x233D]
composite glyphs.'whitecircle.hwid' glyphs.'smallwhitecircle.hwid' [into-unicode 0x233E]
composite glyphs.space [Overlay glyphs.aplminus glyphs.slash] [into-unicode 0x233F]
composite glyphs.space [Overlay glyphs.aplminus glyphs.backslash] [into-unicode 0x2340]
composite glyphs.space [aplBoxed glyphs.slash] [into-unicode 0x2341]
composite glyphs.space [aplBoxed glyphs.backslash] [into-unicode 0x2342]
composite glyphs.space [aplBoxed glyphs.less] [into-unicode 0x2343]
composite glyphs.space [aplBoxed glyphs.greater] [into-unicode 0x2344]
composite glyphs.space [Overlay glyphs."arrowleft.hwid" glyphs.aplbar] [into-unicode 0x2345]
composite glyphs.space [Overlay glyphs."arrowright.hwid" glyphs.aplbar] [into-unicode 0x2346]
composite glyphs.space [aplBoxed glyphs."arrowleft.hwid"] [into-unicode 0x2347]
composite glyphs.space [aplBoxed glyphs."arrowright.hwid"] [into-unicode 0x2348]
composite glyphs.space [Overlay glyphs.aplbackslash glyphs.'whitecircle.hwid'] [into-unicode 0x2349]
composite glyphs.bot glyphs.underlineBelow [into-unicode 0x234A]
composite glyphs.space [Overlay glyphs.increment glyphs.aplLongBar] [into-unicode 0x234B]
composite glyphs.space [aplBoxed glyphs.vee] [into-unicode 0x234C]
composite glyphs.space [aplBoxed glyphs.increment] [into-unicode 0x234D]
composite glyphs.space [Overlay glyphs."arrowup.hwid" glyphs.minus] [into-unicode 0x234F]
composite glyphs.space [aplBoxed glyphs."arrowup.hwid"] [into-unicode 0x2350]
composite glyphs.top glyphs.overlineAbove [into-unicode 0x2351]
composite glyphs.space [Overlay glyphs.nabla glyphs.aplLongBar] [into-unicode 0x2352]
composite glyphs.space [aplBoxed glyphs.wedge] [into-unicode 0x2353]
composite glyphs.space [aplBoxed glyphs.nabla] [into-unicode 0x2354]
composite glyphs.space [Overlay glyphs."arrowdown.hwid" glyphs.minus] [into-unicode 0x2356]
composite glyphs.space [aplBoxed glyphs."arrowdown.hwid"] [into-unicode 0x2357]
composite glyphs.singleQuote MarkSet.plus glyphs.underlineBelow [into-unicode 0x2358]
composite glyphs.increment glyphs.underlineBelow [into-unicode 0x2359]
composite glyphs.'whitediamond.hwid' MarkSet.plus glyphs.underlineBelow [into-unicode 0x235A]
composite glyphs.'smallwhitecircle.hwid' MarkSet.plus glyphs.underlineBelow [into-unicode 0x235B]
composite glyphs.'whitecircle.hwid' MarkSet.plus glyphs.underlineBelow [into-unicode 0x235C]
composite
begin glyphs.'smallwhitecircle.hwid'
ScaleAround MIDDLE symbolMid 0.75
Realign MIDDLE symbolMid MIDDLE (operBot + SMOOTH)
UShape operTop operBot [adviceBlackness 5] true
FlipAround MIDDLE symbolMid
into-unicode 0x235D
composite glyphs.space [aplBoxed glyphs.singleQuote] [into-unicode 0x235E]
composite glyphs.space [intersection glyphs.mathOOutline glyphs.'opAsterisk.low'] glyphs.mathO [into-unicode 0x235F]
composite glyphs.space [aplBoxed : composite glyphs.colon [Realign MIDDLE (XH/2) MIDDLE symbolMid]] [into-unicode 0x2360]
composite glyphs.top glyphs.dieresisAbove [into-unicode 0x2361]
composite glyphs.nabla glyphs.dieresisAbove [into-unicode 0x2362]
composite glyphs.'asterisk.low' glyphs.dieresisAbove [into-unicode 0x2363]
composite glyphs.'smallwhitecircle.hwid' MarkSet.plus glyphs.dieresisAbove [into-unicode 0x2364]
composite glyphs.'whitecircle.hwid' MarkSet.plus glyphs.dieresisAbove [into-unicode 0x2365]
composite glyphs.space [Overlay glyphs.cup glyphs.aplbar] [into-unicode 0x2366]
composite glyphs.space [Overlay glyphs.subst glyphs.aplbar] [into-unicode 0x2367]
composite glyphs.'asciitilde.low' glyphs.dieresisAbove [into-unicode 0x2368]
composite glyphs.'greater.narrow' glyphs.dieresisAbove [into-unicode 0x2369]
composite glyphs.minus glyphs.comma [into-unicode 0x236A]
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.nabla] [into-unicode 0x236B]
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.'zero.lnum.unslashed'] [into-unicode 0x236C]
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.bar] [into-unicode 0x236D]
composite glyphs.space [Overlay glyphs.semicolon glyphs."underscore.belowBaseline"] [into-unicode 0x236E]
composite glyphs.space [aplBoxed glyphs.notequal] [into-unicode 0x236F]
composite glyphs.space [aplBoxed glyphs.question] [into-unicode 0x2370]
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.vee] [into-unicode 0x2371]
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.wedge] [into-unicode 0x2372]
alias 'apliota' 0x2373 'iota'
alias 'aplrho' 0x2374 'rho'
alias 'aplomega' 0x2375 'omega'
composite glyphs.alpha glyphs.underlineBelow [into-unicode 0x2376]
composite glyphs.smallElement glyphs.underlineBelow [into-unicode 0x2377]
composite glyphs.iota glyphs.underlineBelow [into-unicode 0x2378]
composite glyphs.omega glyphs.underlineBelow [into-unicode 0x2379]
alias 'aplalpha' 0x237A 'alpha'
glyph-block Symbol-Math-Other : begin
glyph-block-import CommonShapes : alias turned
glyph-block-import NotGlyphFn : notGlyph
alias 'mathbullet' 0x2219 'bullet'
alias 'mathbar' 0x2223 'bar'
notGlyph 0x2224 'mathbar' [mix symbolMid bgopTop 0.5] [mix symbolMid bgopBot 0.5] 0.1
notGlyph 0x2226 'parallel' [mix symbolMid bgopTop 0.5] [mix symbolMid bgopBot 0.5] 0
alias 'mathsmallcircle' 0x2218 'smallwhitecircle.hwid'
alias 'whiteDiamondOperator' 0x22C4 'whitediamond.hwid'
alias 'mathstar' 0x22C6 'blackstar.hwid'
turned 'amalg' 0x2A3F 'Pi' MIDDLE (CAP / 2)
turned 'turnAmpersand' 0x214B 'ampersand' MIDDLE (CAP / 2)
turned nothing 0x22DC 'greatereq' MIDDLE symbolMid
turned nothing 0x22DD 'lesseq' MIDDLE symbolMid
turned nothing 0x22DE 'succeedseqslant' MIDDLE symbolMid
turned nothing 0x22DF 'precedeseqslant' MIDDLE symbolMid
sketch # sqrt
include : dispiro
widths.center OPERATORSTROKE
flat SB [mix parenBot parenTop 0.45]
curl MIDDLE parenBot [heading DOWNWARD]
include : dispiro
widths.center OPERATORSTROKE
flat WIDTH parenTop
curl MIDDLE parenBot [heading DOWNWARD]
save 'sqrt' 0x221A