APL symbols remake (I)
This commit is contained in:
parent
b82ce595ce
commit
ffc50ab30a
9 changed files with 625 additions and 527 deletions
|
@ -41,7 +41,7 @@ export as build : define [buildFont para recursive recursiveCodes] : begin
|
||||||
return nothing
|
return nothing
|
||||||
|
|
||||||
define metrics : calculateMetrics para
|
define metrics : calculateMetrics para
|
||||||
define [object globalTransform MIDDLE CAP XH SB RIGHTSB CONTRAST STROKE SUPERNESS WIDTH TANSLANT OVERLAYPOS DESCENDER parenMid parenTop parenBot operTop operBot plusTop plusBot operMid] metrics
|
define [object globalTransform MIDDLE CAP XH SB RIGHTSB CONTRAST STROKE SUPERNESS WIDTH TANSLANT OVERLAYPOS DESCENDER parenMid parenTop parenBot operTop operBot plusTop plusBot operMid logicTop logicBot] metrics
|
||||||
|
|
||||||
# Anchor parameters
|
# Anchor parameters
|
||||||
define [object MARK BASE] Anchor
|
define [object MARK BASE] Anchor
|
||||||
|
@ -55,9 +55,11 @@ export as build : define [buildFont para recursive recursiveCodes] : begin
|
||||||
|
|
||||||
define markAboveLower {.anchors {.above [ta : new Anchor MIDDLE XH BASE]}}
|
define markAboveLower {.anchors {.above [ta : new Anchor MIDDLE XH BASE]}}
|
||||||
define markAboveOper {.anchors {.above [ta : new Anchor MIDDLE operTop BASE]}}
|
define markAboveOper {.anchors {.above [ta : new Anchor MIDDLE operTop BASE]}}
|
||||||
|
define markAboveLogic {.anchors {.above [ta : new Anchor MIDDLE logicTop BASE]}}
|
||||||
define markAbovePlus {.anchors {.above [ta : new Anchor MIDDLE plusTop BASE]}}
|
define markAbovePlus {.anchors {.above [ta : new Anchor MIDDLE plusTop BASE]}}
|
||||||
define markAboveCap {.anchors {.above [ta : new Anchor MIDDLE CAP BASE]}}
|
define markAboveCap {.anchors {.above [ta : new Anchor MIDDLE CAP BASE]}}
|
||||||
define markBelowLower {.anchors {.below [ta : new Anchor MIDDLE DESCENDER BASE]}}
|
define markBelowLower {.anchors {.below [ta : new Anchor MIDDLE DESCENDER BASE]}}
|
||||||
|
define markBelowLogic {.anchors {.below [ta : new Anchor MIDDLE logicBot BASE]}}
|
||||||
define markBelowOper {.anchors {.below [ta : new Anchor MIDDLE operBot BASE]}}
|
define markBelowOper {.anchors {.below [ta : new Anchor MIDDLE operBot BASE]}}
|
||||||
define markBelowPlus {.anchors {.below [ta : new Anchor MIDDLE plusBot BASE]}}
|
define markBelowPlus {.anchors {.below [ta : new Anchor MIDDLE plusBot BASE]}}
|
||||||
define markBelowZero {.anchors {.below [ta : new Anchor MIDDLE 0 BASE]}}
|
define markBelowZero {.anchors {.below [ta : new Anchor MIDDLE 0 BASE]}}
|
||||||
|
@ -83,6 +85,7 @@ export as build : define [buildFont para recursive recursiveCodes] : begin
|
||||||
b : buildStandardMarkSet markAboveCap markBelowZero markToprightCap markBottomrightZero
|
b : buildStandardMarkSet markAboveCap markBelowZero markToprightCap markBottomrightZero
|
||||||
e : buildStandardMarkSet markAboveLower markBelowZero markToprightLower markBottomrightZero
|
e : buildStandardMarkSet markAboveLower markBelowZero markToprightLower markBottomrightZero
|
||||||
oper : buildStandardMarkSet markAboveOper markBelowOper markToprightLower markBottomrightZero
|
oper : buildStandardMarkSet markAboveOper markBelowOper markToprightLower markBottomrightZero
|
||||||
|
logic : buildStandardMarkSet markAboveLogic markBelowLogic markToprightLower markBottomrightZero
|
||||||
plus : buildStandardMarkSet markAbovePlus markBelowPlus markToprightLower markBottomrightZero
|
plus : buildStandardMarkSet markAbovePlus markBelowPlus markToprightLower markBottomrightZero
|
||||||
p : buildStandardMarkSet markAboveLower markBelowLower markToprightLower markBottomrightLower
|
p : buildStandardMarkSet markAboveLower markBelowLower markToprightLower markBottomrightLower
|
||||||
if : buildStandardMarkSet markAboveCap markBelowLower markToprightCap markBottomrightLower
|
if : buildStandardMarkSet markAboveCap markBelowLower markToprightCap markBottomrightLower
|
||||||
|
|
|
@ -354,7 +354,7 @@ export : define [apply] : begin
|
||||||
apply-transform : Italify
|
apply-transform : Italify
|
||||||
|
|
||||||
define [bracedDottdeDimens width] : begin
|
define [bracedDottdeDimens width] : begin
|
||||||
define sw [adviceBlackness 5]
|
define sw : Math.max (WIDTH * 0.075) [adviceBlackness 5]
|
||||||
define dscale : linreg WIDTH 0.55 UPM 0.65 width
|
define dscale : linreg WIDTH 0.55 UPM 0.65 width
|
||||||
define pscale : linreg WIDTH 0.6 UPM 0.75 width
|
define pscale : linreg WIDTH 0.6 UPM 0.75 width
|
||||||
define l : [Math.max (SB + O * 3) (width / 2 - CAP / 2 * dscale - sw * 2.5)] + OX
|
define l : [Math.max (SB + O * 3) (width / 2 - CAP / 2 * dscale - sw * 2.5)] + OX
|
||||||
|
|
|
@ -685,4 +685,31 @@ export : define [apply] : begin
|
||||||
define [ForceUpright] : glyph-construction
|
define [ForceUpright] : glyph-construction
|
||||||
set this.gizmo : Translate 0 0
|
set this.gizmo : Translate 0 0
|
||||||
|
|
||||||
return [object queryFeatureSelector select-variant italic-variant alias composite into-unicode turned dual hcombine vdual vcombine fwl fwr dwl dwr dwc Ring RingAt DotAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs halfXStrand xStrand nShoulderKnots nShoulder mShoulderSpiro HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LegShape LeftHook HooktopLeftBar CurlyTail HCurlyTail FlatSlashShape determineMixR HookShape hookstart hookend CyrDescender refair Fork Miniature Thinner Widen FlipAround ScaleAround Realign ForceUpright]
|
define [Overlay overlay background] : glyph-construction
|
||||||
|
define sw : [adviceBlackness 6] / 2
|
||||||
|
local candidates {}
|
||||||
|
define segs 3
|
||||||
|
if background.anchors : include {.anchors background.anchors}
|
||||||
|
|
||||||
|
foreach [r : range (0 - segs) till (segs)] : foreach [c : range (0 - segs) till (segs)] : do
|
||||||
|
define dx : r / segs * sw
|
||||||
|
define dy : c / segs * sw
|
||||||
|
candidates.push : glyph-construction
|
||||||
|
if background.anchors : include {.anchors background.anchors}
|
||||||
|
include overlay
|
||||||
|
apply-transform : Translate dx dy
|
||||||
|
|
||||||
|
foreach [c : items-of overlay.contours] : foreach [z : items-of c] : if z.on : do
|
||||||
|
define x z.x
|
||||||
|
define y z.y
|
||||||
|
candidates.push : glyph-construction
|
||||||
|
set this.gizmo : Translate 0 0
|
||||||
|
start-from (x - sw) (y - sw)
|
||||||
|
line-to (x + sw) (y - sw)
|
||||||
|
line-to (x + sw) (y + sw)
|
||||||
|
line-to (x - sw) (y + sw)
|
||||||
|
|
||||||
|
include : difference background [union.apply null candidates]
|
||||||
|
include overlay
|
||||||
|
|
||||||
|
return [object queryFeatureSelector select-variant italic-variant alias composite into-unicode turned dual hcombine vdual vcombine fwl fwr dwl dwr dwc Ring RingAt DotAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs halfXStrand xStrand nShoulderKnots nShoulder mShoulderSpiro HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LegShape LeftHook HooktopLeftBar CurlyTail HCurlyTail FlatSlashShape determineMixR HookShape hookstart hookend CyrDescender refair Fork Miniature Thinner Widen FlipAround ScaleAround Realign ForceUpright Overlay]
|
||||||
|
|
|
@ -119,6 +119,8 @@ export : define [apply] : begin
|
||||||
|
|
||||||
|
|
||||||
define [LambdaShape sw _top] : glyph-construction
|
define [LambdaShape sw _top] : glyph-construction
|
||||||
|
local cornerdist : HALFSTROKE * HVCONTRAST * [if SLAB 1.2 1]
|
||||||
|
local fine : fallback para.vtipfine : if SLAB 0.9 0.8
|
||||||
local TURN (CAP * 0.1)
|
local TURN (CAP * 0.1)
|
||||||
local curviness 0.2
|
local curviness 0.2
|
||||||
local top : fallback _top CAP
|
local top : fallback _top CAP
|
||||||
|
@ -126,18 +128,18 @@ export : define [apply] : begin
|
||||||
widths.rhs sw
|
widths.rhs sw
|
||||||
flat SB 0 [heading UPWARD]
|
flat SB 0 [heading UPWARD]
|
||||||
curl SB TURN [heading UPWARD]
|
curl SB TURN [heading UPWARD]
|
||||||
quadcontrols 0 curviness
|
quadcontrols 0 curviness 9 unimportant
|
||||||
g4 (MIDDLE - sw / 2) top [widths 0 (sw * 0.8)]
|
g4 (MIDDLE - cornerdist) top [widths 0 (sw * fine)]
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.lhs sw
|
widths.lhs sw
|
||||||
flat RIGHTSB 0 [heading UPWARD]
|
flat RIGHTSB 0 [heading UPWARD]
|
||||||
curl RIGHTSB TURN [heading UPWARD]
|
curl RIGHTSB TURN [heading UPWARD]
|
||||||
quadcontrols 0 curviness
|
quadcontrols 0 curviness 9 unimportant
|
||||||
g4 (MIDDLE + sw / 2) top [widths (sw * 0.8) 0]
|
g4 (MIDDLE + cornerdist) top [widths (sw * fine) 0]
|
||||||
|
|
||||||
start-from (MIDDLE - sw / 2) top
|
start-from (MIDDLE - cornerdist) top
|
||||||
line-to (MIDDLE + sw / 2) top
|
line-to (MIDDLE + cornerdist) top
|
||||||
line-to MIDDLE (top - sw)
|
line-to MIDDLE (top - sw * fine)
|
||||||
|
|
||||||
if SLAB : begin
|
if SLAB : begin
|
||||||
include : CenterBottomSerif (SB + sw / 2 * HVCONTRAST) 0 JUT
|
include : CenterBottomSerif (SB + sw / 2 * HVCONTRAST) 0 JUT
|
||||||
|
|
|
@ -326,8 +326,7 @@ export : define [apply] : begin
|
||||||
define topFW : parenMid + squareRadiusFW
|
define topFW : parenMid + squareRadiusFW
|
||||||
define bottomFW : parenMid - squareRadiusFW
|
define bottomFW : parenMid - squareRadiusFW
|
||||||
|
|
||||||
local hollowSW : adviceBlackness 5
|
define [hollowScale w d s] : (w - [fallback s GEOMETRYSTROKE] * [fallback d : WIDTH / shapeWidth]) / w
|
||||||
define [hollowScale w d s] : (w - [fallback s hollowSW] * [fallback d : WIDTH / shapeWidth]) / w
|
|
||||||
|
|
||||||
define [hollow newid unicode oldid zx zy cx cy] : sketch
|
define [hollow newid unicode oldid zx zy cx cy] : sketch
|
||||||
local isWide : glyphs.(oldid).advanceWidth > WIDTH
|
local isWide : glyphs.(oldid).advanceWidth > WIDTH
|
||||||
|
@ -478,7 +477,7 @@ export : define [apply] : begin
|
||||||
|
|
||||||
sketch # whiteparallelogram
|
sketch # whiteparallelogram
|
||||||
define skew : squareRadius * 1 / 4
|
define skew : squareRadius * 1 / 4
|
||||||
define w : hollowSW * (WIDTH / shapeWidth)
|
define w : GEOMETRYSTROKE * (WIDTH / shapeWidth)
|
||||||
set-width shapeWidth
|
set-width shapeWidth
|
||||||
include : intersection
|
include : intersection
|
||||||
begin glyphs.blackparallelogram
|
begin glyphs.blackparallelogram
|
||||||
|
@ -573,7 +572,7 @@ export : define [apply] : begin
|
||||||
save 'blackLonzenge' 0x29EB
|
save 'blackLonzenge' 0x29EB
|
||||||
|
|
||||||
sketch # whiteLonzenge
|
sketch # whiteLonzenge
|
||||||
define w : hollowSW * (WIDTH / shapeWidth)
|
define w : GEOMETRYSTROKE * (WIDTH / shapeWidth)
|
||||||
set-width shapeWidth
|
set-width shapeWidth
|
||||||
include : intersection
|
include : intersection
|
||||||
begin glyphs.blackLonzenge
|
begin glyphs.blackLonzenge
|
||||||
|
@ -597,6 +596,17 @@ export : define [apply] : begin
|
||||||
include FullWidthify
|
include FullWidthify
|
||||||
save 'whiteLonzenge' 0x25CA
|
save 'whiteLonzenge' 0x25CA
|
||||||
|
|
||||||
|
sketch # blackcircle
|
||||||
|
include markset.plus
|
||||||
|
include : spiro-outline
|
||||||
|
g4 MIDDLE (parenMid + squareRadius + O)
|
||||||
|
g4 (left - O) parenMid
|
||||||
|
g4 MIDDLE (parenMid - squareRadius - O)
|
||||||
|
g4 (right + O) parenMid
|
||||||
|
close
|
||||||
|
reverse-last
|
||||||
|
save 'hwblackcircleO'
|
||||||
|
|
||||||
sketch # blackcircle
|
sketch # blackcircle
|
||||||
include markset.plus
|
include markset.plus
|
||||||
include : spiro-outline
|
include : spiro-outline
|
||||||
|
@ -691,8 +701,8 @@ export : define [apply] : begin
|
||||||
hollow 'hwsmallwhitecircle' null 'hwsmallblackcircle' [hollowScale (squareRadius * designParameters.geometric_small_x) 1]
|
hollow 'hwsmallwhitecircle' null 'hwsmallblackcircle' [hollowScale (squareRadius * designParameters.geometric_small_x) 1]
|
||||||
hollow 'smallwhitesquare' 0x25AB 'smallblacksquare' [hollowScale : squareRadius * designParameters.geometric_small_x]
|
hollow 'smallwhitesquare' 0x25AB 'smallblacksquare' [hollowScale : squareRadius * designParameters.geometric_small_x]
|
||||||
hollow 'hwwhitecircle' null 'hwblackcircle'
|
hollow 'hwwhitecircle' null 'hwblackcircle'
|
||||||
let [s : hollowScale squareRadius nothing (hollowSW * [Math.sqrt 2])] : begin
|
let [s : hollowScale squareRadius nothing (GEOMETRYSTROKE * [Math.sqrt 2])] : begin
|
||||||
hollow 'hwwhitediamond' null 'hwblackdiamond' s
|
hollow 'hwwhitediamond' 0x22C4 'hwblackdiamond' s
|
||||||
hollow 'whitediamond' 0x25C7 'blackdiamond' s
|
hollow 'whitediamond' 0x25C7 'blackdiamond' s
|
||||||
hollowWithCenter 'whitediamondWithCenter' 0x25C8 'blackdiamond' s
|
hollowWithCenter 'whitediamondWithCenter' 0x25C8 'blackdiamond' s
|
||||||
let [sts 0.75]
|
let [sts 0.75]
|
||||||
|
@ -703,9 +713,9 @@ export : define [apply] : begin
|
||||||
resized 'smallblacktriangleleft' 0x25C2 'blacktriangleleft' MIDDLE parenMid 0.75
|
resized 'smallblacktriangleleft' 0x25C2 'blacktriangleleft' MIDDLE parenMid 0.75
|
||||||
|
|
||||||
let
|
let
|
||||||
: sl : hollowScale (squareRadius * 2 / [Math.sqrt 3]) nothing (hollowSW * [Math.sqrt 3])
|
: sl : hollowScale (squareRadius * 2 / [Math.sqrt 3]) nothing (GEOMETRYSTROKE * [Math.sqrt 3])
|
||||||
: slt : hollowScale (squareRadius * 2 / [Math.sqrt 3]) nothing (hollowSW * [Math.sqrt 3])
|
: slt : hollowScale (squareRadius * 2 / [Math.sqrt 3]) nothing (GEOMETRYSTROKE * [Math.sqrt 3])
|
||||||
: ss : hollowScale (squareRadius * sts * 2 / [Math.sqrt 3]) nothing (hollowSW * [Math.sqrt 3])
|
: ss : hollowScale (squareRadius * sts * 2 / [Math.sqrt 3]) nothing (GEOMETRYSTROKE * [Math.sqrt 3])
|
||||||
: begin
|
: begin
|
||||||
hollow 'whitetriangleup' 0x25B3 'blacktriangleup' sl nothing MIDDLE (parenMid - squareRadius / 3)
|
hollow 'whitetriangleup' 0x25B3 'blacktriangleup' sl nothing MIDDLE (parenMid - squareRadius / 3)
|
||||||
hollow 'whitetriangledown' 0x25BD 'blacktriangledown' sl nothing MIDDLE (parenMid + squareRadius / 3)
|
hollow 'whitetriangledown' 0x25BD 'blacktriangledown' sl nothing MIDDLE (parenMid + squareRadius / 3)
|
||||||
|
@ -738,9 +748,9 @@ export : define [apply] : begin
|
||||||
# Rounded
|
# Rounded
|
||||||
sketch # roundwhitesquare, U+25A2
|
sketch # roundwhitesquare, U+25A2
|
||||||
set-width shapeWidth
|
set-width shapeWidth
|
||||||
define cr : squareRadiusFW - hollowSW * 2
|
define cr : squareRadiusFW - GEOMETRYSTROKE * 2
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.lhs hollowSW
|
widths.lhs GEOMETRYSTROKE
|
||||||
flat (middleFW + 1) (parenMid + squareRadiusFW) [heading LEFTWARD]
|
flat (middleFW + 1) (parenMid + squareRadiusFW) [heading LEFTWARD]
|
||||||
curl (middleFW - cr) (parenMid + squareRadiusFW) [heading LEFTWARD]
|
curl (middleFW - cr) (parenMid + squareRadiusFW) [heading LEFTWARD]
|
||||||
archv
|
archv
|
||||||
|
@ -758,8 +768,8 @@ export : define [apply] : begin
|
||||||
save 'roundwhitesquare' 0x25A2
|
save 'roundwhitesquare' 0x25A2
|
||||||
# Shaded hollow squares
|
# Shaded hollow squares
|
||||||
sketch # hshadesquare, U+25A4
|
sketch # hshadesquare, U+25A4
|
||||||
define lineWidth : Math.min hollowSW ((squareRadiusFW * 2 - hollowSW * 2) * 1 / 11)
|
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
|
||||||
define top : parenMid + squareRadiusFW - hollowSW + lineWidth / 2
|
define top : parenMid + squareRadiusFW - GEOMETRYSTROKE + lineWidth / 2
|
||||||
define bot : parenMid - (top - parenMid)
|
define bot : parenMid - (top - parenMid)
|
||||||
set-width shapeWidth
|
set-width shapeWidth
|
||||||
include : union
|
include : union
|
||||||
|
@ -781,8 +791,8 @@ export : define [apply] : begin
|
||||||
curl rightFW [mix top bot 0.75] [heading RIGHTWARD]
|
curl rightFW [mix top bot 0.75] [heading RIGHTWARD]
|
||||||
save 'hshadesquare' 0x25A4
|
save 'hshadesquare' 0x25A4
|
||||||
sketch # vshadesquare, U+25A5
|
sketch # vshadesquare, U+25A5
|
||||||
define lineWidth : Math.min hollowSW ((squareRadiusFW * 2 - hollowSW * 2) * 1 / 11)
|
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
|
||||||
define r : shapeWidth / 2 + squareRadiusFW - hollowSW + lineWidth / 2
|
define r : shapeWidth / 2 + squareRadiusFW - GEOMETRYSTROKE + lineWidth / 2
|
||||||
define l : shapeWidth / 2 - (r - shapeWidth / 2)
|
define l : shapeWidth / 2 - (r - shapeWidth / 2)
|
||||||
set-width shapeWidth
|
set-width shapeWidth
|
||||||
include : union
|
include : union
|
||||||
|
@ -808,7 +818,7 @@ export : define [apply] : begin
|
||||||
include : union glyphs.hshadesquare glyphs.vshadesquare
|
include : union glyphs.hshadesquare glyphs.vshadesquare
|
||||||
save 'hvshadesquare' 0x25A6
|
save 'hvshadesquare' 0x25A6
|
||||||
sketch # ddiagshadesquare, U+25A7
|
sketch # ddiagshadesquare, U+25A7
|
||||||
define lineWidth : Math.min hollowSW ((squareRadiusFW * 2 - hollowSW * 2) * 1 / 11)
|
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
|
||||||
define top : parenMid + squareRadiusFW
|
define top : parenMid + squareRadiusFW
|
||||||
define bot : parenMid - (top - parenMid)
|
define bot : parenMid - (top - parenMid)
|
||||||
set-width shapeWidth
|
set-width shapeWidth
|
||||||
|
@ -823,7 +833,7 @@ export : define [apply] : begin
|
||||||
curl rightFW [mix top bot (j / 4 + 1)] [heading RIGHTWARD]
|
curl rightFW [mix top bot (j / 4 + 1)] [heading RIGHTWARD]
|
||||||
save 'ddiagshadesquare' 0x25A7
|
save 'ddiagshadesquare' 0x25A7
|
||||||
sketch # udiagshadesquare, U+25A8
|
sketch # udiagshadesquare, U+25A8
|
||||||
define lineWidth : Math.min hollowSW ((squareRadiusFW * 2 - hollowSW * 2) * 1 / 11)
|
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
|
||||||
define top : parenMid + squareRadiusFW
|
define top : parenMid + squareRadiusFW
|
||||||
define bot : parenMid - (top - parenMid)
|
define bot : parenMid - (top - parenMid)
|
||||||
set-width shapeWidth
|
set-width shapeWidth
|
||||||
|
@ -851,7 +861,7 @@ export : define [apply] : begin
|
||||||
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 quarters] : sketch
|
||||||
define r : squareRadiusFW - hollowSW / 2
|
define r : squareRadiusFW - GEOMETRYSTROKE / 2
|
||||||
set-width shapeWidth
|
set-width shapeWidth
|
||||||
include : union
|
include : union
|
||||||
begin glyphs.whitecircle
|
begin glyphs.whitecircle
|
||||||
|
|
|
@ -6,8 +6,7 @@ import [designParameters] from '../meta/aesthetics'
|
||||||
|
|
||||||
export : define [apply] : begin
|
export : define [apply] : begin
|
||||||
glyph-module-entry commonShapes overmarks letterBasic letterExt
|
glyph-module-entry commonShapes overmarks letterBasic letterExt
|
||||||
|
do "Letter-like"
|
||||||
### Letter-like
|
|
||||||
sketch # micro
|
sketch # micro
|
||||||
include glyphs.mu AS_BASE
|
include glyphs.mu AS_BASE
|
||||||
if SLAB : if (!para.isItalic) : begin
|
if SLAB : if (!para.isItalic) : begin
|
||||||
|
@ -94,9 +93,8 @@ export : define [apply] : begin
|
||||||
g4 SB (CAP - HOOK)
|
g4 SB (CAP - HOOK)
|
||||||
save 'partial' 0x2202
|
save 'partial' 0x2202
|
||||||
|
|
||||||
### Mathematical Operators
|
do "Frames"
|
||||||
do
|
local sw GEOMETRYSTROKE
|
||||||
local sw OPERATORSTROKE
|
|
||||||
local k : 2 / 3
|
local k : 2 / 3
|
||||||
local top : parenMid + (RIGHTSB - SB) * 0.5 + sw * k
|
local top : parenMid + (RIGHTSB - SB) * 0.5 + sw * k
|
||||||
local bottom : parenMid - (RIGHTSB - SB) * 0.5 - sw * k
|
local bottom : parenMid - (RIGHTSB - SB) * 0.5 - sw * k
|
||||||
|
@ -104,10 +102,10 @@ export : define [apply] : begin
|
||||||
local right : RIGHTSB + sw * k
|
local right : RIGHTSB + sw * k
|
||||||
|
|
||||||
sketch # mathO
|
sketch # mathO
|
||||||
include : OShape top bottom left right sw (SMALLSMOOTHA * 3) (SMALLSMOOTHB * 3)
|
include glyphs.hwwhitecircle
|
||||||
save 'mathO'
|
save 'mathO'
|
||||||
sketch # mathO-outline
|
sketch # mathO-outline
|
||||||
include : OShapeOutline top bottom left right sw (SMALLSMOOTHA * 3) (SMALLSMOOTHB * 3)
|
include glyphs.hwblackcircleO
|
||||||
save 'mathOOutline'
|
save 'mathOOutline'
|
||||||
sketch # mathBoxOutline
|
sketch # mathBoxOutline
|
||||||
include : spiro-outline
|
include : spiro-outline
|
||||||
|
@ -124,6 +122,7 @@ export : define [apply] : begin
|
||||||
dispiro [widths.lhs sw] [flat right top] [curl left top]
|
dispiro [widths.lhs sw] [flat right top] [curl left top]
|
||||||
save 'mathBox'
|
save 'mathBox'
|
||||||
|
|
||||||
|
do "Geometry"
|
||||||
sketch
|
sketch
|
||||||
include : intersection
|
include : intersection
|
||||||
spiro-outline
|
spiro-outline
|
||||||
|
@ -146,11 +145,17 @@ export : define [apply] : begin
|
||||||
dispiro [widths.lhs sw] [flat right top] [curl left bottom]
|
dispiro [widths.lhs sw] [flat right top] [curl left bottom]
|
||||||
save 'angle' 0x2220
|
save 'angle' 0x2220
|
||||||
|
|
||||||
|
do "Arith"
|
||||||
sketch # plus
|
sketch # plus
|
||||||
include markset.plus
|
include markset.plus
|
||||||
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
||||||
include : VBar MIDDLE plusTop plusBot OPERATORSTROKE
|
include : VBar MIDDLE plusTop plusBot OPERATORSTROKE
|
||||||
save 'plus' '+'
|
save 'plus' '+'
|
||||||
|
sketch # plus
|
||||||
|
include markset.plus
|
||||||
|
include : HBar SB RIGHTSB parenMid GEOMETRYSTROKE
|
||||||
|
include : VBar MIDDLE plusTop plusBot GEOMETRYSTROKE
|
||||||
|
save 'innerPlus'
|
||||||
sketch # ligplus.lc
|
sketch # ligplus.lc
|
||||||
include markset.plus
|
include markset.plus
|
||||||
include : HBar SB (WIDTH - O) parenMid OPERATORSTROKE
|
include : HBar SB (WIDTH - O) parenMid OPERATORSTROKE
|
||||||
|
@ -186,6 +191,10 @@ export : define [apply] : begin
|
||||||
include markset.plus
|
include markset.plus
|
||||||
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
||||||
save 'minus' 0x2212
|
save 'minus' 0x2212
|
||||||
|
sketch # innerMinus
|
||||||
|
include markset.plus
|
||||||
|
include : HBar SB RIGHTSB parenMid GEOMETRYSTROKE
|
||||||
|
save 'innerMinus'
|
||||||
|
|
||||||
sketch # plusminus
|
sketch # plusminus
|
||||||
include markset.plus
|
include markset.plus
|
||||||
|
@ -194,7 +203,61 @@ export : define [apply] : begin
|
||||||
save 'plusminus' 0xB1
|
save 'plusminus' 0xB1
|
||||||
turned 'minusplus' 0x2213 'plusminus' MIDDLE parenMid
|
turned 'minusplus' 0x2213 'plusminus' MIDDLE parenMid
|
||||||
|
|
||||||
|
sketch # multiply
|
||||||
|
include markset.plus
|
||||||
|
local radius : (RIGHTSB - SB) / 2
|
||||||
|
include : dispiro
|
||||||
|
widths.center OPERATORSTROKE
|
||||||
|
flat (MIDDLE - radius) (parenMid - radius)
|
||||||
|
curl (MIDDLE + radius) (parenMid + radius)
|
||||||
|
save 'multiplyStroke1'
|
||||||
|
sketch # multiply
|
||||||
|
include markset.plus
|
||||||
|
local radius : (RIGHTSB - SB) / 2
|
||||||
|
include : dispiro
|
||||||
|
widths.center OPERATORSTROKE
|
||||||
|
flat (MIDDLE + radius) (parenMid - radius)
|
||||||
|
curl (MIDDLE - radius) (parenMid + radius)
|
||||||
|
save 'multiplyStroke2'
|
||||||
|
sketch # multiply
|
||||||
|
include markset.plus
|
||||||
|
local radius : (RIGHTSB - SB) / 2
|
||||||
|
include : dispiro
|
||||||
|
widths.center GEOMETRYSTROKE
|
||||||
|
flat (MIDDLE - radius) (parenMid - radius)
|
||||||
|
curl (MIDDLE + radius) (parenMid + radius)
|
||||||
|
save 'innerMultiplyStroke1'
|
||||||
|
sketch # multiply
|
||||||
|
include markset.plus
|
||||||
|
local radius : (RIGHTSB - SB) / 2
|
||||||
|
include : dispiro
|
||||||
|
widths.center GEOMETRYSTROKE
|
||||||
|
flat (MIDDLE + radius) (parenMid - radius)
|
||||||
|
curl (MIDDLE - radius) (parenMid + radius)
|
||||||
|
save 'innerMultiplyStroke2'
|
||||||
|
|
||||||
|
sketch # multiply
|
||||||
|
include markset.plus
|
||||||
|
include glyphs.multiplyStroke1
|
||||||
|
include glyphs.multiplyStroke2
|
||||||
|
save 'multiply' 0xD7
|
||||||
|
sketch # multiply
|
||||||
|
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 (parenMid + radius + DOTRADIUS) (parenMid + radius - DOTRADIUS) (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
|
||||||
|
include : Ring (parenMid - radius + DOTRADIUS) (parenMid - radius - DOTRADIUS) (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
|
||||||
|
|
||||||
|
save 'divide' 0xF7
|
||||||
|
|
||||||
local equalHalfSpace : (parenTop - parenBot) * designParameters.equal_wideness
|
local equalHalfSpace : (parenTop - parenBot) * designParameters.equal_wideness
|
||||||
|
do "Equality"
|
||||||
sketch # equal
|
sketch # equal
|
||||||
include markset.plus
|
include markset.plus
|
||||||
include : HBar SB RIGHTSB (parenMid + equalHalfSpace) OPERATORSTROKE
|
include : HBar SB RIGHTSB (parenMid + equalHalfSpace) OPERATORSTROKE
|
||||||
|
@ -238,40 +301,7 @@ export : define [apply] : begin
|
||||||
equalHole WIDTH
|
equalHole WIDTH
|
||||||
save 'equal.cc'
|
save 'equal.cc'
|
||||||
|
|
||||||
sketch # multiply
|
do "Dots and Colon-likes"
|
||||||
include markset.plus
|
|
||||||
local radius : (RIGHTSB - SB) / 2
|
|
||||||
include : dispiro
|
|
||||||
widths.center OPERATORSTROKE
|
|
||||||
flat (MIDDLE - radius) (parenMid - radius)
|
|
||||||
curl (MIDDLE + radius) (parenMid + radius)
|
|
||||||
save 'multiplyStroke1'
|
|
||||||
|
|
||||||
sketch # multiply
|
|
||||||
include markset.plus
|
|
||||||
local radius : (RIGHTSB - SB) / 2
|
|
||||||
include : dispiro
|
|
||||||
widths.center OPERATORSTROKE
|
|
||||||
flat (MIDDLE + radius) (parenMid - radius)
|
|
||||||
curl (MIDDLE - radius) (parenMid + radius)
|
|
||||||
save 'multiplyStroke2'
|
|
||||||
|
|
||||||
sketch # multiply
|
|
||||||
include markset.plus
|
|
||||||
include glyphs.multiplyStroke1
|
|
||||||
include glyphs.multiplyStroke2
|
|
||||||
save 'multiply' 0xD7
|
|
||||||
|
|
||||||
sketch # divide
|
|
||||||
include markset.plus
|
|
||||||
include glyphs.minus
|
|
||||||
local radius : (RIGHTSB - SB) / 2
|
|
||||||
include : Ring (parenMid + radius + DOTRADIUS) (parenMid + radius - DOTRADIUS) (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
|
|
||||||
include : Ring (parenMid - radius + DOTRADIUS) (parenMid - radius - DOTRADIUS) (MIDDLE - DOTRADIUS + O) (MIDDLE + DOTRADIUS - O) true
|
|
||||||
|
|
||||||
save 'divide' 0xF7
|
|
||||||
|
|
||||||
do "colon-likes"
|
|
||||||
local radius1 PERIODRADIUS
|
local radius1 PERIODRADIUS
|
||||||
local radius : Math.min PERIODRADIUS
|
local radius : Math.min PERIODRADIUS
|
||||||
linreg WIDTH (0.5 * [adviceBlackness 3.5] * PERIODSIZE / STROKE) UPM PERIODRADIUS FULLWIDTH
|
linreg WIDTH (0.5 * [adviceBlackness 3.5] * PERIODSIZE / STROKE) UPM PERIODRADIUS FULLWIDTH
|
||||||
|
@ -306,32 +336,38 @@ export : define [apply] : begin
|
||||||
include : Ring (parenMid + PERIODRADIUS - O) (parenMid - PERIODRADIUS + O) (MIDDLE - PERIODRADIUS + O) (MIDDLE + PERIODRADIUS - O) true
|
include : Ring (parenMid + PERIODRADIUS - O) (parenMid - PERIODRADIUS + O) (MIDDLE - PERIODRADIUS + O) (MIDDLE + PERIODRADIUS - O) true
|
||||||
save 'mathcdot'
|
save 'mathcdot'
|
||||||
|
|
||||||
composite 'mathAsterisk' glyphs.'smallasterisk.low' [into-unicode 0x2217]
|
composite 'mathAsterisk' glyphs.'opAsterisk.low' [into-unicode 0x2217]
|
||||||
|
|
||||||
# circled operators
|
do "Circled Operators"
|
||||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.plus] [into-unicode 0x2295]
|
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerPlus] [into-unicode 0x2295]
|
||||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.minus] [into-unicode 0x2296]
|
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerMinus] [into-unicode 0x2296]
|
||||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.multiply] [into-unicode 0x2297]
|
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerMultiply] [into-unicode 0x2297]
|
||||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.multiplyStroke1] [into-unicode 0x2298]
|
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerMultiplyStroke1] [into-unicode 0x2298]
|
||||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.mathcdot] [into-unicode 0x2299]
|
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.mathcdot] [into-unicode 0x2299]
|
||||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.hwsmallwhitecircle] [into-unicode 0x229A]
|
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.hwsmallwhitecircle] [into-unicode 0x229A]
|
||||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.mathAsterisk] [into-unicode 0x229B]
|
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.mathAsterisk] [into-unicode 0x229B]
|
||||||
do
|
composite
|
||||||
local eqS : Math.min OPERATORSTROKE ((RIGHTSB - SB) / 8)
|
begin glyphs.mathO
|
||||||
|
intersection
|
||||||
|
begin glyphs.mathOOutline
|
||||||
|
HBar (SB + GEOMETRYSTROKE) (RIGHTSB - GEOMETRYSTROKE) parenMid GEOMETRYSTROKE
|
||||||
|
into-unicode 0x229D
|
||||||
|
|
||||||
|
local eqS : Math.min GEOMETRYSTROKE ((RIGHTSB - SB) / 8)
|
||||||
local eqD : Math.max eqS ((RIGHTSB - SB) / 6)
|
local eqD : Math.max eqS ((RIGHTSB - SB) / 6)
|
||||||
composite glyphs.mathO
|
composite glyphs.mathO
|
||||||
intersection glyphs.mathOOutline : union
|
intersection glyphs.mathOOutline : union
|
||||||
HBar (SB + eqS) (RIGHTSB - eqS) (parenMid + eqD) eqS
|
HBar (SB + eqS) (RIGHTSB - eqS) (parenMid + eqD) eqS
|
||||||
HBar (SB + eqS) (RIGHTSB - eqS) (parenMid - eqD) eqS
|
HBar (SB + eqS) (RIGHTSB - eqS) (parenMid - eqD) eqS
|
||||||
into-unicode 0x229C
|
into-unicode 0x229C
|
||||||
composite glyphs.mathO [intersection glyphs.mathOOutline [HBar (SB + OPERATORSTROKE) (RIGHTSB - OPERATORSTROKE) parenMid OPERATORSTROKE]] [into-unicode 0x229D]
|
|
||||||
|
|
||||||
# boxed operators
|
do "Boxed operators"
|
||||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.plus] [into-unicode 0x229E]
|
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.innerPlus] [into-unicode 0x229E]
|
||||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.minus] [into-unicode 0x229F]
|
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.innerMinus] [into-unicode 0x229F]
|
||||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.multiply] [into-unicode 0x22A0]
|
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.innerMultiply] [into-unicode 0x22A0]
|
||||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.mathcdot] [into-unicode 0x22A1]
|
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.mathcdot] [into-unicode 0x22A1]
|
||||||
|
|
||||||
|
do "Vs and Cups"
|
||||||
sketch # vee
|
sketch # vee
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.center OPERATORSTROKE
|
widths.center OPERATORSTROKE
|
||||||
|
@ -358,17 +394,17 @@ export : define [apply] : begin
|
||||||
|
|
||||||
save 'negate' 0xAC
|
save 'negate' 0xAC
|
||||||
|
|
||||||
local top : mix parenMid operTop 0.625
|
local top logicTop
|
||||||
local bot : mix parenMid operBot 0.625
|
local bot logicBot
|
||||||
sketch # vdash
|
sketch # vdash
|
||||||
include markset.plus
|
include markset.logic
|
||||||
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
||||||
include : VBarLeft SB top bot OPERATORSTROKE
|
include : VBarLeft SB top bot OPERATORSTROKE
|
||||||
save 'vdash' 0x22A2
|
save 'vdash' 0x22A2
|
||||||
turned 'dashv' 0x22A3 'vdash' MIDDLE parenMid
|
turned 'dashv' 0x22A3 'vdash' MIDDLE parenMid
|
||||||
|
|
||||||
sketch # assert
|
sketch # assert
|
||||||
include markset.plus
|
include markset.logic
|
||||||
local l : mix MIDDLE SB designParameters.logic_narrow_shrink
|
local l : mix MIDDLE SB designParameters.logic_narrow_shrink
|
||||||
local r : mix MIDDLE RIGHTSB designParameters.logic_narrow_shrink
|
local r : mix MIDDLE RIGHTSB designParameters.logic_narrow_shrink
|
||||||
include : HBar l r parenMid OPERATORSTROKE
|
include : HBar l r parenMid OPERATORSTROKE
|
||||||
|
@ -376,7 +412,7 @@ export : define [apply] : begin
|
||||||
save 'assert' 0x22A6
|
save 'assert' 0x22A6
|
||||||
|
|
||||||
sketch # models
|
sketch # models
|
||||||
include markset.plus
|
include markset.logic
|
||||||
local l : mix MIDDLE SB designParameters.logic_narrow_shrink
|
local l : mix MIDDLE SB designParameters.logic_narrow_shrink
|
||||||
local r : mix MIDDLE RIGHTSB designParameters.logic_narrow_shrink
|
local r : mix MIDDLE RIGHTSB designParameters.logic_narrow_shrink
|
||||||
include : HBar l r [mix parenMid top (1 / 3)] OPERATORSTROKE
|
include : HBar l r [mix parenMid top (1 / 3)] OPERATORSTROKE
|
||||||
|
@ -385,7 +421,7 @@ export : define [apply] : begin
|
||||||
save 'models' 0x22A7
|
save 'models' 0x22A7
|
||||||
|
|
||||||
sketch # tautology
|
sketch # tautology
|
||||||
include markset.plus
|
include markset.logic
|
||||||
local l : mix MIDDLE SB 1
|
local l : mix MIDDLE SB 1
|
||||||
local r : mix MIDDLE RIGHTSB 1
|
local r : mix MIDDLE RIGHTSB 1
|
||||||
include : HBar l r [mix parenMid top (1 / 3)] OPERATORSTROKE
|
include : HBar l r [mix parenMid top (1 / 3)] OPERATORSTROKE
|
||||||
|
@ -394,18 +430,29 @@ export : define [apply] : begin
|
||||||
save 'tautology' 0x22A8
|
save 'tautology' 0x22A8
|
||||||
|
|
||||||
sketch # top
|
sketch # top
|
||||||
include markset.plus
|
include markset.logic
|
||||||
include : HBarTop SB RIGHTSB top OPERATORSTROKE
|
include : HBarTop SB RIGHTSB top OPERATORSTROKE
|
||||||
include : VBar MIDDLE top bot OPERATORSTROKE
|
include : VBar MIDDLE top bot OPERATORSTROKE
|
||||||
save 'top' 0x22A4
|
save 'top' 0x22A4
|
||||||
composite 'bot' glyphs.top [FlipAround MIDDLE parenMid] [into-unicode 0x22A5]
|
composite 'bot' glyphs.top [FlipAround MIDDLE parenMid] [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 parenMid] [into-unicode 0x234E]
|
||||||
sketch # perp
|
sketch # perp
|
||||||
include markset.plus
|
include markset.logic
|
||||||
include : HBarBottom SB RIGHTSB 0 OPERATORSTROKE
|
include : HBarBottom SB RIGHTSB 0 OPERATORSTROKE
|
||||||
include : VBar MIDDLE (parenMid * 2) 0 OPERATORSTROKE
|
include : VBar MIDDLE (parenMid * 2) 0 OPERATORSTROKE
|
||||||
save 'perpendicular' 0x27C2
|
save 'perpendicular' 0x27C2
|
||||||
|
|
||||||
do "less and greater"
|
do "Comparison"
|
||||||
# Less and Greater
|
# Less and Greater
|
||||||
define lessSlantness : 1 / 5 * (parenTop - parenBot) / (RIGHTSB - SB)
|
define lessSlantness : 1 / 5 * (parenTop - parenBot) / (RIGHTSB - SB)
|
||||||
define dH : lessSlantness * (RIGHTSB - SB)
|
define dH : lessSlantness * (RIGHTSB - SB)
|
||||||
|
@ -724,6 +771,7 @@ export : define [apply] : begin
|
||||||
define [notGlyph.left unicode oldid top bot prop shift]
|
define [notGlyph.left unicode oldid top bot prop shift]
|
||||||
notGlyph unicode oldid top bot prop (OPERATORSTROKE * 0.5)
|
notGlyph unicode oldid top bot prop (OPERATORSTROKE * 0.5)
|
||||||
|
|
||||||
|
do "Negations"
|
||||||
notGlyph 0x2260 'equal'
|
notGlyph 0x2260 'equal'
|
||||||
notGlyph 0x2262 'ident'
|
notGlyph 0x2262 'ident'
|
||||||
notGlyph 0x22AC 'vdash'
|
notGlyph 0x22AC 'vdash'
|
||||||
|
@ -747,12 +795,13 @@ export : define [apply] : begin
|
||||||
notGlyph 0x2278 'lessgreater'
|
notGlyph 0x2278 'lessgreater'
|
||||||
notGlyph 0x2279 'greaterless'
|
notGlyph 0x2279 'greaterless'
|
||||||
notGlyph.right 0x2204 'exists' (CAP - DESCENDER / 2) (DESCENDER / 2) 0.4
|
notGlyph.right 0x2204 'exists' (CAP - DESCENDER / 2) (DESCENDER / 2) 0.4
|
||||||
|
|
||||||
do "Ligation glyphs"
|
do "Ligation glyphs"
|
||||||
notGlyph null 'equal.fc' nothing nothing nothing (WIDTH * 0.5) 'equal.fc.neg'
|
notGlyph null 'equal.fc' nothing nothing nothing (WIDTH * 0.5) 'equal.fc.neg'
|
||||||
notGlyph null 'equal.fc' nothing nothing nothing (WIDTH * 1.0) 'equal.fc.neg3'
|
notGlyph null 'equal.fc' nothing nothing nothing (WIDTH * 1.0) 'equal.fc.neg3'
|
||||||
notGlyph null 'equal.fc' nothing nothing nothing (WIDTH * 1.5) 'equal.fc.neg4'
|
notGlyph null 'equal.fc' nothing nothing nothing (WIDTH * 1.5) 'equal.fc.neg4'
|
||||||
|
|
||||||
### 'Large Operators'
|
do 'Large Operators'
|
||||||
sketch # sum
|
sketch # sum
|
||||||
include : SigmaShape parenTop parenBot OPERATORSTROKE
|
include : SigmaShape parenTop parenBot OPERATORSTROKE
|
||||||
save 'sum' 0x2211
|
save 'sum' 0x2211
|
||||||
|
@ -800,15 +849,26 @@ export : define [apply] : begin
|
||||||
turned 'Cap' 0x22C2 'Cup' MIDDLE parenMid
|
turned 'Cap' 0x22C2 'Cup' MIDDLE parenMid
|
||||||
|
|
||||||
### APL
|
### APL
|
||||||
|
do "APL"
|
||||||
local aplBoxSW : adviceBlackness 4.5
|
local aplBoxSW : adviceBlackness 4.5
|
||||||
|
local aplBoxTop : mix parenMid operTop 1.1
|
||||||
|
local aplBoxBot : mix parenMid operBot 1.1
|
||||||
sketch # aplsquare
|
sketch # aplsquare
|
||||||
local l [mix 0 SB (1 / 3)]
|
local l [mix 0 SB (1 / 3)]
|
||||||
local r [mix WIDTH RIGHTSB (1 / 3)]
|
local r [mix WIDTH RIGHTSB (1 / 3)]
|
||||||
include : HBarTop l r operTop aplBoxSW
|
include : HBarTop l r aplBoxTop aplBoxSW
|
||||||
include : HBarBottom l r operBot aplBoxSW
|
include : HBarBottom l r aplBoxBot aplBoxSW
|
||||||
include : VBarLeft l operTop operBot aplBoxSW
|
include : VBarLeft l aplBoxTop aplBoxBot aplBoxSW
|
||||||
include : VBarRight r operTop operBot aplBoxSW
|
include : VBarRight r aplBoxTop aplBoxBot aplBoxSW
|
||||||
save 'aplsquare' 0x2395
|
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
|
sketch # aplibar
|
||||||
local l [mix 0 SB (1 / 3)]
|
local l [mix 0 SB (1 / 3)]
|
||||||
local r [mix WIDTH RIGHTSB (1 / 3)]
|
local r [mix WIDTH RIGHTSB (1 / 3)]
|
||||||
|
@ -827,6 +887,18 @@ export : define [apply] : begin
|
||||||
sketch # aplbar
|
sketch # aplbar
|
||||||
include : VBar MIDDLE parenTop parenBot aplBoxSW
|
include : VBar MIDDLE parenTop parenBot aplBoxSW
|
||||||
save 'aplbar'
|
save 'aplbar'
|
||||||
|
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
|
sketch # aplbackslash
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.center aplBoxSW
|
widths.center aplBoxSW
|
||||||
|
@ -834,57 +906,42 @@ export : define [apply] : begin
|
||||||
curl RIGHTSB operBot
|
curl RIGHTSB operBot
|
||||||
save 'aplbackslash'
|
save 'aplbackslash'
|
||||||
|
|
||||||
define aplBoxTfm : ScaleAround MIDDLE parenMid [Math.min ((WIDTH - aplBoxSW * 1.75) / WIDTH) ((operTop - operBot) / (parenTop - parenBot))]
|
define [aplBoxed shape] : Overlay glyphs.aplsquare : glyph-construction
|
||||||
|
include : intersection glyphs.aplsquareShadow shape
|
||||||
|
include : ScaleAround MIDDLE parenMid [Math.min ((WIDTH - aplBoxSW * 1.75) / WIDTH) ((operTop - operBot) / (parenTop - parenBot))]
|
||||||
|
|
||||||
composite glyphs.equal aplBoxTfm glyphs.aplsquare [into-unicode 0x2338]
|
composite glyphs.space [aplBoxed glyphs.equal] [into-unicode 0x2338]
|
||||||
composite glyphs.divide aplBoxTfm glyphs.aplsquare [into-unicode 0x2339]
|
composite glyphs.space [aplBoxed glyphs.divide] [into-unicode 0x2339]
|
||||||
composite glyphs.hwwhitediamond aplBoxTfm glyphs.aplsquare [into-unicode 0x233A]
|
composite glyphs.space [aplBoxed glyphs.hwwhitediamond] [into-unicode 0x233A]
|
||||||
composite glyphs.hwsmallwhitecircle aplBoxTfm glyphs.aplsquare [into-unicode 0x233B]
|
composite glyphs.space [aplBoxed glyphs.hwsmallwhitecircle] [into-unicode 0x233B]
|
||||||
composite glyphs.hwwhitecircle aplBoxTfm glyphs.aplsquare [into-unicode 0x233C]
|
composite glyphs.space [aplBoxed glyphs.hwwhitecircle] [into-unicode 0x233C]
|
||||||
composite glyphs.hwwhitecircle glyphs.aplbar [into-unicode 0x233D]
|
composite glyphs.space [Overlay glyphs.aplbar glyphs.hwwhitecircle] [into-unicode 0x233D]
|
||||||
composite glyphs.hwwhitecircle glyphs.hwsmallwhitecircle [into-unicode 0x233E]
|
composite glyphs.hwwhitecircle glyphs.hwsmallwhitecircle [into-unicode 0x233E]
|
||||||
composite glyphs.minus glyphs.slash [into-unicode 0x233F]
|
composite glyphs.space [Overlay glyphs.aplminus glyphs.slash] [into-unicode 0x233F]
|
||||||
composite glyphs.minus glyphs.backslash [into-unicode 0x2340]
|
composite glyphs.space [Overlay glyphs.aplminus glyphs.backslash] [into-unicode 0x2340]
|
||||||
composite glyphs.slash aplBoxTfm glyphs.aplsquare [into-unicode 0x2341]
|
composite glyphs.space [aplBoxed glyphs.slash] [into-unicode 0x2341]
|
||||||
composite glyphs.backslash aplBoxTfm glyphs.aplsquare [into-unicode 0x2342]
|
composite glyphs.space [aplBoxed glyphs.backslash] [into-unicode 0x2342]
|
||||||
composite glyphs.less aplBoxTfm glyphs.aplsquare [into-unicode 0x2343]
|
composite glyphs.space [aplBoxed glyphs.less] [into-unicode 0x2343]
|
||||||
composite glyphs.greater aplBoxTfm glyphs.aplsquare [into-unicode 0x2344]
|
composite glyphs.space [aplBoxed glyphs.greater] [into-unicode 0x2344]
|
||||||
composite glyphs.hwarrowleft glyphs.aplbar [into-unicode 0x2345]
|
composite glyphs.space [Overlay glyphs.hwarrowleft glyphs.aplbar] [into-unicode 0x2345]
|
||||||
composite glyphs.hwarrowright glyphs.aplbar [into-unicode 0x2346]
|
composite glyphs.space [Overlay glyphs.hwarrowright glyphs.aplbar] [into-unicode 0x2346]
|
||||||
composite glyphs.hwarrowleft aplBoxTfm glyphs.aplsquare [into-unicode 0x2347]
|
composite glyphs.space [aplBoxed glyphs.hwarrowleft] [into-unicode 0x2347]
|
||||||
composite glyphs.hwarrowright aplBoxTfm glyphs.aplsquare [into-unicode 0x2348]
|
composite glyphs.space [aplBoxed glyphs.hwarrowright] [into-unicode 0x2348]
|
||||||
composite glyphs.hwwhitecircle glyphs.aplbackslash [into-unicode 0x2349]
|
composite glyphs.space [Overlay glyphs.aplbackslash glyphs.hwwhitecircle] [into-unicode 0x2349]
|
||||||
composite glyphs.bot glyphs.underlineBelow [into-unicode 0x234A]
|
composite glyphs.bot glyphs.underlineBelow [into-unicode 0x234A]
|
||||||
composite glyphs.increment glyphs.aplbar [into-unicode 0x234B]
|
composite glyphs.space [Overlay glyphs.increment glyphs.aplbar] [into-unicode 0x234B]
|
||||||
composite glyphs.vee aplBoxTfm glyphs.aplsquare [into-unicode 0x234C]
|
composite glyphs.space [aplBoxed glyphs.vee] [into-unicode 0x234C]
|
||||||
composite glyphs.increment aplBoxTfm glyphs.aplsquare [into-unicode 0x234D]
|
composite glyphs.space [aplBoxed glyphs.increment] [into-unicode 0x234D]
|
||||||
composite
|
composite glyphs.space [Overlay glyphs.hwarrowup glyphs.minus] [into-unicode 0x234F]
|
||||||
begin glyphs.hwwhitecircle
|
composite glyphs.space [aplBoxed glyphs.hwarrowup] [into-unicode 0x2350]
|
||||||
VBar MIDDLE operBot operTop aplBoxSW
|
|
||||||
HBarBottom SB RIGHTSB operBot aplBoxSW
|
|
||||||
into-unicode 0x234E
|
|
||||||
composite glyphs.hwarrowup glyphs.minus [into-unicode 0x234F]
|
|
||||||
composite glyphs.hwarrowup aplBoxTfm glyphs.aplsquare [into-unicode 0x2350]
|
|
||||||
composite glyphs.top glyphs.overlineAbove [into-unicode 0x2351]
|
composite glyphs.top glyphs.overlineAbove [into-unicode 0x2351]
|
||||||
composite glyphs.nabla glyphs.aplbar [into-unicode 0x2352]
|
composite glyphs.space [Overlay glyphs.nabla glyphs.aplbar] [into-unicode 0x2352]
|
||||||
composite glyphs.wedge aplBoxTfm glyphs.aplsquare [into-unicode 0x2353]
|
composite glyphs.space [aplBoxed glyphs.wedge] [into-unicode 0x2353]
|
||||||
composite glyphs.nabla aplBoxTfm glyphs.aplsquare [into-unicode 0x2354]
|
composite glyphs.space [aplBoxed glyphs.nabla] [into-unicode 0x2354]
|
||||||
composite
|
composite glyphs.space [Overlay glyphs.hwarrowdown glyphs.minus] [into-unicode 0x2356]
|
||||||
begin glyphs.hwwhitecircle
|
composite glyphs.space [aplBoxed glyphs.hwarrowdown] [into-unicode 0x2357]
|
||||||
VBar MIDDLE operBot operTop aplBoxSW
|
|
||||||
HBarTop SB RIGHTSB operTop aplBoxSW
|
|
||||||
into-unicode 0x2355
|
|
||||||
composite glyphs.hwarrowdown glyphs.minus [into-unicode 0x2356]
|
|
||||||
composite glyphs.hwarrowdown aplBoxTfm glyphs.aplsquare [into-unicode 0x2357]
|
|
||||||
composite glyphs.singleQuote markset.plus glyphs.underlineBelow [into-unicode 0x2358]
|
composite glyphs.singleQuote markset.plus glyphs.underlineBelow [into-unicode 0x2358]
|
||||||
composite
|
composite glyphs.increment glyphs.underlineBelow [into-unicode 0x2359]
|
||||||
begin glyphs.space
|
|
||||||
LambdaShape OPERATORSTROKE (plusTop - plusBot + ACCENT)
|
|
||||||
HBarBottom (SB + OPERATORSTROKE / 2) (RIGHTSB - OPERATORSTROKE / 2) 0 OPERATORSTROKE
|
|
||||||
Realign MIDDLE ((plusTop - plusBot) / 2) MIDDLE parenMid
|
|
||||||
begin markset.plus
|
|
||||||
begin glyphs.underlineBelow
|
|
||||||
into-unicode 0x2359
|
|
||||||
composite glyphs.hwwhitediamond markset.plus glyphs.underlineBelow [into-unicode 0x235A]
|
composite glyphs.hwwhitediamond markset.plus glyphs.underlineBelow [into-unicode 0x235A]
|
||||||
composite glyphs.hwsmallwhitecircle markset.plus glyphs.underlineBelow [into-unicode 0x235B]
|
composite glyphs.hwsmallwhitecircle markset.plus glyphs.underlineBelow [into-unicode 0x235B]
|
||||||
composite glyphs.hwwhitecircle markset.plus glyphs.underlineBelow [into-unicode 0x235C]
|
composite glyphs.hwwhitecircle markset.plus glyphs.underlineBelow [into-unicode 0x235C]
|
||||||
|
@ -895,33 +952,27 @@ export : define [apply] : begin
|
||||||
UShape operTop operBot [adviceBlackness 5] true
|
UShape operTop operBot [adviceBlackness 5] true
|
||||||
FlipAround MIDDLE parenMid
|
FlipAround MIDDLE parenMid
|
||||||
into-unicode 0x235D
|
into-unicode 0x235D
|
||||||
composite glyphs.singleQuote aplBoxTfm glyphs.aplsquare [into-unicode 0x235E]
|
composite glyphs.space [aplBoxed glyphs.singleQuote] [into-unicode 0x235E]
|
||||||
composite
|
composite glyphs.space [intersection glyphs.mathOOutline glyphs.'opAsterisk.low'] glyphs.mathO [into-unicode 0x235F]
|
||||||
begin glyphs.hwblackstar
|
composite glyphs.space [aplBoxed : composite glyphs.colon [Realign MIDDLE (XH/2) MIDDLE parenMid]] [into-unicode 0x2360]
|
||||||
glyph-construction
|
|
||||||
reverse-last
|
|
||||||
FlipAround MIDDLE parenMid 0.75
|
|
||||||
begin glyphs.mathO
|
|
||||||
into-unicode 0x235F
|
|
||||||
composite glyphs.colon [Realign MIDDLE (XH/2) MIDDLE parenMid] aplBoxTfm glyphs.aplsquare [into-unicode 0x2360]
|
|
||||||
composite glyphs.top glyphs.dieresisAbove [into-unicode 0x2361]
|
composite glyphs.top glyphs.dieresisAbove [into-unicode 0x2361]
|
||||||
composite glyphs.nabla glyphs.dieresisAbove [into-unicode 0x2362]
|
composite glyphs.nabla glyphs.dieresisAbove [into-unicode 0x2362]
|
||||||
composite glyphs.hwblackstar glyphs.dieresisAbove [into-unicode 0x2363]
|
composite glyphs.'asterisk.low' glyphs.dieresisAbove [into-unicode 0x2363]
|
||||||
composite glyphs.hwsmallwhitecircle markset.plus glyphs.dieresisAbove [into-unicode 0x2364]
|
composite glyphs.hwsmallwhitecircle markset.plus glyphs.dieresisAbove [into-unicode 0x2364]
|
||||||
composite glyphs.hwwhitecircle markset.plus glyphs.dieresisAbove [into-unicode 0x2365]
|
composite glyphs.hwwhitecircle markset.plus glyphs.dieresisAbove [into-unicode 0x2365]
|
||||||
composite glyphs.space [UShape operTop operBot aplBoxSW true] glyphs.aplbar [into-unicode 0x2366]
|
composite glyphs.space [Overlay glyphs.cup glyphs.aplbar] [into-unicode 0x2366]
|
||||||
composite glyphs.subst glyphs.aplbar [into-unicode 0x2367]
|
composite glyphs.space [Overlay glyphs.subst glyphs.aplbar] [into-unicode 0x2367]
|
||||||
composite glyphs.'asciitilde.low' glyphs.dieresisAbove [into-unicode 0x2368]
|
composite glyphs.'asciitilde.low' glyphs.dieresisAbove [into-unicode 0x2368]
|
||||||
composite glyphs.'greater.narrow' glyphs.dieresisAbove [into-unicode 0x2369]
|
composite glyphs.'greater.narrow' glyphs.dieresisAbove [into-unicode 0x2369]
|
||||||
composite glyphs.minus glyphs.comma [Upright] [Translate 0 (XH / 2)] [Italify] [into-unicode 0x236A]
|
composite glyphs.minus glyphs.comma [into-unicode 0x236A]
|
||||||
composite glyphs.nabla glyphs.overlaytilde [into-unicode 0x236B]
|
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.nabla] [into-unicode 0x236B]
|
||||||
composite glyphs.'zero.unslashed' glyphs.overlaytilde [into-unicode 0x236C]
|
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.'zero.unslashed'] [into-unicode 0x236C]
|
||||||
composite glyphs.bar glyphs.overlaytilde [into-unicode 0x236D]
|
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.bar] [into-unicode 0x236D]
|
||||||
composite glyphs.semicolon [Realign MIDDLE (XH/2) MIDDLE parenMid] markset.plus glyphs.underlineBelow [into-unicode 0x236E]
|
composite [Overlay glyphs.semicolon glyphs."underscore.belowBaseline"] [into-unicode 0x236E]
|
||||||
composite glyphs.notequal aplBoxTfm glyphs.aplsquare [into-unicode 0x236F]
|
composite glyphs.space [aplBoxed glyphs.notequal] [into-unicode 0x236F]
|
||||||
composite glyphs.question aplBoxTfm glyphs.aplsquare [into-unicode 0x2370]
|
composite glyphs.space [aplBoxed glyphs.question] [into-unicode 0x2370]
|
||||||
composite glyphs.vee glyphs.overlaytilde [into-unicode 0x2371]
|
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.vee] [into-unicode 0x2371]
|
||||||
composite glyphs.wedge glyphs.overlaytilde [into-unicode 0x2372]
|
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.wedge] [into-unicode 0x2372]
|
||||||
alias 'apliota' 0x2373 'iota'
|
alias 'apliota' 0x2373 'iota'
|
||||||
alias 'aplrho' 0x2374 'rho'
|
alias 'aplrho' 0x2374 'rho'
|
||||||
alias 'aplomega' 0x2375 'omega'
|
alias 'aplomega' 0x2375 'omega'
|
||||||
|
|
|
@ -517,11 +517,12 @@ export : define [apply] : begin
|
||||||
|
|
||||||
do "Asterisk"
|
do "Asterisk"
|
||||||
local asteriskCenterY : parenTop - LONGJUT * 1.5
|
local asteriskCenterY : parenTop - LONGJUT * 1.5
|
||||||
|
local asteriskKinds {{1.2 STROKE 'asterisk'} {0.85 STROKE 'smallasterisk'} {1 GEOMETRYSTROKE 'opAsterisk'}}
|
||||||
foreach [{size name} : items-of {{1.2 'asterisk.high'} {0.85 'smallasterisk.high'}}] : sketch
|
foreach [{size stroke name} : items-of asteriskKinds] : begin
|
||||||
|
sketch
|
||||||
local radius : LONGJUT * size
|
local radius : LONGJUT * size
|
||||||
local fine : STROKE * 0.4
|
local fine : stroke * 0.4
|
||||||
local final : 0.5 * [Math.min STROKE (radius * Math.PI * 2 / 10)]
|
local final : 0.5 * [Math.min stroke (radius * Math.PI * 2 / 10)]
|
||||||
|
|
||||||
foreach j [range 0 5] : begin
|
foreach j [range 0 5] : begin
|
||||||
local s : Math.sin (j / 5 * Math.PI * 2)
|
local s : Math.sin (j / 5 * Math.PI * 2)
|
||||||
|
@ -529,16 +530,13 @@ export : define [apply] : begin
|
||||||
include : dispiro
|
include : dispiro
|
||||||
flat MIDDLE asteriskCenterY [widths fine fine]
|
flat MIDDLE asteriskCenterY [widths fine fine]
|
||||||
curl (MIDDLE + radius * s) (asteriskCenterY + radius * c) [widths final final]
|
curl (MIDDLE + radius * s) (asteriskCenterY + radius * c) [widths final final]
|
||||||
save name
|
save (name + '.high')
|
||||||
|
composite (name + '.low') glyphs.(name + '.high')
|
||||||
|
Upright
|
||||||
|
Translate 0 (parenMid - asteriskCenterY)
|
||||||
|
begin markset.plus
|
||||||
|
Italify
|
||||||
|
|
||||||
composite 'asterisk.low' glyphs.'asterisk.high'
|
|
||||||
Upright
|
|
||||||
Translate 0 (parenMid - asteriskCenterY)
|
|
||||||
Italify
|
|
||||||
composite 'smallasterisk.low' glyphs.'smallasterisk.high'
|
|
||||||
Upright
|
|
||||||
Translate 0 (parenMid - asteriskCenterY)
|
|
||||||
Italify
|
|
||||||
select-variant 'asterisk' '*'
|
select-variant 'asterisk' '*'
|
||||||
|
|
||||||
do "Slashes and numbersign"
|
do "Slashes and numbersign"
|
||||||
|
@ -616,6 +614,10 @@ export : define [apply] : begin
|
||||||
set-width WIDTH
|
set-width WIDTH
|
||||||
include : HBarBottom SB RIGHTSB 0
|
include : HBarBottom SB RIGHTSB 0
|
||||||
save 'underscore.high'
|
save 'underscore.high'
|
||||||
|
sketch # underscore.belowBaseline
|
||||||
|
set-width WIDTH
|
||||||
|
include : HBarTop SB RIGHTSB 0
|
||||||
|
save 'underscore.belowBaseline'
|
||||||
|
|
||||||
composite 'underscore.low' glyphs.'underscore.high' [Upright] [Translate 0 (DESCENDER * 0.9)] [Italify]
|
composite 'underscore.low' glyphs.'underscore.high' [Upright] [Translate 0 (DESCENDER * 0.9)] [Italify]
|
||||||
select-variant 'underscore' '_'
|
select-variant 'underscore' '_'
|
||||||
|
|
|
@ -19,6 +19,8 @@ export : define [calculateMetrics para] : begin
|
||||||
define parenBot (parenMid - (CAP - XH) * 2.6)
|
define parenBot (parenMid - (CAP - XH) * 2.6)
|
||||||
define operTop : mix parenMid parenTop 0.8
|
define operTop : mix parenMid parenTop 0.8
|
||||||
define operBot : mix parenMid parenBot 0.8
|
define operBot : mix parenMid parenBot 0.8
|
||||||
|
define logicTop : mix parenMid operTop 0.75
|
||||||
|
define logicBot : mix parenMid operBot 0.75
|
||||||
define plusTop : parenMid + (WIDTH - SB * 2) * 0.55
|
define plusTop : parenMid + (WIDTH - SB * 2) * 0.55
|
||||||
define plusBot : parenMid - (WIDTH - SB * 2) * 0.55
|
define plusBot : parenMid - (WIDTH - SB * 2) * 0.55
|
||||||
define operMid parenMid
|
define operMid parenMid
|
||||||
|
@ -134,6 +136,7 @@ export : define [calculateMetrics para] : begin
|
||||||
define MVERTSTROKE : adviceBlackness : fallback para.lllcrowdedness (3 + 1 / 3)
|
define MVERTSTROKE : adviceBlackness : fallback para.lllcrowdedness (3 + 1 / 3)
|
||||||
define OVERLAYSTROKE : adviceBlackness 3.75
|
define OVERLAYSTROKE : adviceBlackness 3.75
|
||||||
define OPERATORSTROKE : adviceBlackness 3.2
|
define OPERATORSTROKE : adviceBlackness 3.2
|
||||||
|
define GEOMETRYSTROKE : adviceBlackness 4.5
|
||||||
define SHOULDERFINE : if para.shoulderfine (STROKE * para.shoulderfine) [adviceBlackness 10]
|
define SHOULDERFINE : if para.shoulderfine (STROKE * para.shoulderfine) [adviceBlackness 10]
|
||||||
|
|
||||||
define SUPERNESS : fallback para.superness 2
|
define SUPERNESS : fallback para.superness 2
|
||||||
|
@ -147,7 +150,7 @@ export : define [calculateMetrics para] : begin
|
||||||
|
|
||||||
return [object
|
return [object
|
||||||
UPM WIDTH SB CAP XH DESCENDER CONTRAST
|
UPM WIDTH SB CAP XH DESCENDER CONTRAST
|
||||||
parenMid parenTop parenBot operTop operBot plusTop plusBot operMid Italify Upright Scale Translate Rotate globalTransform
|
parenMid parenTop parenBot operTop operBot logicTop logicBot plusTop plusBot operMid Italify Upright Scale Translate Rotate globalTransform
|
||||||
TANSLANT SINSLANT COSSLANT HVCONTRAST UPWARD DOWNWARD RIGHTWARD LEFTWARD
|
TANSLANT SINSLANT COSSLANT HVCONTRAST UPWARD DOWNWARD RIGHTWARD LEFTWARD
|
||||||
Upward Downward Leftward Rightward
|
Upward Downward Leftward Rightward
|
||||||
O OX OXHOOK HOOK AHOOK SHOOK RHOOK JHOOK FHOOK HOOKX SMOOTH SMALLSMOOTH STROKE DOTSIZE PERIODSIZE
|
O OX OXHOOK HOOK AHOOK SHOOK RHOOK JHOOK FHOOK HOOKX SMOOTH SMALLSMOOTH STROKE DOTSIZE PERIODSIZE
|
||||||
|
@ -155,7 +158,7 @@ export : define [calculateMetrics para] : begin
|
||||||
TAILADJX TAILADJY LBALANCE IBALANCE LBALANCE2 IBALANCE2 JBALANCE JBALANCE2 TBALANCE TBALANCE2 RBALANCE RBALANCE2
|
TAILADJX TAILADJY LBALANCE IBALANCE LBALANCE2 IBALANCE2 JBALANCE JBALANCE2 TBALANCE TBALANCE2 RBALANCE RBALANCE2
|
||||||
FBALANCE ONEBALANCE FULLWIDTH FULLWIDTH1 FULLWIDTH2 FULLWIDTH3 OXE ESS ESSQUESTION XO CAPO HALFSTROKE RIGHTSB FWRSB
|
FBALANCE ONEBALANCE FULLWIDTH FULLWIDTH1 FULLWIDTH2 FULLWIDTH3 OXE ESS ESSQUESTION XO CAPO HALFSTROKE RIGHTSB FWRSB
|
||||||
MIDDLE FWMIDDLE CAPMIDDLE CAP_SMOOTH DOTRADIUS PERIODRADIUS SIDEJUT SMOOTHA SMOOTHB SMALLSMOOTHA SMALLSMOOTHB CORRECTION_OMIDX CORRECTION_OMIDS
|
MIDDLE FWMIDDLE CAPMIDDLE CAP_SMOOTH DOTRADIUS PERIODRADIUS SIDEJUT SMOOTHA SMOOTHB SMALLSMOOTHA SMALLSMOOTHB CORRECTION_OMIDX CORRECTION_OMIDS
|
||||||
WHITENESS adviceBlackness MVERTSTROKE OVERLAYSTROKE OPERATORSTROKE SHOULDERFINE SUPERNESS superxy
|
WHITENESS adviceBlackness MVERTSTROKE OVERLAYSTROKE OPERATORSTROKE GEOMETRYSTROKE SHOULDERFINE SUPERNESS superxy
|
||||||
adviceSSmooth adviceGlottalStopSmooth shoulderMidSlope]
|
adviceSSmooth adviceGlottalStopSmooth shoulderMidSlope]
|
||||||
|
|
||||||
export : define [setFontMetrics para metrics font] : begin
|
export : define [setFontMetrics para metrics font] : begin
|
||||||
|
|
|
@ -135,7 +135,7 @@ define-macro save : syntax-rules
|
||||||
define-macro glyph-module-entry : syntax-rules
|
define-macro glyph-module-entry : syntax-rules
|
||||||
`[glyph-module-entry @::_opts] : begin
|
`[glyph-module-entry @::_opts] : begin
|
||||||
define optionalImports : object
|
define optionalImports : object
|
||||||
commonShapes `[define [object queryFeatureSelector select-variant italic-variant alias composite into-unicode turned hcombine vcombine dual vdual fwl fwr dwl dwr dwc Ring RingAt DotAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs halfXStrand xStrand nShoulderKnots nShoulder mShoulderSpiro HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LegShape LeftHook HooktopLeftBar CurlyTail HCurlyTail FlatSlashShape determineMixR HookShape hookstart hookend CyrDescender refair Fork Miniature Thinner Widen FlipAround ScaleAround Realign ForceUpright] $capture.commonShapes]
|
commonShapes `[define [object queryFeatureSelector select-variant italic-variant alias composite into-unicode turned hcombine vcombine dual vdual fwl fwr dwl dwr dwc Ring RingAt DotAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs halfXStrand xStrand nShoulderKnots nShoulder mShoulderSpiro HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LegShape LeftHook HooktopLeftBar CurlyTail HCurlyTail FlatSlashShape determineMixR HookShape hookstart hookend CyrDescender refair Fork Miniature Thinner Widen FlipAround ScaleAround Realign ForceUpright Overlay] $capture.commonShapes]
|
||||||
|
|
||||||
overmarks `[define [object markExtend markHalfStroke markStress markFine markMiddle markDotsRadius aboveMarkTop aboveMarkBot aboveMarkMid belowMarkBot belowMarkTop commaOvershoot commaOvershoot2 commaAboveRadius TildeShape] $capture.overmarks]
|
overmarks `[define [object markExtend markHalfStroke markStress markFine markMiddle markDotsRadius aboveMarkTop aboveMarkBot aboveMarkMid belowMarkBot belowMarkTop commaOvershoot commaOvershoot2 commaAboveRadius TildeShape] $capture.overmarks]
|
||||||
|
|
||||||
|
@ -153,14 +153,14 @@ define-macro glyph-module-entry : syntax-rules
|
||||||
define [object metrics $NamedParameterPair$ $donothing$ para recursive recursiveCodes variantSelector font glyphs glyphList unicodeGlyphs create-glyph $save$ save-glyph spirofns markset MARK BASE AS_BASE ALSO_METRICS pickHash dependencyProfile getDependencyProfile buildFont newtemp tagged TempFont includeGlyphPart compsiteMarkSet] $capture
|
define [object metrics $NamedParameterPair$ $donothing$ para recursive recursiveCodes variantSelector font glyphs glyphList unicodeGlyphs create-glyph $save$ save-glyph spirofns markset MARK BASE AS_BASE ALSO_METRICS pickHash dependencyProfile getDependencyProfile buildFont newtemp tagged TempFont includeGlyphPart compsiteMarkSet] $capture
|
||||||
define [object
|
define [object
|
||||||
UPM WIDTH SB CAP XH DESCENDER CONTRAST
|
UPM WIDTH SB CAP XH DESCENDER CONTRAST
|
||||||
parenMid parenTop parenBot operTop operBot plusTop plusBot operMid Italify Upright Scale Translate Rotate globalTransform
|
parenMid parenTop parenBot operTop operBot logicTop logicBot plusTop plusBot operMid Italify Upright Scale Translate Rotate globalTransform
|
||||||
TANSLANT SINSLANT COSSLANT HVCONTRAST UPWARD DOWNWARD RIGHTWARD LEFTWARD Upward Downward Leftward Rightward
|
TANSLANT SINSLANT COSSLANT HVCONTRAST UPWARD DOWNWARD RIGHTWARD LEFTWARD Upward Downward Leftward Rightward
|
||||||
O OX OXHOOK HOOK AHOOK SHOOK RHOOK JHOOK FHOOK HOOKX SMOOTH SMALLSMOOTH STROKE DOTSIZE PERIODSIZE
|
O OX OXHOOK HOOK AHOOK SHOOK RHOOK JHOOK FHOOK HOOKX SMOOTH SMALLSMOOTH STROKE DOTSIZE PERIODSIZE
|
||||||
BARPOS GBARPOS PBARPOS EBARPOS OVERLAYPOS FIVEBARPOS LONGJUT JUT VJUT ACCENT ACCENTX CTHIN CTHINB SLAB
|
BARPOS GBARPOS PBARPOS EBARPOS OVERLAYPOS FIVEBARPOS LONGJUT JUT VJUT ACCENT ACCENTX CTHIN CTHINB SLAB
|
||||||
TAILADJX TAILADJY LBALANCE IBALANCE LBALANCE2 IBALANCE2 JBALANCE JBALANCE2 TBALANCE TBALANCE2 RBALANCE RBALANCE2
|
TAILADJX TAILADJY LBALANCE IBALANCE LBALANCE2 IBALANCE2 JBALANCE JBALANCE2 TBALANCE TBALANCE2 RBALANCE RBALANCE2
|
||||||
FBALANCE ONEBALANCE FULLWIDTH FULLWIDTH1 FULLWIDTH2 FULLWIDTH3 OXE ESS ESSQUESTION XO CAPO HALFSTROKE RIGHTSB FWRSB
|
FBALANCE ONEBALANCE FULLWIDTH FULLWIDTH1 FULLWIDTH2 FULLWIDTH3 OXE ESS ESSQUESTION XO CAPO HALFSTROKE RIGHTSB FWRSB
|
||||||
MIDDLE FWMIDDLE CAPMIDDLE CAP_SMOOTH DOTRADIUS PERIODRADIUS SIDEJUT SMOOTHA SMOOTHB SMALLSMOOTHA SMALLSMOOTHB CORRECTION_OMIDX CORRECTION_OMIDS
|
MIDDLE FWMIDDLE CAPMIDDLE CAP_SMOOTH DOTRADIUS PERIODRADIUS SIDEJUT SMOOTHA SMOOTHB SMALLSMOOTHA SMALLSMOOTHB CORRECTION_OMIDX CORRECTION_OMIDS
|
||||||
WHITENESS adviceBlackness MVERTSTROKE OVERLAYSTROKE OPERATORSTROKE SHOULDERFINE SUPERNESS superxy
|
WHITENESS adviceBlackness MVERTSTROKE OVERLAYSTROKE OPERATORSTROKE GEOMETRYSTROKE SHOULDERFINE SUPERNESS superxy
|
||||||
adviceSSmooth adviceGlottalStopSmooth shoulderMidSlope] metrics
|
adviceSSmooth adviceGlottalStopSmooth shoulderMidSlope] metrics
|
||||||
define [object
|
define [object
|
||||||
g4 g2 corner flat curl close end straight
|
g4 g2 corner flat curl close end straight
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue