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

File diff suppressed because it is too large Load diff

View file

@ -517,28 +517,26 @@ export : define [apply] : begin
do "Asterisk"
local asteriskCenterY : parenTop - LONGJUT * 1.5
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)]
foreach [{size name} : items-of {{1.2 'asterisk.high'} {0.85 'smallasterisk.high'}}] : sketch
local radius : LONGJUT * size
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)
local c : Math.cos (j / 5 * Math.PI * 2)
include : dispiro
flat MIDDLE asteriskCenterY [widths fine fine]
curl (MIDDLE + radius * s) (asteriskCenterY + radius * c) [widths final final]
save (name + '.high')
composite (name + '.low') glyphs.(name + '.high')
Upright
Translate 0 (parenMid - asteriskCenterY)
begin markset.plus
Italify
foreach j [range 0 5] : begin
local s : Math.sin (j / 5 * Math.PI * 2)
local c : Math.cos (j / 5 * Math.PI * 2)
include : dispiro
flat MIDDLE asteriskCenterY [widths fine fine]
curl (MIDDLE + radius * s) (asteriskCenterY + radius * c) [widths final final]
save name
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