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
|
||||
|
||||
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
|
||||
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 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 markAboveCap {.anchors {.above [ta : new Anchor MIDDLE CAP 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 markBelowPlus {.anchors {.below [ta : new Anchor MIDDLE plusBot 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
|
||||
e : buildStandardMarkSet markAboveLower markBelowZero markToprightLower markBottomrightZero
|
||||
oper : buildStandardMarkSet markAboveOper markBelowOper markToprightLower markBottomrightZero
|
||||
logic : buildStandardMarkSet markAboveLogic markBelowLogic markToprightLower markBottomrightZero
|
||||
plus : buildStandardMarkSet markAbovePlus markBelowPlus markToprightLower markBottomrightZero
|
||||
p : buildStandardMarkSet markAboveLower markBelowLower markToprightLower markBottomrightLower
|
||||
if : buildStandardMarkSet markAboveCap markBelowLower markToprightCap markBottomrightLower
|
||||
|
|
|
@ -354,7 +354,7 @@ export : define [apply] : begin
|
|||
apply-transform : Italify
|
||||
|
||||
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 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
|
||||
|
|
|
@ -685,4 +685,31 @@ export : define [apply] : begin
|
|||
define [ForceUpright] : glyph-construction
|
||||
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
|
||||
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 curviness 0.2
|
||||
local top : fallback _top CAP
|
||||
|
@ -126,18 +128,18 @@ export : define [apply] : begin
|
|||
widths.rhs sw
|
||||
flat SB 0 [heading UPWARD]
|
||||
curl SB TURN [heading UPWARD]
|
||||
quadcontrols 0 curviness
|
||||
g4 (MIDDLE - sw / 2) top [widths 0 (sw * 0.8)]
|
||||
quadcontrols 0 curviness 9 unimportant
|
||||
g4 (MIDDLE - cornerdist) top [widths 0 (sw * fine)]
|
||||
include : dispiro
|
||||
widths.lhs sw
|
||||
flat RIGHTSB 0 [heading UPWARD]
|
||||
curl RIGHTSB TURN [heading UPWARD]
|
||||
quadcontrols 0 curviness
|
||||
g4 (MIDDLE + sw / 2) top [widths (sw * 0.8) 0]
|
||||
quadcontrols 0 curviness 9 unimportant
|
||||
g4 (MIDDLE + cornerdist) top [widths (sw * fine) 0]
|
||||
|
||||
start-from (MIDDLE - sw / 2) top
|
||||
line-to (MIDDLE + sw / 2) top
|
||||
line-to MIDDLE (top - sw)
|
||||
start-from (MIDDLE - cornerdist) top
|
||||
line-to (MIDDLE + cornerdist) top
|
||||
line-to MIDDLE (top - sw * fine)
|
||||
|
||||
if SLAB : begin
|
||||
include : CenterBottomSerif (SB + sw / 2 * HVCONTRAST) 0 JUT
|
||||
|
|
|
@ -326,8 +326,7 @@ export : define [apply] : begin
|
|||
define topFW : parenMid + squareRadiusFW
|
||||
define bottomFW : parenMid - squareRadiusFW
|
||||
|
||||
local hollowSW : adviceBlackness 5
|
||||
define [hollowScale w d s] : (w - [fallback s hollowSW] * [fallback d : WIDTH / shapeWidth]) / w
|
||||
define [hollowScale w d s] : (w - [fallback s GEOMETRYSTROKE] * [fallback d : WIDTH / shapeWidth]) / w
|
||||
|
||||
define [hollow newid unicode oldid zx zy cx cy] : sketch
|
||||
local isWide : glyphs.(oldid).advanceWidth > WIDTH
|
||||
|
@ -478,7 +477,7 @@ export : define [apply] : begin
|
|||
|
||||
sketch # whiteparallelogram
|
||||
define skew : squareRadius * 1 / 4
|
||||
define w : hollowSW * (WIDTH / shapeWidth)
|
||||
define w : GEOMETRYSTROKE * (WIDTH / shapeWidth)
|
||||
set-width shapeWidth
|
||||
include : intersection
|
||||
begin glyphs.blackparallelogram
|
||||
|
@ -573,7 +572,7 @@ export : define [apply] : begin
|
|||
save 'blackLonzenge' 0x29EB
|
||||
|
||||
sketch # whiteLonzenge
|
||||
define w : hollowSW * (WIDTH / shapeWidth)
|
||||
define w : GEOMETRYSTROKE * (WIDTH / shapeWidth)
|
||||
set-width shapeWidth
|
||||
include : intersection
|
||||
begin glyphs.blackLonzenge
|
||||
|
@ -597,6 +596,17 @@ export : define [apply] : begin
|
|||
include FullWidthify
|
||||
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
|
||||
include markset.plus
|
||||
include : spiro-outline
|
||||
|
@ -691,8 +701,8 @@ export : define [apply] : begin
|
|||
hollow 'hwsmallwhitecircle' null 'hwsmallblackcircle' [hollowScale (squareRadius * designParameters.geometric_small_x) 1]
|
||||
hollow 'smallwhitesquare' 0x25AB 'smallblacksquare' [hollowScale : squareRadius * designParameters.geometric_small_x]
|
||||
hollow 'hwwhitecircle' null 'hwblackcircle'
|
||||
let [s : hollowScale squareRadius nothing (hollowSW * [Math.sqrt 2])] : begin
|
||||
hollow 'hwwhitediamond' null 'hwblackdiamond' s
|
||||
let [s : hollowScale squareRadius nothing (GEOMETRYSTROKE * [Math.sqrt 2])] : begin
|
||||
hollow 'hwwhitediamond' 0x22C4 'hwblackdiamond' s
|
||||
hollow 'whitediamond' 0x25C7 'blackdiamond' s
|
||||
hollowWithCenter 'whitediamondWithCenter' 0x25C8 'blackdiamond' s
|
||||
let [sts 0.75]
|
||||
|
@ -703,9 +713,9 @@ export : define [apply] : begin
|
|||
resized 'smallblacktriangleleft' 0x25C2 'blacktriangleleft' MIDDLE parenMid 0.75
|
||||
|
||||
let
|
||||
: sl : hollowScale (squareRadius * 2 / [Math.sqrt 3]) nothing (hollowSW * [Math.sqrt 3])
|
||||
: slt : hollowScale (squareRadius * 2 / [Math.sqrt 3]) nothing (hollowSW * [Math.sqrt 3])
|
||||
: ss : hollowScale (squareRadius * sts * 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 (GEOMETRYSTROKE * [Math.sqrt 3])
|
||||
: ss : hollowScale (squareRadius * sts * 2 / [Math.sqrt 3]) nothing (GEOMETRYSTROKE * [Math.sqrt 3])
|
||||
: begin
|
||||
hollow 'whitetriangleup' 0x25B3 'blacktriangleup' 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
|
||||
sketch # roundwhitesquare, U+25A2
|
||||
set-width shapeWidth
|
||||
define cr : squareRadiusFW - hollowSW * 2
|
||||
define cr : squareRadiusFW - GEOMETRYSTROKE * 2
|
||||
include : dispiro
|
||||
widths.lhs hollowSW
|
||||
widths.lhs GEOMETRYSTROKE
|
||||
flat (middleFW + 1) (parenMid + squareRadiusFW) [heading LEFTWARD]
|
||||
curl (middleFW - cr) (parenMid + squareRadiusFW) [heading LEFTWARD]
|
||||
archv
|
||||
|
@ -758,8 +768,8 @@ export : define [apply] : begin
|
|||
save 'roundwhitesquare' 0x25A2
|
||||
# Shaded hollow squares
|
||||
sketch # hshadesquare, U+25A4
|
||||
define lineWidth : Math.min hollowSW ((squareRadiusFW * 2 - hollowSW * 2) * 1 / 11)
|
||||
define top : parenMid + squareRadiusFW - hollowSW + lineWidth / 2
|
||||
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
|
||||
define top : parenMid + squareRadiusFW - GEOMETRYSTROKE + lineWidth / 2
|
||||
define bot : parenMid - (top - parenMid)
|
||||
set-width shapeWidth
|
||||
include : union
|
||||
|
@ -781,8 +791,8 @@ export : define [apply] : begin
|
|||
curl rightFW [mix top bot 0.75] [heading RIGHTWARD]
|
||||
save 'hshadesquare' 0x25A4
|
||||
sketch # vshadesquare, U+25A5
|
||||
define lineWidth : Math.min hollowSW ((squareRadiusFW * 2 - hollowSW * 2) * 1 / 11)
|
||||
define r : shapeWidth / 2 + squareRadiusFW - hollowSW + lineWidth / 2
|
||||
define lineWidth : Math.min GEOMETRYSTROKE ((squareRadiusFW * 2 - GEOMETRYSTROKE * 2) * 1 / 11)
|
||||
define r : shapeWidth / 2 + squareRadiusFW - GEOMETRYSTROKE + lineWidth / 2
|
||||
define l : shapeWidth / 2 - (r - shapeWidth / 2)
|
||||
set-width shapeWidth
|
||||
include : union
|
||||
|
@ -808,7 +818,7 @@ export : define [apply] : begin
|
|||
include : union glyphs.hshadesquare glyphs.vshadesquare
|
||||
save 'hvshadesquare' 0x25A6
|
||||
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 bot : parenMid - (top - parenMid)
|
||||
set-width shapeWidth
|
||||
|
@ -823,7 +833,7 @@ export : define [apply] : begin
|
|||
curl rightFW [mix top bot (j / 4 + 1)] [heading RIGHTWARD]
|
||||
save 'ddiagshadesquare' 0x25A7
|
||||
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 bot : parenMid - (top - parenMid)
|
||||
set-width shapeWidth
|
||||
|
@ -851,7 +861,7 @@ export : define [apply] : begin
|
|||
list 0x25D4 0 0 1 0
|
||||
list 0x25D5 0 1 1 1
|
||||
foreach [{u LT LB RT RB} : items-of quarters] : sketch
|
||||
define r : squareRadiusFW - hollowSW / 2
|
||||
define r : squareRadiusFW - GEOMETRYSTROKE / 2
|
||||
set-width shapeWidth
|
||||
include : union
|
||||
begin glyphs.whitecircle
|
||||
|
|
|
@ -6,8 +6,7 @@ import [designParameters] from '../meta/aesthetics'
|
|||
|
||||
export : define [apply] : begin
|
||||
glyph-module-entry commonShapes overmarks letterBasic letterExt
|
||||
|
||||
### Letter-like
|
||||
do "Letter-like"
|
||||
sketch # micro
|
||||
include glyphs.mu AS_BASE
|
||||
if SLAB : if (!para.isItalic) : begin
|
||||
|
@ -94,9 +93,8 @@ export : define [apply] : begin
|
|||
g4 SB (CAP - HOOK)
|
||||
save 'partial' 0x2202
|
||||
|
||||
### Mathematical Operators
|
||||
do
|
||||
local sw OPERATORSTROKE
|
||||
do "Frames"
|
||||
local sw GEOMETRYSTROKE
|
||||
local k : 2 / 3
|
||||
local top : 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
|
||||
|
||||
sketch # mathO
|
||||
include : OShape top bottom left right sw (SMALLSMOOTHA * 3) (SMALLSMOOTHB * 3)
|
||||
include glyphs.hwwhitecircle
|
||||
save 'mathO'
|
||||
sketch # mathO-outline
|
||||
include : OShapeOutline top bottom left right sw (SMALLSMOOTHA * 3) (SMALLSMOOTHB * 3)
|
||||
include glyphs.hwblackcircleO
|
||||
save 'mathOOutline'
|
||||
sketch # mathBoxOutline
|
||||
include : spiro-outline
|
||||
|
@ -124,6 +122,7 @@ export : define [apply] : begin
|
|||
dispiro [widths.lhs sw] [flat right top] [curl left top]
|
||||
save 'mathBox'
|
||||
|
||||
do "Geometry"
|
||||
sketch
|
||||
include : intersection
|
||||
spiro-outline
|
||||
|
@ -146,11 +145,17 @@ export : define [apply] : begin
|
|||
dispiro [widths.lhs sw] [flat right top] [curl left bottom]
|
||||
save 'angle' 0x2220
|
||||
|
||||
do "Arith"
|
||||
sketch # plus
|
||||
include markset.plus
|
||||
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
||||
include : VBar MIDDLE plusTop plusBot OPERATORSTROKE
|
||||
save 'plus' '+'
|
||||
sketch # plus
|
||||
include markset.plus
|
||||
include : HBar SB RIGHTSB parenMid GEOMETRYSTROKE
|
||||
include : VBar MIDDLE plusTop plusBot GEOMETRYSTROKE
|
||||
save 'innerPlus'
|
||||
sketch # ligplus.lc
|
||||
include markset.plus
|
||||
include : HBar SB (WIDTH - O) parenMid OPERATORSTROKE
|
||||
|
@ -186,6 +191,10 @@ export : define [apply] : begin
|
|||
include markset.plus
|
||||
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
||||
save 'minus' 0x2212
|
||||
sketch # innerMinus
|
||||
include markset.plus
|
||||
include : HBar SB RIGHTSB parenMid GEOMETRYSTROKE
|
||||
save 'innerMinus'
|
||||
|
||||
sketch # plusminus
|
||||
include markset.plus
|
||||
|
@ -194,7 +203,61 @@ export : define [apply] : begin
|
|||
save 'plusminus' 0xB1
|
||||
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
|
||||
do "Equality"
|
||||
sketch # equal
|
||||
include markset.plus
|
||||
include : HBar SB RIGHTSB (parenMid + equalHalfSpace) OPERATORSTROKE
|
||||
|
@ -238,40 +301,7 @@ export : define [apply] : begin
|
|||
equalHole WIDTH
|
||||
save 'equal.cc'
|
||||
|
||||
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
|
||||
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"
|
||||
do "Dots and Colon-likes"
|
||||
local radius1 PERIODRADIUS
|
||||
local radius : Math.min PERIODRADIUS
|
||||
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
|
||||
save 'mathcdot'
|
||||
|
||||
composite 'mathAsterisk' glyphs.'smallasterisk.low' [into-unicode 0x2217]
|
||||
composite 'mathAsterisk' glyphs.'opAsterisk.low' [into-unicode 0x2217]
|
||||
|
||||
# circled operators
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.plus] [into-unicode 0x2295]
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.minus] [into-unicode 0x2296]
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.multiply] [into-unicode 0x2297]
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.multiplyStroke1] [into-unicode 0x2298]
|
||||
do "Circled Operators"
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerPlus] [into-unicode 0x2295]
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerMinus] [into-unicode 0x2296]
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerMultiply] [into-unicode 0x2297]
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.innerMultiplyStroke1] [into-unicode 0x2298]
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.mathcdot] [into-unicode 0x2299]
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.hwsmallwhitecircle] [into-unicode 0x229A]
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline glyphs.mathAsterisk] [into-unicode 0x229B]
|
||||
do
|
||||
local eqS : Math.min OPERATORSTROKE ((RIGHTSB - SB) / 8)
|
||||
composite
|
||||
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)
|
||||
composite glyphs.mathO
|
||||
intersection glyphs.mathOOutline : union
|
||||
HBar (SB + eqS) (RIGHTSB - eqS) (parenMid + eqD) eqS
|
||||
HBar (SB + eqS) (RIGHTSB - eqS) (parenMid - eqD) eqS
|
||||
into-unicode 0x229C
|
||||
composite glyphs.mathO [intersection glyphs.mathOOutline [HBar (SB + OPERATORSTROKE) (RIGHTSB - OPERATORSTROKE) parenMid OPERATORSTROKE]] [into-unicode 0x229D]
|
||||
|
||||
# boxed operators
|
||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.plus] [into-unicode 0x229E]
|
||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.minus] [into-unicode 0x229F]
|
||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.multiply] [into-unicode 0x22A0]
|
||||
do "Boxed operators"
|
||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.innerPlus] [into-unicode 0x229E]
|
||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.innerMinus] [into-unicode 0x229F]
|
||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.innerMultiply] [into-unicode 0x22A0]
|
||||
composite glyphs.mathBox [intersection glyphs.mathBoxOutline glyphs.mathcdot] [into-unicode 0x22A1]
|
||||
|
||||
do "Vs and Cups"
|
||||
sketch # vee
|
||||
include : dispiro
|
||||
widths.center OPERATORSTROKE
|
||||
|
@ -358,17 +394,17 @@ export : define [apply] : begin
|
|||
|
||||
save 'negate' 0xAC
|
||||
|
||||
local top : mix parenMid operTop 0.625
|
||||
local bot : mix parenMid operBot 0.625
|
||||
local top logicTop
|
||||
local bot logicBot
|
||||
sketch # vdash
|
||||
include markset.plus
|
||||
include markset.logic
|
||||
include : HBar SB RIGHTSB parenMid OPERATORSTROKE
|
||||
include : VBarLeft SB top bot OPERATORSTROKE
|
||||
save 'vdash' 0x22A2
|
||||
turned 'dashv' 0x22A3 'vdash' MIDDLE parenMid
|
||||
|
||||
sketch # assert
|
||||
include markset.plus
|
||||
include markset.logic
|
||||
local l : mix MIDDLE SB designParameters.logic_narrow_shrink
|
||||
local r : mix MIDDLE RIGHTSB designParameters.logic_narrow_shrink
|
||||
include : HBar l r parenMid OPERATORSTROKE
|
||||
|
@ -376,7 +412,7 @@ export : define [apply] : begin
|
|||
save 'assert' 0x22A6
|
||||
|
||||
sketch # models
|
||||
include markset.plus
|
||||
include markset.logic
|
||||
local l : mix MIDDLE SB designParameters.logic_narrow_shrink
|
||||
local r : mix MIDDLE RIGHTSB designParameters.logic_narrow_shrink
|
||||
include : HBar l r [mix parenMid top (1 / 3)] OPERATORSTROKE
|
||||
|
@ -385,7 +421,7 @@ export : define [apply] : begin
|
|||
save 'models' 0x22A7
|
||||
|
||||
sketch # tautology
|
||||
include markset.plus
|
||||
include markset.logic
|
||||
local l : mix MIDDLE SB 1
|
||||
local r : mix MIDDLE RIGHTSB 1
|
||||
include : HBar l r [mix parenMid top (1 / 3)] OPERATORSTROKE
|
||||
|
@ -394,18 +430,29 @@ export : define [apply] : begin
|
|||
save 'tautology' 0x22A8
|
||||
|
||||
sketch # top
|
||||
include markset.plus
|
||||
include markset.logic
|
||||
include : HBarTop SB RIGHTSB top OPERATORSTROKE
|
||||
include : VBar MIDDLE top bot OPERATORSTROKE
|
||||
save 'top' 0x22A4
|
||||
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
|
||||
include markset.plus
|
||||
include markset.logic
|
||||
include : HBarBottom SB RIGHTSB 0 OPERATORSTROKE
|
||||
include : VBar MIDDLE (parenMid * 2) 0 OPERATORSTROKE
|
||||
save 'perpendicular' 0x27C2
|
||||
|
||||
do "less and greater"
|
||||
do "Comparison"
|
||||
# Less and Greater
|
||||
define lessSlantness : 1 / 5 * (parenTop - parenBot) / (RIGHTSB - SB)
|
||||
define dH : lessSlantness * (RIGHTSB - SB)
|
||||
|
@ -724,6 +771,7 @@ export : define [apply] : begin
|
|||
define [notGlyph.left unicode oldid top bot prop shift]
|
||||
notGlyph unicode oldid top bot prop (OPERATORSTROKE * 0.5)
|
||||
|
||||
do "Negations"
|
||||
notGlyph 0x2260 'equal'
|
||||
notGlyph 0x2262 'ident'
|
||||
notGlyph 0x22AC 'vdash'
|
||||
|
@ -747,12 +795,13 @@ export : define [apply] : begin
|
|||
notGlyph 0x2278 'lessgreater'
|
||||
notGlyph 0x2279 'greaterless'
|
||||
notGlyph.right 0x2204 'exists' (CAP - DESCENDER / 2) (DESCENDER / 2) 0.4
|
||||
|
||||
do "Ligation glyphs"
|
||||
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.5) 'equal.fc.neg4'
|
||||
|
||||
### 'Large Operators'
|
||||
do 'Large Operators'
|
||||
sketch # sum
|
||||
include : SigmaShape parenTop parenBot OPERATORSTROKE
|
||||
save 'sum' 0x2211
|
||||
|
@ -800,15 +849,26 @@ export : define [apply] : begin
|
|||
turned 'Cap' 0x22C2 'Cup' MIDDLE parenMid
|
||||
|
||||
### APL
|
||||
do "APL"
|
||||
local aplBoxSW : adviceBlackness 4.5
|
||||
local aplBoxTop : mix parenMid operTop 1.1
|
||||
local aplBoxBot : mix parenMid operBot 1.1
|
||||
sketch # aplsquare
|
||||
local l [mix 0 SB (1 / 3)]
|
||||
local r [mix WIDTH RIGHTSB (1 / 3)]
|
||||
include : HBarTop l r operTop aplBoxSW
|
||||
include : HBarBottom l r operBot aplBoxSW
|
||||
include : VBarLeft l operTop operBot aplBoxSW
|
||||
include : VBarRight r operTop operBot aplBoxSW
|
||||
include : HBarTop l r aplBoxTop aplBoxSW
|
||||
include : HBarBottom l r aplBoxBot aplBoxSW
|
||||
include : VBarLeft l aplBoxTop aplBoxBot aplBoxSW
|
||||
include : VBarRight r aplBoxTop aplBoxBot aplBoxSW
|
||||
save 'aplsquare' 0x2395
|
||||
sketch # aplsquareShadow
|
||||
local l [mix 0 SB (1 / 3)]
|
||||
local r [mix WIDTH RIGHTSB (1 / 3)]
|
||||
start-from l aplBoxTop
|
||||
line-to r aplBoxTop
|
||||
line-to r aplBoxBot
|
||||
line-to l aplBoxBot
|
||||
save 'aplsquareShadow'
|
||||
sketch # aplibar
|
||||
local l [mix 0 SB (1 / 3)]
|
||||
local r [mix WIDTH RIGHTSB (1 / 3)]
|
||||
|
@ -827,6 +887,18 @@ export : define [apply] : begin
|
|||
sketch # aplbar
|
||||
include : VBar MIDDLE parenTop parenBot aplBoxSW
|
||||
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
|
||||
include : dispiro
|
||||
widths.center aplBoxSW
|
||||
|
@ -834,57 +906,42 @@ export : define [apply] : begin
|
|||
curl RIGHTSB operBot
|
||||
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.divide aplBoxTfm glyphs.aplsquare [into-unicode 0x2339]
|
||||
composite glyphs.hwwhitediamond aplBoxTfm glyphs.aplsquare [into-unicode 0x233A]
|
||||
composite glyphs.hwsmallwhitecircle aplBoxTfm glyphs.aplsquare [into-unicode 0x233B]
|
||||
composite glyphs.hwwhitecircle aplBoxTfm glyphs.aplsquare [into-unicode 0x233C]
|
||||
composite glyphs.hwwhitecircle glyphs.aplbar [into-unicode 0x233D]
|
||||
composite glyphs.space [aplBoxed glyphs.equal] [into-unicode 0x2338]
|
||||
composite glyphs.space [aplBoxed glyphs.divide] [into-unicode 0x2339]
|
||||
composite glyphs.space [aplBoxed glyphs.hwwhitediamond] [into-unicode 0x233A]
|
||||
composite glyphs.space [aplBoxed glyphs.hwsmallwhitecircle] [into-unicode 0x233B]
|
||||
composite glyphs.space [aplBoxed glyphs.hwwhitecircle] [into-unicode 0x233C]
|
||||
composite glyphs.space [Overlay glyphs.aplbar glyphs.hwwhitecircle] [into-unicode 0x233D]
|
||||
composite glyphs.hwwhitecircle glyphs.hwsmallwhitecircle [into-unicode 0x233E]
|
||||
composite glyphs.minus glyphs.slash [into-unicode 0x233F]
|
||||
composite glyphs.minus glyphs.backslash [into-unicode 0x2340]
|
||||
composite glyphs.slash aplBoxTfm glyphs.aplsquare [into-unicode 0x2341]
|
||||
composite glyphs.backslash aplBoxTfm glyphs.aplsquare [into-unicode 0x2342]
|
||||
composite glyphs.less aplBoxTfm glyphs.aplsquare [into-unicode 0x2343]
|
||||
composite glyphs.greater aplBoxTfm glyphs.aplsquare [into-unicode 0x2344]
|
||||
composite glyphs.hwarrowleft glyphs.aplbar [into-unicode 0x2345]
|
||||
composite glyphs.hwarrowright glyphs.aplbar [into-unicode 0x2346]
|
||||
composite glyphs.hwarrowleft aplBoxTfm glyphs.aplsquare [into-unicode 0x2347]
|
||||
composite glyphs.hwarrowright aplBoxTfm glyphs.aplsquare [into-unicode 0x2348]
|
||||
composite glyphs.hwwhitecircle glyphs.aplbackslash [into-unicode 0x2349]
|
||||
composite glyphs.space [Overlay glyphs.aplminus glyphs.slash] [into-unicode 0x233F]
|
||||
composite glyphs.space [Overlay glyphs.aplminus glyphs.backslash] [into-unicode 0x2340]
|
||||
composite glyphs.space [aplBoxed glyphs.slash] [into-unicode 0x2341]
|
||||
composite glyphs.space [aplBoxed glyphs.backslash] [into-unicode 0x2342]
|
||||
composite glyphs.space [aplBoxed glyphs.less] [into-unicode 0x2343]
|
||||
composite glyphs.space [aplBoxed glyphs.greater] [into-unicode 0x2344]
|
||||
composite glyphs.space [Overlay glyphs.hwarrowleft glyphs.aplbar] [into-unicode 0x2345]
|
||||
composite glyphs.space [Overlay glyphs.hwarrowright glyphs.aplbar] [into-unicode 0x2346]
|
||||
composite glyphs.space [aplBoxed glyphs.hwarrowleft] [into-unicode 0x2347]
|
||||
composite glyphs.space [aplBoxed glyphs.hwarrowright] [into-unicode 0x2348]
|
||||
composite glyphs.space [Overlay glyphs.aplbackslash glyphs.hwwhitecircle] [into-unicode 0x2349]
|
||||
composite glyphs.bot glyphs.underlineBelow [into-unicode 0x234A]
|
||||
composite glyphs.increment glyphs.aplbar [into-unicode 0x234B]
|
||||
composite glyphs.vee aplBoxTfm glyphs.aplsquare [into-unicode 0x234C]
|
||||
composite glyphs.increment aplBoxTfm glyphs.aplsquare [into-unicode 0x234D]
|
||||
composite
|
||||
begin glyphs.hwwhitecircle
|
||||
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.space [Overlay glyphs.increment glyphs.aplbar] [into-unicode 0x234B]
|
||||
composite glyphs.space [aplBoxed glyphs.vee] [into-unicode 0x234C]
|
||||
composite glyphs.space [aplBoxed glyphs.increment] [into-unicode 0x234D]
|
||||
composite glyphs.space [Overlay glyphs.hwarrowup glyphs.minus] [into-unicode 0x234F]
|
||||
composite glyphs.space [aplBoxed glyphs.hwarrowup] [into-unicode 0x2350]
|
||||
composite glyphs.top glyphs.overlineAbove [into-unicode 0x2351]
|
||||
composite glyphs.nabla glyphs.aplbar [into-unicode 0x2352]
|
||||
composite glyphs.wedge aplBoxTfm glyphs.aplsquare [into-unicode 0x2353]
|
||||
composite glyphs.nabla aplBoxTfm glyphs.aplsquare [into-unicode 0x2354]
|
||||
composite
|
||||
begin glyphs.hwwhitecircle
|
||||
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.space [Overlay glyphs.nabla glyphs.aplbar] [into-unicode 0x2352]
|
||||
composite glyphs.space [aplBoxed glyphs.wedge] [into-unicode 0x2353]
|
||||
composite glyphs.space [aplBoxed glyphs.nabla] [into-unicode 0x2354]
|
||||
composite glyphs.space [Overlay glyphs.hwarrowdown glyphs.minus] [into-unicode 0x2356]
|
||||
composite glyphs.space [aplBoxed glyphs.hwarrowdown] [into-unicode 0x2357]
|
||||
composite glyphs.singleQuote markset.plus glyphs.underlineBelow [into-unicode 0x2358]
|
||||
composite
|
||||
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.increment glyphs.underlineBelow [into-unicode 0x2359]
|
||||
composite glyphs.hwwhitediamond markset.plus glyphs.underlineBelow [into-unicode 0x235A]
|
||||
composite glyphs.hwsmallwhitecircle markset.plus glyphs.underlineBelow [into-unicode 0x235B]
|
||||
composite glyphs.hwwhitecircle markset.plus glyphs.underlineBelow [into-unicode 0x235C]
|
||||
|
@ -895,33 +952,27 @@ export : define [apply] : begin
|
|||
UShape operTop operBot [adviceBlackness 5] true
|
||||
FlipAround MIDDLE parenMid
|
||||
into-unicode 0x235D
|
||||
composite glyphs.singleQuote aplBoxTfm glyphs.aplsquare [into-unicode 0x235E]
|
||||
composite
|
||||
begin glyphs.hwblackstar
|
||||
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.space [aplBoxed glyphs.singleQuote] [into-unicode 0x235E]
|
||||
composite glyphs.space [intersection glyphs.mathOOutline glyphs.'opAsterisk.low'] glyphs.mathO [into-unicode 0x235F]
|
||||
composite glyphs.space [aplBoxed : composite glyphs.colon [Realign MIDDLE (XH/2) MIDDLE parenMid]] [into-unicode 0x2360]
|
||||
composite glyphs.top glyphs.dieresisAbove [into-unicode 0x2361]
|
||||
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.hwwhitecircle markset.plus glyphs.dieresisAbove [into-unicode 0x2365]
|
||||
composite glyphs.space [UShape operTop operBot aplBoxSW true] glyphs.aplbar [into-unicode 0x2366]
|
||||
composite glyphs.subst glyphs.aplbar [into-unicode 0x2367]
|
||||
composite glyphs.space [Overlay glyphs.cup glyphs.aplbar] [into-unicode 0x2366]
|
||||
composite glyphs.space [Overlay glyphs.subst glyphs.aplbar] [into-unicode 0x2367]
|
||||
composite glyphs.'asciitilde.low' glyphs.dieresisAbove [into-unicode 0x2368]
|
||||
composite glyphs.'greater.narrow' glyphs.dieresisAbove [into-unicode 0x2369]
|
||||
composite glyphs.minus glyphs.comma [Upright] [Translate 0 (XH / 2)] [Italify] [into-unicode 0x236A]
|
||||
composite glyphs.nabla glyphs.overlaytilde [into-unicode 0x236B]
|
||||
composite glyphs.'zero.unslashed' glyphs.overlaytilde [into-unicode 0x236C]
|
||||
composite glyphs.bar glyphs.overlaytilde [into-unicode 0x236D]
|
||||
composite glyphs.semicolon [Realign MIDDLE (XH/2) MIDDLE parenMid] markset.plus glyphs.underlineBelow [into-unicode 0x236E]
|
||||
composite glyphs.notequal aplBoxTfm glyphs.aplsquare [into-unicode 0x236F]
|
||||
composite glyphs.question aplBoxTfm glyphs.aplsquare [into-unicode 0x2370]
|
||||
composite glyphs.vee glyphs.overlaytilde [into-unicode 0x2371]
|
||||
composite glyphs.wedge glyphs.overlaytilde [into-unicode 0x2372]
|
||||
composite glyphs.minus glyphs.comma [into-unicode 0x236A]
|
||||
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.nabla] [into-unicode 0x236B]
|
||||
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.'zero.unslashed'] [into-unicode 0x236C]
|
||||
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.bar] [into-unicode 0x236D]
|
||||
composite [Overlay glyphs.semicolon glyphs."underscore.belowBaseline"] [into-unicode 0x236E]
|
||||
composite glyphs.space [aplBoxed glyphs.notequal] [into-unicode 0x236F]
|
||||
composite glyphs.space [aplBoxed glyphs.question] [into-unicode 0x2370]
|
||||
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.vee] [into-unicode 0x2371]
|
||||
composite glyphs.space [Overlay glyphs.overlaytilde glyphs.wedge] [into-unicode 0x2372]
|
||||
alias 'apliota' 0x2373 'iota'
|
||||
alias 'aplrho' 0x2374 'rho'
|
||||
alias 'aplomega' 0x2375 'omega'
|
||||
|
|
|
@ -517,11 +517,12 @@ export : define [apply] : begin
|
|||
|
||||
do "Asterisk"
|
||||
local asteriskCenterY : parenTop - LONGJUT * 1.5
|
||||
|
||||
foreach [{size name} : items-of {{1.2 'asterisk.high'} {0.85 'smallasterisk.high'}}] : sketch
|
||||
local asteriskKinds {{1.2 STROKE 'asterisk'} {0.85 STROKE 'smallasterisk'} {1 GEOMETRYSTROKE 'opAsterisk'}}
|
||||
foreach [{size stroke name} : items-of asteriskKinds] : begin
|
||||
sketch
|
||||
local radius : LONGJUT * size
|
||||
local fine : STROKE * 0.4
|
||||
local final : 0.5 * [Math.min STROKE (radius * Math.PI * 2 / 10)]
|
||||
local fine : stroke * 0.4
|
||||
local final : 0.5 * [Math.min stroke (radius * Math.PI * 2 / 10)]
|
||||
|
||||
foreach j [range 0 5] : begin
|
||||
local s : Math.sin (j / 5 * Math.PI * 2)
|
||||
|
@ -529,16 +530,13 @@ export : define [apply] : begin
|
|||
include : dispiro
|
||||
flat MIDDLE asteriskCenterY [widths fine fine]
|
||||
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' '*'
|
||||
|
||||
do "Slashes and numbersign"
|
||||
|
@ -616,6 +614,10 @@ export : define [apply] : begin
|
|||
set-width WIDTH
|
||||
include : HBarBottom SB RIGHTSB 0
|
||||
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]
|
||||
select-variant 'underscore' '_'
|
||||
|
|
|
@ -19,6 +19,8 @@ export : define [calculateMetrics para] : begin
|
|||
define parenBot (parenMid - (CAP - XH) * 2.6)
|
||||
define operTop : mix parenMid parenTop 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 plusBot : parenMid - (WIDTH - SB * 2) * 0.55
|
||||
define operMid parenMid
|
||||
|
@ -134,6 +136,7 @@ export : define [calculateMetrics para] : begin
|
|||
define MVERTSTROKE : adviceBlackness : fallback para.lllcrowdedness (3 + 1 / 3)
|
||||
define OVERLAYSTROKE : adviceBlackness 3.75
|
||||
define OPERATORSTROKE : adviceBlackness 3.2
|
||||
define GEOMETRYSTROKE : adviceBlackness 4.5
|
||||
define SHOULDERFINE : if para.shoulderfine (STROKE * para.shoulderfine) [adviceBlackness 10]
|
||||
|
||||
define SUPERNESS : fallback para.superness 2
|
||||
|
@ -147,7 +150,7 @@ export : define [calculateMetrics para] : begin
|
|||
|
||||
return [object
|
||||
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
|
||||
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
|
||||
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
|
||||
WHITENESS adviceBlackness MVERTSTROKE OVERLAYSTROKE OPERATORSTROKE SHOULDERFINE SUPERNESS superxy
|
||||
WHITENESS adviceBlackness MVERTSTROKE OVERLAYSTROKE OPERATORSTROKE GEOMETRYSTROKE SHOULDERFINE SUPERNESS superxy
|
||||
adviceSSmooth adviceGlottalStopSmooth shoulderMidSlope]
|
||||
|
||||
export : define [setFontMetrics para metrics font] : begin
|
||||
|
|
|
@ -135,7 +135,7 @@ define-macro save : syntax-rules
|
|||
define-macro glyph-module-entry : syntax-rules
|
||||
`[glyph-module-entry @::_opts] : begin
|
||||
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]
|
||||
|
||||
|
@ -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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
define [object
|
||||
g4 g2 corner flat curl close end straight
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue