Add earless variants for m (#669)

This commit is contained in:
be5invis 2020-08-20 18:58:18 -07:00
parent 295e87660a
commit 0dcbd316c7
7 changed files with 355 additions and 57 deletions

View file

@ -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:
@ -320,6 +320,8 @@ The current available styles for `design`/`upright`/`italic`/`oblique` options a
* `v-a-singlestorey-earless-corner-tailed`, `VXCM`: Earless (cornered top-right) single-storey `a` with curly tail. * `v-a-singlestorey-earless-corner-tailed`, `VXCM`: Earless (cornered top-right) single-storey `a` with curly tail.
* `v-a-singlestorey-earless-rounded`, `VXCN`: Earless (rounded top-right) single-storey `a`. * `v-a-singlestorey-earless-rounded`, `VXCN`: Earless (rounded top-right) single-storey `a`.
* `v-a-singlestorey-earless-rounded-tailed`, `VXCO`: Earless (rounded top-right) single-storey `a` with curly tail. * `v-a-singlestorey-earless-rounded-tailed`, `VXCO`: Earless (rounded top-right) single-storey `a` with curly tail.
* `v-a-doublestorey-toothless-corner`, `VXDM`: Toothless (cornered bottom-right) double-storey `a`.
* `v-a-doublestorey-toothless-rounded`, `VXDN`: Toothless (rounded bottom-right) double-storey `a`.
* Styles for `b`: * Styles for `b`:
* `v-b-toothed`, `VXBK`: `b` with bottom-left tooth (default). * `v-b-toothed`, `VXBK`: `b` with bottom-left tooth (default).
* `v-b-toothless-corner`, `VXBL`: `b` without bottom-left tooth, with a corner transition. * `v-b-toothless-corner`, `VXBL`: `b` without bottom-left tooth, with a corner transition.
@ -352,6 +354,7 @@ The current available styles for `design`/`upright`/`italic`/`oblique` options a
* `v-i-line`, `cv56`: `i` like a straight line. * `v-i-line`, `cv56`: `i` like a straight line.
* `v-i-tailed`, `cv88`: Tailed `i`. * `v-i-tailed`, `cv88`: Tailed `i`.
* `v-i-hookybottom`, `VXAA`: `i` with a straight tail. * `v-i-hookybottom`, `VXAA`: `i` with a straight tail.
* `v-i-serifed-asymmetric`, `VXDK`: `i` with shorter top serif and full bottom serif.
* Styles for `j`: * Styles for `j`:
* `v-j-line`, `cv57`: `j` like a straight line. * `v-j-line`, `cv57`: `j` like a straight line.
* `v-j-serifed`, `cv58`: `j` with top serif (default). * `v-j-serifed`, `cv58`: `j` with top serif (default).
@ -371,15 +374,31 @@ The current available styles for `design`/`upright`/`italic`/`oblique` options a
* `v-l-tailed`, `cv27`: `l` with a curved tail. * `v-l-tailed`, `cv27`: `l` with a curved tail.
* `v-l-hookybottom`, `cv28`: `l` with a straight tail. * `v-l-hookybottom`, `cv28`: `l` with a straight tail.
* `v-l-line`, `cv59`: `l` like a straight line. * `v-l-line`, `cv59`: `l` like a straight line.
* `v-l-serifed-asymmetric`, `VXDL`: Serifed `l` with shorter top serif. * `v-l-serifed-asymmetric`, `VXDL`: `l` with shorter top serif and full bottom serif.
* Styles for `m`: * Styles for `m`:
* `v-m-normal`, `cv25`: `m` with normal middle leg, touching the baseline (default). * `v-m-normal`, `cv25`: `m` with normal middle leg, touching the baseline (default).
* `v-m-shortleg`, `cv26`: `m` with shorter middle leg, like Ubuntu Mono. * `v-m-shortleg`, `cv26`: `m` with shorter middle leg, like Ubuntu Mono.
* `v-m-tailed`, `VXCD`: `m` with normal middle leg, touching the baseline, and a curly tail. * `v-m-tailed`, `VXCD`: `m` with normal middle leg, touching the baseline, and a curly tail.
* `v-m-shortleg-tailed`, `VXCE`: `m` with shorter middle leg, like Ubuntu Mono, and a curly tail. * `v-m-shortleg-tailed`, `VXCE`: `m` with shorter middle leg, like Ubuntu Mono, and a curly tail.
* `v-m-earless-corner-double-arch`, `VXDU`: Earless (corner top-left) `m` with normal middle leg touching baseline.
* `v-m-earless-corner-double-arch-shortleg`, `VXDV`: Earless (corner top-left) `m` with a shorter middle leg like Ubuntu Mono.
* `v-m-earless-corner-double-arch-tailed`, `VXDW`: Earless (corner top-left) `m` with normal middle leg touching baseline, and a curly tail.
* `v-m-earless-corner-double-arch-shortleg-tailed`, `VXDX`: Earless (corner top-left) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail.
* `v-m-earless-rounded-double-arch`, `VXDY`: Earless (rounded top-left) `m` with normal middle leg touching baseline.
* `v-m-earless-rounded-double-arch-shortleg`, `VXDZ`: Earless (rounded top-left) `m` with a shorter middle leg like Ubuntu Mono.
* `v-m-earless-rounded-double-arch-tailed`, `VXEA`: Earless (rounded top-left) `m` with normal middle leg touching baseline, and a curly tail.
* `v-m-earless-rounded-double-arch-shortleg-tailed`, `VXEB`: Earless (rounded top-left) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail.
* `v-m-earless-single-arch`, `VXEC`: Earless (single-arch) `m` with normal middle leg touching baseline.
* `v-m-earless-single-arch-shortleg`, `VXED`: Earless (single-arch) `m` with a shorter middle leg like Ubuntu Mono.
* `v-m-earless-single-arch-tailed`, `VXEE`: Earless (single-arch) `m` with normal middle leg touching baseline, and a curly tail.
* `v-m-earless-single-arch-shortleg-tailed`, `VXEF`: Earless (single-arch) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail.
* Styles for `n`: * Styles for `n`:
* `v-n-straight`, `VXCF`: `n` straight ending (default). * `v-n-straight`, `VXCF`: `n` with straight ending (default).
* `v-n-tailed`, `VXCG`: `n` a curly tail. * `v-n-tailed`, `VXCG`: `n` with a curly tail.
* `v-n-earless-corner-straight`, `VXDO`: Earless (corner top-left) `n` with straight ending.
* `v-n-earless-corner-tailed`, `VXDP`: Earless (corner top-left) `n` with a curly tail.
* `v-n-earless-rounded-straight`, `VXDQ`: Earless (rounded top-left) `n` with straight ending.
* `v-n-earless-rounded-tailed`, `VXDR`: Earless (rounded top-left) `n` with a curly tail.
* Styles for `p`: * Styles for `p`:
* `v-p-eared`, `VXCP`: `p` with top-left ear (default). * `v-p-eared`, `VXCP`: `p` with top-left ear (default).
* `v-p-earless-corner`, `VXCQ`: `p` without top-left ear (corner). * `v-p-earless-corner`, `VXCQ`: `p` without top-left ear (corner).
@ -395,6 +414,8 @@ The current available styles for `design`/`upright`/`italic`/`oblique` options a
* `v-r-straight`, `cv85`: Straight, serif-less `r` (default for Sans). * `v-r-straight`, `cv85`: Straight, serif-less `r` (default for Sans).
* `v-r-serifed`, `cv86`: `r` with serif at both top and bottom (default for Slab Upright). * `v-r-serifed`, `cv86`: `r` with serif at both top and bottom (default for Slab Upright).
* `v-r-top-serifed`, `cv87`: `r` with serifs at top-left only (default for Slab Italic). * `v-r-top-serifed`, `cv87`: `r` with serifs at top-left only (default for Slab Italic).
* `v-r-earless-corner`, `VXDS`: Earless (corner top-left), serif-less `r`.
* `v-r-earless-rounded`, `VXDT`: Earless (rounded top-left), serif-less `r`.
* Styles for `t`: * Styles for `t`:
* `v-t-standard`, `cv40`: Standard `t` shape (default). * `v-t-standard`, `cv40`: Standard `t` shape (default).
* `v-t-cross`, `cv41`: Futura-like `t` shape. * `v-t-cross`, `cv41`: Futura-like `t` shape.

View file

@ -1,2 +1,2 @@
* Add toothless variant for `a` (#669). * Add toothless variant for `a` (#669).
* Add earless variants for `n`, `r` (#669). * Add earless variants for `m`, `n`, `r` (#669).

View file

@ -4182,81 +4182,108 @@ glyph-block Letter-Latin-Upper-M : begin
glyph-block Letter-Latin-Lower-M : begin glyph-block Letter-Latin-Lower-M : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend
define [SmallMShoulderSpiro] : params [left right top bottom width fine diversity] : glyph-proc define [SmallMSmooth df] : df.div * (0.5 * SmallSmooth + 0.375 * Stroke)
define [SmallMShoulderSpiro] : params [left right top bottom width fine df coBottom] : glyph-proc
local fix : TanSlope * Stroke * HVContrast * width / Stroke local fix : TanSlope * Stroke * HVContrast * width / Stroke
local sm : SmallSmooth * 0.7 * [fallback diversity 1] local sm : [SmallMSmooth df] + fix / 2
include : spiro-outline include : spiro-outline
corner (right - width * HVContrast) bottom corner (right - width * HVContrast) [Math.min (top - sm - 0.1) bottom]
curl (right - width * HVContrast) (top - sm + fix) curl (right - width * HVContrast) (top - sm + fix)
arcvh 8 arcvh 8
g2 [mix left (right - width * HVContrast) 0.5] (top - O - width) g2 [mix left (right - width * HVContrast) 0.5] (top - O - width)
archv 8 archv 8
flat left (top - sm - fix) flat left (top - sm - fix)
corner left (top - sm - fix - 1) corner left (top - sm - fix - 1)
if (coBottom != nothing)
list [corner left coBottom] [corner (left - fine) coBottom]
list
corner (left - fine) (top - sm - 1) corner (left - fine) (top - sm - 1)
curl (left - fine) (top - sm) curl (left - fine) (top - sm)
arcvh 8 arcvh 8
g2 [mix (left - fine * HVContrast) right 0.5] (top - O) g2 [mix (left - fine * HVContrast) right 0.5] (top - O)
archv 8 archv 8
flat right (top - sm) flat right (top - sm)
corner right bottom corner right [Math.min (top - sm - 0.1) bottom]
close close
define [RevSmallMShoulderSpiro] : params [left right top bottom width fine df coBottom] : glyph-proc
local fix : TanSlope * Stroke * HVContrast * width / Stroke
local sm : [SmallMSmooth df] - fix / 2
include : spiro-outline
corner (left + width * HVContrast) [Math.min (top - sm - 0.1) bottom]
curl (left + width * HVContrast) (top - sm - fix)
arcvh 8
g2 [mix right (left + width * HVContrast) 0.5] (top - O - width)
archv 8
flat right (top - sm - fix)
corner right (top - sm - fix - 1)
if (coBottom != nothing)
list [corner right coBottom] [corner (right + fine) coBottom]
list
corner (right + fine) (top - sm - 1)
curl (right + fine) (top - sm)
arcvh 8
g2 [mix (right + fine * HVContrast) left 0.5] (top - O)
archv 8
flat left (top - sm)
corner left [Math.min (top - sm - 0.1) bottom]
close
define [SmallMSerifs top lbot mbot rbot df tailed earless] : glyph-proc
local jut : Jut * df.mvs / Stroke + O
if (df.width > jut * 7) : begin
if [not earless] : include : tagged 'serifLT' : intersection
CenterTopSerif (df.leftSB + 0.5 * df.mvs * HVContrast) top jut df.mvs
spiro-outline
corner SB lbot
corner SB top
corner 0 top
corner 0 lbot
if (!para.isItalic) : begin
include : tagged 'serifLB' : CenterBottomSerif (df.leftSB + 0.5 * df.mvs * HVContrast) lbot jut df.mvs
include : tagged 'serifMB' : CenterBottomSerif df.middle mbot jut df.mvs
if [not tailed] : begin
include : tagged 'serifRB' : CenterBottomSerif (df.rightSB - 0.5 * df.mvs * HVContrast) rbot jut df.mvs
: else : if [not tailed] : begin
include : tagged 'serifRB' : intersection
RightwardBottomSerif (df.rightSB + O) rbot (jut / 2) df.mvs
spiro-outline
corner (df.rightSB + O) lbot
corner (df.rightSB + O) top
corner df.width top
corner df.lwidth lbot
: else : begin
include : tagged 'serifLT' : LeftwardTopSerif df.leftSB top SideJut df.mvs
if (!para.isItalic) : include : LeftwardBottomSerif df.leftSB lbot SideJut df.mvs
if [not tailed] : begin
include : tagged 'serifRB' : RightwardBottomSerif df.rightSB rbot SideJut df.mvs
define [dfM] : DivFrame para.diversityM 3 define [dfM] : DivFrame para.diversityM 3
define [SmallMShape top lbot mbot rbot df tailed] : glyph-proc define [SmallMShape top lbot mbot rbot df tailed] : glyph-proc
local m1 : mix df.leftSB (df.middle + df.mvs / 2 * HVContrast) 0.5
local m2 : mix df.rightSB (df.middle - df.mvs / 2 * HVContrast) 0.5
include : SmallMShoulderSpiro include : SmallMShoulderSpiro
df -- df
left -- (df.leftSB + df.mvs * HVContrast) left -- (df.leftSB + df.mvs * HVContrast)
right -- (df.middle + df.mvs / 2 * HVContrast) right -- (df.middle + df.mvs / 2 * HVContrast)
top -- top top -- top
bottom -- mbot bottom -- mbot
width -- df.mvs width -- df.mvs
fine -- (df.mvs * ShoulderFine / Stroke) fine -- (df.mvs * ShoulderFine / Stroke)
diversity -- df.div
include : SmallMShoulderSpiro include : SmallMShoulderSpiro
df -- df
left -- (df.middle + df.mvs * 0.5 * HVContrast) left -- (df.middle + df.mvs * 0.5 * HVContrast)
right -- df.rightSB right -- df.rightSB
top -- top top -- top
bottom -- rbot bottom -- rbot
width -- df.mvs width -- df.mvs
fine -- (df.mvs * ShoulderFine / Stroke) fine -- (df.mvs * ShoulderFine / Stroke)
diversity -- df.div
include : tagged 'barL' : VBarLeft df.leftSB lbot top df.mvs include : tagged 'barL' : VBarLeft df.leftSB lbot top df.mvs
if SLAB : begin if SLAB : include : SmallMSerifs top lbot mbot rbot df tailed true
local jut : Jut * df.mvs / Stroke + O
if (df.width > jut * 7) : begin
include : tagged 'serifLT' : intersection
CenterTopSerif (df.leftSB + 0.5 * df.mvs * HVContrast) top jut df.mvs
spiro-outline
corner SB lbot
corner SB top
corner 0 top
corner 0 lbot
if (!para.isItalic) : begin
include : tagged 'serifLB' : CenterBottomSerif (df.leftSB + 0.5 * df.mvs * HVContrast) lbot jut df.mvs
include : tagged 'serifMB' : CenterBottomSerif df.middle mbot jut df.mvs
if [not tailed] : begin
include : tagged 'serifRB' : CenterBottomSerif (df.rightSB - 0.5 * df.mvs * HVContrast) rbot jut df.mvs
: else : if [not tailed] : begin
include : tagged 'serifRB' : intersection
RightwardBottomSerif (df.rightSB + O) rbot (jut / 2) df.mvs
spiro-outline
corner (df.rightSB + O) lbot
corner (df.rightSB + O) top
corner df.width top
corner df.lwidth lbot
: else : begin
include : tagged 'serifLT' : LeftwardTopSerif df.leftSB top SideJut df.mvs
if (!para.isItalic) : include : LeftwardBottomSerif df.leftSB lbot SideJut df.mvs
if [not tailed] : begin
include : tagged 'serifRB' : RightwardBottomSerif df.rightSB rbot SideJut df.mvs
define [SmallMShortLegHeight df] : (XH - df.mvs) * 0.45 define [SmallMShortLegHeight df] : (XH - df.mvs) * 0.45
glyph-block-export SmallMSmoothHeight glyph-block-export SmallMSmoothHeight
define [SmallMSmoothHeight df] : XH - SmallSmoothB * 0.7 * df.div define [SmallMSmoothHeight df] : XH - [SmallMSmooth df] - TanSlope * Stroke
create-glyph 'm.normal' : glyph-proc create-glyph 'm.normal' : glyph-proc
local df : dfM local df : dfM
@ -4285,6 +4312,139 @@ glyph-block Letter-Latin-Lower-M : begin
include : SmallMShape XH 0 [SmallMShortLegHeight df] ([SmallMSmoothHeight df] + O) df true include : SmallMShape XH 0 [SmallMShortLegHeight df] ([SmallMSmoothHeight df] + O) df true
include : RightwardTailedBar df.rightSB 0 [SmallMSmoothHeight df] (sw -- df.mvs) include : RightwardTailedBar df.rightSB 0 [SmallMSmoothHeight df] (sw -- df.mvs)
define [EarlessCornerDoubleArchSmallMShape top lbot mbot rbot df tailed] : glyph-proc
include : dispiro
widths.rhs df.mvs
g4 df.leftSB (top - DToothlessRise)
g4.right.mid [mix df.leftSB (df.middle + df.mvs / 2 * HVContrast) 0.5] (top - O) [heading Rightward]
g4 (df.middle + df.mvs / 2 * HVContrast) (top - DToothlessRise)
include : dispiro
widths.rhs df.mvs
g4 (df.middle - df.mvs / 2 * HVContrast) (top - DToothlessRise)
g4.right.mid [mix df.rightSB (df.middle - df.mvs / 2 * HVContrast) 0.5] (top - O) [heading Rightward]
archv
flat df.rightSB (top - [SmallMSmooth df]) [heading Downward]
curl df.rightSB rbot [heading Downward]
include : tagged 'barL' : VBarLeft df.leftSB lbot (top - DToothlessRise) df.mvs
include : tagged 'barM' : VBar df.middle mbot (top - DToothlessRise) df.mvs
create-glyph 'm.earlessCornerDoubleArch' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessCornerDoubleArchSmallMShape XH 0 0 0 df
create-glyph 'm.earlessCornerDoubleArchShortleg' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessCornerDoubleArchSmallMShape XH 0 [SmallMShortLegHeight df] 0 df
create-glyph 'm.earlessCornerDoubleArchTailed' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessCornerDoubleArchSmallMShape XH 0 0 ([SmallMSmoothHeight df] + O) df true
include : RightwardTailedBar df.rightSB 0 [SmallMSmoothHeight df] (sw -- df.mvs)
create-glyph 'm.earlessCornerDoubleArchShortlegTailed' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessCornerDoubleArchSmallMShape XH 0 [SmallMShortLegHeight df] ([SmallMSmoothHeight df] + O) df true
include : RightwardTailedBar df.rightSB 0 [SmallMSmoothHeight df] (sw -- df.mvs)
define [EarlessRoundedDoubleArchSmallMShape top lbot mbot rbot df tailed] : glyph-proc
include : union
RevSmallMShoulderSpiro
df -- df
left -- df.leftSB
right -- (df.middle - df.mvs / 2 * HVContrast)
top -- top
bottom -- lbot
coBottom -- mbot
width -- df.mvs
fine -- (df.mvs * CThin)
SmallMShoulderSpiro
df -- df
left -- (df.middle + df.mvs * 0.5 * HVContrast)
right -- df.rightSB
top -- top
bottom -- rbot
coBottom -- mbot
width -- df.mvs
fine -- (df.mvs * CThin)
if SLAB : include : SmallMSerifs top lbot mbot rbot df tailed true
create-glyph 'm.earlessRoundedDoubleArch' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessRoundedDoubleArchSmallMShape XH 0 0 0 df
create-glyph 'm.earlessRoundedDoubleArchShortleg' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessRoundedDoubleArchSmallMShape XH 0 [SmallMShortLegHeight df] 0 df
create-glyph 'm.earlessRoundedDoubleArchTailed' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessRoundedDoubleArchSmallMShape XH 0 0 ([SmallMSmoothHeight df] + O) df true
include : RightwardTailedBar df.rightSB 0 [SmallMSmoothHeight df] (sw -- df.mvs)
create-glyph 'm.earlessRoundedDoubleArchShortlegTailed' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessRoundedDoubleArchSmallMShape XH 0 [SmallMShortLegHeight df] ([SmallMSmoothHeight df] + O) df true
include : RightwardTailedBar df.rightSB 0 [SmallMSmoothHeight df] (sw -- df.mvs)
define [EarlessSingleArchSmallMShape top lbot mbot rbot df tailed] : glyph-proc
include : tagged 'barL' : VBarLeft df.leftSB lbot (XH - DToothlessRise) df.mvs
include : tagged 'barM' : VBar df.middle mbot XH df.mvs
include : dispiro
widths.rhs df.mvs
g4 df.leftSB (XH - DToothlessRise)
g4 (df.middle - CorrectionOMidS) (XH - O)
archv
flat df.rightSB [Math.max (XH - [SmallMSmooth df]) (rbot + 0.1)]
curl df.rightSB rbot [heading Downward]
if SLAB : include : SmallMSerifs top lbot mbot rbot df tailed true
create-glyph 'm.earlessSingleArch' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessSingleArchSmallMShape XH 0 0 0 df
create-glyph 'm.earlessSingleArchShortleg' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessSingleArchSmallMShape XH 0 [SmallMShortLegHeight df] 0 df
create-glyph 'm.earlessSingleArchTailed' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessSingleArchSmallMShape XH 0 0 ([SmallMSmoothHeight df] + O) df true
include : RightwardTailedBar df.rightSB 0 [SmallMSmoothHeight df] (sw -- df.mvs)
create-glyph 'm.earlessSingleArchShortlegTailed' : glyph-proc
local df : dfM
set-width df.width
include df.markSet.e
include : EarlessSingleArchSmallMShape XH 0 [SmallMShortLegHeight df] ([SmallMSmoothHeight df] + O) df true
include : RightwardTailedBar df.rightSB 0 [SmallMSmoothHeight df] (sw -- df.mvs)
select-variant 'm' 'm' select-variant 'm' 'm'
alias 'cyrl/te.italicNormal' null 'm.normal' alias 'cyrl/te.italicNormal' null 'm.normal'
alias 'cyrl/te.italicTailed' null 'm.tailed' alias 'cyrl/te.italicTailed' null 'm.tailed'

View file

@ -493,6 +493,103 @@ variant.m = 'shortlegTailed'
variantUpright."cyrl/te" = "upright" variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicTailed" variantItalic."cyrl/te" = "italicTailed"
[simple.v-m-earless-corner-double-arch]
tag = "VXDU"
sampler = "m"
description = "Earless (corner top-left) `m` with normal middle leg touching baseline"
variant.m = 'earlessCornerDoubleArch'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-corner-double-arch-shortleg]
tag = "VXDV"
sampler = "m"
description = "Earless (corner top-left) `m` with a shorter middle leg like Ubuntu Mono"
variant.m = 'earlessCornerDoubleArchShortleg'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-corner-double-arch-tailed]
tag = "VXDW"
sampler = "m"
description = "Earless (corner top-left) `m` with normal middle leg touching baseline, and a curly tail"
variant.m = 'earlessCornerDoubleArchTailed'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-corner-double-arch-shortleg-tailed]
tag = "VXDX"
sampler = "m"
description = "Earless (corner top-left) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail"
variant.m = 'earlessCornerDoubleArchShortlegTailed'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-rounded-double-arch]
tag = "VXDY"
sampler = "m"
description = "Earless (rounded top-left) `m` with normal middle leg touching baseline"
variant.m = 'earlessRoundedDoubleArch'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-rounded-double-arch-shortleg]
tag = "VXDZ"
sampler = "m"
description = "Earless (rounded top-left) `m` with a shorter middle leg like Ubuntu Mono"
variant.m = 'earlessRoundedDoubleArchShortleg'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-rounded-double-arch-tailed]
tag = "VXEA"
sampler = "m"
description = "Earless (rounded top-left) `m` with normal middle leg touching baseline, and a curly tail"
variant.m = 'earlessRoundedDoubleArchTailed'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-rounded-double-arch-shortleg-tailed]
tag = "VXEB"
sampler = "m"
description = "Earless (rounded top-left) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail"
variant.m = 'earlessRoundedDoubleArchShortlegTailed'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-single-arch]
tag = "VXEC"
sampler = "m"
description = "Earless (single-arch) `m` with normal middle leg touching baseline"
variant.m = 'earlessSingleArch'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-single-arch-shortleg]
tag = "VXED"
sampler = "m"
description = "Earless (single-arch) `m` with a shorter middle leg like Ubuntu Mono"
variant.m = 'earlessSingleArchShortleg'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-single-arch-tailed]
tag = "VXEE"
sampler = "m"
description = "Earless (single-arch) `m` with normal middle leg touching baseline, and a curly tail"
variant.m = 'earlessSingleArchTailed'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-m-earless-single-arch-shortleg-tailed]
tag = "VXEF"
sampler = "m"
description = "Earless (single-arch) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail"
variant.m = 'earlessSingleArchShortlegTailed'
variantUpright."cyrl/te" = "upright"
variantItalic."cyrl/te" = "italicNormal"
[simple.v-n-straight] [simple.v-n-straight]
tag = 'VXCF' tag = 'VXCF'
sampler = 'n' sampler = 'n'

View file

@ -160,7 +160,7 @@ section#matrix > div > row > span
font-size: 0.4em; font-size: 0.4em;
padding: 0 0.5em; padding: 0 0.5em;
section.opentype section.char-vars, section.style-sets
width: 30em; width: 30em;
padding: 1.5em 8em; padding: 1.5em 8em;
@ -185,21 +185,21 @@ section.opentype
margin: 0 1em; margin: 0 1em;
vertical-align: 0.3em; vertical-align: 0.3em;
section.char-vars
> ol.narrow > ol.narrow
font-size: 0.75em; font-size: 0.75em;
width: 56em; width: 56em;
list-style: none; list-style: none;
margin: 0 -9em; margin: 0 -9em;
padding: 0; padding: 0;
display: flex; columns: 2;
justify-content: left; justify-content: left;
flex-wrap: wrap;
overflow: hidden; overflow: hidden;
> li > li
flex: none; flex: none;
display: flex; display: flex;
width: 28em; width: 26em;
box-sizing: border-box; box-sizing: border-box;
> div.desc-group > div.desc-group
@ -207,26 +207,45 @@ section.opentype
width: 5em; width: 5em;
padding: 0 1em 0 0; padding: 0 1em 0 0;
justify-content: flex-end; justify-content: flex-end;
position: relative;
> .triangle > .triangle
display: block;
position: absolute;
top: 0;
bottom: 0;
right: -0.025em;
width: 0.5em;
font-feature-settings: 'NWID' on; font-feature-settings: 'NWID' on;
display: inline-block; font-weight: 200;
font-weight: 300;
font-size: 2em; font-size: 2em;
margin-top: 0.5em; margin-top: 0.5em;
width: 0.5em; width: 0.5em;
text-align: center; text-align: center;
position: absolute; margin-right: -0.0625em;
right: 0;
margin-right: -0.125em; &::before, &::after
opacity: 0.75; content: '';
position: absolute;
right: calc(0.275em - 0.5px);
width: 1px;
background: #ddd;
&::before
top: 0;
height: 0.42em;
&::after
top: 0.85em;
bottom: 0;
> ol.group > ol.group
list-style: none; list-style: none;
margin: 0; margin: 0;
padding: 0; padding: 0;
flex: none; flex: 1;
display: flex; display: flex;
flex-wrap: wrap;
.desc-group .desc-group
border: none; border: none;
@ -279,6 +298,7 @@ section.opentype
text-align: center; text-align: center;
white-space: nowrap; white-space: nowrap;
section.style-sets
> ol.wide > ol.wide
list-style: none; list-style: none;
margin: 0 -5em; margin: 0 -5em;

View file

@ -1,4 +1,4 @@
<section id="charvars" class="opentype char-vars"> <section id="charvars" class="char-vars">
<div class="hr">Character Variants</div> <div class="hr">Character Variants</div>
<ol class="narrow"> <ol class="narrow">
<%_ for(const group of cvData) { _%> <%_ for(const group of cvData) { _%>
@ -11,7 +11,7 @@
<%_ } else { _%> <%_ } else { _%>
<div class="sample"><%= group.descSampleText[0] %></div> <div class="sample"><%= group.descSampleText[0] %></div>
<%_ } _%> <%_ } _%>
<div class="triangle"></div> <div class="triangle"></div>
</div> </div>
<ol class="group"> <ol class="group">
<%_ for(const config of group.configs) if(config.tag) { _%> <%_ for(const config of group.configs) if(config.tag) { _%>

View file

@ -1,4 +1,4 @@
<section id="stylesets" class="opentype"> <section id="stylesets" class="style-sets">
<div class="hr">Stylistic Sets</div> <div class="hr">Stylistic Sets</div>
<ol class="wide"> <ol class="wide">
<%_ for(const gr of ssData) { _%> <%_ for(const gr of ssData) { _%>