Variants cleanup and rectify
|
@ -195,7 +195,7 @@ Since version 2.0, Iosevka would no longer support building via `makefile`. To i
|
||||||
|
|
||||||
|
|
||||||
<!-- END Section-Private-Build-Plan-Sample -->
|
<!-- END Section-Private-Build-Plan-Sample -->
|
||||||
|
|
||||||
|
|
||||||
3. Run `npm run build -- contents::<your plan name>` and the built fonts would be avaliable in `dist/`. Aside from `contents::<plan>`, other options are:
|
3. Run `npm run build -- contents::<your plan name>` and the built fonts would be avaliable in `dist/`. Aside from `contents::<plan>`, other options are:
|
||||||
|
|
||||||
|
@ -372,9 +372,10 @@ The current available styles for `design`/`upright`/`italic`/`oblique` options a
|
||||||
* `v-x-straight`, `cv77`: Standard, straight `X` and `x` (default).
|
* `v-x-straight`, `cv77`: Standard, straight `X` and `x` (default).
|
||||||
* `v-x-curly`, `cv78`: Slightly curly `X` and `x`, like Iosevka 2.x.
|
* `v-x-curly`, `cv78`: Slightly curly `X` and `x`, like Iosevka 2.x.
|
||||||
* Styles for `y`:
|
* Styles for `y`:
|
||||||
* `v-y-straight`, `cv48`: More-straight letter `y` (default for Upright).
|
* `v-y-straight`, `cv48`: Letter `y` that is fully straight (default for Sans Upright).
|
||||||
* `v-y-cursive`, `cv49`: Cursive-like `y` (default for Italic).
|
* `v-y-cursive`, `cv49`: Cursive-like `y` (default for Italic).
|
||||||
* `v-y-curly`, `cv79`: More curly letter `y`, like Iosevka 2.x.
|
* `v-y-curly`, `cv79`: More curly letter `y`, like Iosevka 2.x.
|
||||||
|
* `v-y-straight-turn`, `VXBF`: Letter `y` with straight upper and a tail turns leftward (default for Slab Upright).
|
||||||
* Styles for `z`:
|
* Styles for `z`:
|
||||||
* `v-z-standard`, `VXBD`: Standard `Z` and `z` (default).
|
* `v-z-standard`, `VXBD`: Standard `Z` and `z` (default).
|
||||||
* `v-z-with-crossbar`, `VXBE`: `Z` and `z` with a cross bar for better dsitinction with `2`.
|
* `v-z-with-crossbar`, `VXBE`: `Z` and `z` with a cross bar for better dsitinction with `2`.
|
||||||
|
@ -417,7 +418,7 @@ The current available styles for `design`/`upright`/`italic`/`oblique` options a
|
||||||
* `v-four-open`, `VXAV`: `4` with open contour.
|
* `v-four-open`, `VXAV`: `4` with open contour.
|
||||||
* `v-four-open-non-crossing`, `VXAW`: `4` with open contour but the horizontal bar does not overflow the vertical bar.
|
* `v-four-open-non-crossing`, `VXAW`: `4` with open contour but the horizontal bar does not overflow the vertical bar.
|
||||||
* Styles for `6`:
|
* Styles for `6`:
|
||||||
* `v-six-closed-contour`, `VXAE`: `6` with a more closed contour.
|
* `v-six-closed-contour`, `VXAE`: `6` with a more closed.
|
||||||
* `v-six-open-contour`, `VXAF`: `6` with a more open contour.
|
* `v-six-open-contour`, `VXAF`: `6` with a more open contour.
|
||||||
* `v-six-straight-bar`, `VXBB`: `6` with a straight bar (default).
|
* `v-six-straight-bar`, `VXBB`: `6` with a straight bar (default).
|
||||||
* Styles for `7`:
|
* Styles for `7`:
|
||||||
|
@ -426,7 +427,7 @@ The current available styles for `design`/`upright`/`italic`/`oblique` options a
|
||||||
* `v-seven-crossbar`, `VXAX`: `7` with crossbar.
|
* `v-seven-crossbar`, `VXAX`: `7` with crossbar.
|
||||||
* `v-seven-crossbar-serifed`, `VXAY`: `7` with crossbar and initial serif.
|
* `v-seven-crossbar-serifed`, `VXAY`: `7` with crossbar and initial serif.
|
||||||
* Styles for `9`:
|
* Styles for `9`:
|
||||||
* `v-nine-closed-contour`, `cv96`: `9` with a more closed contour.
|
* `v-nine-closed-contour`, `cv96`: `9` with a more closed.
|
||||||
* `v-nine-open-contour`, `cv97`: `9` with a more open contour.
|
* `v-nine-open-contour`, `cv97`: `9` with a more open contour.
|
||||||
* `v-nine-straight-bar`, `VXBC`: `9` with a straight bar (default).
|
* `v-nine-straight-bar`, `VXBC`: `9` with a straight bar (default).
|
||||||
* Styles for `ß`:
|
* Styles for `ß`:
|
||||||
|
|
|
@ -8,7 +8,7 @@ const Parameters = require("../support/parameters");
|
||||||
const FormVariantData = require("../support/variant-data");
|
const FormVariantData = require("../support/variant-data");
|
||||||
const FormLigationData = require("../support/ligation-data");
|
const FormLigationData = require("../support/ligation-data");
|
||||||
const { AnyCv, CvDecompose } = require("../support/gr");
|
const { AnyCv, CvDecompose } = require("../support/gr");
|
||||||
const Toml = require("toml");
|
const Toml = require("@iarna/toml");
|
||||||
|
|
||||||
module.exports = async function main(argv) {
|
module.exports = async function main(argv) {
|
||||||
const para = await getParameters(argv);
|
const para = await getParameters(argv);
|
||||||
|
|
|
@ -1457,23 +1457,22 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
glyph-block-import CommonShapes
|
glyph-block-import CommonShapes
|
||||||
glyph-block-import Overmarks
|
glyph-block-import Overmarks
|
||||||
|
|
||||||
define [GenSmallYShape straightBar serifless] : begin
|
define [GenSmallYShape straightBar useTurnBottom serifless] : begin
|
||||||
local slab : if serifless false SLAB
|
local slab : if serifless false SLAB
|
||||||
local useStraightBottom : !slab && straightBar
|
local useStraightBottom : straightBar && !useTurnBottom
|
||||||
local useTurnBotton : slab || straightBar
|
|
||||||
local slabCurly : slab && !straightBar
|
local slabCurly : slab && !straightBar
|
||||||
local px1 0.84
|
local px1 0.84
|
||||||
local py1 : [StrokeWidthBlend 0.8 0.76] * [if slabCurly [StrokeWidthBlend 1 0.9] 1]
|
local py1 : [StrokeWidthBlend 0.8 0.76] * [if slabCurly [StrokeWidthBlend 1 0.9] 1]
|
||||||
local px2 0.95
|
local px2 0.95
|
||||||
local py20 : 0.88 * [if slabCurly [StrokeWidthBlend 1 0.9] 1]
|
local py20 : 0.88 * [if slabCurly [StrokeWidthBlend 1 0.9] 1]
|
||||||
local py2 : if (useStraightBottom || useTurnBotton) 0.97 py20
|
local py2 : if (useStraightBottom || useTurnBottom) 0.97 py20
|
||||||
local pds 0.1
|
local pds 0.1
|
||||||
local pds2 0.01
|
local pds2 0.01
|
||||||
local dpy1 : (1 - [linreg (1 - px2) (1 - py2) px1 py1 1]) / (1 - py1)
|
local dpy1 : (1 - [linreg (1 - px2) (1 - py2) px1 py1 1]) / (1 - py1)
|
||||||
local dpy20 : (1 - [linreg (1 - px1) (1 - py1) px2 py20 1]) / (1 - py20)
|
local dpy20 : (1 - [linreg (1 - px1) (1 - py1) px2 py20 1]) / (1 - py20)
|
||||||
local dpy2 : (1 - [linreg (1 - px1) (1 - py1) px2 py2 1]) / (1 - py2)
|
local dpy2 : (1 - [linreg (1 - px1) (1 - py1) px2 py2 1]) / (1 - py2)
|
||||||
local yrstrokel0 : Middle - Width * 0.1
|
local yrstrokel0 : Middle - Width * 0.1
|
||||||
local yrstrokel : Middle - Width * 0.1 + (Stroke * HVContrast * [if (useStraightBottom || useTurnBotton) (2 / 3) (1 / 3)] * [if slabCurly [StrokeWidthBlend 0.95 0.97] 1])
|
local yrstrokel : Middle - Width * 0.1 + (Stroke * HVContrast * [if (useStraightBottom || useTurnBottom) (2 / 3) (1 / 3)] * [if slabCurly [StrokeWidthBlend 0.95 0.97] 1])
|
||||||
local yrstroker : Width - SB * [if (straightBar && SLAB && !slab) 1.5 1] * [if straightBar designParameters.straightSmallYShapeSbShrink 1]
|
local yrstroker : Width - SB * [if (straightBar && SLAB && !slab) 1.5 1] * [if straightBar designParameters.straightSmallYShapeSbShrink 1]
|
||||||
local yshrink : [StrokeWidthBlend 1 0.85] * [if straightBar ([adviceBlackness 3.25] / Stroke) 1]
|
local yshrink : [StrokeWidthBlend 1 0.85] * [if straightBar ([adviceBlackness 3.25] / Stroke) 1]
|
||||||
local yBottomJut : Jut * 1.25
|
local yBottomJut : Jut * 1.25
|
||||||
|
@ -1483,7 +1482,7 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
define [CalcDS top bottom] : begin
|
define [CalcDS top bottom] : begin
|
||||||
local ds0 : (top - bottom) * pds
|
local ds0 : (top - bottom) * pds
|
||||||
local ds : if slabCurly [Math.max [adviceBlackness2 3 6 (top - bottom)] ds0] ds0
|
local ds : if slabCurly [Math.max [adviceBlackness2 3 6 (top - bottom)] ds0] ds0
|
||||||
local ds2 : (top - bottom) * pds2 + [if (useStraightBottom || useTurnBotton) (slabysize * slabyvx) 0]
|
local ds2 : (top - bottom) * pds2 + [if (useStraightBottom || useTurnBottom) (slabysize * slabyvx) 0]
|
||||||
return {ds ds2}
|
return {ds ds2}
|
||||||
|
|
||||||
define [yDiagCor dy] : diagCor dy (yrstroker - yrstrokel) 0 Stroke
|
define [yDiagCor dy] : diagCor dy (yrstroker - yrstrokel) 0 Stroke
|
||||||
|
@ -1516,7 +1515,7 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
useStraightBottom : list
|
useStraightBottom : list
|
||||||
ConnectZ shrink
|
ConnectZ shrink
|
||||||
curl [mix yrstroker joinX ((top - bottom) / (top - joinY))] bottom [widths.heading 0 (Stroke * [yDiagCor (top - bottom)]) Downward]
|
curl [mix yrstroker joinX ((top - bottom) / (top - joinY))] bottom [widths.heading 0 (Stroke * [yDiagCor (top - bottom)]) Downward]
|
||||||
useTurnBotton : list
|
useTurnBottom : list
|
||||||
ConnectZ shrink
|
ConnectZ shrink
|
||||||
flat (yrstrokel - slabysize) bottom [widths.rhs]
|
flat (yrstrokel - slabysize) bottom [widths.rhs]
|
||||||
curl [Math.min (yrstrokel - slabysize - 0.1) (yrstrokel - Stroke - yBottomJut)] bottom
|
curl [Math.min (yrstrokel - slabysize - 0.1) (yrstrokel - Stroke - yBottomJut)] bottom
|
||||||
|
@ -1526,6 +1525,18 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
flat yrstrokel (bottom + ds2) [widths.heading 0 Stroke Downward]
|
flat yrstrokel (bottom + ds2) [widths.heading 0 Stroke Downward]
|
||||||
curl yrstrokel bottom [widths.heading 0 Stroke Downward]
|
curl yrstrokel bottom [widths.heading 0 Stroke Downward]
|
||||||
|
|
||||||
|
define [yBaseSerif top bottom] : glyph-construction
|
||||||
|
local {ds ds2} : CalcDS top bottom
|
||||||
|
define joinX : mix yrstrokel yrstroker (1 - px2)
|
||||||
|
define joinY : mix (bottom + ds2) (top - ds) (1 - py2)
|
||||||
|
|
||||||
|
if (!useTurnBottom) : begin
|
||||||
|
if (useStraightBottom) : begin
|
||||||
|
local xBaseKnot : mix yrstroker joinX ((top - bottom) / (top - joinY))
|
||||||
|
include : LeftwardBottomSerif (xBaseKnot - HalfStroke * HVContrast) bottom yBottomJut
|
||||||
|
: else : begin
|
||||||
|
include : LeftwardBottomSerif (yrstroker - HalfStroke * HVContrast) bottom yBottomJut
|
||||||
|
|
||||||
define [yJoinProportion hooktop x] : linreg
|
define [yJoinProportion hooktop x] : linreg
|
||||||
1 - px2
|
1 - px2
|
||||||
1 - py2
|
1 - py2
|
||||||
|
@ -1585,10 +1596,11 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
|
|
||||||
if slab : begin
|
if slab : begin
|
||||||
include : AIVSerifs top
|
include : AIVSerifs top
|
||||||
|
include : yBaseSerif top bottom
|
||||||
|
|
||||||
define [SmallYHookTopShape top bottom] : glyph-construction
|
define [SmallYHookTopShape top bottom] : glyph-construction
|
||||||
local ds : (top - bottom) * pds
|
local ds : (top - bottom) * pds
|
||||||
local ds2 : (top - bottom) * pds2 + [if (useStraightBottom || useTurnBotton) (slabysize * slabyvx) 0]
|
local ds2 : (top - bottom) * pds2 + [if (useStraightBottom || useTurnBottom) (slabysize * slabyvx) 0]
|
||||||
local joinHeight : yJoinHeight ds ds2 top bottom true
|
local joinHeight : yJoinHeight ds ds2 top bottom true
|
||||||
|
|
||||||
include : intersection
|
include : intersection
|
||||||
|
@ -1615,6 +1627,7 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
if slab : begin
|
if slab : begin
|
||||||
include : AIVSerifs top
|
include : AIVSerifs top
|
||||||
eject-contour 'serifRT'
|
eject-contour 'serifRT'
|
||||||
|
include : yBaseSerif top bottom
|
||||||
|
|
||||||
define [SmallLambdaShape top bottom] : ReverseContours : glyph-construction
|
define [SmallLambdaShape top bottom] : ReverseContours : glyph-construction
|
||||||
set currentGlyph.gizmo : Italify (-para.slantAngle)
|
set currentGlyph.gizmo : Italify (-para.slantAngle)
|
||||||
|
@ -1631,12 +1644,17 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
sketch # y.straight
|
sketch # y.straight
|
||||||
include MarkSet.p
|
include MarkSet.p
|
||||||
branch
|
branch
|
||||||
include : [GenSmallYShape true].SmallYShape XH Descender
|
include : [GenSmallYShape true false].SmallYShape XH Descender
|
||||||
set-base-anchor 'overlay' Middle (XH / 2)
|
set-base-anchor 'overlay' Middle (XH / 2)
|
||||||
save 'y.straight'
|
save 'y.straight'
|
||||||
save 'cyru.straight'
|
save 'cyru.straight'
|
||||||
branch
|
branch
|
||||||
include : [GenSmallYShape false].SmallYShape XH Descender
|
include : [GenSmallYShape true true].SmallYShape XH Descender
|
||||||
|
set-base-anchor 'overlay' Middle (XH / 2)
|
||||||
|
save 'y.straightTurn'
|
||||||
|
save 'cyru.straightTurn'
|
||||||
|
branch
|
||||||
|
include : [GenSmallYShape false SLAB].SmallYShape XH Descender
|
||||||
set-base-anchor 'overlay' Middle (XH / 2)
|
set-base-anchor 'overlay' Middle (XH / 2)
|
||||||
save 'y.curly'
|
save 'y.curly'
|
||||||
save 'cyru.curly'
|
save 'cyru.curly'
|
||||||
|
@ -1667,11 +1685,15 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
sketch # yhooktop
|
sketch # yhooktop
|
||||||
include MarkSet.p
|
include MarkSet.p
|
||||||
branch
|
branch
|
||||||
include : [GenSmallYShape true].SmallYHookTopShape XH Descender
|
include : [GenSmallYShape true false].SmallYHookTopShape XH Descender
|
||||||
set-base-anchor 'overlay' Middle (XH / 2)
|
set-base-anchor 'overlay' Middle (XH / 2)
|
||||||
save 'yhooktop.straight'
|
save 'yhooktop.straight'
|
||||||
branch
|
branch
|
||||||
include : [GenSmallYShape false].SmallYHookTopShape XH Descender
|
include : [GenSmallYShape true true].SmallYHookTopShape XH Descender
|
||||||
|
set-base-anchor 'overlay' Middle (XH / 2)
|
||||||
|
save 'yhooktop.straightTurn'
|
||||||
|
branch
|
||||||
|
include : [GenSmallYShape false SLAB].SmallYHookTopShape XH Descender
|
||||||
set-base-anchor 'overlay' Middle (XH / 2)
|
set-base-anchor 'overlay' Middle (XH / 2)
|
||||||
save 'yhooktop.curly'
|
save 'yhooktop.curly'
|
||||||
|
|
||||||
|
@ -1697,11 +1719,15 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
sketch # cyrU
|
sketch # cyrU
|
||||||
include MarkSet.capital
|
include MarkSet.capital
|
||||||
branch
|
branch
|
||||||
include : [GenSmallYShape true].SmallYShape CAP 0
|
include : [GenSmallYShape true false].SmallYShape CAP 0
|
||||||
set-base-anchor 'overlay' Middle (XH / 2 - Descender)
|
set-base-anchor 'overlay' Middle (XH / 2 - Descender)
|
||||||
save 'cyrU.straight'
|
save 'cyrU.straight'
|
||||||
branch
|
branch
|
||||||
include : [GenSmallYShape false].SmallYShape CAP 0
|
include : [GenSmallYShape true true].SmallYShape CAP 0
|
||||||
|
set-base-anchor 'overlay' Middle (XH / 2 - Descender)
|
||||||
|
save 'cyrU.straightTurn'
|
||||||
|
branch
|
||||||
|
include : [GenSmallYShape false SLAB].SmallYShape CAP 0
|
||||||
set-base-anchor 'overlay' Middle (XH / 2 - Descender)
|
set-base-anchor 'overlay' Middle (XH / 2 - Descender)
|
||||||
save 'cyrU.curly'
|
save 'cyrU.curly'
|
||||||
|
|
||||||
|
@ -1714,7 +1740,7 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
|
|
||||||
sketch # lambda.straight
|
sketch # lambda.straight
|
||||||
include MarkSet.b
|
include MarkSet.b
|
||||||
include : [GenSmallYShape true true].SmallLambdaShape CAP 0
|
include : [GenSmallYShape true false true].SmallLambdaShape CAP 0
|
||||||
set-base-anchor 'overlay' Middle (XH / 2)
|
set-base-anchor 'overlay' Middle (XH / 2)
|
||||||
save 'lambda.straight'
|
save 'lambda.straight'
|
||||||
include : LambdaBarOverlayShape
|
include : LambdaBarOverlayShape
|
||||||
|
@ -1722,7 +1748,7 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
|
|
||||||
sketch # lambda.curly
|
sketch # lambda.curly
|
||||||
include MarkSet.b
|
include MarkSet.b
|
||||||
include : [GenSmallYShape false true].SmallLambdaShape CAP 0
|
include : [GenSmallYShape false false true].SmallLambdaShape CAP 0
|
||||||
set-base-anchor 'overlay' Middle (XH / 2)
|
set-base-anchor 'overlay' Middle (XH / 2)
|
||||||
save 'lambda.curly'
|
save 'lambda.curly'
|
||||||
include : LambdaBarOverlayShape
|
include : LambdaBarOverlayShape
|
||||||
|
|
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 400 KiB After Width: | Height: | Size: 400 KiB |
Before Width: | Height: | Size: 342 KiB After Width: | Height: | Size: 342 KiB |
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 174 KiB |
Before Width: | Height: | Size: 340 KiB After Width: | Height: | Size: 340 KiB |
Before Width: | Height: | Size: 973 KiB After Width: | Height: | Size: 974 KiB |
Before Width: | Height: | Size: 320 KiB After Width: | Height: | Size: 320 KiB |
|
@ -16,7 +16,7 @@
|
||||||
"semver": "^7.1.3",
|
"semver": "^7.1.3",
|
||||||
"spiro": "^2.0.0",
|
"spiro": "^2.0.0",
|
||||||
"stylus": "^0.54.7",
|
"stylus": "^0.54.7",
|
||||||
"toml": "^3.0.0",
|
"@iarna/toml": "^2.2.5",
|
||||||
"topsort": "^0.0.2",
|
"topsort": "^0.0.2",
|
||||||
"ttf2woff": "^2.0.1",
|
"ttf2woff": "^2.0.1",
|
||||||
"ttf2woff2": "^3.0.0",
|
"ttf2woff2": "^3.0.0",
|
||||||
|
|
|
@ -376,6 +376,10 @@
|
||||||
<div class="label tag">cv79</div>
|
<div class="label tag">cv79</div>
|
||||||
<div class="sample" style="font-feature-settings:'cv79'">y</div>
|
<div class="sample" style="font-feature-settings:'cv79'">y</div>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="desc-group char">
|
||||||
|
<div class="label tag">VXBF</div>
|
||||||
|
<div class="sample" style="font-feature-settings:'VXBF'">y</div>
|
||||||
|
</li>
|
||||||
</ol></li>
|
</ol></li>
|
||||||
<li>
|
<li>
|
||||||
<div class="desc-group char">
|
<div class="desc-group char">
|
||||||
|
@ -925,78 +929,78 @@
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss01</span><span class="description">Andale Mono Style</span>
|
<span class="tag">ss01</span><span class="description">Andale Mono Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss01'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(do<b>g</b>s.<b>l</b><b>a</b>zy) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss01'"><b>@</b>rea<b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(do<b>g</b>s.<b>l</b>az<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss01'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(do<b>g</b>s.<b>l</b><b>a</b>zy) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss01'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>c<b>k</b>(h){ <b>*</b><b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(do<b>g</b>s.<b>l</b><b>a</b>z<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss02</span><span class="description">Anonymous Pro Style</span>
|
<span class="tag">ss02</span><span class="description">Anonymous Pro Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss02'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s_brown && <b>i</b>t_jumps_over(dogs.<b>l</b><b>a</b>zy) } 0<b>1</b>2345<b>6</b><b>7</b>8<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss02'"><b>@</b>real fox.quick(h){ <b>*</b>is_brown && it_jumps_over(dogs.laz<b>y</b>) } 0<b>1</b>2345<b>6</b><b>7</b>8<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss02'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s_brown && <b>i</b>t_jumps_over(dogs.<b>l</b><b>a</b>zy) } 0<b>1</b>2345<b>6</b><b>7</b>8<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss02'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>c<b>k</b>(h){ <b>*</b><b>i</b>s_brown && <b>i</b>t_jumps_over(dogs.<b>l</b><b>a</b>z<b>y</b>) } 0<b>1</b>2345<b>6</b><b>7</b>8<b>9</b> ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss03</span><span class="description">Consolas Style</span>
|
<span class="tag">ss03</span><span class="description">Consolas Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss03'"><b>@</b>real fox.quick(h){ <b>*</b>is<b>_</b>brown && it<b>_</b>jumps<b>_</b>over(do<b>g</b>s.lazy) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss03'"><b>@</b>real fox.quick(h){ <b>*</b>is<b>_</b>brown && it<b>_</b>jumps<b>_</b>over(do<b>g</b>s.laz<b>y</b>) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss03'"><b>@</b>real fox.quick(h){ <b>*</b>is<b>_</b>brown && it<b>_</b>jumps<b>_</b>over(do<b>g</b>s.lazy) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss03'"><b>@</b>real fox.quick(h){ <b>*</b>is<b>_</b>brown && it<b>_</b>jumps<b>_</b>over(dogs.lazy) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss04</span><span class="description">Menlo Style</span>
|
<span class="tag">ss04</span><span class="description">Menlo Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss04'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s<b>_</b>brown <b>&</b><b>&</b> <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.<b>l</b><b>a</b>zy) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss04'">@rea<b>l</b> fox.quick(h){ <b>*</b>is<b>_</b>brown <b>&</b><b>&</b> it<b>_</b>jumps<b>_</b>over(dogs.<b>l</b>az<b>y</b>) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss04'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s<b>_</b>brown <b>&</b><b>&</b> <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.<b>l</b><b>a</b>zy) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss04'">@re<b>a</b>l fox.qu<b>i</b>c<b>k</b>(h){ <b>*</b><b>i</b>s<b>_</b>brown <b>&</b><b>&</b> <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.l<b>a</b>z<b>y</b>) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss05</span><span class="description">Fira Mono Style</span>
|
<span class="tag">ss05</span><span class="description">Fira Mono Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss05'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ *<b>i</b>s<b>_</b>brown <b>&</b><b>&</b> <b>i</b>t<b>_</b>jumps<b>_</b>over(do<b>g</b>s.<b>l</b><b>a</b>zy) } <b>0</b><b>1</b>23<b>4</b>5<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss05'"><b>@</b>rea<b>l</b> fox.quick(h){ *is<b>_</b>brown <b>&</b><b>&</b> it<b>_</b>jumps<b>_</b>over(do<b>g</b>s.<b>l</b>az<b>y</b>) } <b>0</b><b>1</b>23<b>4</b>5<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss05'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ *<b>i</b>s<b>_</b>brown <b>&</b><b>&</b> <b>i</b>t<b>_</b>jumps<b>_</b>over(do<b>g</b>s.<b>l</b><b>a</b>zy) } <b>0</b><b>1</b>23<b>4</b>5<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss05'"><b>@</b>re<b>a</b>l fox.qu<b>i</b>c<b>k</b>(h){ *<b>i</b>s<b>_</b>brown <b>&</b><b>&</b> <b>i</b>t<b>_</b>jumps<b>_</b>over(do<b>g</b>s.l<b>a</b>z<b>y</b>) } <b>0</b><b>1</b>23<b>4</b>5<b>6</b>78<b>9</b> ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss06</span><span class="description">Liberation Mono Style</span>
|
<span class="tag">ss06</span><span class="description">Liberation Mono Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss06'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ *<b>i</b>s_brown && <b>i</b>t_jumps_over(dogs.<b>l</b><b>a</b>zy) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss06'"><b>@</b>real fox.quick(h){ *is_brown && it_jumps_over(dogs.laz<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss06'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ *<b>i</b>s_brown && <b>i</b>t_jumps_over(dogs.<b>l</b><b>a</b>zy) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss06'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>c<b>k</b>(h){ *<b>i</b>s_brown && <b>i</b>t_jumps_over(dogs.<b>l</b><b>a</b>z<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss07</span><span class="description">Monaco Style</span>
|
<span class="tag">ss07</span><span class="description">Monaco Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss07'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s_brown && <b>i</b>t_jumps_over(dogs.<b>l</b><b>a</b>zy) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss07'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s_brown && <b>i</b>t_jumps_over(dogs.<b>l</b><b>a</b>z<b>y</b>) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss07'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s_brown && <b>i</b>t_jumps_over(dogs.<b>l</b><b>a</b>zy) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss07'"><b>@</b>rea<b>l</b> fox.qu<b>i</b>c<b>k</b>(h){ <b>*</b><b>i</b>s_brown && <b>i</b>t_jumps_over(dogs.<b>l</b>az<b>y</b>) } 0<b>1</b>2345<b>6</b>78<b>9</b> ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss08</span><span class="description">Pragmata Pro Style</span>
|
<span class="tag">ss08</span><span class="description">Pragmata Pro Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss08'"><b>@</b>re<b>a</b><b>l</b> fo<b>x</b>.qu<b>i</b>c<b>k</b>(h){ <b>*</b><b>i</b>s<b>_</b>bro<b>w</b>n <b>&</b><b>&</b> <b>i</b>t<b>_</b>jumps<b>_</b>o<b>v</b>er(do<b>g</b>s.<b>l</b><b>a</b>z<b>y</b>) } <b>0</b>12345<b>6</b>78<b>9</b> <b>A</b>BC<b>K</b><b>R</b><b>W</b><b>X</b><b>Y</b>Z</span>
|
<span class="sample" style="font-feature-settings:'ss08'">@real fo<b>x</b>.quic<b>k</b>(h){ <b>*</b>is<b>_</b>bro<b>w</b>n <b>&</b><b>&</b> it<b>_</b>jumps<b>_</b>o<b>v</b>er(do<b>g</b>s.laz<b>y</b>) } <b>0</b>12345<b>6</b>78<b>9</b> <b>A</b>BC<b>K</b><b>R</b><b>W</b><b>X</b><b>Y</b>Z</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss08'"><b>@</b>re<b>a</b><b>l</b> fo<b>x</b>.qu<b>i</b>c<b>k</b>(h){ <b>*</b><b>i</b>s<b>_</b>bro<b>w</b>n <b>&</b><b>&</b> <b>i</b>t<b>_</b>jumps<b>_</b>o<b>v</b>er(do<b>g</b>s.<b>l</b><b>a</b>z<b>y</b>) } <b>0</b>12345<b>6</b>78<b>9</b> <b>A</b>BC<b>K</b><b>R</b><b>W</b><b>X</b><b>Y</b>Z</span>
|
<span class="sample italic" style="font-feature-settings:'ss08'">@re<b>a</b><b>l</b> fo<b>x</b>.qu<b>i</b>c<b>k</b>(h){ <b>*</b><b>i</b>s<b>_</b>bro<b>w</b>n <b>&</b><b>&</b> <b>i</b>t<b>_</b>jumps<b>_</b>o<b>v</b>er(dogs.<b>l</b><b>a</b>z<b>y</b>) } <b>0</b>12345<b>6</b>78<b>9</b> <b>A</b>BC<b>K</b><b>R</b><b>W</b><b>X</b><b>Y</b>Z</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss09</span><span class="description">Source Code Pro Style</span>
|
<span class="tag">ss09</span><span class="description">Source Code Pro Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss09'"><b>@</b>rea<b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s_brown && <b>i</b>t_jumps_over(do<b>g</b>s.<b>l</b>azy) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss09'">@rea<b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s_brown && <b>i</b>t_jumps_over(do<b>g</b>s.<b>l</b>az<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss09'"><b>@</b>rea<b>l</b> fox.quick(h){ <b>*</b>is_brown && it_jumps_over(do<b>g</b>s.<b>l</b>azy) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss09'">@real fox.quic<b>k</b>(h){ <b>*</b>is_brown && it_jumps_over(dogs.laz<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss10</span><span class="description">Envy Code R Style</span>
|
<span class="tag">ss10</span><span class="description">Envy Code R Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss10'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.<b>l</b><b>a</b>zy) } 0<b>1</b>23456789 ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss10'">@rea<b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.<b>l</b>az<b>y</b>) } 0<b>1</b>23456789 ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss10'"><b>@</b>re<b>a</b><b>l</b> fox.qu<b>i</b>ck(h){ <b>*</b><b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.<b>l</b><b>a</b>zy) } 0<b>1</b>23456789 ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss10'">@re<b>a</b><b>l</b> fox.qu<b>i</b>c<b>k</b>(h){ <b>*</b><b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.<b>l</b><b>a</b>zy) } 0<b>1</b>23456789 ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss11</span><span class="description">X Window Style</span>
|
<span class="tag">ss11</span><span class="description">X Window Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss11'"><b>@</b>real fox.quick(h){ *is_brown && it_jumps_over(dogs.lazy) } <b>0</b><b>1</b>2<b>3</b>45<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss11'">@real fox.quick(h){ *is_brown && it_jumps_over(dogs.lazy) } <b>0</b><b>1</b>2<b>3</b>45<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss11'"><b>@</b>real fox.quick(h){ *is_brown && it_jumps_over(dogs.lazy) } <b>0</b><b>1</b>2<b>3</b>45<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss11'">@real fox.quick(h){ *is_brown && it_jumps_over(dogs.lazy) } <b>0</b><b>1</b>2<b>3</b>45<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss12</span><span class="description">Ubuntu Mono Style</span>
|
<span class="tag">ss12</span><span class="description">Ubuntu Mono Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss12'"><b>@</b>re<b>a</b><b>l</b> <b>f</b>ox.qu<b>i</b>ck(h){ *<b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>ju<b>m</b>ps<b>_</b>over(dogs.<b>l</b><b>a</b>z<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss12'">@rea<b>l</b> fox.qu<b>i</b>ck(h){ *<b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>ju<b>m</b>ps<b>_</b>over(dogs.<b>l</b>az<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss12'"><b>@</b>re<b>a</b><b>l</b> <b>f</b>ox.qu<b>i</b>ck(h){ *<b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>ju<b>m</b>ps<b>_</b>over(dogs.<b>l</b><b>a</b>z<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss12'">@re<b>a</b>l <b>f</b>ox.quic<b>k</b>(h){ *is<b>_</b>brown && it<b>_</b>ju<b>m</b>ps<b>_</b>over(dogs.l<b>a</b>z<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss13</span><span class="description">Lucida Style</span>
|
<span class="tag">ss13</span><span class="description">Lucida Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss13'">@rea<b>l</b> fox.qu<b>i</b>ck(h){ *<b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.<b>l</b>azy) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss13'">@rea<b>l</b> fox.qu<b>i</b>ck(h){ *<b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.<b>l</b>az<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss13'">@rea<b>l</b> fox.qu<b>i</b>ck(h){ *<b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.<b>l</b>azy) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss13'">@rea<b>l</b> fox.qu<b>i</b>c<b>k</b>(h){ *<b>i</b>s<b>_</b>brown && <b>i</b>t<b>_</b>jumps<b>_</b>over(dogs.<b>l</b>az<b>y</b>) } <b>0</b><b>1</b>2345<b>6</b>78<b>9</b> ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss14</span><span class="description">JetBrains Mono Style</span>
|
<span class="tag">ss14</span><span class="description">JetBrains Mono Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss14'">@rea<b>l</b> fox.q<b>u</b><b>i</b>ck(h){ <b>*</b><b>i</b>s_brown <b>&</b><b>&</b> <b>i</b>t_j<b>u</b>mps_over(dogs.<b>l</b>azy) } <b>0</b><b>1</b>2<b>3</b><b>4</b>56<b>7</b>89 ABCKRWXYZ</span>
|
<span class="sample" style="font-feature-settings:'ss14'">@rea<b>l</b> fox.q<b>u</b>ick(h){ <b>*</b>is_brown <b>&</b><b>&</b> it_j<b>u</b>mps_over(dogs.<b>l</b>azy) } <b>0</b><b>1</b>2<b>3</b><b>4</b>56<b>7</b>89 ABCKRWXYZ</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss14'">@rea<b>l</b> fox.q<b>u</b><b>i</b>ck(h){ <b>*</b><b>i</b>s_brown <b>&</b><b>&</b> <b>i</b>t_j<b>u</b>mps_over(dogs.<b>l</b>azy) } <b>0</b><b>1</b>2<b>3</b><b>4</b>56<b>7</b>89 ABCKRWXYZ</span>
|
<span class="sample italic" style="font-feature-settings:'ss14'">@real fox.q<b>u</b><b>i</b>c<b>k</b>(h){ <b>*</b><b>i</b>s_brown <b>&</b><b>&</b> <b>i</b>t_j<b>u</b>mps_over(dogs.lazy) } <b>0</b><b>1</b>2<b>3</b><b>4</b>56<b>7</b>89 ABC<b>K</b>RWXYZ</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="tag">ss20</span><span class="description">Curly Style</span>
|
<span class="tag">ss20</span><span class="description">Curly Style</span>
|
||||||
<span class="sample" style="font-feature-settings:'ss20'">@real fo<b>x</b>.quic<b>k</b>(h){ *is_bro<b>w</b>n && it_jumps_o<b>v</b>er(dogs.laz<b>y</b>) } 012345<b>6</b>78<b>9</b> <b>A</b>BC<b>K</b><b>R</b><b>W</b><b>X</b><b>Y</b>Z</span>
|
<span class="sample" style="font-feature-settings:'ss20'">@real fo<b>x</b>.quic<b>k</b>(h){ *is_bro<b>w</b>n && it_jumps_o<b>v</b>er(dogs.laz<b>y</b>) } 012345<b>6</b>78<b>9</b> <b>A</b>BC<b>K</b><b>R</b><b>W</b><b>X</b><b>Y</b>Z</span>
|
||||||
<span class="sample italic" style="font-feature-settings:'ss20'">@real fo<b>x</b>.quic<b>k</b>(h){ *is_bro<b>w</b>n && it_jumps_o<b>v</b>er(dogs.laz<b>y</b>) } 012345<b>6</b>78<b>9</b> <b>A</b>BC<b>K</b><b>R</b><b>W</b><b>X</b><b>Y</b>Z</span>
|
<span class="sample italic" style="font-feature-settings:'ss20'">@real fo<b>x</b>.quick(h){ *is_bro<b>w</b>n && it_jumps_o<b>v</b>er(dogs.lazy) } 012345<b>6</b>78<b>9</b> <b>A</b>BCK<b>R</b><b>W</b><b>X</b><b>Y</b>Z</span>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</section><section id="ligations">
|
</section><section id="ligations">
|
||||||
|
|
|
@ -34,15 +34,14 @@ module.exports = function formVariantData(data, para) {
|
||||||
const vs = {};
|
const vs = {};
|
||||||
// simple selector
|
// simple selector
|
||||||
for (let k in data.simple) {
|
for (let k in data.simple) {
|
||||||
const hive = objectAssign({}, data.simple[k]);
|
const varDef = data.simple[k];
|
||||||
|
if (!varDef.variant) throw new Error("Unreachable! Variant definition is invalid");
|
||||||
|
const hive = { ...varDef.variant };
|
||||||
vs[k] = hive;
|
vs[k] = hive;
|
||||||
|
|
||||||
const tag = hive.tag;
|
const tag = varDef.tag;
|
||||||
delete hive.tag;
|
const tagUpright = varDef.tagUpright;
|
||||||
const tagUpright = hive.tagUpright;
|
const tagItalic = varDef.tagItalic;
|
||||||
delete hive.tagUpright;
|
|
||||||
const tagItalic = hive.tagItalic;
|
|
||||||
delete hive.tagItalic;
|
|
||||||
if (tag) {
|
if (tag) {
|
||||||
let __cvmap = {};
|
let __cvmap = {};
|
||||||
for (let k in hive) __cvmap[k] = tag;
|
for (let k in hive) __cvmap[k] = tag;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
const fs = require("fs-extra");
|
const fs = require("fs-extra");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const toml = require("toml");
|
const toml = require("@iarna/toml");
|
||||||
|
|
||||||
function TAG(...ltag) {
|
function TAG(...ltag) {
|
||||||
return function (s) {
|
return function (s) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
const fs = require("fs-extra");
|
const fs = require("fs-extra");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const toml = require("toml");
|
const toml = require("@iarna/toml");
|
||||||
|
|
||||||
module.exports = async function () {
|
module.exports = async function () {
|
||||||
const variantsToml = await fs.readFile(
|
const variantsToml = await fs.readFile(
|
||||||
|
@ -75,31 +75,59 @@ function getSsData(variants, cvData) {
|
||||||
hotCharSetItalic: []
|
hotCharSetItalic: []
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
const defaultUpright = buildupComposite(
|
||||||
|
cvData,
|
||||||
|
...variants.default.design,
|
||||||
|
...variants.default.upright
|
||||||
|
);
|
||||||
|
const defaultItalic = buildupComposite(
|
||||||
|
cvData,
|
||||||
|
...variants.default.design,
|
||||||
|
...variants.default.italic
|
||||||
|
);
|
||||||
for (const tag in variants.composite) {
|
for (const tag in variants.composite) {
|
||||||
if (!/^ss\d\d$/.test(tag)) continue;
|
if (!/^ss\d\d$/.test(tag)) continue;
|
||||||
const composition = variants.composite[tag];
|
const composition = variants.composite[tag];
|
||||||
const uprightCfg = new Set([...(composition.design || []), ...(composition.upright || [])]);
|
const upright = buildupComposite(
|
||||||
const italicCfg = new Set([...(composition.design || []), ...(composition.italic || [])]);
|
cvData,
|
||||||
const hotCharSetUpright = new Set();
|
...(composition.design || []),
|
||||||
const hotCharSetItalic = new Set();
|
...(composition.upright || [])
|
||||||
for (const gr of cvData) {
|
);
|
||||||
if (gr.ligatureSampler) continue;
|
const italic = buildupComposite(
|
||||||
for (const config of gr.configs) {
|
cvData,
|
||||||
if (uprightCfg.has(config.selector))
|
...(composition.design || []),
|
||||||
for (const ch of gr.descSampleText) hotCharSetUpright.add(ch);
|
...(composition.italic || [])
|
||||||
if (italicCfg.has(config.selector))
|
);
|
||||||
for (const ch of gr.descSampleText) hotCharSetItalic.add(ch);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
result.push({
|
result.push({
|
||||||
tag,
|
tag,
|
||||||
effective: true,
|
effective: true,
|
||||||
description: composition.description,
|
description: composition.description,
|
||||||
uprightComposition: Array.from(uprightCfg),
|
uprightComposition: Array.from(upright.composition),
|
||||||
italicComposition: Array.from(italicCfg),
|
italicComposition: Array.from(italic.composition),
|
||||||
hotCharSetUpright: Array.from(hotCharSetUpright),
|
hotCharSetUpright: Array.from(uniqueHotChars(defaultUpright, upright.hotChars)),
|
||||||
hotCharSetItalic: Array.from(hotCharSetItalic)
|
hotCharSetItalic: Array.from(uniqueHotChars(defaultItalic, italic.hotChars))
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
function buildupComposite(cvData, ..._cfg) {
|
||||||
|
const hch = new Map();
|
||||||
|
const cfg = new Set(_cfg);
|
||||||
|
for (const gr of cvData) {
|
||||||
|
if (gr.ligatureSampler) continue;
|
||||||
|
for (const config of gr.configs) {
|
||||||
|
if (cfg.has(config.selector)) {
|
||||||
|
for (const ch of gr.descSampleText) hch.set(ch, config.selector);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
composition: [...cfg],
|
||||||
|
hotChars: hch
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function* uniqueHotChars(cfgDefault, cfgSS) {
|
||||||
|
for (const [hc, v] of cfgSS) {
|
||||||
|
if (cfgDefault.hotChars.get(hc) !== v) yield hc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ module.exports = build;
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const toml = require("toml");
|
const toml = require("@iarna/toml");
|
||||||
|
|
||||||
const BUILD = "build";
|
const BUILD = "build";
|
||||||
const DIST = "dist";
|
const DIST = "dist";
|
||||||
|
|