APL symbols remake (I)

This commit is contained in:
belleve 2018-08-17 00:28:00 +08:00
parent b82ce595ce
commit ffc50ab30a
9 changed files with 625 additions and 527 deletions

View file

@ -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

View file

@ -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

View file

@ -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]

View file

@ -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

View file

@ -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

View file

@ -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'

View file

@ -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' '_'

View file

@ -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

View file

@ -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