Symbols: Further Agda high-frequency symbol support

This commit is contained in:
Belleve Invis 2020-01-22 00:40:24 -08:00
parent df3bf928ac
commit 3103278e23
13 changed files with 758 additions and 263 deletions

View file

@ -2,4 +2,4 @@
* Make curly `k` under Slab variants look more different than the straight ones.
* Fixed minor stroke overflow on `A`.
* Fix O-hook connection.
* Add symbols for `≺`, `≻`, `⊏`, `⊐`, etc.
* Add more math symbols (`≺`, `≻`, `⊏`, `⊐`, etc.) for Agda.

View file

@ -179,21 +179,6 @@ export as build : define [buildFont para recursive recursiveCodes] : begin
assignFontNames para metrics font
setFontMetrics para metrics font
# Necessary notdef, .null and nonmarkingreturn glyph
sketch # .notdef
start-from SB 0
line-to SB CAP
line-to RIGHTSB CAP
line-to RIGHTSB 0
start-from (SB + STROKE) STROKE
line-to (RIGHTSB - STROKE) STROKE
line-to (RIGHTSB - STROKE) (CAP - STROKE)
line-to (SB + STROKE) (CAP - STROKE)
set currentGlyph.cmpPriority (9999)
save '.notdef'
sketch # .null
set-width 0
set currentGlyph.cmpPriority (9998)
@ -204,7 +189,6 @@ export as build : define [buildFont para recursive recursiveCodes] : begin
set currentGlyph.cmpPriority (-1)
save 'nonmarkingreturn' 0x000D
# Space
sketch # space
local df : DivFrame para.diversityF
set-width df.width

View file

@ -48,7 +48,7 @@ export : define [apply] : begin
set-width 0
return lg
define [CircCrowd digits width] : 5 + [AdjustDigitCount digits width]
define [CircCrowd digits width] : 2 + 2 * [AdjustDigitCount digits width]
define [CircScale digits width] : 0.65 / [Math.pow [AdjustDigitCount digits width] 0.5]
define [circleDimens digits dscale w m] : begin
@ -74,10 +74,11 @@ export : define [apply] : begin
define [CircledMiniatureFont digits width records] : begin
local pendingGlyphs : records.map : [record] => record.1
return : Miniature
glyphs -- [pendingGlyphs.reduce : [a b] => [a.concat b]]
crowd -- [CircCrowd digits width]
scale -- [CircScale digits width]
unfair -- true
glyphs -- [pendingGlyphs.reduce : [a b] => [a.concat b]]
crowd -- [CircCrowd digits width]
scale -- [CircScale digits width]
unfair -- true
sbscale -- 1
define [CircName prefix digits parts suffix] : suggestName : prefix + '-' + digits + '-' + [parts.join '_'] + '.' + suffix
@ -183,20 +184,41 @@ export : define [apply] : begin
define pscale : linreg WIDTH 0.6 UPM 0.75 width
define sw0 : [EnclosureStrokeScale dscale digits width] * [adviceBlackness [BraceCrowd digits width]] / [BraceScale digits width]
define sw : Math.min STROKE sw0
define l : [Math.max (SB + O * 3) (width / 2 - CAP / 2 * dscale - sw0 * 2.5)] + OX
define l : Math.max (SB + O * 3) (width / 2 - [Math.max (WIDTH * digits) CAP] / 2)
define r : width - l
return : object width sw dscale pscale l r
define [createBracedGlyphs digits records] : begin
foreach {suffix ww} [items-of circleWidthClasses] : do
local pendingGlyphs : records.map : [record] => record.1
local miniatureFont : Miniature
define pendingGlyphs : records.map : [record] => record.1
define miniatureFont : Miniature
glyphs -- [pendingGlyphs.reduce : [a b] => [a.concat b]]
crowd -- [BraceCrowd digits ww]
scale -- [BraceScale digits ww]
sbscale -- 1
unfair -- true
define gnb : CircName '.braced-brace' digits {} suffix
define braceGlyph : create-glyph gnb : glyph-construction
define [object width dscale pscale sw l r] : bracedDottdeDimens digits ww
local s : TANSLANT * symbolMid / 2
set-width width
include : dispiro
widths.lhs sw
g4 ([mix l r 0.15] - s) (parenTop * pscale)
g4.down.mid (l - s + O) (symbolMid * pscale)
g4 ([mix l r 0.15] - s) (parenBot * pscale)
include : dispiro
widths.rhs sw
g4 ([mix r l 0.15] + s) (parenTop * pscale)
g4.down.mid (r + s - O) (symbolMid * pscale)
g4 ([mix r l 0.15] + s) (parenBot * pscale)
include : Upright
include : Translate 0 (symbolMid - symbolMid * pscale)
include : Italify
foreach {unicode parts w bal baly} [items-of records] : do
define [object width dscale pscale sw l r] : bracedDottdeDimens digits ww
local gn : CircName 'braced' digits parts suffix
@ -227,31 +249,16 @@ export : define [apply] : begin
if bal : set shift : CAP / 2 - [mix baly gMiddleY bal]
: else : set shift : CAP / 2 - gMiddleY
apply-transform : Translate (width / 2) (symbolMid * pscale - (CAP / 2 - shift) * dscale)
apply-transform : Translate (width / 2) (symbolMid - (CAP / 2 - shift) * dscale)
apply-transform : Italify
set currentGlyph.cmpPriority 11
refair currentGlyph
set-width 0
sketch
local s : TANSLANT * symbolMid
set-width width
include lg
include : dispiro
widths.lhs sw
g4 ([mix l r 0.15] - s) (parenTop * pscale)
g4.down.mid (l - s + O) (symbolMid * pscale)
g4 ([mix l r 0.15] - s) (parenBot * pscale)
include : dispiro
widths.rhs sw
g4 ([mix r l 0.15] + s) (parenTop * pscale)
g4.down.mid (r + s - O) (symbolMid * pscale)
g4 ([mix r l 0.15] + s) (parenBot * pscale)
include : Upright
include : Translate 0 (symbolMid - symbolMid * pscale)
include : Italify
include braceGlyph
if (w == ww) : save gn unicode
: else : save gn
@ -381,7 +388,6 @@ export : define [apply] : begin
if [not recursive] : do "Single-digit braced"
local compositions {}
compositions.push { null {'space'} FULLWIDTH1 }
foreach [j : range 1 till 9] : compositions.push : list
0x2474 + j - 1
digitGlyphNames j
@ -392,7 +398,6 @@ export : define [apply] : begin
if [not recursive] : do "Double-digit braced"
local compositions {}
compositions.push { null {'space'} FULLWIDTH1 }
foreach [j : range 10 till 20] : compositions.push : list
0x2474 + j - 1
digitGlyphNames j

View file

@ -124,7 +124,7 @@ export : define [apply] : begin
local halfBarWidth : headLen / 3
local headWidth : halfBarWidth * 2
local fine : Math.min [adviceBlackness 5] (halfBarWidth * 0.4)
local fine : Math.min [adviceBlackness 5] (halfBarWidth * 0.6)
local mag : Math.hypot (y2 - y1) (x2 - x1)
local p : (mag - fine) / mag
local p2 : (mag - fine * [Math.sqrt 13] / 2) / mag
@ -751,13 +751,13 @@ export : define [apply] : begin
save [MangleName 'bigblackcircle'] [MangleUnicode 0x2B24]
let
: configurations : list
: cfg : list
* {.sides 5 .skip 2 .name 'blackstar' .unicode 0x2605 .overflow 1.1 .phase 0}
* {.sides 5 .skip 1 .name 'blackpentagon' .unicode 0x2B1F .overflow 1.05 .phase 0}
* {.sides 6 .skip 1 .name 'blackhexagon' .unicode 0x2B22 .overflow 1.05 .phase 0}
* {.sides 5 .skip 1 .name 'rhblackpentagon' .unicode 0x2B53 .overflow 1.05 .phase (-Math.PI / 2)}
* {.sides 6 .skip 1 .name 'hblackhexagon' .unicode 0x2B23 .overflow 1.05 .phase (Math.PI / 2)}
: foreach [{.sides sides .skip skip .name name .unicode unicode .overflow overflow .phase phase} : items-of configurations] : sketch
: foreach [[object sides skip name unicode overflow phase] : items-of cfg] : sketch
include markset.plus
foreach [j : range 0 sides] : begin
local angle : 2 * Math.PI * j * skip / sides + phase
@ -768,6 +768,21 @@ export : define [apply] : begin
include FullWidthify
save [MangleName name] [MangleUnicode unicode]
let
: cfg : list
* {.sides 6 .skip 1 .name 'SixPointedBlackStar' .unicode 0x2736 .overflow 1.05 .phase 0}
: foreach [[object sides skip name unicode overflow phase] : items-of cfg] : sketch
include markset.plus
foreach [j : range 0 (2 * sides)] : begin
local angle : Math.PI * j * skip / sides + phase
local mag : [if (j % 2) 0.5 1.0] * overflow
currentGlyph.([if j 'line-to' 'start-from'])
mix left right (0.5 - 0.5 * mag * [Math.sin angle])
symbolMid + squareRadius * mag * [Math.cos angle]
save [MangleName "hw\(name)"]
include FullWidthify
save [MangleName name] [MangleUnicode unicode]
sketch # dottedcircle
local n 12
local fine : adviceBlackness 10

View file

@ -278,8 +278,8 @@ export : define [apply] : begin
save 'mathBeth' 0x2136
do "Blackboard Bolds ========================================================================"
define bbs : adviceBlackness 8
define bbd : WIDTH / 5.5
define bbs : adviceBlackness 6
define bbd : clamp (WIDTH / 5.5) (WIDTH / 4) (bbs * 2.5)
sketch # bbN
include : VBarLeft SB 0 CAP bbs
@ -311,6 +311,17 @@ export : define [apply] : begin
widths.center bbs
corner (SB + bbd) (bbs / 2)
corner RIGHTSB (CAP - (bbs / 2))
include : intersection
union
VBarRight RIGHTSB (CAP - bbs * 2) CAP bbs
VBarLeft SB 0 (bbs * 2) bbs
spiro-outline
corner SB (bbs / 2)
corner (RIGHTSB - bbd) (CAP - bbs / 2)
corner RIGHTSB (CAP - (bbs / 2))
corner (SB + bbd) (bbs / 2)
save 'bbZ' 0x2124
sketch # bbC
@ -372,7 +383,7 @@ export : define [apply] : begin
VBar (RIGHTSB - bbd) 0 CAP bbs
define terminalX : MIDDLE + HOOKX
define tailDeltaX : bbd / 2 + bbs / 4 * HVCONTRAST
define tailDeltaX : bbd / 2 - bbs / 8 * HVCONTRAST
define qTerminalY : bbs - HOOK - bbd / 4
define [QTail x] : dispiro
widths.center bbs

View file

@ -6,6 +6,9 @@ import [designParameters] from '../meta/aesthetics'
export : define [apply] : begin
glyph-module-entry commonShapes overmarks letterBasic letterExt
# Equation parameters
do "Letter-like"
sketch # micro
include glyphs.mu AS_BASE
@ -95,54 +98,109 @@ export : define [apply] : begin
do "Frames"
local sw GEOMETRYSTROKE
local k : 2 / 3
local top : symbolMid + (RIGHTSB - SB) * 0.5 + sw * k
local bottom : symbolMid - (RIGHTSB - SB) * 0.5 - sw * k
local left : SB - sw * k
local right : RIGHTSB + sw * k
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 glyphs.'whitecircle.hwid'
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 glyphs.'blackcircleO.hwid'
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 left top
corner left bottom
corner right bottom
corner right top
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 left top] [curl left bottom]
dispiro [widths.lhs sw] [flat left bottom] [curl right bottom]
dispiro [widths.lhs sw] [flat right bottom] [curl right top]
dispiro [widths.lhs sw] [flat right top] [curl left top]
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 left bottom
corner right bottom
corner right top
corner leftBox bottomBox
corner rightBox bottomBox
corner rightBox topBox
union
dispiro [widths.lhs sw] [flat left bottom] [curl right bottom]
dispiro [widths.lhs sw] [flat right bottom] [curl right top]
dispiro [widths.lhs sw] [flat right top] [curl left bottom]
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 left bottom
corner right bottom
corner right top
corner leftBox bottomBox
corner rightBox bottomBox
corner rightBox topBox
union
dispiro [widths.lhs sw] [flat left bottom] [curl right bottom]
dispiro [widths.lhs sw] [flat right top] [curl left bottom]
dispiro [widths.lhs sw] [flat leftBox bottomBox] [curl rightBox bottomBox]
dispiro [widths.lhs sw] [flat rightBox topBox] [curl leftBox bottomBox]
save 'angle' 0x2220
do "Arith"
@ -194,6 +252,20 @@ export : define [apply] : begin
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
@ -259,105 +331,38 @@ export : define [apply] : begin
save 'divide' 0xF7
local equalHalfSpace : (operTop - operBot) * 2 * designParameters.equal_wideness
do "Equality"
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
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 + PERIODSIZE) (WIDTH - SB * sbSquash)
save 'colonEq' 0x2254
# Ligation glyphs
sketch # equal.fc
include markset.plus
include : difference
EqualShape SB (WIDTH - O)
EqualHole WIDTH
save 'equal.fc'
sketch # equal.cf
include markset.plus
include : difference
EqualShape O RIGHTSB
EqualHole 0
save 'equal.cf'
sketch # equal.jf
include markset.plus
include : difference
EqualShape (RIGHTSB - WIDTH + O) RIGHTSB
EqualHole 0
save 'equal.jf'
sketch # equal.cc
include markset.plus
include : difference
EqualShape O (WIDTH - O)
union
EqualHole 0
EqualHole WIDTH
save 'equal.cc'
sketch # ident.fc
include markset.plus
include : difference
IdentShape SB (WIDTH - O)
IdentHole WIDTH
save 'ident.fc'
sketch # ident.cf
include markset.plus
include : difference
IdentShape O RIGHTSB
IdentHole 0
save 'ident.cf'
sketch # ident.jf
include markset.plus
include : difference
IdentShape (RIGHTSB - WIDTH + O) RIGHTSB
IdentHole 0
save 'ident.jf'
sketch # ident.cc
include markset.plus
include : difference
IdentShape O (WIDTH - O)
union
IdentHole 0
IdentHole WIDTH
save 'ident.cc'
do "Dots and Colon-likes"
local radius1 PERIODRADIUS
@ -402,6 +407,9 @@ export : define [apply] : begin
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
@ -439,6 +447,19 @@ export : define [apply] : begin
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
@ -489,7 +510,6 @@ export : define [apply] : begin
save 'squareCap' 0x2293
turned 'squareCup' 0x2294 'squareCap' MIDDLE symbolMid
### Logicals
do "Logicals"
sketch # negate
include glyphs.minus
@ -558,12 +578,125 @@ export : define [apply] : begin
include : Rect tackTop tackBot SB RIGHTSB
save 'endOfProof' 0x220E
do "Comparison"
# Less and Greater
do "Relation"
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
# Ligation glyphs
sketch # equal.fc
include markset.plus
include : difference
EqualShape SB (WIDTH - O)
EqualHole WIDTH
save 'equal.fc'
sketch # equal.cf
include markset.plus
include : difference
EqualShape O RIGHTSB
EqualHole 0
save 'equal.cf'
sketch # equal.jf
include markset.plus
include : difference
EqualShape (RIGHTSB - WIDTH + O) RIGHTSB
EqualHole 0
save 'equal.jf'
sketch # equal.cc
include markset.plus
include : difference
EqualShape O (WIDTH - O)
union
EqualHole 0
EqualHole WIDTH
save 'equal.cc'
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
sketch # ident.fc
include markset.plus
include : difference
IdentShape SB (WIDTH - O)
IdentHole WIDTH
save 'ident.fc'
sketch # ident.cf
include markset.plus
include : difference
IdentShape O RIGHTSB
IdentHole 0
save 'ident.cf'
sketch # ident.jf
include markset.plus
include : difference
IdentShape (RIGHTSB - WIDTH + O) RIGHTSB
IdentHole 0
save 'ident.jf'
sketch # ident.cc
include markset.plus
include : difference
IdentShape O (WIDTH - O)
union
IdentHole 0
IdentHole WIDTH
save 'ident.cc'
define [LessShapeA top bot l r s] : begin
local exp : Math.sqrt : 1 + (top - bot) / (2 * (r - l)) * (top - bot) / (2 * (r - l))
return : dispiro
@ -856,22 +989,8 @@ export : define [apply] : begin
include : symWave symbolMid (-1)
save 'flipsym' 0x223D
sketch # ident
include markset.plus
include : HBar SB RIGHTSB (symbolMid + equalHalfSpace * 1.5) OPERATORSTROKE
include : HBar SB RIGHTSB symbolMid OPERATORSTROKE
include : HBar SB RIGHTSB (symbolMid - equalHalfSpace * 1.5) OPERATORSTROKE
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
vdual 'approx' 0x2248 'sym' approxDist
sketch # aapprox
include markset.plus
include : symWave (symbolMid + approxDist) 1
@ -882,6 +1001,7 @@ export : define [apply] : begin
branch
include : HBar SB RIGHTSB (symbolMid - approxDist) OPERATORSTROKE
save 'approxBar' 0x224A
sketch # symbar
include glyphs.sym AS_BASE
include : Upright
@ -1251,7 +1371,6 @@ export : define [apply] : begin
alias 'mathbullet' 0x2219 'bullet'
alias 'mathbar' 0x2223 'bar'
notGlyph 0x2224 'mathbar' [mix symbolMid bgopTop 0.5] [mix symbolMid bgopBot 0.5] 0.1
dual 'parallel' 0x2225 'bar' (WIDTH * 0.35)
notGlyph 0x2226 'parallel' [mix symbolMid bgopTop 0.5] [mix symbolMid bgopBot 0.5] 0
alias 'mathsmallcircle' 0x2218 'smallwhitecircle.hwid'
alias 'whiteDiamondOperator' 0x22C4 'whitediamond.hwid'

View file

@ -295,7 +295,7 @@ export : define [apply] : begin
include : Shade 8 FillMedium : PatternPolygon22 bits
save [BEGlyphName unicode] [MangleUnicode unicode]
define [InverseMediumShade unicode bits coBits] : sketch
define [InverseMediumShade unicode bits] : sketch
set-width MosaicWidth
include : Shade (-8) (1 - FillMedium) : PatternPolygon22 bits
include : difference
@ -744,3 +744,14 @@ export : define [apply] : begin
include glyphs.[MangleName 'pwlSlashBottomLeft']
include : FlipAround (MosaicWidth / 2) pwlMid
save [MangleName 'pwlSlashTopRight'] [MangleUnicode 0xE0BF]
sketch # .notdef
include : union
intersection
glyph-construction : include glyphs.'be2592.hwid'
Rect CAP 0 SB RIGHTSB
difference
Rect CAP 0 SB RIGHTSB
Rect (CAP - STROKE) (0 + STROKE) (SB + STROKE) (RIGHTSB - STROKE)
set currentGlyph.cmpPriority (9999)
save '.notdef'

View file

@ -216,8 +216,8 @@ export : define [apply] : begin
local nsBot pictBot
local fine : adviceBlackness 3.5
local fine2 : adviceBlackness 4
local l : SB - fine / 2
local r : RIGHTSB + fine / 2
local l : SB - fine * 0
local r : RIGHTSB + fine * 0
local hsp : ((r - l) - (fine * 2 * HVCONTRAST)) * 0.3
local skew 0.2
save-glyph 'sharpTone' 0x266F : sketch

View file

@ -113,13 +113,12 @@ export : define [apply] : begin
sketch # bracketBarLeft
local l : mix SB RIGHTSB designParameters.bracketOutside
local r : mix SB RIGHTSB designParameters.bracketInside
local sw : Math.min ((r - l) / 5) [adviceBlackness 4]
include : union
HBarBottom l r parenBot
HBarTop l r parenTop
HBar l r [mix parenBot parenTop 0.5]
VBarLeft l parenBot parenTop sw
VBarLeft l parenBot parenTop
save 'bracketBarLeft' 0x2045
sketch # bracketBarRight
@ -150,34 +149,38 @@ export : define [apply] : begin
straight.left.end [mix SB RIGHTSB designParameters.braceOutside] symbolMid [heading LEFTWARD]
save 'braceLeft.straight'
sketch # braceLeft.curly
local xIns : mix SB RIGHTSB [mix designParameters.braceOutside designParameters.braceInside 1]
local xOus : mix SB RIGHTSB [mix designParameters.braceInside designParameters.braceOutside 1]
define [CurlyBraceShape sw] : glyph-construction
local hs : sw / 2
local xIns : mix SB RIGHTSB designParameters.braceInside
local xOus : mix SB RIGHTSB designParameters.braceOutside
local m1 : mix SB RIGHTSB [mix designParameters.braceInside designParameters.braceOutside designParameters.braceCurlyM1]
local m2 : mix SB RIGHTSB [mix designParameters.braceInside designParameters.braceOutside designParameters.braceCurlyM2]
local braceRadiusLowLimit : (parenTop - symbolMid - STROKE) * (1 / 3) + HALFSTROKE
local braceRadiusLowLimit : (parenTop - symbolMid - sw) * (1 / 3) + hs
local radius1 : Math.min (xIns - m1) braceRadiusLowLimit
local radius2 : [Math.min (m2 - xOus) braceRadiusLowLimit] - HALFSTROKE
local ess : mix STROKE ESS 0.25
local radius2 : [Math.min (m2 - xOus) braceRadiusLowLimit] - hs
local ess : mix sw (ESS * sw / STROKE) 0.25
local top : mix symbolMid parenTop (1 + designParameters.braceOvershoot)
local bot : mix symbolMid parenBot (1 + designParameters.braceOvershoot)
include : dispiro
straight.left.start xIns (top - HALFSTROKE) [widths.heading HALFSTROKE HALFSTROKE LEFTWARD]
straight.left.start xIns (top - hs) [widths.heading hs hs LEFTWARD]
archv
g4.down.mid m1 (top - radius1) [heading DOWNWARD]
alsothru 0.5 0.5 [widths (ess / 2) (ess / 2)]
g4.down.mid m2 (symbolMid + radius2) [widths.heading HALFSTROKE HALFSTROKE DOWNWARD]
g4.down.mid m2 (symbolMid + radius2) [widths.heading hs hs DOWNWARD]
arcvh
straight.left.end xOus symbolMid [heading LEFTWARD]
include : dispiro
straight.left.start xIns (bot + HALFSTROKE) [widths.heading HALFSTROKE HALFSTROKE LEFTWARD]
straight.left.start xIns (bot + hs) [widths.heading hs hs LEFTWARD]
archv
g4.up.mid m1 (bot + radius1) [heading UPWARD]
alsothru 0.5 0.5 [widths (ess / 2) (ess / 2)]
g4.up.mid m2 (symbolMid - radius2) [widths.heading HALFSTROKE HALFSTROKE UPWARD]
g4.up.mid m2 (symbolMid - radius2) [widths.heading hs hs UPWARD]
arcvh
straight.left.end xOus symbolMid [heading LEFTWARD]
sketch # braceLeft.curly
include : CurlyBraceShape STROKE
save 'braceLeft.curly'
composite 'braceRight.straight' glyphs.'braceLeft.straight' [FlipAround MIDDLE symbolMid]
@ -186,24 +189,51 @@ export : define [apply] : begin
select-variant 'braceLeft' '{'
select-variant 'braceRight' '}'
sketch # whiteBraceLeft
local fine : adviceBlackness 4
local xIns : mix SB RIGHTSB designParameters.braceInside
local top : mix symbolMid parenTop (1 + designParameters.braceOvershoot)
local bot : mix symbolMid parenBot (1 + designParameters.braceOvershoot)
include : CurlyBraceShape fine
include : VBarRight xIns (bot + fine / 2) (top - fine / 2) fine
save 'whiteBraceLeft' 0x2983
sketch # whiteBraceRight
include glyphs.whiteBraceLeft
include : FlipAround MIDDLE symbolMid
save 'whiteBraceRight' 0x2984
define [AngleLeftShape outside inside sw] : begin
local fatten : Math.hypot 1 ((inside - outside - O) / (parenTop - symbolMid))
return : union
dispiro
widths.lhs sw
flat inside parenTop
curl (outside + O) symbolMid [widths.heading (sw * fatten) 0 DOWNWARD]
dispiro
widths.rhs sw
flat inside parenBot
curl (outside + O) symbolMid [widths.heading 0 (sw * fatten) UPWARD]
sketch # angleLeft
local fatten : Math.hypot 1 (([mix SB RIGHTSB : designParameters.parenInside - designParameters.parenOutside] - O) / (parenTop - symbolMid))
include : dispiro
widths.lhs OPERATORSTROKE
flat [mix SB RIGHTSB designParameters.parenInside] parenTop
curl ([mix SB RIGHTSB designParameters.parenOutside] + O) symbolMid [widths.heading (OPERATORSTROKE * fatten) 0 DOWNWARD]
include : dispiro
widths.rhs OPERATORSTROKE
flat [mix SB RIGHTSB designParameters.parenInside] parenBot
curl ([mix SB RIGHTSB designParameters.parenOutside] + O) symbolMid [widths.heading 0 (OPERATORSTROKE * fatten) UPWARD]
define dim : ParenDim 0
include : AngleLeftShape dim.outside dim.inside OPERATORSTROKE
save 'angleLeft' 0x2329
alias 'mangleLeft' 0x27E8 'angleLeft'
save 'mathAngleLeft' 0x27E8
sketch # dblAngleLeft
define dim : ParenDim 0
define fine : Math.min OPERATORSTROKE [adviceBlackness 3]
define farOutside : dim.outside / 2
define middle : mix farOutside dim.inside 0.5
include : AngleLeftShape farOutside middle fine
include : AngleLeftShape middle dim.inside fine
save 'dblAngleLeft' 0x27EA
turned 'angleRight' 0x232A 'angleLeft' MIDDLE symbolMid
alias 'mangleRight' 0x27E9 'angleRight'
alias 'mathAngleRight' 0x27E9 'angleRight'
dual 'dblangleLeft' 0x27EA 'angleLeft' (WIDTH * 0.35)
dual 'dblangleRight' 0x27EB 'angleRight' (WIDTH * 0.35)
turned 'dblAngleRight' 0x27EB 'dblAngleLeft' MIDDLE symbolMid
sketch # ceilingLeft
include : HBarTop [mix SB RIGHTSB designParameters.bracketOutside] [mix SB RIGHTSB designParameters.bracketInside] parenTop
@ -220,22 +250,22 @@ export : define [apply] : begin
do 'Small Punctuations'
sketch # period
set-width WIDTH
include : Ring (PERIODSIZE - O) O (MIDDLE - PERIODRADIUS + O) (MIDDLE + PERIODRADIUS - O) true
include : DotAt MIDDLE PERIODRADIUS (PERIODRADIUS - O)
save 'period' '.'
sketch # baselineDot
set-width WIDTH
include : Ring (DOTSIZE - O) O (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
include : DotAt MIDDLE DOTRADIUS (DOTRADIUS - O)
save 'baselineDot'
sketch # xhPeriod
set-width WIDTH
include : Ring (XH - O) (XH - PERIODSIZE + O) (MIDDLE - PERIODRADIUS + O) (MIDDLE + PERIODRADIUS - O) true
include : DotAt MIDDLE (XH - PERIODRADIUS) (PERIODRADIUS - O)
save 'xhPeriod'
sketch # xhPeriod
set-width WIDTH
include : Ring (XH - O) (XH - DOTSIZE + O) (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
include : DotAt MIDDLE (XH - DOTRADIUS) (DOTRADIUS - O)
save 'xhDot'
sketch # comma
@ -292,18 +322,19 @@ export : define [apply] : begin
local questionBottom : Math.max (CAP * 0.3) (DOTSIZE * 1.5)
define [QuestionShape top questionBottom left right] : glyph-construction
define strokeEndCor : Math.hypot 1 TANSLANT
include : dispiro
widths.rhs
g4 left (top - HOOK)
hookstart (top - O)
g4 right (top - SMOOTHB * 0.9)
alsothru 0.5 0.45 [widths.center ESSQUESTION]
straight.down.end ([mix left right 0.5] - HALFSTROKE * HVCONTRAST) questionBottom [widths STROKE 0]
straight.down.end ([mix left right 0.5] - HALFSTROKE * HVCONTRAST * strokeEndCor) questionBottom [widths.heading (STROKE * strokeEndCor) 0 DOWNWARD]
sketch # question
set-width WIDTH
include : QuestionShape CAP questionBottom SB RIGHTSB
include : Ring (DOTSIZE - O) O (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
include : DotAt MIDDLE DOTRADIUS (DOTRADIUS - O)
save 'question' '?'
sketch # interrobang
@ -317,7 +348,7 @@ export : define [apply] : begin
include : Translate (-MIDDLE) (-DOTRADIUS)
include : Rotate (1.2 * angle)
include : Translate MIDDLE DOTRADIUS
include : Ring (DOTSIZE - O) O (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
include : DotAt MIDDLE DOTRADIUS (DOTRADIUS - O)
save 'interrobang' 0x203D
sketch # gnaborretni
@ -336,8 +367,9 @@ export : define [apply] : begin
set-width WIDTH
include markset.capital
include : VBar MIDDLE [clamp 0 (CAP * 0.4) (questionBottom * 1.18)] CAP
include : Ring (DOTSIZE - O) O (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
include : DotAt MIDDLE DOTRADIUS (DOTRADIUS - O)
save 'exclam' '!'
save 'alveolarclick' 0x1C3
sketch # exclamDown
set-width WIDTH
@ -360,17 +392,23 @@ export : define [apply] : begin
include : VBar MIDDLE parenBot parenTop
save 'bar' '|'
sketch # parallel
set-width WIDTH
set currentGlyph.anchors.above {.type BASE .x MIDDLE .y parenTop}
set currentGlyph.anchors.below {.type BASE .x MIDDLE .y parenBot}
local sw : adviceBlackness 3.5
include : VBar (MIDDLE - WIDTH * 0.175) parenBot parenTop sw
include : VBar (MIDDLE + WIDTH * 0.175) parenBot parenTop sw
save 'parallel' 0x2225
save 'dentalclick' 0x1C0
save 'alveolarlateralclick' 0x1C1
sketch # brokenbar
local breakDist : Math.max STROKE (CAP / 8)
include : VBar MIDDLE (symbolMid + breakDist / 2) parenTop
include : VBar MIDDLE parenBot (symbolMid - breakDist / 2)
save 'brokenbar' 0xA6
# Click symbols
alias 'dentalclick' 0x1C0 'bar'
dual 'alveolarlateralclick' 0x1C1 'bar' (WIDTH * 0.35)
alias 'alveolarclick' 0x1C3 'exclam'
sketch # palatoalveolarclick
include glyphs.bar AS_BASE
include : HBarBottom SB RIGHTSB (symbolMid + XH * 0.1) OPERATORSTROKE
@ -750,7 +788,7 @@ export : define [apply] : begin
do 'Interpuncts'
sketch # interpunct
set-width FULLWIDTH3
include : Ring (symbolMid + PERIODRADIUS - O) (symbolMid - PERIODRADIUS + O) (FULLWIDTH3 / 2 - PERIODRADIUS + O) (FULLWIDTH3 / 2 + PERIODRADIUS - O) true
include : DotAt (FULLWIDTH3 / 2) symbolMid (PERIODRADIUS - O)
save 'period.center'
save 'interpunct' 0xB7
save 'greekbullet' 0x387
@ -760,12 +798,11 @@ export : define [apply] : begin
sketch # whitebullet
set-width FULLWIDTH
local s : [adviceBlackness 5] * 0.75
include : Ring (symbolMid + PERIODRADIUS - O) (symbolMid - PERIODRADIUS + O) (FWMIDDLE - PERIODRADIUS + O) (FWMIDDLE + PERIODRADIUS - O) true
include : Ring (symbolMid + PERIODRADIUS - O - s) (symbolMid - PERIODRADIUS + O + s) (FWMIDDLE - PERIODRADIUS + O + s) (FWMIDDLE + PERIODRADIUS - O - s) true
reverse-last
include : difference
DotAt FWMIDDLE symbolMid (PERIODRADIUS - O)
DotAt FWMIDDLE symbolMid (PERIODRADIUS - O - s)
save 'whitebullet' 0x25E6
do 'Quotes and Primes'
local quoteTop (CAP * 1.05)
local quoteBottom (XH * 0.85)
@ -972,34 +1009,60 @@ export : define [apply] : begin
include : HBar SB RIGHTSB [mix parenTop parenBot 0.67]
save 'doubledagger' 0x2021
do 'Ellipsis'
define WidthKinds {{'.hwid' WIDTH WIDTH} {'.fwid' FULLWIDTH0 (FULLWIDTH0 / 2)}}
foreach {suffix MosaicWidth MosaicUnitWidth} [items-of WidthKinds] : do 'Ellipsis'
define [MangleUnicode unicode] : if (MosaicWidth == FULLWIDTH) unicode nothing
define [MangleName name] : name + suffix
define [DotRadius darkness space] : begin
return : 0.5 * [adviceBlackness darkness (space / WIDTH)] * PERIODSIZE / STROKE
sketch # onedotLeader
set-width FULLWIDTH
local radius : Math.min PERIODRADIUS
linreg WIDTH (0.5 * [adviceBlackness 3.5] * PERIODSIZE / STROKE) UPM PERIODRADIUS FULLWIDTH
include : Ring (radius * 2 - O) O (FULLWIDTH / 2 - radius + O) (FULLWIDTH / 2 + radius - O) true
save 'onedotLeader' 0x2024
set-width MosaicWidth
local radius : DotRadius 3.5 MosaicWidth
include : DotAt (MosaicWidth / 2) radius (radius - O)
save [MangleName 'onedotLeader'] [MangleUnicode 0x2024]
sketch # twodotsLEader
set-width FULLWIDTH
local radius : Math.min PERIODRADIUS
linreg WIDTH (0.5 * [adviceBlackness 3.5] * PERIODSIZE / STROKE) UPM PERIODRADIUS FULLWIDTH
local left : mix 0 FULLWIDTH (1 / 4)
local right : mix 0 FULLWIDTH (3 / 4)
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 'twodotsLEader' 0x2025
set-width MosaicWidth
local radius : DotRadius 3.5 MosaicWidth
local left : mix 0 MosaicWidth (1 / 4)
local right : mix 0 MosaicWidth (3 / 4)
include : DotAt left radius (radius - O)
include : DotAt right radius (radius - O)
save [MangleName 'twodotsLEader'] [MangleUnicode 0x2025]
sketch # ellipsis
set-width FULLWIDTH
local radius : Math.min PERIODRADIUS
linreg WIDTH (0.5 * [adviceBlackness 5] * PERIODSIZE / STROKE) UPM PERIODRADIUS FULLWIDTH
local left : mix 0 FULLWIDTH (1 / 6)
local right : mix 0 FULLWIDTH (5 / 6)
include : Ring (radius * 2 - O) O (left - radius + O) (left + radius - O) true
include : Ring (radius * 2 - O) O (FULLWIDTH / 2 - radius + O) (FULLWIDTH / 2 + radius - O) true
include : Ring (radius * 2 - O) O (right - radius + O) (right + radius - O) true
save 'ellipsis' 0x2026
set-width MosaicWidth
local radius : DotRadius 5 MosaicWidth
local left : mix 0 MosaicWidth (1 / 6)
local right : mix 0 MosaicWidth (5 / 6)
include : DotAt left radius (radius - O)
include : DotAt (MosaicWidth / 2) radius (radius - O)
include : DotAt right radius (radius - O)
save [MangleName 'ellipsis'] [MangleUnicode 0x2026]
apply-transform : Upright
apply-transform : Translate 0 (symbolMid - radius)
apply-transform : Italify
save [MangleName 'mathCDots'] [MangleUnicode 0x22EF]
define [TriColonShape x bottom top] : glyph-construction
local radius : DotRadius 5 (top - bottom)
local mid : mix bottom top 0.5
include : DotAt x (bottom + radius) (radius - O)
include : DotAt x mid (radius - O)
include : DotAt x (top - radius) (radius - O)
sketch # tricolon
set-width MosaicWidth
include : TriColonShape (MosaicWidth / 2) 0 XH
save [MangleName 'tricolon'] [MangleUnicode 0x205D]
sketch # mathCVDots
set-width MosaicWidth
include : TriColonShape (MosaicWidth / 2) operBot operTop
save [MangleName 'mathCVDots'] [MangleUnicode 0x22EE]
do 'Percentages'
sketch # percent.dots
@ -1156,3 +1219,14 @@ export : define [apply] : begin
alias 'mdfRevComma' 0x2BD 'revertSingleQuote'
alias 'mdfStress' 0x2C8 'singleQuote'
turned 'mdfSecondaryStress' 0x2CC 'singleQuote' MIDDLE (XH / 2)
do "Ties"
sketch
include : dispiro
widths.lhs OPERATORSTROKE
g4 (SB + OX) 0
quadcontrols 0.5 1
g4.right.mid MIDDLE (DESCENDER / 3) [heading RIGHTWARD]
quadcontrols 0.5 0
g4 (RIGHTSB - OX) 0
save "undertie" 0x203F

View file

@ -207,7 +207,7 @@ export : define designParameters : object
equal_wideness 0.075
logic_narrow_shrink 0.75
geometric_large_x (1 + 2 / 3)
geometric_small_x (3 / 5)
geometric_small_x (4 / 7)
arrow_size (3 / 8)
# ()
parenOutside 0.2

View file

@ -0,0 +1,6 @@
→₂₁≤≡≈∀∷ℓℕ⟩⟨′ʳ⁺⇒∼∣∘λˡ∈∧⊔∨⊆∙ρ≟⁻⟧⟦≢⊎⊥↔ℤ∎⊓⊤∸₃↭τ≋⟶ₚ≅
∃ₙ₋↧ℚ⊕↑∩ε↥ₕ≥⇔ᵘᵇ∪″⊖≗⊛β≮◃≃⋆ᵢ≉◅≳δ⇓σ♭Σ✶ₗ•⇨∞˘≰ᵣ↠⊢⊙∅⌋⌊
∉◦ₛπ⊂≺♯◇↣₄ⁿ≯‿Γ⋎□ₜ∁↞≲⊑─₀⊸γ⟫⟪≔Πᴸ∋Δ∹∑▻⊗⋯ᵤ⇉←≼—⨀⌉⌈∶₅‴
◌̇≱↦⁆⁅▷│ᵒᵐʸ⇑⤖⨆↓₆ᵈʰ║ⱼ⊈⋐⊇◂ƛ⦈⦇ϕ⟆⟅⋃↪↩↢⋂↾↝𝕊≠ₖ₇₊∄⇐ι⊜⊉⊄∤
φη⊴⊃ₑᵀᴿˢ…◈═⊒⊅μ⨅└≻≬₉₈}{╲╱┘‼ᵥν𝔽⋢⋊⋉⊘≇⇛ₘᶜᴹψ⟵▸▴├┐┌⍮≵ᵖ
ᴾ⦄⦃┼┴┬┤⑵⑴⋮ᵗωΘ̀

View file

@ -0,0 +1,269 @@
→ (U+2192): 16357
₂ (U+2082): 7828
₁ (U+2081): 7658
≤ (U+2264): 6568
≡ (U+2261): 6281
≈ (U+2248): 5785
∀ (U+2200): 5297
∷ (U+2237): 4534
(U+2113): 3817
(U+2115): 3190
⟩ (U+27E9): 3037
⟨ (U+27E8): 3037
(U+2032): 2974
ʳ (U+02B3): 2578
⁺ (U+207A): 2408
⇒ (U+21D2): 2319
(U+223C): 2279
(U+2223): 2265
∘ (U+2218): 2105
λ (U+03BB): 2044
ˡ (U+02E1): 2018
∈ (U+2208): 1668
∧ (U+2227): 1569
⊔ (U+2294): 1520
× (U+00D7): 1433
(U+2228): 1422
¬ (U+00AC): 1414
⊆ (U+2286): 1389
∙ (U+2219): 1233
ρ (U+03C1): 1106
≟ (U+225F): 1013
⁻ (U+207B): 1006
⟧ (U+27E7): 904
⟦ (U+27E6): 904
≢ (U+2262): 898
⊎ (U+228E): 872
⊥ (U+22A5): 836
↔ (U+2194): 770
(U+2124): 735
∎ (U+220E): 718
⊓ (U+2293): 708
(U+22A4): 620
∸ (U+2238): 604
₃ (U+2083): 595
↭ (U+21AD): 594
τ (U+03C4): 554
≋ (U+224B): 507
⟶ (U+27F6): 504
ₚ (U+209A): 475
≅ (U+2245): 452
∃ (U+2203): 418
ₙ (U+2099): 393
₋ (U+208B): 381
↧ (U+21A7): 365
(U+211A): 343
⊕ (U+2295): 339
↑ (U+2191): 327
∩ (U+2229): 323
ε (U+03B5): 311
↥ (U+21A5): 303
ₕ (U+2095): 302
¹ (U+00B9): 302
≥ (U+2265): 288
⇔ (U+21D4): 283
ᵘ (U+1D58): 282
ᵇ (U+1D47): 282
(U+222A): 272
″ (U+2033): 268
⊖ (U+2296): 263
± (U+00B1): 243
≗ (U+2257): 236
⊛ (U+229B): 232
β (U+03B2): 230
≮ (U+226E): 225
◃ (U+25C3): 223
≃ (U+2243): 220
⋆ (U+22C6): 216
ᵢ (U+1D62): 214
≉ (U+2249): 207
◅ (U+25C5): 206
≳ (U+2273): 202
δ (U+03B4): 199
⇓ (U+21D3): 198
σ (U+03C3): 194
♭ (U+266D): 186
Σ (U+03A3): 184
✶ (U+2736): 182
ₗ (U+2097): 179
• (U+2022): 177
⇨ (U+21E8): 176
∞ (U+221E): 172
˘ (U+02D8): 172
≰ (U+2270): 162
ᵣ (U+1D63): 160
↠ (U+21A0): 156
⊢ (U+22A2): 152
⊙ (U+2299): 149
∅ (U+2205): 148
⌋ (U+230B): 147
⌊ (U+230A): 147
∉ (U+2209): 144
◦ (U+25E6): 140
ₛ (U+209B): 137
π (U+03C0): 135
⊂ (U+2282): 126
≺ (U+227A): 124
♯ (U+266F): 123
◇ (U+25C7): 123
↣ (U+21A3): 123
₄ (U+2084): 121
ⁿ (U+207F): 112
≯ (U+226F): 110
‿ (U+203F): 104
Γ (U+0393): 104
⋎ (U+22CE): 97
□ (U+25A1): 95
ₜ (U+209C): 93
∁ (U+2201): 91
↞ (U+219E): 91
  (U+00A0): 88
≲ (U+2272): 86
² (U+00B2): 79
⊑ (U+2291): 73
─ (U+2500): 68
₀ (U+2080): 68
⊸ (U+22B8): 67
γ (U+03B3): 67
⟫ (U+27EB): 66
⟪ (U+27EA): 66
≔ (U+2254): 64
Π (U+03A0): 63
ᴸ (U+1D38): 58
∋ (U+220B): 54
³ (U+00B3): 54
Δ (U+0394): 52
∹ (U+2239): 51
∑ (U+2211): 51
▻ (U+25BB): 50
⊗ (U+2297): 49
⋯ (U+22EF): 47
ᵤ (U+1D64): 47
⇉ (U+21C9): 46
← (U+2190): 46
≼ (U+227C): 45
— (U+2014): 44
⨀ (U+2A00): 43
⌉ (U+2309): 43
⌈ (U+2308): 43
(U+2236): 41
₅ (U+2085): 39
‴ (U+2034): 39
̇ (U+0307): 38
≱ (U+2271): 37
↦ (U+21A6): 37
⁆ (U+2046): 37
⁅ (U+2045): 37
· (U+00B7): 34
▷ (U+25B7): 33
│ (U+2502): 30
ᵒ (U+1D52): 30
ᵐ (U+1D50): 29
é (U+00E9): 29
ʸ (U+02B8): 28
⇑ (U+21D1): 27
⤖ (U+2916): 25
⨆ (U+2A06): 23
↓ (U+2193): 22
₆ (U+2086): 22
ᵈ (U+1D48): 22
ʰ (U+02B0): 21
║ (U+2551): 20
ⱼ (U+2C7C): 19
⊈ (U+2288): 19
⋐ (U+22D0): 18
⊇ (U+2287): 18
◂ (U+25C2): 17
ƛ (U+019B): 17
⦈ (U+2988): 16
⦇ (U+2987): 16
ϕ (U+03D5): 16
⟆ (U+27C6): 15
⟅ (U+27C5): 15
(U+22C3): 15
↪ (U+21AA): 15
↩ (U+21A9): 15
↢ (U+21A2): 15
⋂ (U+22C2): 14
↾ (U+21BE): 14
↝ (U+219D): 14
𝕊 (U+1d54a): 13
≠ (U+2260): 12
ₖ (U+2096): 12
₇ (U+2087): 12
₊ (U+208A): 11
∄ (U+2204): 10
⇐ (U+21D0): 10
ι (U+03B9): 10
½ (U+00BD): 10
⊜ (U+229C): 9
⊉ (U+2289): 9
⊄ (U+2284): 9
∤ (U+2224): 9
φ (U+03C6): 9
η (U+03B7): 9
⊴ (U+22B4): 8
⊃ (U+2283): 8
ₑ (U+2091): 8
ᵀ (U+1D40): 8
ᴿ (U+1D3F): 8
ˢ (U+02E2): 8
… (U+2026): 7
÷ (U+00F7): 7
◈ (U+25C8): 6
═ (U+2550): 6
⊒ (U+2292): 6
⊅ (U+2285): 6
μ (U+03BC): 6
⨅ (U+2A05): 5
└ (U+2514): 5
≻ (U+227B): 5
≬ (U+226C): 5
₉ (U+2089): 5
₈ (U+2088): 5
(U+FF5D): 4
(U+FF5B): 4
╲ (U+2572): 4
(U+2571): 4
┘ (U+2518): 4
‼ (U+203C): 4
ᵥ (U+1D65): 4
ν (U+03BD): 4
𝔽 (U+1d53d): 3
⋢ (U+22E2): 3
⋊ (U+22CA): 3
⋉ (U+22C9): 3
⊘ (U+2298): 3
≇ (U+2247): 3
⇛ (U+21DB): 3
ₘ (U+2098): 3
ᶜ (U+1D9C): 3
ᴹ (U+1D39): 3
ψ (U+03C8): 3
⟵ (U+27F5): 2
▸ (U+25B8): 2
▴ (U+25B4): 2
├ (U+251C): 2
┐ (U+2510): 2
┌ (U+250C): 2
⍮ (U+236E): 2
≵ (U+2275): 2
ᵖ (U+1D56): 2
ᴾ (U+1D3E): 2
⦄ (U+2984): 1
⦃ (U+2983): 1
┼ (U+253C): 1
┴ (U+2534): 1
┬ (U+252C): 1
┤ (U+2524): 1
⑵ (U+2475): 1
⑴ (U+2474): 1
⋮ (U+22EE): 1
ᵗ (U+1D57): 1
ω (U+03C9): 1
Θ (U+0398): 1
̀ (U+0300): 1
ö (U+00F6): 1
ó (U+00F3): 1
ï (U+00EF): 1
à (U+00E0): 1

View file

@ -479,6 +479,7 @@ const TTCArchiveFile = file.make(
// Note: this target does NOT depend on the font files.
await target.need(de`${dir}`);
await target.need(CollectionFontsOf(cid));
await rm(full);
await cd(`${DIST}/collections/${cid}`).run(
["7z", "a"],
["-tzip", "-r", "-mx=9"],