Further symbol refinements

This commit is contained in:
Belleve Invis 2020-04-02 01:33:38 -07:00
parent 78dec6dbf5
commit fdebd394b8
7 changed files with 392 additions and 109 deletions

View file

@ -395,9 +395,9 @@ glyph-block AutoBuild-Enclosure : begin
if [not recursive] : do "inset mosaic" if [not recursive] : do "inset mosaic"
local compositions {} local compositions {}
compositions.push { 0x1FBB1 { unicodeGlyphs.(0x2714).name } WIDE-WIDTH-2 } compositions.push { 0x1FBB1 { [unicodeGlyphs.(0x2714).name.replace [regex '.fwid$'] ".hwid"] } WIDE-WIDTH-2 }
compositions.push { 0x1FBB4 { unicodeGlyphs.(0x21B2).name } WIDE-WIDTH-2 } compositions.push { 0x1FBB4 { [unicodeGlyphs.(0x21B2).name.replace [regex '.fwid$'] ".hwid"] } WIDE-WIDTH-2 }
compositions.push { 0x1FBC4 { unicodeGlyphs.(0x003F).name } WIDE-WIDTH-2 } compositions.push { 0x1FBC4 { [unicodeGlyphs.(0x003F).name.replace [regex '.fwid$'] ".hwid"] } WIDE-WIDTH-2 }
createInsetMosaicGlyphs 1 compositions createInsetMosaicGlyphs 1 compositions
if [not recursive] : do "Single-digit double circled" if [not recursive] : do "Single-digit double circled"

View file

@ -59,7 +59,9 @@ glyph-block CommonShapes : begin
include part first first include part first first
set first false set first false
define [refer-glyph id] : lambda [copyAnchors copyWidth] : this.includeGlyph glyphMap.(id) copyAnchors copyWidth define [refer-glyph id] : lambda [copyAnchors copyWidth] : begin
if [not glyphMap.(id)] : throw : new Error "Cannot find glyph '\(id)'"
this.includeGlyph glyphMap.(id) copyAnchors copyWidth
define [query-glyph id] : return glyphMap.(id) define [query-glyph id] : return glyphMap.(id)
define [into-unicode code] : glyph-construction : if code : assign-unicode code define [into-unicode code] : glyph-construction : if code : assign-unicode code

View file

@ -86,6 +86,31 @@ glyph-block Symbol-Geometric : begin
include : FlipAround x y s [fallback sy s] include : FlipAround x y s [fallback sy s]
include : into-unicode unicode include : into-unicode unicode
define [UpperHalfMask] : Rect (symbolMid + squareRadiusFW * 2) symbolMid 0 MosaicWidth
define [LowerHalfMask] : Rect symbolMid (symbolMid - squareRadiusFW * 2) 0 MosaicWidth
define [LeftHalfMask] : Rect (symbolMid + squareRadiusFW * 2) (symbolMid - squareRadiusFW * 2) 0 MosaicMiddle
define [RightHalfMask] : Rect (symbolMid + squareRadiusFW * 2) (symbolMid - squareRadiusFW * 2) MosaicMiddle MosaicWidth
define [UpperLeftQuarterMark] : intersection [UpperHalfMask] [LeftHalfMask]
define [UpperRightQuarterMark] : intersection [UpperHalfMask] [RightHalfMask]
define [LowerLeftQuarterMark] : intersection [LowerHalfMask] [LeftHalfMask]
define [LowerRightQuarterMark] : intersection [LowerHalfMask] [RightHalfMask]
define [UpperLeftHalfMark] : spiro-outline
corner (MosaicMiddle + squareRadiusFW * 2) (symbolMid + squareRadiusFW * 2)
corner (MosaicMiddle - squareRadiusFW * 2) (symbolMid + squareRadiusFW * 2)
corner (MosaicMiddle - squareRadiusFW * 2) (symbolMid - squareRadiusFW * 2)
define [LowerRightHalfMark] : spiro-outline
corner (MosaicMiddle + squareRadiusFW * 2) (symbolMid + squareRadiusFW * 2)
corner (MosaicMiddle - squareRadiusFW * 2) (symbolMid - squareRadiusFW * 2)
corner (MosaicMiddle + squareRadiusFW * 2) (symbolMid - squareRadiusFW * 2)
define [UpperRightHalfMark] : spiro-outline
corner (MosaicMiddle + squareRadiusFW * 2) (symbolMid + squareRadiusFW * 2)
corner (MosaicMiddle - squareRadiusFW * 2) (symbolMid + squareRadiusFW * 2)
corner (MosaicMiddle + squareRadiusFW * 2) (symbolMid - squareRadiusFW * 2)
define [LowerLeftHalfMark] : spiro-outline
corner (MosaicMiddle - squareRadiusFW * 2) (symbolMid - squareRadiusFW * 2)
corner (MosaicMiddle - squareRadiusFW * 2) (symbolMid + squareRadiusFW * 2)
corner (MosaicMiddle + squareRadiusFW * 2) (symbolMid - squareRadiusFW * 2)
sketch # blacksquare sketch # blacksquare
set-width MosaicWidth set-width MosaicWidth
start-from leftFW (symbolMid + squareRadiusFW) start-from leftFW (symbolMid + squareRadiusFW)
@ -502,57 +527,82 @@ glyph-block Symbol-Geometric : begin
union union
ThickRoundedArrowBar left top right bot inner 0 ThickRoundedArrowBar left top right bot inner 0
ThickRoundedArrowBar right top left bot inner 0 ThickRoundedArrowBar right top left bot inner 0
save [MangleName "whiteHeavySaltireWithRoundedCorners"] [MangleUnicode 0x1FBC0] save [MangleName "whiteHeavySaltireWithRoundedCorners"] [MangleUnicode 0x1FBC0 WIDE-WIDTH-2]
# Shaded hollow squares # Shaded hollow squares
sketch # hshadesquare, U+25A4 define [HShadeShape] : begin
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11) define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
define top : symbolMid + squareRadiusFW - GEOMETRYSTROKE + lineWidth / 2 define top : symbolMid + squareRadiusFW - GEOMETRYSTROKE + lineWidth / 2
define bot : symbolMid - (top - symbolMid) define bot : symbolMid - (top - symbolMid)
return : union
dispiro
widths.center lineWidth
flat leftFW [mix top bot 0.25] [heading RIGHTWARD]
curl rightFW [mix top bot 0.25] [heading RIGHTWARD]
dispiro
widths.center lineWidth
flat leftFW [mix top bot 0.5] [heading RIGHTWARD]
curl rightFW [mix top bot 0.5] [heading RIGHTWARD]
dispiro
widths.center lineWidth
flat leftFW [mix top bot 0.75] [heading RIGHTWARD]
curl rightFW [mix top bot 0.75] [heading RIGHTWARD]
sketch # hshadesquare, U+25A4
set-width MosaicWidth set-width MosaicWidth
include : union include : union
refer-glyph : MangleName 'whitesquare' refer-glyph : MangleName 'whitesquare'
intersection intersection
refer-glyph : MangleName 'blacksquare' refer-glyph : MangleName 'blacksquare'
create-glyph : glyph-construction HShadeShape
include : dispiro
widths.center lineWidth
flat leftFW [mix top bot 0.25] [heading RIGHTWARD]
curl rightFW [mix top bot 0.25] [heading RIGHTWARD]
include : dispiro
widths.center lineWidth
flat leftFW [mix top bot 0.5] [heading RIGHTWARD]
curl rightFW [mix top bot 0.5] [heading RIGHTWARD]
include : dispiro
widths.center lineWidth
flat leftFW [mix top bot 0.75] [heading RIGHTWARD]
curl rightFW [mix top bot 0.75] [heading RIGHTWARD]
save [MangleName 'hshadesquare'] [MangleUnicode 0x25A4] save [MangleName 'hshadesquare'] [MangleUnicode 0x25A4]
sketch # vshadesquare, U+25A5 define [VShadeShape] : begin
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11) define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
define r : MosaicWidth / 2 + squareRadiusFW - GEOMETRYSTROKE + lineWidth / 2 define r : MosaicWidth / 2 + squareRadiusFW - GEOMETRYSTROKE + lineWidth / 2
define l : MosaicWidth / 2 - (r - MosaicWidth / 2) define l : MosaicWidth / 2 - (r - MosaicWidth / 2)
return : union
dispiro
widths.center lineWidth
flat [mix l r 0.25] topFW [heading DOWNWARD]
curl [mix l r 0.25] bottomFW [heading DOWNWARD]
dispiro
widths.center lineWidth
flat [mix l r 0.5] topFW [heading DOWNWARD]
curl [mix l r 0.5] bottomFW [heading DOWNWARD]
dispiro
widths.center lineWidth
flat [mix l r 0.75] topFW [heading DOWNWARD]
curl [mix l r 0.75] bottomFW [heading DOWNWARD]
define [VBarShadeShape] : begin
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
define r : MosaicWidth / 2 + squareRadiusFW - GEOMETRYSTROKE + lineWidth / 2
define l : MosaicWidth / 2 - (r - MosaicWidth / 2)
return : union
dispiro
widths.center lineWidth
flat [mix l r 0.5] topFW [heading DOWNWARD]
curl [mix l r 0.5] bottomFW [heading DOWNWARD]
sketch # vshadesquare, U+25A5
set-width MosaicWidth set-width MosaicWidth
include : union include : union
refer-glyph : MangleName 'whitesquare' refer-glyph : MangleName 'whitesquare'
intersection intersection
refer-glyph : MangleName 'blacksquare' refer-glyph : MangleName 'blacksquare'
create-glyph : glyph-construction VShadeShape
include : dispiro
widths.center lineWidth
flat [mix l r 0.25] topFW [heading DOWNWARD]
curl [mix l r 0.25] bottomFW [heading DOWNWARD]
include : dispiro
widths.center lineWidth
flat [mix l r 0.5] topFW [heading DOWNWARD]
curl [mix l r 0.5] bottomFW [heading DOWNWARD]
include : dispiro
widths.center lineWidth
flat [mix l r 0.75] topFW [heading DOWNWARD]
curl [mix l r 0.75] bottomFW [heading DOWNWARD]
save [MangleName 'vshadesquare'] [MangleUnicode 0x25A5] save [MangleName 'vshadesquare'] [MangleUnicode 0x25A5]
sketch # vBarSquare, U+25EB
set-width MosaicWidth
include : union
refer-glyph : MangleName 'whitesquare'
intersection
refer-glyph : MangleName 'blacksquare'
VBarShadeShape
save [MangleName 'vBarSquare'] [MangleUnicode 0x25EB]
sketch # hvshadesquare, U+25A6 sketch # hvshadesquare, U+25A6
set-width MosaicWidth set-width MosaicWidth
include : union include : union
@ -560,36 +610,42 @@ glyph-block Symbol-Geometric : begin
refer-glyph : MangleName 'vshadesquare' refer-glyph : MangleName 'vshadesquare'
save [MangleName 'hvshadesquare'] [MangleUnicode 0x25A6] save [MangleName 'hvshadesquare'] [MangleUnicode 0x25A6]
sketch # ddiagshadesquare, U+25A7 define [DDiagShadeShape] : begin
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11) define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
define top : symbolMid + squareRadiusFW define top : symbolMid + squareRadiusFW
define bot : symbolMid - (top - symbolMid) define bot : symbolMid - (top - symbolMid)
return : glyph-construction
foreach [j : range (-10) till 10] : include : dispiro
widths.center lineWidth
flat leftFW [mix top bot (j / 4)] [heading RIGHTWARD]
curl rightFW [mix top bot (j / 4 + 1)] [heading RIGHTWARD]
define [UDiagShadeShape] : begin
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
define top : symbolMid + squareRadiusFW
define bot : symbolMid - (top - symbolMid)
return : glyph-construction
foreach [j : range (-10) till 10] : include : dispiro
widths.center lineWidth
flat leftFW [mix top bot (j / 4)] [heading RIGHTWARD]
curl rightFW [mix top bot (j / 4 - 1)] [heading RIGHTWARD]
sketch # ddiagshadesquare, U+25A7
set-width MosaicWidth set-width MosaicWidth
include : union include : union
refer-glyph : MangleName 'whitesquare' refer-glyph : MangleName 'whitesquare'
intersection intersection
refer-glyph : MangleName 'blacksquare' refer-glyph : MangleName 'blacksquare'
create-glyph : glyph-construction DDiagShadeShape
foreach [j : range (-10) till 10] : include : dispiro
widths.center lineWidth
flat leftFW [mix top bot (j / 4)] [heading RIGHTWARD]
curl rightFW [mix top bot (j / 4 + 1)] [heading RIGHTWARD]
save [MangleName 'ddiagshadesquare'] [MangleUnicode 0x25A7] save [MangleName 'ddiagshadesquare'] [MangleUnicode 0x25A7]
sketch # udiagshadesquare, U+25A8 sketch # udiagshadesquare, U+25A8
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
define top : symbolMid + squareRadiusFW
define bot : symbolMid - (top - symbolMid)
set-width MosaicWidth set-width MosaicWidth
include : union include : union
refer-glyph : MangleName 'whitesquare' refer-glyph : MangleName 'whitesquare'
intersection intersection
refer-glyph : MangleName 'blacksquare' refer-glyph : MangleName 'blacksquare'
create-glyph : glyph-construction UDiagShadeShape
foreach [j : range (-10) till 10] : include : dispiro
widths.center lineWidth
flat leftFW [mix top bot (j / 4)] [heading RIGHTWARD]
curl rightFW [mix top bot (j / 4 - 1)] [heading RIGHTWARD]
save [MangleName 'udiagshadesquare'] [MangleUnicode 0x25A8] save [MangleName 'udiagshadesquare'] [MangleUnicode 0x25A8]
sketch # uddiagshadesquare, U+25A9 sketch # uddiagshadesquare, U+25A9
@ -597,49 +653,129 @@ glyph-block Symbol-Geometric : begin
include : union [refer-glyph : MangleName 'ddiagshadesquare'] [refer-glyph : MangleName 'udiagshadesquare'] include : union [refer-glyph : MangleName 'ddiagshadesquare'] [refer-glyph : MangleName 'udiagshadesquare']
save [MangleName 'uddiagshadesquare'] [MangleUnicode 0x25A9] save [MangleName 'uddiagshadesquare'] [MangleUnicode 0x25A9]
define [CircleMarkShape] : begin
define r : squareRadiusFW - GEOMETRYSTROKE / 2
return : spiro-outline
g4 MosaicMiddle (symbolMid + r)
g4 (MosaicMiddle - r) symbolMid
g4 MosaicMiddle (symbolMid - r)
g4 (MosaicMiddle + r) symbolMid
close
sketch # vshadeCircle, U+25A5
set-width MosaicWidth
include : union
refer-glyph : MangleName 'whitecircle'
intersection [CircleMarkShape] [VShadeShape]
save [MangleName 'vshadeCircle'] [MangleUnicode 0x25CD]
# partial circles # partial circles
define quarters : list define partialCircleQuarters : list
list 0x25D0 1 1 0 0 list 0x25D0 1 1 0 0
list 0x25D1 0 0 1 1 list 0x25D1 0 0 1 1
list 0x25D2 0 1 0 1 list 0x25D2 0 1 0 1
list 0x25D3 1 0 1 0 list 0x25D3 1 0 1 0
list 0x25D4 0 0 1 0 list 0x25D4 0 0 1 0
list 0x25D5 0 1 1 1 list 0x25D5 0 1 1 1
foreach [{u LT LB RT RB} : items-of quarters] : sketch foreach [{u LT LB RT RB} : items-of partialCircleQuarters] : sketch
define r : squareRadiusFW - GEOMETRYSTROKE / 2
set-width MosaicWidth set-width MosaicWidth
include : union include : union
refer-glyph : MangleName 'whitecircle' refer-glyph : MangleName 'whitecircle'
intersection intersection
spiro-outline CircleMarkShape
g4 MosaicMiddle (symbolMid + r)
g4 (MosaicMiddle - r) symbolMid
g4 MosaicMiddle (symbolMid - r)
g4 (MosaicMiddle + r) symbolMid
close
create-glyph : glyph-construction create-glyph : glyph-construction
if LT : include : spiro-outline if LT : include : UpperLeftQuarterMark
corner MosaicMiddle symbolMid if LB : include : LowerLeftQuarterMark
corner MosaicMiddle (symbolMid + squareRadiusFW) if RT : include : UpperRightQuarterMark
corner (MosaicMiddle - squareRadiusFW) (symbolMid + squareRadiusFW) if RB : include : LowerRightQuarterMark
corner (MosaicMiddle - squareRadiusFW) symbolMid
if LB : include : spiro-outline
corner MosaicMiddle symbolMid
corner MosaicMiddle (symbolMid - squareRadiusFW)
corner (MosaicMiddle - squareRadiusFW) (symbolMid - squareRadiusFW)
corner (MosaicMiddle - squareRadiusFW) symbolMid
if RT : include : spiro-outline
corner MosaicMiddle symbolMid
corner MosaicMiddle (symbolMid + squareRadiusFW)
corner (MosaicMiddle + squareRadiusFW) (symbolMid + squareRadiusFW)
corner (MosaicMiddle + squareRadiusFW) symbolMid
if RB : include : spiro-outline
corner MosaicMiddle symbolMid
corner MosaicMiddle (symbolMid - squareRadiusFW)
corner (MosaicMiddle + squareRadiusFW) (symbolMid - squareRadiusFW)
corner (MosaicMiddle + squareRadiusFW) symbolMid
save [MangleName ('uni' + u)] [MangleUnicode u] save [MangleName ('uni' + u)] [MangleUnicode u]
define arcQuarters : list
list 0x25DC 1 0 0 0
list 0x25DD 0 0 1 0
list 0x25DE 0 0 0 1
list 0x25DF 0 1 0 0
list 0x25E0 1 0 1 0
list 0x25E1 0 1 0 1
foreach [{u LT LB RT RB} : items-of arcQuarters] : sketch
set-width MosaicWidth
include : intersection
refer-glyph : MangleName 'whitecircle'
create-glyph : glyph-construction
if LT : include : UpperLeftQuarterMark
if LB : include : LowerLeftQuarterMark
if RT : include : UpperRightQuarterMark
if RB : include : LowerRightQuarterMark
save [MangleName ('uni' + u)] [MangleUnicode u]
# Partial square
define squareParts : list
list 0x25E7 1 1 0 0 0 0 0 0
list 0x25E8 0 0 1 1 0 0 0 0
list 0x25E9 0 0 0 0 1 0 0 0
list 0x2B14 0 0 0 0 0 0 1 0
list 0x2B15 0 0 0 0 0 1 0 0
list 0x25EA 0 0 0 0 0 0 0 1
foreach [{u LT LB RT RB LTh LBh RTh RBh} : items-of squareParts] : sketch
set-width MosaicWidth
include : union
refer-glyph : MangleName 'whitesquare'
intersection
refer-glyph : MangleName 'blacksquare'
create-glyph : glyph-construction
if LT : include : UpperLeftQuarterMark
if LB : include : LowerLeftQuarterMark
if RT : include : UpperRightQuarterMark
if RB : include : LowerRightQuarterMark
if LTh : include : UpperLeftHalfMark
if LBh : include : LowerLeftHalfMark
if RTh : include : UpperRightHalfMark
if RBh : include : LowerRightHalfMark
save [MangleName ('uni' + u)] [MangleUnicode u]
# Partial diamond
define diamondParts : list
list 0x2B16 1 1 0 0
list 0x2B17 0 0 1 1
list 0x2B18 1 0 1 0
list 0x2B19 0 1 0 1
foreach [{u LT LB RT RB LTh LBh RTh RBh} : items-of diamondParts] : sketch
set-width MosaicWidth
include : union
refer-glyph : MangleName 'whitediamond'
intersection
refer-glyph : MangleName 'blackdiamond'
create-glyph : glyph-construction
if LT : include : UpperLeftQuarterMark
if LB : include : LowerLeftQuarterMark
if RT : include : UpperRightQuarterMark
if RB : include : LowerRightQuarterMark
save [MangleName ('uni' + u)] [MangleUnicode u]
# Partial triangle
define triangleParts : list
list 0x25ED 1 1 0 0
list 0x25EE 0 0 1 1
foreach [{u LT LB RT RB LTh RBh} : items-of triangleParts] : sketch
set-width MosaicWidth
include : union
refer-glyph : MangleName 'whitetriangleup'
intersection
refer-glyph : MangleName 'blacktriangleup'
create-glyph : glyph-construction
if LT : include : UpperLeftQuarterMark
if LB : include : LowerLeftQuarterMark
if RT : include : UpperRightQuarterMark
if RB : include : LowerRightQuarterMark
if LTh : include : UpperLeftHalfMark
if RBh : include : LowerRightHalfMark
save [MangleName ('uni' + u)] [MangleUnicode u]
sketch
set-width MosaicWidth
include : refer-glyph : MangleName 'whitetriangleup'
include : CircleDotAt MosaicMiddle (symbolMid - squareRadiusFW / 3) [Math.max (WIDTH / 6) GEOMETRYSTROKE]
save [MangleName 'dottedWhiteTriangle'] [MangleUnicode 0x25EC]
sketch sketch
set-width MosaicWidth set-width MosaicWidth
include : difference include : difference
@ -653,3 +789,17 @@ glyph-block Symbol-Geometric : begin
refer-glyph : MangleName 'blacklongrectangle' refer-glyph : MangleName 'blacklongrectangle'
refer-glyph : MangleName 'whitecircle' refer-glyph : MangleName 'whitecircle'
save [MangleName 'uni25D9'] [MangleUnicode 0x25D9] save [MangleName 'uni25D9'] [MangleUnicode 0x25D9]
sketch
set-width MosaicWidth
include : intersection
refer-glyph : MangleName 'uni25D9'
UpperHalfMask
save [MangleName 'uni25DA'] [MangleUnicode 0x25DA]
sketch
set-width MosaicWidth
include : intersection
refer-glyph : MangleName 'uni25D9'
LowerHalfMask
save [MangleName 'uni25DB'] [MangleUnicode 0x25DB]

View file

@ -126,10 +126,6 @@ glyph-block Symbol-Math-Frame-And-Geometry : begin
local rightCircle : WIDTH - SB * kCircle local rightCircle : WIDTH - SB * kCircle
local radiusCircle : (rightCircle - leftCircle) / 2 local radiusCircle : (rightCircle - leftCircle) / 2
local radiusBig : (tackTop - tackBot) / 2
local leftBig : MIDDLE - radiusBig
local rightBig : MIDDLE + radiusBig
sketch # mathO sketch # mathO
include : dispiro include : dispiro
widths.lhs GEOMETRYSTROKE widths.lhs GEOMETRYSTROKE
@ -155,31 +151,6 @@ glyph-block Symbol-Math-Frame-And-Geometry : begin
arcvh nothing 2 arcvh nothing 2
close close
save 'mathOOutline' 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 sketch # mathBoxOutline
include : spiro-outline include : spiro-outline
corner leftBox topBox corner leftBox topBox
@ -195,6 +166,38 @@ glyph-block Symbol-Math-Frame-And-Geometry : begin
dispiro [widths.lhs sw] [flat rightBox topBox] [curl leftBox topBox] dispiro [widths.lhs sw] [flat rightBox topBox] [curl leftBox topBox]
save 'mathBox' save 'mathBox'
for-width-kinds WIDE-WIDTH-1
local radiusBig : (tackTop - tackBot) / 2 * [Math.sqrt MosaicWidthScalar]
local leftBig : MosaicMiddle - radiusBig
local rightBig : MosaicMiddle + radiusBig
sketch # mathOBig
set-width MosaicWidth
include : dispiro
widths.lhs GEOMETRYSTROKE
g4 MosaicMiddle (symbolMid + radiusBig - O)
archv nothing 2
g4 (leftBig + O) symbolMid
arcvh nothing 2
g4 MosaicMiddle (symbolMid - radiusBig + O)
archv nothing 2
g4 (rightBig - O) symbolMid
arcvh nothing 2
close
save [MangleName 'mathOBig']
sketch # mathOOutlineBig
set-width MosaicWidth
include : spiro-outline
g4 MosaicMiddle (symbolMid + radiusBig)
archv nothing 2
g4 (leftBig) symbolMid
arcvh nothing 2
g4 MosaicMiddle (symbolMid - radiusBig)
archv nothing 2
g4 (rightBig) symbolMid
arcvh nothing 2
close
save [MangleName 'mathOOutlineBig']
do "Geometry" do "Geometry"
sketch sketch
include : intersection include : intersection
@ -396,6 +399,44 @@ glyph-block Symbol-Math-Dots-And-Colons : begin
include : Ring (symbolMid + PERIODRADIUS - O) (symbolMid - PERIODRADIUS + O) (MIDDLE - PERIODRADIUS + O) (MIDDLE + PERIODRADIUS - O) true include : Ring (symbolMid + PERIODRADIUS - O) (symbolMid - PERIODRADIUS + O) (MIDDLE - PERIODRADIUS + O) (MIDDLE + PERIODRADIUS - O) true
save 'mathcdot' save 'mathcdot'
for-width-kinds WIDE-WIDTH-1
sketch # mathcdot
set-width MosaicWidth
include : Ring (symbolMid + PERIODRADIUS - O) (symbolMid - PERIODRADIUS + O) (MosaicMiddle - PERIODRADIUS + O) (MosaicMiddle + PERIODRADIUS - O) true
save [MangleName 'mathcdotBig']
sketch # plus
set-width MosaicWidth
include : union
HBar SB (MosaicWidth - SB) symbolMid GEOMETRYSTROKE
VBar MosaicMiddle [mix symbolMid plusTop MosaicWidthScalar] [mix symbolMid plusBot MosaicWidthScalar] GEOMETRYSTROKE
save : MangleName 'innerPlusBig'
sketch # innerMultiplyStroke1Big
set-width MosaicWidth
local radius : (RIGHTSB - SB) / 2 * [Math.sqrt MosaicWidthScalar]
include : dispiro
widths.center GEOMETRYSTROKE
flat (MosaicMiddle - radius) (symbolMid - radius)
curl (MosaicMiddle + radius) (symbolMid + radius)
save : MangleName 'innerMultiplyStroke1Big'
sketch # innerMultiplyStroke2Big
set-width MosaicWidth
local radius : (RIGHTSB - SB) / 2 * [Math.sqrt MosaicWidthScalar]
include : dispiro
widths.center GEOMETRYSTROKE
flat (MosaicMiddle + radius) (symbolMid - radius)
curl (MosaicMiddle - radius) (symbolMid + radius)
save : MangleName 'innerMultiplyStroke2Big'
sketch # innerMultiplyBig
set-width MosaicWidth
include : refer-glyph : MangleName "innerMultiplyStroke1Big"
include : refer-glyph : MangleName "innerMultiplyStroke2Big"
save : MangleName 'innerMultiplyBig'
composite 'mathAsterisk' [refer-glyph 'opAsterisk.low'] [into-unicode 0x2217] composite 'mathAsterisk' [refer-glyph 'opAsterisk.low'] [into-unicode 0x2217]
glyph-block Symbol-Math-Circled : begin glyph-block Symbol-Math-Circled : begin
@ -405,12 +446,14 @@ glyph-block Symbol-Math-Circled : begin
composite [refer-glyph 'mathO'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'innerMultiply']] [into-unicode 0x2297] composite [refer-glyph 'mathO'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'innerMultiply']] [into-unicode 0x2297]
composite [refer-glyph 'mathO'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'innerMultiplyStroke1']] [into-unicode 0x2298] composite [refer-glyph 'mathO'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'innerMultiplyStroke1']] [into-unicode 0x2298]
composite [refer-glyph 'mathO'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'mathcdot']] [into-unicode 0x2299] composite [refer-glyph 'mathO'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'mathcdot']] [into-unicode 0x2299]
composite [refer-glyph 'mathOBig'] [intersection [refer-glyph 'mathOOutlineBig'] [refer-glyph 'mathcdot']] [into-unicode 0x2A00]
composite [refer-glyph 'mathOBig'] [intersection [refer-glyph 'mathOOutlineBig'] [refer-glyph 'innerPlus']] [into-unicode 0x2A01]
composite [refer-glyph 'mathOBig'] [intersection [refer-glyph 'mathOOutlineBig'] [refer-glyph 'innerMultiply']] [into-unicode 0x2A02]
composite [refer-glyph 'mathO'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'smallwhitecircle.hwid']] [into-unicode 0x229A] composite [refer-glyph 'mathO'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'smallwhitecircle.hwid']] [into-unicode 0x229A]
composite [refer-glyph 'mathO'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'mathAsterisk']] [into-unicode 0x229B] composite [refer-glyph 'mathO'] [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'mathAsterisk']] [into-unicode 0x229B]
for-width-kinds WIDE-WIDTH-1
composite [MangleName 'uni2A00'] [refer-glyph : MangleName 'mathOBig'] [intersection [refer-glyph : MangleName 'mathOOutlineBig'] [refer-glyph : MangleName 'mathcdotBig']] [into-unicode : MangleUnicode 0x2A00]
composite [MangleName 'uni2A01'] [refer-glyph : MangleName 'mathOBig'] [intersection [refer-glyph : MangleName 'mathOOutlineBig'] [refer-glyph : MangleName 'innerPlusBig']] [into-unicode : MangleUnicode 0x2A01]
composite [MangleName 'uni2A02'] [refer-glyph : MangleName 'mathOBig'] [intersection [refer-glyph : MangleName 'mathOOutlineBig'] [refer-glyph : MangleName 'innerMultiplyBig']] [into-unicode : MangleUnicode 0x2A02]
composite composite
refer-glyph 'mathO' refer-glyph 'mathO'
intersection intersection

View file

@ -346,6 +346,80 @@ glyph-block Symbol-Other-Metric-Marks : begin
include : HBar 0 MIDDLE parenBot SHOULDERFINE include : HBar 0 MIDDLE parenBot SHOULDERFINE
save 'metmark' 0xE09F save 'metmark' 0xE09F
define MosaicTop fontMetrics.OS_2.sTypoAscender
define MosaicBottom fontMetrics.OS_2.sTypoDescender
define MarkerSize (UPM / 12)
define MarkerBarWidth (UPM / 50)
sketch # boxMarkLeft
set-width 0
include : spiro-outline
corner 0 parenTop
corner 0 (parenTop + MarkerSize * 1.5)
corner (-MarkerSize * 1.5) parenTop
include : spiro-outline
corner 0 parenBot
corner 0 (parenBot - MarkerSize * 1.5)
corner (-MarkerSize * 1.5) parenBot
save 'boxMarkLeft' 0xE096
sketch # boxMarkRight
set-width 0
include : spiro-outline
corner 0 parenTop
corner 0 (parenTop + MarkerSize * 1.5)
corner (+MarkerSize * 1.5) parenTop
include : spiro-outline
corner 0 parenBot
corner 0 (parenBot - MarkerSize * 1.5)
corner (+MarkerSize * 1.5) parenBot
save 'boxMarkRight' 0xE097
sketch # mosaicMarkLeft
set-width 0
include : spiro-outline
corner 0 MosaicTop
corner 0 (MosaicTop + MarkerSize * 1.5)
corner (-MarkerSize * 1.5) MosaicTop
include : spiro-outline
corner 0 MosaicBottom
corner 0 (MosaicBottom - MarkerSize * 1.5)
corner (-MarkerSize * 1.5) MosaicBottom
save 'mosaicMarkLeft' 0xE098
sketch # mosaicMarkRight
set-width 0
include : spiro-outline
corner 0 MosaicTop
corner 0 (MosaicTop + MarkerSize * 1.5)
corner (+MarkerSize * 1.5) MosaicTop
include : spiro-outline
corner 0 MosaicBottom
corner 0 (MosaicBottom - MarkerSize * 1.5)
corner (+MarkerSize * 1.5) MosaicBottom
save 'mosaicMarkRight' 0xE099
sketch # baselineMarkUnder
set-width 0
include : HBar (-WIDTH * 2) (WIDTH * 2) 0 MarkerBarWidth
save 'baselineMarkUnder' 0xE09A
sketch # baselineMarkLeft
set-width 0
include : spiro-outline
corner 0 0
corner (-MarkerSize * 1.5) (+MarkerSize * 1.5)
corner (-MarkerSize * 1.5) (-MarkerSize * 1.5)
save 'baselineMarkLeft' 0xE09B
sketch # baselineMarkRight
set-width 0
include : spiro-outline
corner 0 0
corner (+MarkerSize * 1.5) (+MarkerSize * 1.5)
corner (+MarkerSize * 1.5) (-MarkerSize * 1.5)
save 'baselineMarkRight' 0xE09C
glyph-block Symbol-Other-Fags : begin glyph-block Symbol-Other-Fags : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes

View file

@ -179,9 +179,11 @@ define-macro for-width-kinds : syntax-rules
{1 '.fwid' $Capture$.metrics.WIDE-WIDTH-0 ($Capture$.metrics.WIDE-WIDTH-0 / 2)} {1 '.fwid' $Capture$.metrics.WIDE-WIDTH-0 ($Capture$.metrics.WIDE-WIDTH-0 / 2)}
} }
foreach {FMosaicWide MosaicNameSuffix MosaicWidth MosaicUnitWidth} [items-of WidthKinds] : do foreach {FMosaicWide MosaicNameSuffix MosaicWidth MosaicUnitWidth} [items-of WidthKinds] : do
define MosaicDesiredWidth @[formOf _desired]
define MosaicMiddle : MosaicWidth / 2 define MosaicMiddle : MosaicWidth / 2
define MosaicWidthScalar : MosaicWidth / MosaicUnitWidth define MosaicWidthScalar : MosaicWidth / MosaicUnitWidth
define [MangleUnicode unicode] : if (MosaicWidth == @[formOf _desired]) unicode nothing define [MangleUnicode unicode _desiredOverride]
if (MosaicWidth == (_desiredOverride || MosaicDesiredWidth)) unicode nothing
define [MangleName name] : name + MosaicNameSuffix define [MangleName name] : name + MosaicNameSuffix
begin @::[_body.map formOf] begin @::[_body.map formOf]
] ]

View file

@ -560,9 +560,21 @@ const PagesFontExport = task(`pages:font-export`, async target => {
} }
}); });
const PagesFastFontExport = task(`pages:fast-font-export`, async target => {
const [pagesDir] = await target.need(PagesDir);
if (!pagesDir) return;
const dirs = await target.need(GroupContents`iosevka`);
for (const dir of dirs) {
await cp(`${DIST}/${dir}`, path.resolve(pagesDir, "shared/font-import", dir));
}
});
const Pages = task(`pages`, async target => { const Pages = task(`pages`, async target => {
await target.need(PagesDataExport, PagesFontExport); await target.need(PagesDataExport, PagesFontExport);
}); });
const PagesFast = task(`pages-fast`, async target => {
await target.need(PagesDataExport, PagesFastFontExport);
});
const SampleImagesPre = task(`sample-images:pre`, async target => { const SampleImagesPre = task(`sample-images:pre`, async target => {
const [sans, slab] = await target.need( const [sans, slab] = await target.need(