Added weight "heavy".

This commit is contained in:
be5invis 2015-12-15 08:40:58 +08:00
parent 33787fed5a
commit 5dee202ded
12 changed files with 136 additions and 72 deletions

View File

@ -238,7 +238,7 @@ export as build : define [buildFont para recursive recursiveCodes] : begin
define [superxy x] : Math.pow (1 - [Math.pow x SUPERNESS]) (1 / SUPERNESS) define [superxy x] : Math.pow (1 - [Math.pow x SUPERNESS]) (1 / SUPERNESS)
define [adviceSSmooth y sign] : begin define [adviceSSmooth y sign] : begin
local ss : y * 0.22 + STROKE * 0.22 + 0.02 * (RIGHTSB - SB) local ss : y * 0.22 + STROKE * 0.225 + 0.02 * (RIGHTSB - SB)
return : ss + sign * globalTransform.yx * para.smoothadjust * (ss / SMALLSMOOTH) return : ss + sign * globalTransform.yx * para.smoothadjust * (ss / SMALLSMOOTH)
define [adviceGlottalStopSmooth y sign] : ((y - STROKE) * 0.25 + STROKE / 2) + sign * globalTransform.yx * para.smoothadjust define [adviceGlottalStopSmooth y sign] : ((y - STROKE) * 0.25 + STROKE / 2) + sign * globalTransform.yx * para.smoothadjust
define [shoulderMidSlope _fine _stroke _dir] : 0.5 * CORRECTION_HX * ([fallback _stroke STROKE] - [fallback _fine SHOULDERFINE]) / [fallback _stroke STROKE] + [fallback _dir 1] * globalTransform.yx define [shoulderMidSlope _fine _stroke _dir] : 0.5 * CORRECTION_HX * ([fallback _stroke STROKE] - [fallback _fine SHOULDERFINE]) / [fallback _stroke STROKE] + [fallback _dir 1] * globalTransform.yx

View File

@ -93,6 +93,7 @@ if(argv.feature) {
};*/ };*/
if(argv.svg) { if(argv.svg) {
function cov(x){ return x.toFixed(4) }
function toSVGPath(glyph){ function toSVGPath(glyph){
var buf = ''; var buf = '';
if(glyph.contours) for(var j = 0; j < glyph.contours.length; j++) { if(glyph.contours) for(var j = 0; j < glyph.contours.length; j++) {
@ -102,15 +103,15 @@ if(argv.svg) {
if(contour.length) { if(contour.length) {
lx = contour[0].x; lx = contour[0].x;
ly = contour[0].y; ly = contour[0].y;
buf += 'M' + lx + ' ' + ly; buf += 'M' + cov(lx) + ' ' + cov(ly);
for(var k = 1; k < contour.length; k++) if(contour[k].onCurve){ for(var k = 1; k < contour.length; k++) if(contour[k].onCurve){
lx = contour[k].x; lx = contour[k].x;
ly = contour[k].y; ly = contour[k].y;
buf += 'L' + lx + ' ' + ly; buf += 'L' + cov(lx) + ' ' + cov(ly);
} else if(contour[k].cubic) { } else if(contour[k].cubic) {
var rx = contour[k + 2].x; var rx = contour[k + 2].x;
var ry = contour[k + 2].y; var ry = contour[k + 2].y;
buf += 'C' + [contour[k].x, contour[k].y, contour[k + 1].x, contour[k + 1].y, rx, ry].join(' '); buf += 'C' + [contour[k].x, contour[k].y, contour[k + 1].x, contour[k + 1].y, rx, ry].map(cov).join(' ');
lx = rx; lx = rx;
ly = ry; ly = ry;
k += 2; k += 2;
@ -127,14 +128,14 @@ if(argv.svg) {
var x2 = mix(rx, contour[k].x, 2 / 3); var x2 = mix(rx, contour[k].x, 2 / 3);
var y2 = mix(ry, contour[k].y, 2 / 3); var y2 = mix(ry, contour[k].y, 2 / 3);
buf += 'C' + [x1, y1, x2, y2, rx, ry].join(' '); buf += 'C' + [cov(x1), cov(y1), cov(x2), cov(y2), cov(rx), cov(ry)].join(' ');
lx = rx; lx = rx;
ly = ry; ly = ry;
if(contour[k + 1].onCurve) k += 1; if(contour[k + 1].onCurve) k += 1;
} else { } else {
var rx = contour[0].x; var rx = contour[0].x;
var ry = contour[0].y; var ry = contour[0].y;
buf += 'Q' + contour[k].x + ' ' + contour[k].y + ' ' + contour[0].x + ' ' + contour[0].y; buf += 'Q' + cov(contour[k].x) + ' ' + cov(contour[k].y) + ' ' + cov(contour[0].x) + ' ' + cov(contour[0].y);
lx = rx; lx = rx;
ly = ry; ly = ry;
} }

View File

@ -226,7 +226,7 @@ define [suggestName name] : begin
define [createCircledGlyphs records] : if [not recursive] : begin define [createCircledGlyphs records] : if [not recursive] : begin
local dscale 0.55 local dscale 0.55
local pendingGlyphs : records.map : [record] -> record.1 local pendingGlyphs : records.map : [record] -> record.1
local miniatureFont : Miniature pendingGlyphs 3.5 0.65 local miniatureFont : Miniature pendingGlyphs [fallback para.smallCrowd 3.5] 0.65
foreach {unicode glyphid w} [items-of records] : create-glyph [suggestName : 'circle' + glyphid] : glyph-construction foreach {unicode glyphid w} [items-of records] : create-glyph [suggestName : 'circle' + glyphid] : glyph-construction
local width : fallback w WIDTH local width : fallback w WIDTH
@ -250,7 +250,7 @@ define [createCircledGlyphs records] : if [not recursive] : begin
define [createSuperscripts records] : if [not recursive] : begin define [createSuperscripts records] : if [not recursive] : begin
local pendingGlyphs : records.map : [record] -> record.1 local pendingGlyphs : records.map : [record] -> record.1
local miniatureFont : Miniature pendingGlyphs 3.5 0.7 local miniatureFont : Miniature pendingGlyphs [fallback para.smallCrowd 3.5] 0.7
foreach {unicode glyphid} [items-of records] : create-glyph [suggestName : 'sup' + glyphid] : glyph-construction foreach {unicode glyphid} [items-of records] : create-glyph [suggestName : 'sup' + glyphid] : glyph-construction
if unicode : assign-unicode unicode if unicode : assign-unicode unicode
include miniatureFont.(glyphid) AS_BASE include miniatureFont.(glyphid) AS_BASE
@ -262,7 +262,7 @@ define [createSuperscripts records] : if [not recursive] : begin
define [createSubscripts records] : if [not recursive] : begin define [createSubscripts records] : if [not recursive] : begin
local pendingGlyphs : records.map : [record] -> record.1 local pendingGlyphs : records.map : [record] -> record.1
local miniatureFont : Miniature pendingGlyphs 3.5 0.7 local miniatureFont : Miniature pendingGlyphs [fallback para.smallCrowd 3.5] 0.7
foreach {unicode glyphid} [items-of records] : create-glyph [suggestName : 'sub' + glyphid] : glyph-construction foreach {unicode glyphid} [items-of records] : create-glyph [suggestName : 'sub' + glyphid] : glyph-construction
if unicode : assign-unicode unicode if unicode : assign-unicode unicode
include miniatureFont.(glyphid) AS_BASE include miniatureFont.(glyphid) AS_BASE
@ -285,7 +285,7 @@ define [createSMCPs records] : if [not recursive] : begin
define [createMedievalCombs records] : if [not recursive] : begin define [createMedievalCombs records] : if [not recursive] : begin
local pendingGlyphs : records.map : [record] -> record.1 local pendingGlyphs : records.map : [record] -> record.1
local miniatureFont : Miniature pendingGlyphs 3.7 0.7 local miniatureFont : Miniature pendingGlyphs [fallback para.smallCrowd2 3.5] 0.7
foreach {unicode glyphid} [items-of records] : create-glyph [suggestName : 'comb' + glyphid] : glyph-construction foreach {unicode glyphid} [items-of records] : create-glyph [suggestName : 'comb' + glyphid] : glyph-construction
set-width 0 set-width 0
if unicode : assign-unicode unicode if unicode : assign-unicode unicode

View File

@ -158,8 +158,8 @@ define [OBarLeftShape _top _left] : glyph-construction
arcvh arcvh
g4 (mb) O [widths.heading STROKE 0 {.y (1) .x (-sb)}] g4 (mb) O [widths.heading STROKE 0 {.y (1) .x (-sb)}]
archv archv
flat.ai (RIGHTSB - OX) (0 + SMALLSMOOTHA) [if ((SMALLSMOOTHA + SMALLSMOOTHB) / top > 0.75) flat.ai flat] (RIGHTSB - OX) (0 + SMALLSMOOTHA)
curl.ai (RIGHTSB - OX) (top - SMALLSMOOTHB) [if ((SMALLSMOOTHA + SMALLSMOOTHB) / top > 0.75) curl.ai curl] (RIGHTSB - OX) (top - SMALLSMOOTHB)
arcvh arcvh
close close
@ -434,11 +434,12 @@ define [HooktopLeftBar stroke bottom] : glyph-construction
flat SB (CAP - SMALLSMOOTHA) flat SB (CAP - SMALLSMOOTHA)
curl SB [fallback bottom 0] [heading DOWNWARD] curl SB [fallback bottom 0] [heading DOWNWARD]
define [CurlyTail fine rinner m1 bottom _right x2 y2] : begin define [CurlyTail fine rinner m1 bottom _right x2 y2 adj adj2 adj3] : begin
local right : _right - fine * [if (_right > m1) 1 (-1)] local right : _right - fine * [if (_right > m1) 1 (-1)]
local mid : mix [mix m1 right 0.5] (right - rinner * [if (_right > m1) 1 (-1)]) 0.4 local mid : mix [mix m1 right 0.5] (right - rinner * [if (_right > m1) 1 (-1)]) [fallback adj 0.4]
local midu : mix [mix m1 right 0.5] (right - rinner * [if (_right > m1) 1 (-1)]) [fallback adj2 0.4]
return : list return : list
g4 mid (bottom + fine + O) [widths [if (_right > m1) 0 fine] [if (_right > m1) fine 0]] g4.[if (_right > m1) 'right' 'left'].mid (mid + CORRECTION_OMIDX * fine * [fallback adj3 0] * [if (_right > m1) 1 (-1)]) (bottom + fine + O) [widths [if (_right > m1) 0 fine] [if (_right > m1) fine 0]]
archv 2 archv 2
g4 right (bottom + fine + rinner - 0.1) g4 right (bottom + fine + rinner - 0.1)
g4 right (bottom + fine + rinner + 0.1) g4 right (bottom + fine + rinner + 0.1)
@ -467,12 +468,12 @@ define [FlatSlashShape middlex middle fine kx ky] : glyph-construction
curl (middlex + LONGJUT * [fallback kx 0.8]) (middle + LONGJUT * [fallback ky 0.4]) curl (middlex + LONGJUT * [fallback kx 0.8]) (middle + LONGJUT * [fallback ky 0.4])
# Spiro shapes # Spiro shapes
define [determineMixR w v] : piecewise define [determineMixR w v adj] : piecewise
(w <= v) 0.5 (w <= v) 0.5
true : 1 / ([Math.pow (1 - [Math.pow (1 - v / w) SUPERNESS]) (1 / SUPERNESS)] + 1) true : (adj || 1) / ([Math.pow (1 - [Math.pow (1 - v / w) SUPERNESS]) (1 / SUPERNESS)] + 1)
define nHookSegments 4 define nHookSegments 8
define [HookShape toStraight toFinish isStart y tight s kkaf] : begin define [HookShape toStraight toFinish isStart y tight s kkaf adj] : begin
local atBottom : toStraight.y > y local atBottom : toStraight.y > y
local ltr : if isStart (toFinish.x < toStraight.x) (toFinish.x > toStraight.x) local ltr : if isStart (toFinish.x < toStraight.x) (toFinish.x > toStraight.x)
toFinish.x = toFinish.x + OXHOOK * [if ltr (-1) 1] * [if isStart (-1) 1] toFinish.x = toFinish.x + OXHOOK * [if ltr (-1) 1] * [if isStart (-1) 1]
@ -483,7 +484,7 @@ define [HookShape toStraight toFinish isStart y tight s kkaf] : begin
local w : Math.abs (toStraight.y - y) local w : Math.abs (toStraight.y - y)
local v : Math.abs (toFinish.y - y) local v : Math.abs (toFinish.y - y)
local u : Math.abs (toFinish.x - toStraight.x) local u : Math.abs (toFinish.x - toStraight.x)
local mixr : determineMixR w v local mixr : determineMixR w v adj
local mx ([mix toStraight.x toFinish.x mixr] + ([if tight 0 : if atBottom 1 (-1)] * CORRECTION_OMIDX) * [fallback s STROKE]) local mx ([mix toStraight.x toFinish.x mixr] + ([if tight 0 : if atBottom 1 (-1)] * CORRECTION_OMIDX) * [fallback s STROKE])
local keyKnot : g4.[if ltr "right" "left"].mid mx y [fallback kkaf : if tight [heading [if ltr RIGHTWARD LEFTWARD]] nothing] local keyKnot : g4.[if ltr "right" "left"].mid mx y [fallback kkaf : if tight [heading [if ltr RIGHTWARD LEFTWARD]] nothing]
@ -506,8 +507,8 @@ define [HookShape toStraight toFinish isStart y tight s kkaf] : begin
* keyKnot * keyKnot
* segAfter * segAfter
define [hookstart y tight s kkaf] : return {.type 'interpolate' .af [lambda [before after] [HookShape after before true y tight s kkaf]]} define [hookstart y tight s kkaf adj] : return {.type 'interpolate' .af [lambda [before after] [HookShape after before true y tight s kkaf adj]]}
define [hookend y tight s kkaf] : return {.type 'interpolate' .af [lambda [before after] [HookShape before after false y tight s kkaf]]} define [hookend y tight s kkaf adj] : return {.type 'interpolate' .af [lambda [before after] [HookShape before after false y tight s kkaf adj]]}
define [WaveShape l r cy extendy tension sw] : glyph-construction define [WaveShape l r cy extendy tension sw] : glyph-construction
local cx : mix l r 0.5 local cx : mix l r 0.5

View File

@ -384,7 +384,7 @@ symbol-block 'l'
create-glyph 'looprevesh' : glyph-construction create-glyph 'looprevesh' : glyph-construction
assign-unicode 0x1AA assign-unicode 0x1AA
include ifMarks include ifMarks
local fine : adviceBlackness 5 local fine : adviceBlackness 4
include : dispiro include : dispiro
widths.center fine widths.center fine
g4 MIDDLE (CAP - fine * 1.5) [heading DOWNWARD] g4 MIDDLE (CAP - fine * 1.5) [heading DOWNWARD]
@ -1345,7 +1345,7 @@ symbol-block 'r'
assign-unicode 'r' assign-unicode 'r'
include eMarks include eMarks
local fine : SHOULDERFINE * 0.75 local fine : SHOULDERFINE * CTHIN
local rhookx (RIGHTSB + RBALANCE2 - OXE) local rhookx (RIGHTSB + RBALANCE2 - OXE)
local mixp : 0.54 + 2 * globalTransform.yx * STROKE / WIDTH local mixp : 0.54 + 2 * globalTransform.yx * STROKE / WIDTH
local mixpin : 0.65 + globalTransform.yx * [linreg 72 0.1 108 0.5 STROKE] local mixpin : 0.65 + globalTransform.yx * [linreg 72 0.1 108 0.5 STROKE]
@ -1495,7 +1495,7 @@ define {CShape} : symbol-block 'C'
flat.ai (SB + OX) (XH - SMALLSMOOTHA) flat.ai (SB + OX) (XH - SMALLSMOOTHA)
curl.ai (SB + OX) SMALLSMOOTHB curl.ai (SB + OX) SMALLSMOOTHB
arcvh arcvh
CurlyTail fine rinner m1 0 RIGHTSB x2 y2 CurlyTail fine rinner m1 0 RIGHTSB x2 y2 [linreg 500 (0.5) 375 (-0.25) WIDTH] nothing 1
create-glyph 'cyrE' : glyph-construction create-glyph 'cyrE' : glyph-construction
assign-unicode 0x42D assign-unicode 0x42D
@ -2262,7 +2262,7 @@ define {FShape} : symbol-block 'F'
define [FShape top y] : glyph-construction define [FShape top y] : glyph-construction
include : VBarLeft (SB * 1.5) 0 [fallback top CAP] include : VBarLeft (SB * 1.5) 0 [fallback top CAP]
include : HBarTop (SB * 1.5 - O) RIGHTSB [fallback top CAP] include : HBarTop (SB * 1.5 - O) RIGHTSB [fallback top CAP]
include : HBar (SB * 1.5 - O) (RIGHTSB - [if SLAB (STROKE * 0.75) HALFSTROKE]) ([fallback top CAP] * [fallback y [if SLAB 0.52 0.54]]) include : HBar (SB * 1.5 - O) (RIGHTSB - [Math.max HALFSTROKE ((RIGHTSB - SB) * 0.1)] - [if SLAB (STROKE * 0.25) 0]) ([fallback top CAP] * [fallback y [if SLAB 0.52 0.54]])
if SLAB : begin if SLAB : begin
include : LeftwardTopSerif (SB * 1.5) [fallback top CAP] SIDEJUT include : LeftwardTopSerif (SB * 1.5) [fallback top CAP] SIDEJUT
include : CenterBottomSerif (SB * 1.5 + HALFSTROKE * CORRECTION_HX) 0 JUT include : CenterBottomSerif (SB * 1.5 + HALFSTROKE * CORRECTION_HX) 0 JUT
@ -2484,8 +2484,8 @@ define {SmallEShape} : symbol-block 'e'
arcvh arcvh
g4 (MIDDLE - CORRECTION_OMIDS) (top - O) g4 (MIDDLE - CORRECTION_OMIDS) (top - O)
archv archv
[if (top <= XH) flat.ai flat] (SB + OX) (top - SMALLSMOOTHA) [if ((SMALLSMOOTHA + SMALLSMOOTHB) / top > 0.75) flat.ai flat] (SB + OX) (top - SMALLSMOOTHA)
[if (top <= XH) curl.ai curl] (SB + OX) (0 + SMALLSMOOTHB) [if ((SMALLSMOOTHA + SMALLSMOOTHB) / top > 0.75) curl.ai curl] (SB + OX) (0 + SMALLSMOOTHB)
hookend O nothing stroke hookend O nothing stroke
g4 (RIGHTSB - OX * 0.5) AHOOK g4 (RIGHTSB - OX * 0.5) AHOOK
include : HBarBottom (SB + (stroke / 2) + OX) (RIGHTSB - (stroke / 2) - OX) barbottom stroke include : HBarBottom (SB + (stroke / 2) + OX) (RIGHTSB - (stroke / 2) - OX) barbottom stroke
@ -2677,19 +2677,20 @@ symbol-block 'S'
g4 SB HOOK g4 SB HOOK
alias 'cyrDze' 0x405 'S' alias 'cyrDze' 0x405 'S'
local smallSMix : clamp 0 1 : linreg 0 [linreg 18 1 108 0.95 STROKE] 50 1 [Math.abs : WIDTH - 500]
create-glyph 's' : glyph-construction create-glyph 's' : glyph-construction
set-width WIDTH set-width WIDTH
assign-unicode 's' assign-unicode 's'
include eMarks include eMarks
define smooth : adviceSSmooth XH (-1) define smooth : adviceSSmooth XH (-1 - globalTransform.yx * 3)
include : dispiro include : dispiro
widths.lhs widths.lhs
g4 RIGHTSB (XH - SHOOK) g4 RIGHTSB (XH - SHOOK)
hookstart XO hookstart XO nothing nothing nothing smallSMix
g4.down.mid SB (XH - smooth) g4.down.mid SB (XH - smooth)
alsothru 0.5 0.5 [widths (ESS / 2) (ESS / 2)] alsothru 0.5 0.5 [widths.center ESS]
g4.down.mid RIGHTSB (smooth) [widths 0 STROKE] g4.down.mid RIGHTSB (smooth) [widths 0 STROKE]
hookend O hookend O nothing nothing nothing smallSMix
g4 SB SHOOK g4 SB SHOOK
alias 'cyrdze' 0x455 's' alias 'cyrdze' 0x455 's'
@ -2710,15 +2711,15 @@ symbol-block 'S'
create-glyph 'revs' : glyph-construction create-glyph 'revs' : glyph-construction
assign-unicode 0x1A8 assign-unicode 0x1A8
include eMarks include eMarks
local smooth : adviceSSmooth XH 1 local smooth : adviceSSmooth XH (1 + globalTransform.yx * 5)
include : dispiro include : dispiro
widths.rhs widths.rhs
g4 SB (XH - SHOOK) g4 SB (XH - SHOOK)
hookstart XO hookstart XO nothing nothing nothing smallSMix
g4 RIGHTSB (XH - smooth) g4 RIGHTSB (XH - smooth)
alsothru 0.5 0.5 [widths (ESS / 2) (ESS / 2)] alsothru 0.5 0.5 [widths.center ESS]
g4 SB (smooth) [widths STROKE 0] g4 SB (smooth) [widths STROKE 0]
hookend O hookend O nothing nothing nothing smallSMix
g4 RIGHTSB SHOOK g4 RIGHTSB SHOOK
create-glyph 'srtail' : glyph-construction create-glyph 'srtail' : glyph-construction
@ -2808,11 +2809,10 @@ symbol-block 'Z'
eject-contour 'serifRB' eject-contour 'serifRB'
include : dispiro include : dispiro
widths.lhs widths.lhs
flat SB 0 flat SB 0 [heading RIGHTWARD]
curl (RIGHTSB - HOOKX) 0 curl (RIGHTSB - HOOKX) 0
archv archv
flat RIGHTSB (-HOOK) [widths 0 STROKE] straight.down.end RIGHTSB (-HOOK) [widths.heading 0 STROKE DOWNWARD]
curl RIGHTSB (-HOOK - 1)
create-glyph 'zdtail' : glyph-construction create-glyph 'zdtail' : glyph-construction
assign-unicode 0x225 assign-unicode 0x225
@ -2824,7 +2824,7 @@ symbol-block 'Z'
flat SB 0 [heading RIGHTWARD] flat SB 0 [heading RIGHTWARD]
curl (RIGHTSB - HOOKX) 0 curl (RIGHTSB - HOOKX) 0
archv archv
g4 RIGHTSB (-HOOK) [widths.heading 0 STROKE DOWNWARD] straight.down.end RIGHTSB (-HOOK) [widths.heading 0 STROKE DOWNWARD]
create-glyph 'Zswash' : glyph-construction create-glyph 'Zswash' : glyph-construction
assign-unicode 0x2C7F assign-unicode 0x2C7F

View File

@ -188,7 +188,7 @@ symbol-block 'Delta and cyrbe'
flat.ai (RIGHTSB - OX) (XH - SMALLSMOOTHB) flat.ai (RIGHTSB - OX) (XH - SMALLSMOOTHB)
curl.ai (RIGHTSB - OX) SMALLSMOOTHA curl.ai (RIGHTSB - OX) SMALLSMOOTHA
arcvh arcvh
g4 (MIDDLE + CORRECTION_OMIDX) O g4 (MIDDLE + CORRECTION_OMIDS) O
archv archv
flat (SB + OX) SMALLSMOOTHB flat (SB + OX) SMALLSMOOTHB
curl (SB + OX) (XH - SMALLSMOOTHA) curl (SB + OX) (XH - SMALLSMOOTHA)
@ -284,7 +284,7 @@ symbol-block 'zeta and xi'
include : dispiro include : dispiro
widths.rhs widths.rhs
g4 (RIGHTSB + O) (CAP - STROKE) g4 (RIGHTSB + O) (CAP - STROKE)
bezcontrols 0.7 0.35 1 0.64 bezcontrols 0.7 0.35 1 0.64 12
g4.down.mid (SB + STROKE * CORRECTION_HX) [mix 0 CAP 0.27] g4.down.mid (SB + STROKE * CORRECTION_HX) [mix 0 CAP 0.27]
arcvh arcvh
g4 [mix SB RIGHTSB 0.55] STROKE g4 [mix SB RIGHTSB 0.55] STROKE
@ -389,7 +389,7 @@ symbol-block 'pi'
alsothru 0.5 0.85 important alsothru 0.5 0.85 important
g4 [mix SB RIGHTSB 0.1] O g4 [mix SB RIGHTSB 0.1] O
local m2 : mix SB RIGHTSB (1 - m) local m2 : mix SB RIGHTSB (1 - m)
local hook : HOOK * 0.8 local hook : Math.max (STROKE * CORRECTION_HX * 1.1) (HOOK * 0.8)
include : dispiro include : dispiro
widths.center widths.center
flat m2 XH [heading DOWNWARD] flat m2 XH [heading DOWNWARD]
@ -1055,12 +1055,14 @@ symbol-block 'CyrChe'
create-glyph 'cyrChevbar' : glyph-construction create-glyph 'cyrChevbar' : glyph-construction
assign-unicode 0x4B8 assign-unicode 0x4B8
include glyphs.cyrChe AS_BASE include glyphs.cyrChe AS_BASE
include : FlatSlashShape MIDDLE (CAP * [if SLAB 0.45 0.35] + STROKE * 0.1) (OVERLAYSTROKE / 2) 0 0.8 local yc (CAP * [if SLAB 0.45 0.35] + STROKE * 0.1)
include : VBar MIDDLE (yc + LONGJUT * 0.8) (yc - LONGJUT * 0.8) OVERLAYSTROKE
create-glyph 'cyrchevbar' : glyph-construction create-glyph 'cyrchevbar' : glyph-construction
assign-unicode 0x4B9 assign-unicode 0x4B9
include glyphs.cyrche AS_BASE include glyphs.cyrche AS_BASE
include : FlatSlashShape MIDDLE (XH * [if SLAB 0.45 0.4] + STROKE * 0.1) (OVERLAYSTROKE / 2) 0 0.8 local yc (XH * [if SLAB 0.45 0.35] + STROKE * 0.1)
include : VBar MIDDLE (yc + LONGJUT * 0.8) (yc - LONGJUT * 0.8) OVERLAYSTROKE
symbol-block 'CyrYu' symbol-block 'CyrYu'
define [CyrYuShape top sma smb] : glyph-construction define [CyrYuShape top sma smb] : glyph-construction
@ -1272,7 +1274,7 @@ symbol-block 'Digraphs'
define aeepart : glyph-construction define aeepart : glyph-construction
local eLeft : MIDDLE - MVERTSTROKE / 2 * CORRECTION_HX + 0.1 local eLeft : MIDDLE - MVERTSTROKE / 2 * CORRECTION_HX + 0.1
local eMiddle : [mix eLeft (RIGHTSB - OX * 2) 0.5] - MVERTSTROKE * globalTransform.yx local eMiddle : [mix eLeft (RIGHTSB - OX * 2) 0.5] - MVERTSTROKE * globalTransform.yx
local barbottom (XH * EBARPOS) local barbottom (XH * EBARPOS - HALFSTROKE)
local sma : SMALLSMOOTHA * 0.6 local sma : SMALLSMOOTHA * 0.6
local smb : SMALLSMOOTHB * 0.6 local smb : SMALLSMOOTHB * 0.6

View File

@ -171,7 +171,7 @@ symbol-block "Numbers"
if SLAB : begin if SLAB : begin
include : DownwardLeftSerif (SB + OXE) CAP VJUT include : DownwardLeftSerif (SB + OXE) CAP VJUT
local pr : linreg 18 0.85 120 0.975 STROKE
create-glyph 'eight' : glyph-construction create-glyph 'eight' : glyph-construction
include capitalMarks include capitalMarks
set-width WIDTH set-width WIDTH
@ -185,15 +185,15 @@ symbol-block "Numbers"
widths.rhs widths.rhs
g4.right.mid (MIDDLE - CORRECTION_OMIDS) (CAP - O) g4.right.mid (MIDDLE - CORRECTION_OMIDS) (CAP - O)
archv archv
g4 [mix l r p] (CAP - SMOOTHB * p) g4 [mix l r p] (CAP - SMOOTHB * pr * p)
alsothru 0.5 0.5 [widths.center] alsothru 0.5 0.5 [widths.center]
g4 (l) SMOOTHB [widths.lhs] g4 (l) (SMOOTHB * pr) [widths.lhs]
arcvh arcvh
g4.right.mid (MIDDLE + CORRECTION_OMIDS) (O) g4.right.mid (MIDDLE + CORRECTION_OMIDS) (O)
archv archv
g4 (r) SMOOTHA [widths.lhs] g4 (r) (SMOOTHA * pr) [widths.lhs]
alsothru 0.5 0.5 [widths.center] alsothru 0.5 0.5 [widths.center]
g4 [mix r l p] (CAP - SMOOTHA * p) [widths.rhs] g4 [mix r l p] (CAP - SMOOTHA * pr * p) [widths.rhs]
arcvh arcvh
close close
@ -207,11 +207,11 @@ symbol-block "Numbers"
widths.lhs widths.lhs
straight.up.start r 0 [heading UPWARD] straight.up.start r 0 [heading UPWARD]
alsothru 0.5 (1 - py) [widths (STROKE * py) (STROKE * (1 - py))] alsothru 0.5 (1 - py) [widths (STROKE * py) (STROKE * (1 - py))]
g4 [mix r l p] (CAP - SMOOTHA * p) [widths.rhs] g4 [mix r l p] (CAP - SMOOTHA * p * pr) [widths.rhs]
arcvh arcvh
g4 (MIDDLE - CORRECTION_OMIDS) (CAP - O) g4 (MIDDLE - CORRECTION_OMIDS) (CAP - O)
archv archv
g4 [mix l r p] (CAP - SMOOTHB * p) g4 [mix l r p] (CAP - SMOOTHB * p * pr)
alsothru 0.5 py [widths (STROKE * py) (STROKE * (1 - py))] alsothru 0.5 py [widths (STROKE * py) (STROKE * (1 - py))]
straight.down.end l 0 [widths.heading STROKE 0 DOWNWARD] straight.down.end l 0 [widths.heading STROKE 0 DOWNWARD]

View File

@ -1,20 +1,22 @@
###### Other symbols ###### Other symbols
# IPA tonal marks # IPA tonal marks
symbol-block 'Phonetic Symbols' symbol-block 'Phonetic Symbols'
local triangleSize : Math.min (PERIODRADIUS) (XH / 6)
create-glyph 'trianglecolon' : glyph-construction create-glyph 'trianglecolon' : glyph-construction
assign-unicode 0x2D0 assign-unicode 0x2D0
start-from (MIDDLE - PERIODRADIUS * 1.35) XH start-from (MIDDLE - triangleSize * 1.35) XH
line-to MIDDLE (XH - PERIODRADIUS * 2.75) line-to MIDDLE (XH - triangleSize * 2.75)
line-to (MIDDLE + PERIODRADIUS * 1.35) XH line-to (MIDDLE + triangleSize * 1.35) XH
start-from (MIDDLE - PERIODRADIUS * 1.35) 0 start-from (MIDDLE - triangleSize * 1.35) 0
line-to MIDDLE (0 + PERIODRADIUS * 2.75) line-to MIDDLE (0 + triangleSize * 2.75)
line-to (MIDDLE + PERIODRADIUS * 1.35) 0 line-to (MIDDLE + triangleSize * 1.35) 0
create-glyph 'halftrianglecolon' : glyph-construction create-glyph 'halftrianglecolon' : glyph-construction
assign-unicode 0x2D1 assign-unicode 0x2D1
start-from (MIDDLE - PERIODRADIUS * 1.35) XH start-from (MIDDLE - triangleSize * 1.35) XH
line-to MIDDLE (XH - PERIODRADIUS * 2.75) line-to MIDDLE (XH - triangleSize * 2.75)
line-to (MIDDLE + PERIODRADIUS * 1.35) XH line-to (MIDDLE + triangleSize * 1.35) XH
foreach tone [range 4 downtill 0] : begin foreach tone [range 4 downtill 0] : begin
create-glyph ('tone' + tone) : glyph-construction create-glyph ('tone' + tone) : glyph-construction
assign-unicode (0x2E5 + 4 - tone) assign-unicode (0x2E5 + 4 - tone)

View File

@ -337,7 +337,7 @@ symbol-block 'Typographic Symbols'
alsothru 0.5 0.5 [widths HALFSTROKE HALFSTROKE] alsothru 0.5 0.5 [widths HALFSTROKE HALFSTROKE]
g4 RIGHTSB [mix bot top 0.501] [widths 0 STROKE] g4 RIGHTSB [mix bot top 0.501] [widths 0 STROKE]
g4 RIGHTSB [mix bot top 0.5] [widths 0 STROKE] g4 RIGHTSB [mix bot top 0.5] [widths 0 STROKE]
g4 [mix SB RIGHTSB 0.6] [mix bot top : linreg 18 0.325 108 0.3 STROKE] g4 [mix SB RIGHTSB 0.6] [mix bot top : [linreg 18 0.325 108 0.3 STROKE] * (1 - globalTransform.yx * 0.1)]
include s include s
include : FlipAround MIDDLE parenMid include : FlipAround MIDDLE parenMid

View File

@ -19,8 +19,8 @@ endif
NODE_FDT = node --expose-gc NODE_FDT = node --expose-gc
NODE = node NODE = node
UPRIGHT = $(OBJDIR)/$(PREFIX)-thin.ttf $(OBJDIR)/$(PREFIX)-extralight.ttf $(OBJDIR)/$(PREFIX)-light.ttf $(OBJDIR)/$(PREFIX)-regular.ttf $(OBJDIR)/$(PREFIX)-bold.ttf UPRIGHT = $(OBJDIR)/$(PREFIX)-thin.ttf $(OBJDIR)/$(PREFIX)-extralight.ttf $(OBJDIR)/$(PREFIX)-light.ttf $(OBJDIR)/$(PREFIX)-regular.ttf $(OBJDIR)/$(PREFIX)-bold.ttf $(OBJDIR)/$(PREFIX)-heavy.ttf
ITALIC = $(OBJDIR)/$(PREFIX)-thinitalic.ttf $(OBJDIR)/$(PREFIX)-extralightitalic.ttf $(OBJDIR)/$(PREFIX)-lightitalic.ttf $(OBJDIR)/$(PREFIX)-italic.ttf $(OBJDIR)/$(PREFIX)-bolditalic.ttf ITALIC = $(OBJDIR)/$(PREFIX)-thinitalic.ttf $(OBJDIR)/$(PREFIX)-extralightitalic.ttf $(OBJDIR)/$(PREFIX)-lightitalic.ttf $(OBJDIR)/$(PREFIX)-italic.ttf $(OBJDIR)/$(PREFIX)-bolditalic.ttf $(OBJDIR)/$(PREFIX)-heavyitalic.ttf
EXTUPRG = EXTUPRG =
EXTITAL = EXTITAL =
OUTPUTS = $(UPRIGHT) $(ITALIC) OUTPUTS = $(UPRIGHT) $(ITALIC)
@ -71,6 +71,10 @@ $(OBJDIR)/.pass0-$(PREFIX)-bold.fdt : $(SCRIPTS) | $(OBJDIR)
$(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-bold s-upright $(STYLE_UPRIGHT) $(STYLE_SUFFIX) $(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-bold s-upright $(STYLE_UPRIGHT) $(STYLE_SUFFIX)
$(OBJDIR)/.pass0-$(PREFIX)-bolditalic.fdt : $(SCRIPTS) | $(OBJDIR) $(OBJDIR)/.pass0-$(PREFIX)-bolditalic.fdt : $(SCRIPTS) | $(OBJDIR)
$(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-bold s-italic $(STYLE_ITALIC) $(STYLE_SUFFIX) $(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-bold s-italic $(STYLE_ITALIC) $(STYLE_SUFFIX)
$(OBJDIR)/.pass0-$(PREFIX)-heavy.fdt : $(SCRIPTS) | $(OBJDIR)
$(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-heavy s-upright $(STYLE_UPRIGHT) $(STYLE_SUFFIX)
$(OBJDIR)/.pass0-$(PREFIX)-heavyitalic.fdt : $(SCRIPTS) | $(OBJDIR)
$(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-heavy s-italic $(STYLE_ITALIC) $(STYLE_SUFFIX)
$(PASS0) : $(OBJDIR)/.pass0-%.ttf : $(OBJDIR)/.pass0-%.fdt $(PASS0) : $(OBJDIR)/.pass0-%.ttf : $(OBJDIR)/.pass0-%.fdt
$(NODE) extract --upm 16000 --uprightify 1 --ttf $@ $< $(NODE) extract --upm 16000 --uprightify 1 --ttf $@ $<

View File

@ -141,7 +141,6 @@ jut = 90
vjut = 165 vjut = 165
barpos = 0.51 barpos = 0.51
#ebarpos = 0.4
fivebarpos = 0.64 fivebarpos = 0.64
oxhook = -5 oxhook = -5
ahook = 120 ahook = 120
@ -149,10 +148,40 @@ rbalance = 50
rbalance2 = 25 rbalance2 = 25
rhook = 95 rhook = 95
smooth = 210 smooth = 210
smallsmooth = 230
jbalance2 = 60 jbalance2 = 60
tbalance = 50 tbalance = 50
sbalance = 0.5 sbalance = 0.5
[w-heavy]
isBold = true
weight = 900
style = 'Heavy'
sb = 42
stroke = 120
dotsize = 180
periodsize = 200
essx = 1.05
jut = 95
vjut = 170
barpos = 0.51
fivebarpos = 0.64
oxhook = -5
ahook = 120
rbalance = 50
rbalance2 = 25
rhook = 95
smooth = 210
smallsmooth = 230
jbalance2 = 60
tbalance = 50
sbalance = 0.5
smallCrowd = 4
smallCrowd2 = 4.25
# Slants # Slants
[s-upright] [s-upright]
isItalic = false isItalic = false

View File

@ -50,15 +50,26 @@
} }
@font-face { @font-face {
font-family: IosevkaWEB; font-family: IosevkaWEB;
font-weight: bold; font-weight: 700;
src: url('assets/iosevka-bold.woff') format('woff'), url('assets/iosevka-bold.ttf') format('truetype'); src: url('assets/iosevka-bold.woff') format('woff'), url('assets/iosevka-bold.ttf') format('truetype');
} }
@font-face { @font-face {
font-family: IosevkaWEB; font-family: IosevkaWEB;
font-style: italic; font-style: italic;
font-weight: bold; font-weight: 700;
src: url('assets/iosevka-bolditalic.woff') format('woff'), url('assets/iosevka-bolditalic.ttf') format('truetype'); src: url('assets/iosevka-bolditalic.woff') format('woff'), url('assets/iosevka-bolditalic.ttf') format('truetype');
} }
@font-face {
font-family: IosevkaWEB;
font-weight: 900;
src: url('assets/iosevka-heavy.woff') format('woff'), url('assets/iosevka-heavy.ttf') format('truetype');
}
@font-face {
font-family: IosevkaWEB;
font-style: italic;
font-weight: 900;
src: url('assets/iosevka-heavyitalic.woff') format('woff'), url('assets/iosevka-heavyitalic.ttf') format('truetype');
}
@font-face { @font-face {
font-family: IosevkaSlabWEB; font-family: IosevkaSlabWEB;
font-weight: 100; font-weight: 100;
@ -103,15 +114,26 @@
} }
@font-face { @font-face {
font-family: IosevkaSlabWEB; font-family: IosevkaSlabWEB;
font-weight: bold; font-weight: 700;
src: url('assets/iosevka-slab-bold.woff') format('woff'), url('assets/iosevka-slab-bold.ttf') format('truetype'); src: url('assets/iosevka-slab-bold.woff') format('woff'), url('assets/iosevka-slab-bold.ttf') format('truetype');
} }
@font-face { @font-face {
font-family: IosevkaSlabWEB; font-family: IosevkaSlabWEB;
font-style: italic; font-style: italic;
font-weight: bold; font-weight: 700;
src: url('assets/iosevka-slab-bolditalic.woff') format('woff'), url('assets/iosevka-slab-bolditalic.ttf') format('truetype'); src: url('assets/iosevka-slab-bolditalic.woff') format('woff'), url('assets/iosevka-slab-bolditalic.ttf') format('truetype');
} }
@font-face {
font-family: IosevkaSlabWEB;
font-weight: 900;
src: url('assets/iosevka-slab-heavy.woff') format('woff'), url('assets/iosevka-slab-heavy.ttf') format('truetype');
}
@font-face {
font-family: IosevkaSlabWEB;
font-style: italic;
font-weight: 900;
src: url('assets/iosevka-slab-heavyitalic.woff') format('woff'), url('assets/iosevka-slab-heavyitalic.ttf') format('truetype');
}
a { a {
color: black; color: black;
background-image: linear-gradient(white 50%, #888 50%); background-image: linear-gradient(white 50%, #888 50%);
@ -152,6 +174,7 @@
.extralight { font-weight: 200 } .extralight { font-weight: 200 }
.light { font-weight: 300 } .light { font-weight: 300 }
.bold { font-weight: 700 } .bold { font-weight: 700 }
.heavy { font-weight: 900 }
.italic { font-style: italic } .italic { font-style: italic }
.show table.block { .show table.block {
width: 68rem; width: 68rem;
@ -328,7 +351,9 @@
[ {name: 'iosevka-regular', cls: '', display: 'Iosevka'}, {name: 'iosevka-slab-regular', cls: 'slab', display: 'Iosevka Slab'}, [ {name: 'iosevka-regular', cls: '', display: 'Iosevka'}, {name: 'iosevka-slab-regular', cls: 'slab', display: 'Iosevka Slab'},
{name: 'iosevka-italic', cls:'italic', display: 'Iosevka Italic'}, {name: 'iosevka-slab-italic', cls:'slab italic', display: 'Iosevka Slab Italic'} ], {name: 'iosevka-italic', cls:'italic', display: 'Iosevka Italic'}, {name: 'iosevka-slab-italic', cls:'slab italic', display: 'Iosevka Slab Italic'} ],
[ {name: 'iosevka-bold', cls: 'bold', display: 'Iosevka Bold'}, {name: 'iosevka-slab-bold', cls: 'slab bold', display: 'Iosevka Slab Bold'}, [ {name: 'iosevka-bold', cls: 'bold', display: 'Iosevka Bold'}, {name: 'iosevka-slab-bold', cls: 'slab bold', display: 'Iosevka Slab Bold'},
{name: 'iosevka-bolditalic', cls:'bold italic', display: 'Iosevka Bold Italic'}, {name: 'iosevka-slab-bolditalic', cls:'slab bold italic', display: 'Iosevka Slab Bold Italic'} ] {name: 'iosevka-bolditalic', cls:'bold italic', display: 'Iosevka Bold Italic'}, {name: 'iosevka-slab-bolditalic', cls:'slab bold italic', display: 'Iosevka Slab Bold Italic'} ],
[ {name: 'iosevka-heavy', cls: 'heavy', display: 'Iosevka Heavy'}, {name: 'iosevka-slab-heavy', cls: 'slab heavy', display: 'Iosevka Slab Heavy'},
{name: 'iosevka-heavyitalic', cls:'heavy italic', display: 'Iosevka Heavy Italic'}, {name: 'iosevka-slab-heavyitalic', cls:'slab heavy italic', display: 'Iosevka Slab Heavy Italic'} ]
]; ];
var REGULAR = 3; var REGULAR = 3;
var lipsums = ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur semper ipsum quam, at molestie libero euismod vitae. Etiam vehicula felis mi, et ultricies libero consequat at. Donec consequat, nunc id elementum tempor, lectus orci vulputate leo, eget lobortis lectus nulla sed orci. Donec in dolor non orci aliquet gravida. Nulla volutpat magna et nulla pretium, quis consequat nibh euismod. Suspendisse eget metus enim. Fusce vulputate scelerisque eros et consequat. Quisque dapibus accumsan augue, et semper lectus vehicula sit amet. Ut ornare venenatis tortor, non gravida tellus mattis interdum. In hac habitasse platea dictumst. Donec interdum commodo ex eu tincidunt. Curabitur non fermentum enim. Proin luctus orci ut commodo auctor. Pellentesque accumsan id sem eu semper. Sed non pharetra nibh. Vivamus mattis luctus arcu, a rutrum dui venenatis sit amet. aja ojo ojoined', var lipsums = ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur semper ipsum quam, at molestie libero euismod vitae. Etiam vehicula felis mi, et ultricies libero consequat at. Donec consequat, nunc id elementum tempor, lectus orci vulputate leo, eget lobortis lectus nulla sed orci. Donec in dolor non orci aliquet gravida. Nulla volutpat magna et nulla pretium, quis consequat nibh euismod. Suspendisse eget metus enim. Fusce vulputate scelerisque eros et consequat. Quisque dapibus accumsan augue, et semper lectus vehicula sit amet. Ut ornare venenatis tortor, non gravida tellus mattis interdum. In hac habitasse platea dictumst. Donec interdum commodo ex eu tincidunt. Curabitur non fermentum enim. Proin luctus orci ut commodo auctor. Pellentesque accumsan id sem eu semper. Sed non pharetra nibh. Vivamus mattis luctus arcu, a rutrum dui venenatis sit amet. aja ojo ojoined',