Add currency symbols and move those directly derived from Latin letter into the Latin file.

This commit is contained in:
be5invis 2020-06-16 21:12:18 -07:00
parent 49bc8e5302
commit 5a0546270c
6 changed files with 181 additions and 166 deletions

View file

@ -75,9 +75,7 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin
if (saveGlyphName.0 != '.' && glyphMap.(saveGlyphName)) if (saveGlyphName.0 != '.' && glyphMap.(saveGlyphName))
throw : new Error "Glyph \(saveGlyphName) already exists" throw : new Error "Glyph \(saveGlyphName) already exists"
glyphMap.(saveGlyphName) = glyphObject glyphMap.(saveGlyphName) = glyphObject
if unicode : begin if unicode : $assignUnicodeImpl$ glyphObject unicode
glyphObject.assign-unicode unicode
set unicodeGlyphs.(unicode) glyphObject
actions.call glyphObject actions.call glyphObject
@ -95,6 +93,10 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin
`[@name @actions] : return : createAndSaveGlyphImpl name null actions `[@name @actions] : return : createAndSaveGlyphImpl name null actions
`[@actions] : return : createAndSaveGlyphImpl null null actions `[@actions] : return : createAndSaveGlyphImpl null null actions
define [$assignUnicodeImpl$ g unicode] : begin
g.assign-unicode unicode
set unicodeGlyphs.(g.unicode.((g.unicode.length - 1))) g
define [$save$ _name unicode] : begin define [$save$ _name unicode] : begin
define t this define t this
define name : if [not _name] ('--autoname-' + [newtemp]) _name define name : if [not _name] ('--autoname-' + [newtemp]) _name
@ -109,9 +111,7 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin
set g.avoidBeingComposite t.avoidBeingComposite set g.avoidBeingComposite t.avoidBeingComposite
set g.related t.related set g.related t.related
if name : set dependencyProfile.(name) : getDependencyProfile g if name : set dependencyProfile.(name) : getDependencyProfile g
if (g && unicode) : begin if (g && unicode) : $assignUnicodeImpl$ g unicode
g.assign-unicode unicode
set unicodeGlyphs.(g.unicode.((g.unicode.length - 1))) g
return g return g
### Spiro constructions ### Spiro constructions
@ -120,7 +120,7 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin
define booleFns : BooleKit.SetupBuilders : object globalTransform Glyph define booleFns : BooleKit.SetupBuilders : object globalTransform Glyph
# IDKY, but wrapping "metrics" prevents Node.js on Arch modifying it. # IDKY, but wrapping "metrics" prevents Node.js on Arch modifying it.
define $$Capture$$ : object [metrics : Object.create metrics] $NamedParameterPair$ $donothing$ para recursive recursiveCodes variantSelector glyphMap glyphList unicodeGlyphs create-glyph $save$ spirofns booleFns MarkSet AS_BASE ALSO_METRICS pickHash dependencyProfile getDependencyProfile buildGlyphs newtemp tagged DivFrame fontMetrics define $$Capture$$ : object [metrics : Object.create metrics] $NamedParameterPair$ $donothing$ para recursive recursiveCodes variantSelector glyphMap glyphList unicodeGlyphs create-glyph $save$ spirofns booleFns MarkSet AS_BASE ALSO_METRICS pickHash dependencyProfile getDependencyProfile buildGlyphs newtemp tagged DivFrame fontMetrics $assignUnicodeImpl$
### HERE WE GO ### HERE WE GO
run-glyph-module '../glyphs/common-shapes.js' run-glyph-module '../glyphs/common-shapes.js'

View file

@ -861,6 +861,7 @@ glyph-block Autobuild-Ligatures : begin
list 0x479 { 'o' 'y' } list 0x479 { 'o' 'y' }
list 0x20A7 { 'P' 's' } list 0x20A7 { 'P' 's' }
list 0x20A8 { 'R' 's' } list 0x20A8 { 'R' 's' }
list 0x20AF { 'D' 'rho' }
list 0x203c { 'exclam' 'exclam' } list 0x203c { 'exclam' 'exclam' }
list 0x2047 { 'question' 'question' } list 0x2047 { 'question' 'question' }
list 0x2048 { 'question' 'exclam' } list 0x2048 { 'question' 'exclam' }

View file

@ -61,7 +61,6 @@ glyph-block CommonShapes : begin
define [query-glyph id] : return glyphMap.(id) define [query-glyph id] : return glyphMap.(id)
define [into-unicode code] : glyph-construction : if code : assign-unicode code define [into-unicode code] : glyph-construction : if code : assign-unicode code
define [WithDerivatives sourceGid dstGid Fn] : if glyphMap.(sourceGid) : begin define [WithDerivatives sourceGid dstGid Fn] : if glyphMap.(sourceGid) : begin
local glyphSrc glyphMap.(sourceGid) local glyphSrc glyphMap.(sourceGid)
create-glyph dstGid : glyph-construction : include : Fn sourceGid null create-glyph dstGid : glyph-construction : include : Fn sourceGid null

View file

@ -1130,6 +1130,10 @@ glyph-block Letter-Latin-W : begin
set WShape.m1S 0.235 set WShape.m1S 0.235
set WShape.m2S : 1 - WShape.m1S set WShape.m2S : 1 - WShape.m1S
define [WonOverlay df] : glyph-construction
include : HOverlayBar [mix SB 0 0.7] [mix df.rightSB df.width 0.7] (CAP * 0.6)
include : HOverlayBar [mix SB 0 0.7] [mix df.rightSB df.width 0.7] (CAP * 0.35)
sketch # W sketch # W
local df : DivFrame para.diversityM 3 local df : DivFrame para.diversityM 3
set-width df.width set-width df.width
@ -1138,10 +1142,16 @@ glyph-block Letter-Latin-W : begin
include : WShape CAP true df include : WShape CAP true df
save 'W.straight' save 'W.straight'
save 'cyrWe.straight' save 'cyrWe.straight'
branch
include : WonOverlay df
save 'symbol/currency/wonSign.straight'
branch branch
include : WShape CAP false df include : WShape CAP false df
save 'W.curly' save 'W.curly'
save 'cyrWe.curly' save 'cyrWe.curly'
branch
include : WonOverlay df
save 'symbol/currency/wonSign.curly'
sketch # w sketch # w
local df : DivFrame para.diversityM 3 local df : DivFrame para.diversityM 3
@ -1156,8 +1166,6 @@ glyph-block Letter-Latin-W : begin
save 'w.curly' save 'w.curly'
save 'cyrwe.curly' save 'cyrwe.curly'
define [WHooktopShape top barStraight df] : glyph-construction define [WHooktopShape top barStraight df] : glyph-construction
local fineOuter : if barStraight local fineOuter : if barStraight
adviceBlackness WShape.fineSOuter [Math.sqrt df.div] adviceBlackness WShape.fineSOuter [Math.sqrt df.div]
@ -1227,6 +1235,7 @@ glyph-block Letter-Latin-W : begin
select-variant 'W' 'W' select-variant 'W' 'W'
select-variant 'cyrWe' 0x51C (follow -- 'W') select-variant 'cyrWe' 0x51C (follow -- 'W')
select-variant 'Whooktop' 0x2C72 (follow -- 'W') select-variant 'Whooktop' 0x2C72 (follow -- 'W')
select-variant 'symbol/currency/wonSign' 0x20A9 (follow -- 'W')
select-variant 'w' 'w' select-variant 'w' 'w'
select-variant 'cyrwe' 0x51D (follow -- 'w') select-variant 'cyrwe' 0x51D (follow -- 'w')
select-variant 'ww' 0x2AC (follow -- 'w') select-variant 'ww' 0x2AC (follow -- 'w')
@ -1373,6 +1382,10 @@ glyph-block Letter-Latin-Upper-Y : begin
include : AIVSerifs top include : AIVSerifs top
include : CenterBottomSerif Middle [fallback bot 0] MidJutSide include : CenterBottomSerif Middle [fallback bot 0] MidJutSide
define [YOverlayShape] : glyph-construction
include : HOverlayBar SB RightSB (CAP * 0.45)
include : HOverlayBar SB RightSB (CAP * 0.25)
sketch # Y sketch # Y
include MarkSet.capital include MarkSet.capital
branch branch
@ -1380,11 +1393,17 @@ glyph-block Letter-Latin-Upper-Y : begin
save 'Y.straight' save 'Y.straight'
save 'Upsilon.straight' save 'Upsilon.straight'
save 'cyrUe.straight' save 'cyrUe.straight'
branch
include : YOverlayShape
save 'symbol/currency/yenSign.straight'
branch branch
include : YShape false CAP include : YShape false CAP
save 'Y.curly' save 'Y.curly'
save 'Upsilon.curly' save 'Upsilon.curly'
save 'cyrUe.curly' save 'cyrUe.curly'
branch
include : YOverlayShape
save 'symbol/currency/yenSign.curly'
define [YHookTopShape straightBar] : glyph-construction define [YHookTopShape straightBar] : glyph-construction
include : YShape straightBar CAP include : YShape straightBar CAP
@ -1433,7 +1452,7 @@ glyph-block Letter-Latin-Upper-Y : begin
select-variant 'Upsilon' 0x3A5 (follow -- 'Y') select-variant 'Upsilon' 0x3A5 (follow -- 'Y')
select-variant 'cyrUe' 0x4AE (follow -- 'Y') select-variant 'cyrUe' 0x4AE (follow -- 'Y')
select-variant 'cyrue' 0x4AF (follow -- 'Y') select-variant 'cyrue' 0x4AF (follow -- 'Y')
select-variant 'symbol/currency/yenSign' 0xA5 (follow -- 'Y')
glyph-block Letter-Latin-Lower-Y : begin glyph-block Letter-Latin-Lower-Y : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
@ -2374,11 +2393,12 @@ glyph-block Letter-Latin-Lower-D : begin
glyph-block Letter-Latin-Upper-P : begin glyph-block Letter-Latin-Upper-P : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Overmarks glyph-block-import Overmarks
glyph-block-export PShape PShapeOutline RevPShape glyph-block-export PShape PShapeOutline RevPShape PBarPosY
define [PBarPosY top sw bp] : (top - sw) * bp - sw * PShape.SwBelowBar
define [PShapeOutlineKnots top mul bp overshoot sw offset] : begin define [PShapeOutlineKnots top mul bp overshoot sw offset] : begin
local bowlTop (top * 1 - offset) local bowlTop (top * 1 - offset)
local bowlBottom ((top - sw) * bp - sw * PShape.SwBelowBar + offset) local bowlBottom : [PBarPosY top sw bp] + offset
local turnRadius : (bowlTop - bowlBottom) * 0.45 local turnRadius : (bowlTop - bowlBottom) * 0.45
local sma : SmoothAOf (Smooth * 0.9) Width local sma : SmoothAOf (Smooth * 0.9) Width
local smb : SmoothBOf (Smooth * 0.9) Width local smb : SmoothBOf (Smooth * 0.9) Width
@ -2438,12 +2458,12 @@ glyph-block Letter-Latin-Upper-P : begin
include : spiro-outline include : spiro-outline
PShapeOutlineKnots top mul bp overshoot sw offset PShapeOutlineKnots top mul bp overshoot sw offset
define [PShape] : params [top [mul PShape.defaultMul] [bp PShape.BarPos] [overshoot PShape.defaultOvershoot] [sw Stroke] [slab SLAB]] : glyph-construction define [PShape] : params [top [mul PShape.defaultMul] [bp PShape.BarPos] [overshoot PShape.defaultOvershoot] [sw Stroke] [slab SLAB] [withBar true]] : glyph-construction
include : dispiro include : dispiro
widths.rhs sw widths.rhs sw
PShapeOutlineKnots top mul bp overshoot sw 0 PShapeOutlineKnots top mul bp overshoot sw 0
if withBar : begin
include : tagged 'strokeL' : VBarLeft (SB * mul) 0 top sw include : tagged 'strokeL' : VBarLeft (SB * mul) 0 top sw
if slab : begin if slab : begin
include : tagged 'serifLT' : LeftwardTopSerif (SB * mul) top SideJut sw include : tagged 'serifLT' : LeftwardTopSerif (SB * mul) top SideJut sw
include : CenterBottomSerif (SB * mul + HalfStroke * HVContrast) 0 Jut sw include : CenterBottomSerif (SB * mul + HalfStroke * HVContrast) 0 Jut sw
@ -2481,6 +2501,11 @@ glyph-block Letter-Latin-Upper-P : begin
save 'Phookleft' 0x1A4 save 'Phookleft' 0x1A4
create-glyph 'symbol/currency/rubleSign' 0x20BD : glyph-construction
include [refer-glyph 'P'] AS_BASE ALSO_METRICS
define bar1pos : [PBarPosY CAP Stroke PShape.BarPos] + HalfStroke
include : HOverlayBar [mix SB 0 0.7] (SB + HalfStroke * HVContrast) bar1pos
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.8] [mix 0 (bar1pos - Stroke) (3 / 4)]
glyph-block Letter-Latin-Lower-P : begin glyph-block Letter-Latin-Lower-P : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
@ -2520,18 +2545,18 @@ glyph-block Letter-Latin-Lower-P : begin
glyph-block Letter-Latin-Upper-R : begin glyph-block Letter-Latin-Upper-R : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Overmarks glyph-block-import Overmarks
glyph-block-import Letter-Latin-Upper-P : PShape RevPShape glyph-block-import Letter-Latin-Upper-P : PShape RevPShape PBarPosY
### R and CyrYa ### R and CyrYa
glyph-block-export RLegShape RLegTerminalX glyph-block-export RLegShape RLegTerminalX
define [RLegTerminalX straight right sw] : right - [if straight (OX * 2) 0] - sw / 2 * HVContrast define [RLegTerminalX straight right sw] : right - [if straight (OX * 2) 0] - sw / 2 * HVContrast
define [RLegShape right bottom top charTop slab straight sw extraShift] : glyph-construction define [RLegShape] : params [top bottom left right charTop slab straight sw extraShift] : glyph-construction
local xRightBottom : RLegTerminalX straight right sw local xRightBottom : RLegTerminalX straight right sw
if straight : do if straight : do
local shift : if slab (-Jut / 2 + 0.25 * sw * HVContrast) 0 local shift : if slab (-Jut / 2 + 0.25 * sw * HVContrast) 0
include : dispiro include : dispiro
widths.center (sw * [diagCor charTop (Width - extraShift * 2) 0 (sw * 2)]) widths.center (sw * [diagCor (top - bottom) (right - left - extraShift) 0 sw])
corner (Middle + extraShift + shift / 2) top [heading Downward] corner (left + extraShift + shift / 2) top [heading Downward]
corner (xRightBottom + shift) bottom [heading Downward] corner (xRightBottom + shift) bottom [heading Downward]
if slab : begin if slab : begin
include : RightwardBottomSerif (xRightBottom + shift + 0.25 * sw * HVContrast) bottom (SideJut + Jut / 8) include : RightwardBottomSerif (xRightBottom + shift + 0.25 * sw * HVContrast) bottom (SideJut + Jut / 8)
@ -2542,18 +2567,18 @@ glyph-block Letter-Latin-Upper-R : begin
widths.center sw widths.center sw
g4.up.start xRightBottom bottom [heading Upward] g4.up.start xRightBottom bottom [heading Upward]
quadcontrols 0 [if slab 0.3 0.4] 8 quadcontrols 0 [if slab 0.3 0.4] 8
g4 Middle top g4 left top
if slab : begin if slab : begin
include : RightwardBottomSerif right bottom (SideJut + Jut / 8) include : RightwardBottomSerif right bottom (SideJut + Jut / 8)
define [RevRLegTerminalX straight left sw] : left + [if straight (OX * 2) 0] + sw / 2 * HVContrast define [RevRLegTerminalX straight left sw] : left + [if straight (OX * 2) 0] + sw / 2 * HVContrast
define [RevRLegShape left bottom top charTop slab straight sw extraShift] : glyph-construction define [RevRLegShape] : params [top bottom left right charTop slab straight sw extraShift] : glyph-construction
local xLeftBottom : RevRLegTerminalX straight left sw local xLeftBottom : RevRLegTerminalX straight left sw
if straight : do if straight : do
local shift : if slab (-Jut / 2 + 0.25 * sw * HVContrast) 0 local shift : if slab (-Jut / 2 + 0.25 * sw * HVContrast) 0
include : dispiro include : dispiro
widths.center (sw * [diagCor charTop (Width - extraShift * 2) 0 (sw * 2)]) widths.center (sw * [diagCor (top - bottom) (right - left - extraShift) 0 sw])
corner (Middle + extraShift + shift / 2) top [heading Downward] corner (right + extraShift + shift / 2) top [heading Downward]
corner (xLeftBottom + shift) bottom [heading Downward] corner (xLeftBottom + shift) bottom [heading Downward]
if slab : begin if slab : begin
include : LeftwardBottomSerif (xLeftBottom + shift - 0.25 * sw * HVContrast) bottom (SideJut + Jut / 8) include : LeftwardBottomSerif (xLeftBottom + shift - 0.25 * sw * HVContrast) bottom (SideJut + Jut / 8)
@ -2564,7 +2589,7 @@ glyph-block Letter-Latin-Upper-R : begin
widths.center sw widths.center sw
g4.up.start xLeftBottom bottom [heading Upward] g4.up.start xLeftBottom bottom [heading Upward]
quadcontrols 0 [if slab 0.3 0.4] 8 quadcontrols 0 [if slab 0.3 0.4] 8
g4 Middle top g4 right top
if slab : begin if slab : begin
include : LeftwardBottomSerif left bottom (SideJut + Jut / 8) include : LeftwardBottomSerif left bottom (SideJut + Jut / 8)
@ -2573,33 +2598,57 @@ glyph-block Letter-Latin-Upper-R : begin
define [RShape] : params [straightBar top [mul 1] [slab SLAB]] : glyph-construction define [RShape] : params [straightBar top [mul 1] [slab SLAB]] : glyph-construction
include : PShape top (mul -- mul) (bp -- [RBarPos top slab]) (overshoot -- O) (slab -- slab) include : PShape top (mul -- mul) (bp -- [RBarPos top slab]) (overshoot -- O) (slab -- slab)
local right (RightSB - O - [if SLAB (Jut / 8) 0]) local right (RightSB - O - [if SLAB (Jut / 8) 0])
include : RLegShape right 0 [RBarTop top Stroke straightBar slab] top slab straightBar Stroke 0 include : RLegShape [RBarTop top Stroke straightBar slab] 0 Middle right top slab straightBar Stroke 0
define [RevRShape] : params [straightBar top [mul 1] [slab SLAB]] : glyph-construction define [RevRShape] : params [straightBar top [mul 1] [slab SLAB]] : glyph-construction
include : RevPShape top (mul -- mul) (bp -- [RBarPos top slab]) (overshoot -- O) (slab -- slab) include : RevPShape top (mul -- mul) (bp -- [RBarPos top slab]) (overshoot -- O) (slab -- slab)
local left (SB + O + [if SLAB (Jut / 8) 0]) local left (SB + O + [if SLAB (Jut / 8) 0])
include : RevRLegShape left 0 [RBarTop top Stroke straightBar slab] top slab straightBar Stroke 0 include : RevRLegShape [RBarTop top Stroke straightBar slab] 0 left Middle top slab straightBar Stroke 0
sketch # R sketch # R
include MarkSet.capital include MarkSet.capital
branch branch
include : RShape true CAP include : RShape true CAP
set-base-anchor 'overlay' (SB + Stroke * HVContrast) (CAP * [RBarPos CAP SLAB] - HalfStroke) set-base-anchor 'overlay'
SB + Stroke * HVContrast
PBarPosY CAP Stroke : RBarPos CAP SLAB
save 'R.straight' save 'R.straight'
branch branch
include : RShape true CAP (slab -- false) include : RShape true CAP (slab -- false)
set-base-anchor 'overlay' (SB + Stroke * HVContrast) (CAP * [RBarPos CAP 0] - HalfStroke) set-base-anchor 'overlay'
SB + Stroke * HVContrast
PBarPosY CAP Stroke : RBarPos CAP 0
eject-contour 'strokeL' eject-contour 'strokeL'
save 'Rrotunda.straight' save 'Rrotunda.straight'
branch branch
include : RShape false CAP include : RShape false CAP
set-base-anchor 'overlay' (SB + Stroke * HVContrast) (CAP * [RBarPos CAP SLAB] - HalfStroke) set-base-anchor 'overlay'
SB + Stroke * HVContrast
PBarPosY CAP Stroke : RBarPos CAP SLAB
save 'R.curly' save 'R.curly'
branch branch
include : RShape false CAP (slab -- false) include : RShape false CAP (slab -- false)
set-base-anchor 'overlay' (SB + Stroke * HVContrast) (CAP * [RBarPos CAP 0] - HalfStroke) set-base-anchor 'overlay'
SB + Stroke * HVContrast
PBarPosY CAP Stroke : RBarPos CAP 0
eject-contour 'strokeL' eject-contour 'strokeL'
save 'Rrotunda.curly' save 'Rrotunda.curly'
define [IndianRupeeShape suffix straightBar] : glyph-construction
define bp : RBarPos CAP 0
include : intersection
Rect CAP 0 SB Width
WithTransform [Translate (-Width / 8) 0]
PShape CAP (bp -- bp) (slab -- false) (withBar -- false)
local right : RightSB - O - [if straightBar 0 (Width / 16)]
include : RLegShape [RBarTop CAP Stroke straightBar false] 0 (Width * 0.375) right CAP false straightBar Stroke 0
define sw : adviceBlackness2 2 4 CAP
include : HBarTop SB RightSB CAP sw
include : HBar SB RightSB [mix CAP [PBarPosY CAP Stroke bp] 0.5] sw
create-glyph 'symbol/currency/indianRupeeSign.straight' : IndianRupeeShape 'straight' true
create-glyph 'symbol/currency/indianRupeeSign.curly' : IndianRupeeShape 'curly' false
sketch # smcpR sketch # smcpR
include MarkSet.e include MarkSet.e
branch branch
@ -2619,6 +2668,7 @@ glyph-block Letter-Latin-Upper-R : begin
select-variant 'R' 'R' select-variant 'R' 'R'
select-variant 'Rrotunda' 0xA75A (follow -- 'R') select-variant 'Rrotunda' 0xA75A (follow -- 'R')
select-variant 'symbol/currency/indianRupeeSign' 0x20B9 (follow -- 'R')
select-variant 'smcpR' 0x280 (follow -- 'R') select-variant 'smcpR' 0x280 (follow -- 'R')
select-variant 'rrotunda' 0xA75B (follow -- 'R') select-variant 'rrotunda' 0xA75B (follow -- 'R')
@ -2641,10 +2691,10 @@ glyph-block Letter-Latin-Upper-R : begin
local right (RightSB - O - [if SLAB (Jut / 8) 0]) local right (RightSB - O - [if SLAB (Jut / 8) 0])
branch branch
include : RLegShape right Descender ((top - Stroke) * bp) (top - Descender) SLAB true Stroke 0 include : RLegShape ((top - Stroke) * bp) Descender Middle right (top - Descender) SLAB true Stroke 0
save 'Yr.straight' save 'Yr.straight'
branch branch
include : RLegShape right Descender ((top - Stroke) * bp) (top - Descender) SLAB false Stroke 0 include : RLegShape ((top - Stroke) * bp) Descender Middle right (top - Descender) SLAB false Stroke 0
save 'Yr.curly' save 'Yr.curly'
select-variant 'Yr' 0x1A6 (follow -- 'R') select-variant 'Yr' 0x1A6 (follow -- 'R')
@ -2935,6 +2985,11 @@ glyph-block Letter-Latin-C : begin
save 'cyrEs' 0x421 save 'cyrEs' 0x421
save 'lunateSigma' 0x3F9 save 'lunateSigma' 0x3F9
create-glyph 'symbol/currency/euroSign' 0x20AC : glyph-construction
include [refer-glyph "C"] AS_BASE ALSO_METRICS
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.7] (CAP * 0.4)
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.7] (CAP * 0.6)
sketch # c sketch # c
set-width Width set-width Width
include MarkSet.e include MarkSet.e
@ -2951,6 +3006,19 @@ glyph-block Letter-Latin-C : begin
save 'cyres' 0x441 save 'cyres' 0x441
save 'lunatesigma' 0x3F2 save 'lunatesigma' 0x3F2
create-glyph 'symbol/currency/centSign' 0xA2 : glyph-construction
define fine : adviceBlackness 4
include [refer-glyph 'c'] AS_BASE ALSO_METRICS
include : dispiro
widths.center
flat Middle (XH - HalfStroke)
curl Middle (XH - Descender / 2) [heading Upward]
include : dispiro
widths.center
flat Middle (Descender / 2) [heading Upward]
curl Middle HalfStroke
include : VBar Middle (XH - HalfStroke) (0 + HalfStroke) fine
turned 'turnC' 0x186 'C' Middle (CAP / 2) turned 'turnC' 0x186 'C' Middle (CAP / 2)
turned 'turnc' 0x254 'c' Middle (XH / 2) turned 'turnc' 0x254 'c' Middle (XH / 2)
composite [refer-glyph 'turnc'] [into-unicode 0x037B] composite [refer-glyph 'turnc'] [into-unicode 0x037B]
@ -3529,14 +3597,19 @@ glyph-block Letter-Latin-Upper-N : begin
include : NShape XH SB RightSB 3 3.5 include : NShape XH SB RightSB 3 3.5
save 'smcpN' 0x274 save 'smcpN' 0x274
create-glyph 'symbol/currency/nairaSign' 0x20A6 : glyph-construction
include : NShape CAP (SB * 1.25) (Width - SB * 1.25) 3.5 4
define sw : adviceBlackness2 2 4 CAP
define gap : Math.max (CAP / 6) sw
include : HBarBottom [mix 0 SB 0.5] [mix Width RightSB 0.5] (CAP / 2 + gap / 2) sw
include : HBarTop [mix 0 SB 0.5] [mix Width RightSB 0.5] (CAP / 2 - gap / 2) sw
sketch # Nltail sketch # Nltail
include [refer-glyph 'N'] AS_BASE include [refer-glyph 'N'] AS_BASE
eject-contour 'serifLB' eject-contour 'serifLB'
include : VerticalHook (SB + HalfStroke * HVContrast) 0 (-HookX) Hook include : VerticalHook (SB + HalfStroke * HVContrast) 0 (-HookX) Hook
save 'Nltail' 0x19D save 'Nltail' 0x19D
glyph-block Letter-Latin-Lower-N : begin glyph-block Letter-Latin-Lower-N : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Overmarks glyph-block-import Overmarks
@ -4111,21 +4184,20 @@ glyph-block Letter-Latin-Upper-F : begin
include : tagged 'serifBottom' : RightwardBottomSerif (FBarLeft + HalfStroke * HVContrast) 0 MidJutSide include : tagged 'serifBottom' : RightwardBottomSerif (FBarLeft + HalfStroke * HVContrast) 0 MidJutSide
include : DownwardRightSerif RightSB [fallback top CAP] VJut include : DownwardRightSerif RightSB [fallback top CAP] VJut
sketch # F create-glyph 'F' 'F' : glyph-construction
set-width Width set-width Width
include MarkSet.capital include MarkSet.capital
include : FShape include : FShape
save 'F' 'F' create-glyph 'symbol/currency/frenchFrancSign' 0x20A3 : glyph-construction
include : refer-glyph "F"
include : HOverlayBar (SB * 0.5) (SB * 3 + Stroke * HVContrast) [mix 0 XH 0.4]
sketch # Fltail create-glyph 'Fltail' 0x191 : glyph-construction
include [refer-glyph 'F'] AS_BASE include [refer-glyph 'F'] AS_BASE
eject-contour 'serifBottom' eject-contour 'serifBottom'
include : VerticalHook (SB * 1.5 + HalfStroke * HVContrast) 0 (-HookX) Hook include : VerticalHook (SB * 1.5 + HalfStroke * HVContrast) 0 (-HookX) Hook
save 'Fltail' 0x191
glyph-block Letter-Latin-Lower-F : begin glyph-block Letter-Latin-Lower-F : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Overmarks glyph-block-import Overmarks
@ -4830,6 +4902,65 @@ glyph-block Letter-Latin-S : begin
curl RightSB Descender curl RightSB Descender
save 'sswash' 0x23F save 'sswash' 0x23F
sketch # dollar.through
include MarkSet.capital
define top : CAP * 0.95
define bot : CAP * 0.05
define w : adviceBlackness 3.5
define fine : adviceBlackness 4
define smooth : adviceSSmooth (top - bot) (-1) w
include : dispiro
widths.lhs w
g4 RightSB (top - Hook)
hookstart (top - O)
g4 SB (top - smooth)
SNeck w
g4 RightSB (bot + smooth) [widths 0 w]
hookend (bot + O)
g4 SB (bot + Hook)
include : dispiro
widths.center w
flat Middle (top - HalfStroke)
curl Middle (CAP - Descender / 2) [heading Upward]
include : dispiro
widths.center w
flat Middle (Descender / 2) [heading Upward]
curl Middle (bot + HalfStroke)
save 'dollar.open'
include : VBar Middle (bot + HalfStroke) (top - HalfStroke) fine
save 'dollar.through'
sketch # dollar.throughcap
include MarkSet.capital
define top : CAP * 0.88
define bot : CAP * 0.12
define w : adviceBlackness 3.5
define fine : adviceBlackness 4
define smooth : adviceSSmooth (top - bot) (-1) w
include : dispiro
widths.lhs w
g4 RightSB (top - Hook)
hookstart (top - O)
g4 SB (top - smooth)
SNeck w
g4 RightSB (bot + smooth) [widths 0 w]
hookend (bot + O)
g4 SB (bot + Hook)
include : dispiro
widths.center w
flat Middle (top - HalfStroke)
curl Middle (CAP) [heading Upward]
include : dispiro
widths.center w
flat Middle (0) [heading Upward]
curl Middle (bot + HalfStroke)
save 'dollar.opencap'
include : VBar Middle (bot + HalfStroke) (top - HalfStroke) fine
save 'dollar.throughcap'
select-variant 'dollar' '$'
glyph-block Letter-Latin-Z : begin glyph-block Letter-Latin-Z : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes

View file

@ -23,98 +23,6 @@ glyph-block Symbol-Currency : begin
curl (Middle + radius * [Math.sqrt 2] * [Math.cos angle]) (symbolMid + radius * [Math.sqrt 2] * [Math.sin angle]) curl (Middle + radius * [Math.sqrt 2] * [Math.cos angle]) (symbolMid + radius * [Math.sqrt 2] * [Math.sin angle])
save 'currency' 0xA4 save 'currency' 0xA4
do "Dollar"
define [SNeck] : params [[stroke Stroke] [slantCoeff 0]] : begin
define strokeCoeff : StrokeWidthBlend 0 1 stroke
define tension : 0.46 - 0.0 * strokeCoeff + slantCoeff * TanSlope
return : alsoThruThem {{0.4 tension} {0.6 (1 - tension)}} [widths.center stroke]
sketch # dollar.through
include MarkSet.capital
define top : CAP * 0.95
define bot : CAP * 0.05
define w : adviceBlackness 3.5
define fine : adviceBlackness 4
define smooth : adviceSSmooth (top - bot) (-1) w
include : dispiro
widths.lhs w
g4 RightSB (top - Hook)
hookstart (top - O)
g4 SB (top - smooth)
SNeck w
g4 RightSB (bot + smooth) [widths 0 w]
hookend (bot + O)
g4 SB (bot + Hook)
include : dispiro
widths.center w
flat Middle (top - HalfStroke)
curl Middle (CAP - Descender / 2) [heading Upward]
include : dispiro
widths.center w
flat Middle (Descender / 2) [heading Upward]
curl Middle (bot + HalfStroke)
save 'dollar.open'
include : VBar Middle (bot + HalfStroke) (top - HalfStroke) fine
save 'dollar.through'
sketch # dollar.throughcap
include MarkSet.capital
define top : CAP * 0.88
define bot : CAP * 0.12
define w : adviceBlackness 3.5
define fine : adviceBlackness 4
define smooth : adviceSSmooth (top - bot) (-1) w
include : dispiro
widths.lhs w
g4 RightSB (top - Hook)
hookstart (top - O)
g4 SB (top - smooth)
SNeck w
g4 RightSB (bot + smooth) [widths 0 w]
hookend (bot + O)
g4 SB (bot + Hook)
include : dispiro
widths.center w
flat Middle (top - HalfStroke)
curl Middle (CAP) [heading Upward]
include : dispiro
widths.center w
flat Middle (0) [heading Upward]
curl Middle (bot + HalfStroke)
save 'dollar.opencap'
include : VBar Middle (bot + HalfStroke) (top - HalfStroke) fine
save 'dollar.throughcap'
select-variant 'dollar' '$'
sketch # cent
define fine : adviceBlackness 4
include [refer-glyph 'c'] AS_BASE
include : dispiro
widths.center
flat Middle (XH - HalfStroke)
curl Middle (XH - Descender / 2) [heading Upward]
include : dispiro
widths.center
flat Middle (Descender / 2) [heading Upward]
curl Middle HalfStroke
include : VBar Middle (XH - HalfStroke) (0 + HalfStroke) fine
save 'cent' 0xA2
sketch # euro
include : refer-glyph "C"
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.7] (CAP * 0.4)
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.7] (CAP * 0.6)
save 'euro' 0x20AC
sketch # yen
include [refer-glyph 'Y'] AS_BASE
include : HOverlayBar SB RightSB (CAP * 0.45)
include : HOverlayBar SB RightSB (CAP * 0.25)
save 'yen' 0xA5
define [SterlineBaseShape] : glyph-construction define [SterlineBaseShape] : glyph-construction
local barLeft : mix SB RightSB 0.2 local barLeft : mix SB RightSB 0.2
local hookEndX : Math.max (barLeft + Stroke * 2.5) [mix SB RightSB 0.95] local hookEndX : Math.max (barLeft + Stroke * 2.5) [mix SB RightSB 0.95]
@ -128,38 +36,16 @@ glyph-block Symbol-Currency : begin
g4 SB Stroke g4 SB Stroke
HBarBottom SB RightSB 0 HBarBottom SB RightSB 0
sketch # sterling create-glyph 'symbol/currency/sterlingSign' 0xA3 : glyph-construction
set-width Width set-width Width
include : SterlineBaseShape include : SterlineBaseShape
include : HOverlayBar [mix SB RightSB 0.05] [mix SB RightSB 0.7] (CAP * 0.53) include : HOverlayBar [mix SB RightSB 0.05] [mix SB RightSB 0.7] (CAP * 0.53)
save 'sterling' 0xA3
sketch # liraSymbol create-glyph 'symbol/currency/liraSymbolSign' 0x20A4 : glyph-construction
set-width Width set-width Width
include : SterlineBaseShape include : SterlineBaseShape
include : HOverlayBar [mix SB RightSB 0.05] [mix SB RightSB 0.7] (CAP * 0.4) include : HOverlayBar [mix SB RightSB 0.05] [mix SB RightSB 0.7] (CAP * 0.4)
include : HOverlayBar [mix SB RightSB 0.05] [mix SB RightSB 0.7] (CAP * 0.63) include : HOverlayBar [mix SB RightSB 0.05] [mix SB RightSB 0.7] (CAP * 0.63)
save 'liraSymbol' 0x20A4
sketch # won
local df : DivFrame para.diversityM
set-width df.width
include [refer-glyph 'W'] AS_BASE ALSO_METRICS
include : HOverlayBar [mix SB 0 0.7] [mix df.rightSB df.width 0.7] (CAP * 0.6)
include : HOverlayBar [mix SB 0 0.7] [mix df.rightSB df.width 0.7] (CAP * 0.35)
save 'won' 0x20A9
sketch # frenchFranc
include : refer-glyph "F"
include : HOverlayBar (SB * 0.5) (SB * 3 + Stroke * HVContrast) [mix 0 XH 0.4]
save 'frenchFranc' 0x20A3
sketch # ruble
include [refer-glyph 'P'] AS_BASE
define bar1pos : (CAP - Stroke) * HBarPos
include : HOverlayBar [mix SB 0 0.7] (SB + HalfStroke * HVContrast) bar1pos
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.8] [mix 0 (bar1pos - Stroke) (3 / 4)]
save 'ruble' 0x20BD
glyph-block Symbol-Letter : begin glyph-block Symbol-Letter : begin
@ -338,7 +224,7 @@ glyph-block Symbol-BlackboardBold : begin
glyph-block-import Letter-Latin-Upper-R : RLegShape RLegTerminalX glyph-block-import Letter-Latin-Upper-R : RLegShape RLegTerminalX
sketch # bbR sketch # bbR
define [SingleLeg] : RLegShape (RightSB - O) 0 ((CAP - bbs) * HBarPos) CAP false true bbs (bbd / 2) define [SingleLeg] : RLegShape ((CAP - bbs) * HBarPos) 0 Middle (RightSB - O) CAP false true bbs (bbd / 2)
define terminalX : RLegTerminalX true (RightSB - O) bbs define terminalX : RLegTerminalX true (RightSB - O) bbs
include : BBPShape (mul -- 1) (overshoot -- O) include : BBPShape (mul -- 1) (overshoot -- O)
include : difference include : difference

View file

@ -80,9 +80,7 @@ define-macro depends-on : syntax-rules
define-macro eject-contour : syntax-rules define-macro eject-contour : syntax-rules
`[eject-contour @::args] {'.syntactic-closure' `[currentGlyph.eject-contour @::args] env} `[eject-contour @::args] {'.syntactic-closure' `[currentGlyph.eject-contour @::args] env}
define-macro assign-unicode : syntax-rules define-macro assign-unicode : syntax-rules
`[assign-unicode @code] {".syntactic-closure" `[begin \\ `[assign-unicode @code] {".syntactic-closure" `[$assignUnicodeImpl$ currentGlyph @code
currentGlyph.assign-unicode @code
set $Capture$.unicodeGlyphs.(currentGlyph.unicode.((currentGlyph.unicode.length - 1))) currentGlyph
] env} ] env}
###### Canvas-based mechanism ###### Canvas-based mechanism
@ -202,14 +200,14 @@ define-macro glyph-block : syntax-rules
([typeof form] === "string") : set variableSet.(form) true ([typeof form] === "string") : set variableSet.(form) true
traceBody body traceBody body
traceBody `[$save$ $NamedParameterPair$ $donothing$ create-glyph] traceBody `[$save$ $NamedParameterPair$ $donothing$ create-glyph $assignUnicodeImpl$]
set externEnv.$glyphBlockVariableUsage$ variableSet set externEnv.$glyphBlockVariableUsage$ variableSet
define captureImports `[metrics $NamedParameterPair$ $donothing$ para recursive define captureImports `[metrics $NamedParameterPair$ $donothing$ para recursive
recursiveCodes variantSelector glyphMap glyphList unicodeGlyphs create-glyph $save$ recursiveCodes variantSelector glyphMap glyphList unicodeGlyphs create-glyph $save$
spirofns booleFns MarkSet AS_BASE ALSO_METRICS pickHash dependencyProfile spirofns booleFns MarkSet AS_BASE ALSO_METRICS pickHash dependencyProfile
getDependencyProfile buildGlyphs newtemp tagged DivFrame fontMetrics] getDependencyProfile buildGlyphs newtemp tagged DivFrame fontMetrics $assignUnicodeImpl$]
define metricImports `[UPM HalfUPM Width SB CAP XH Descender Contrast symbolMid parenTop define metricImports `[UPM HalfUPM Width SB CAP XH Descender Contrast symbolMid parenTop
parenBot operTop operBot tackTop tackBot plusTop plusBot pictTop pictBot bgopTop bgopBot parenBot operTop operBot tackTop tackBot plusTop plusBot pictTop pictBot bgopTop bgopBot
Italify Upright Scale Translate Rotate globalTransform TanSlope Italify Upright Scale Translate Rotate globalTransform TanSlope