diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5df4bee617..082953331d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,163 +1,34 @@
## Modifications since last major version
-### 27.3.5
-
-* Add italic form of CYRILLIC SMALL LETTER THREE-LEGGED TE (`U+1C85`).
-* Add top-right serif to fully serifed form for CYRILLIC SMALL LETTER TALL TE (`U+1C84`).
-* Fix serifs of GREEK LETTER DIGAMMA (`U+03DC`) under `ss12`.
-* Improve crossbar position of GREEK SMALL LETTER DIGAMMA (`U+03DD`) and add a middle serif under slab.
-* Refine Greek Capital Sho (U+03F7) glyph (#2079).
-* \[Experimental\] Add a font feature for texture control (#2081).
- - Currently only available through custom builds with `build-texture-feature = true`.
-* Make SYMBOL FOR DELETE FORM TWO (`U+2425`) narrow by default, align with other Control Pictures characters (#2084).
-* Make APL FUNCTIONAL SYMBOL CIRCLE STAR (`U+235F`) always be five-pointed and upright, to align its pentagram history (#2083).
-
-
-### 27.3.4
-
-* Disunify anonymous untagged variant selectors for Cyrillic Capital Yeri/Yery for consistency in style-driven configurations.
-* Make LATIN CAPITAL LETTER Y WITH LOOP (`U+1EFE`) follow variants of capital `Y` (`cv24`) for a more balanced slab-italic form like that of Cyrillic Capital U.
-* Remove `base-serifed`-only variants for CYRILLIC SMALL LETTER STRAIGHT U (`U+04AF`, `U+04B1`).
-* Make Etoile use `flat-bottom-serifed` for `M` and Cyrillic Lower Em (`cv13`, `cv74`).
-
-
-### 27.3.3
-
-* Make `cv96` take effect on math asterisk operators (#2066).
-* Fix serifs of italic small Yat in Etoile (#2067).
-* Add characters:
- - LEFTWARDS HARPOON WITH BARB UP TO BAR (`U+2952`) .. DOWNWARDS HARPOON WITH BARB LEFT FROM BAR (`U+2961`).
-
-
-### 27.3.2
-
-* Fix overlapping serifs of italic Yat (#2061).
-* Fix width of VERY MUCH GREATER-THAN (`U+22D9`).
-* Remove duplicate variants for `U+0181`, `U+018A`, `U+01A4`, and `U+2C64`.
-* Remove asymmetric variants for small capital `B` (`U+0299`, `U+1D03`) and Cyrillic Lower Ve (`U+0432`).
-
-
-### 27.3.1
-
-* Fix application of `cv39` on italic Cyrillic Yat.
-* Fix mark placement for `U+024F`.
-* Fix overlay placement of Tugrik Sign (U+20AE) under Etoile (#2060).
-
-
-### 27.3.0
-
-* Make the tailed variants of `i` and `l` use the fully-tailed shape even when upright, as is consistent with `t = bent-hook` (#1692).
- - The old, slightly-curly variants for `i`, `l`, iota (`ι`) and tau (`τ`) are moved to `semi-tailed` variants.
- - Corresponded SSes are changed to keep the shape identical to the old version.
-* Make Cyrillic Yat to follow Yeri variants. Italic Yat will also respond to variants of `n` (#2047).
-* Add short-tailed lowercase tau (`τ`) (#2050).
-* Fix tailed variants for `U+02A0`.
-* Stylistic set fixes:
- * Fix `cv44` and `cv99` for `ss13`.
- * Fix `cv48` and `cv54` for `ss17`.
- * Fix `cv51` for Etoile.
- * Fix `cv52` for `ss15` and Etoile.
- * Fix `cv58` for `ss15`.
- * Fix `cv59` for `ss07`.
- * Fix `cv61` for `ss15` and `ss17`.
- * Fix `cv66` for `ss01`, `ss06`, and `ss15`.
- * Fix `vsAF` for `ss11`.
- * Fix `vsAL` for `ss09` and `ss18`.
-
-
-### 27.2.1
-
-* Refine shape of flat `5` (#2030).
-* Fix `ss02`, `ss04`, `ss06`, `ss13`, `ss17`'s application on `i` and `j` (#2033).
-* Add tailed lower lambda (#2036).
-* Add Chancery and Semi-Chancery variants for lowercase `x` and Greek Chi (#2037).
-* Add `arrow-lr` ligation group for C-like's spaceship operators (#2041).
-* Add raised cap-height cent sign (`¢`) variants to `VSAM` (#2044).
-* Fix `cv02`, `cv04`, `cv05`, `cv06`, `cv11`, `cv12`, `cv15`, `cv17`, `cv18`, `cv25`, `cv28`, `cv43`, `cv70`, `cv71`, `cv81`, and `cv82` for `ss17` under slab.
-
-
-### 27.2.0
-
-* Add characters
- - TELEPHONE RECORDER (`U+2315`) (#2020).
- - COUNTERSINK (`U+2335`) (#2020).
- - BROKEN CIRCLE WITH NORTHWEST ARROW (`U+238B`) (#2020).
- - TRIPLE PLUS (`U+29FB`) (#2020).
-* Correction of letter assignments for stylistic styles:
- - Fix `cv10` and `cv30` for `ss14`.
- - Fix `cv12`, `cv36`, and `cv82` for `ss16`.
- - Fix `cv22`, `cv31`, `cv47`, and `cv91` for `ss07`.
- - Fix `cv26` for `ss07`, `ss14`, and `ss15`.
- - Fix `cv28`, `cv43`, and `cv70` for `ss01`, `ss04`, `ss05`, `ss06`, `ss07`, `ss13`, and `ss16`.
- - Fix `cv55` for `ss03`, `ss09`, `cv12`, and `ss14`.
- - Fix `cv53` and `cv84` for `ss10`.
- - Fix `cv58` for `ss06` and `ss10`.
- - Fix `cv59` for `ss09` and `ss18`.
- - Fix `cv61` for `ss08` and `ss20`.
- - Fix `cv62` for `ss01`.
- - Fix `cv63` for `ss02`, `ss05`, and `ss12`.
- - Fix `cv68` for `ss03`.
- - Fix `cv72` for `ss03`, `ss05`, `ss06`, `cv07`, and `ss13`.
- - Fix `cv77` for `ss03`, `ss04`, `ss06`, `ss07`, `ss08`, `ss12`, `ss13`, and `ss18`.
- - Fix `cv79` and `cv80` for `ss01`, `ss02`, `ss04`, `ss05`, `ss06`, `ss07`, `ss09`, `ss12`, `ss13`, `ss14`, `ss16`, `ss18`, and Aile.
- - Fix `cv88` for `ss18`.
- - Fix `vsAA` and `vsAM` for `ss06`.
- - Fix `vsAG` for `ss03` and Etoile.
-
-
-### 27.1.0
-
-* \[**Breaking**\] Change of variant names:
- - `five`.`vertical-upper-left-bar` → `five`.`upright-arched`
- - `five`.`oblique-upper-left-bar` → `five`.`oblique-arched`
-* Add characters:
- - CYRILLIC CAPITAL LETTER DCHE (`U+052C`) (#1897).
- - CYRILLIC SMALL LETTER DCHE (`U+052D`) (#1897).
-* Add separate variant selector `VXAA` for Cyrillic Lower Er (`р`) (#2006).
-* Add separate variant selector `VXAB` for Cyrillic Lower U (`у`) (#2006).
-* Add flat middle stroke variant for `5` (#1995).
-* Fix variants for Serbian Cyrillic Lower Pe (`п`).
-
-
-### 27.0.2
-
-* Add Characters
- - LATIN LETTER SMALL CAPITAL R WITH RIGHT LEG (`U+AB46`).
-* Add variants for Cyrillic lower Ef (`ф`) with a split bowl (#1992).
-* Add Bulgarian local variants for Cyrillic Ef (`Ф`,`ф`).
-* Fix serifs in `U+01A6`.
-* Improve serifs of Turn M (`U+019C`, `U+026F`) under quasi-proportional.
-* Make Turn h (`U+0265`) and Turn M with Long Leg (`U+0270`) follow serif variants of `u`.
-* Optimize geometry for `U+A65A` and `U+A65B` under extended width.
-* Fix assignment of `8` for `ss14` (#1999).
-
-
-### 27.0.1
-
-* Add Characters
- - VERY MUCH LESS-THAN (`U+22D8`) (#1990).
- - VERY MUCH GREATER-THAN (`U+22D9`) (#1990).
-
-
-### 27.0.0
-
-* \[**Breaking**\] Variants for `π`, `τ` and `«` are inserted into the main tag sequence. As a consequence, variant features after them have the tags changed.
-* \[**Breaking**\] Reordered variants of Eszet.
-* \[**Breaking**\] Change of variant names:
- - `upper-r`.`straight-motion-serifed` → `upper-r`.`straight-top-left-serifed`
- - `upper-r`.`curly-motion-serifed` → `upper-r`.`curly-top-left-serifed`
- - `upper-r`.`standing-motion-serifed` → `upper-r`.`standing-top-left-serifed`
- - `upper-r`.`straight-open-motion-serifed` → `upper-r`.`straight-open-top-left-serifed`
- - `upper-r`.`curly-open-motion-serifed` → `upper-r`.`curly-open-top-left-serifed`
- - `upper-r`.`standing-open-motion-serifed` → `upper-r`.`standing-open-top-left-serifed`
-* Add characters:
- - COMBINING RING OVERLAY (`U+20D8`).
-* Add bottom-right and top-left bottom-right serifed variants of `R`.
-* Add bottom-left motion serifed variants of Cyrillic Ya (`Я`,`я`).
-* Add cursive variants for Cyrillic Capital/Small Zhe (`Ж`,`ж`) (#1762).
-* Allow R Rotunda (`U+A75A`, `U+A75B`) and Indian Rupee Sign (`U+20B9`) to have a bottom-right serif.
-* Add OpenType `zero` feature (#1966).
-* Fix broken geometry of `U+AB3A` under condensed width.
-* Improve bowl shape of Latin Phi (`U+0278`).
-* Fix dot radius of COMBINING THREE DOTS ABOVE (`U+20DB`), COMBINING FOUR DOTS ABOVE (`U+20DC`), and COMBINING TRIPLE UNDERDOT (`U+20D8`).
+### 28.0.0-alpha.1
+
+* \[**BREAKING**\] The filenames and package filenames are changed.
+ - They will now use PascalCase instead of kebab-case.
+ - To package manager maintainers: Please upgrade your script to make it capable to download and install the fonts under new names, and properly uninstall the fonts under old names.
+* \[**BREAKING**\] Certain properties in the build plans are changed to camelCase. Using them will trigger a build failure.
+ - `no-cv-ss` → `noCvSs`
+ - `no-ligation` → `noLigation`
+ - `export-glyph-names` → `exportGlyphNames`
+ - `build-texture-feature` → `buildTextureFeature`
+ - `metric-override` → `metricOverride`
+ - `compatibility-ligatures` → `compatibilityLigatures`
+ - `exclude-chars` → `excludeChars`
+ - `webfont-formats` → `webfontFormats`
+* \[**BREAKING**\] The "SGr" TTC packages for Iosevka Aile and Etoile will no longer be generated, as they are duplicates to the non-SGr TTC packages.
+* \[**BREAKING**\] Reorder of glyph variants:
+ - Influenced characters: `M`, `R`, `f`, `t`, `x`, Long S (`ſ`), Lower Lambda (`λ`), Lower Tau (`τ`), Lower Chi (`χ`), Cyrillic Lower Em (`м`), Cyrillic Lower Ef (`ф`), Cyrillic Ya (`Я`, `я`), `5`.
+* \[**BREAKING**\] Tags for variant features for Cyrillic lowercase Er and U are changed to `cv76` and `cv78`.
+ - Various other glyph variant tags are also changed to reflect this insertion.
+* Add Characters:
+ - CYRILLIC CAPITAL LETTER LHA (`U+0514`) ... CYRILLIC SMALL LETTER YAE (`U+0519`) (#2018).
+ - GEORGIAN PARAGRAPH SEPARATOR (`U+10FB`).
+ - COMBINING BREVE-MACRON (`U+1DCB`) ... COMBINING MACRON-BREVE (`U+1DCC`) (#1880).
+ - COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE (`U+1DD3`).
+ - LINE SEPARATOR (`U+2028`) ... PARAGRAPH SEPARATOR (`U+2029`).
+ - RAISED SQUARE (`U+2E0B`).
+ - HYPODIASTOLE (`U+2E12`).
+ - TWO DOTS OVER ONE DOT PUNCTUATION (`U+2E2A`) ... FIVE DOT MARK (`U+2E2D`).
+* Add hook-inward-serifed variants for `a` (#2085).
+* Remove earless-rounded variants for `U+01A5`, `U+0256`, `U+02A0`, and `U+1D91`.
+* Remove earless-corner variants for `U+027E`.
diff --git a/build-plans.toml b/build-plans.toml
index f545dbe5fb..52e81a9c96 100644
--- a/build-plans.toml
+++ b/build-plans.toml
@@ -4,684 +4,684 @@ optimizeWithTtx = false
# Building plans
# Sans
-[buildPlans.iosevka]
+[buildPlans.Iosevka]
family = "Iosevka"
desc = "Default"
buildCharMap = true
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 0}
-export-glyph-names = true
+exportGlyphNames = true
-[buildPlans.iosevka-term]
+[buildPlans.IosevkaTerm]
family = "Iosevka Term"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1}
-export-glyph-names = true
+exportGlyphNames = true
-[buildPlans.iosevka-fixed]
+[buildPlans.IosevkaFixed]
family = "Iosevka Fixed"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1}
-export-glyph-names = true
+exportGlyphNames = true
# Slab
-[buildPlans.iosevka-slab]
+[buildPlans.IosevkaSlab]
family = "Iosevka Slab"
desc = "Slab-serif"
serifs = "slab"
snapshotFamily = 'Iosevka Slab'
snapshotFeature = {"NWID" = 0}
-export-glyph-names = true
+exportGlyphNames = true
-[buildPlans.iosevka-term-slab]
+[buildPlans.IosevkaTermSlab]
family = "Iosevka Term Slab"
serifs = "slab"
spacing = "term"
snapshotFamily = 'Iosevka Slab'
snapshotFeature = {"NWID" = 1}
-export-glyph-names = true
+exportGlyphNames = true
-[buildPlans.iosevka-fixed-slab]
+[buildPlans.IosevkaFixedSlab]
family = "Iosevka Fixed Slab"
serifs = "slab"
spacing = "fixed"
snapshotFamily = 'Iosevka Slab'
snapshotFeature = {"NWID" = 1}
-export-glyph-names = true
+exportGlyphNames = true
# Curly
-[buildPlans.iosevka-curly]
+[buildPlans.IosevkaCurly]
family = "Iosevka Curly"
desc = "Curly Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss20" = 1}
-export-glyph-names = true
-[buildPlans.iosevka-curly.variants]
+exportGlyphNames = true
+[buildPlans.IosevkaCurly.variants]
inherits = "ss20"
-[buildPlans.iosevka-term-curly]
+[buildPlans.IosevkaTermCurly]
family = "Iosevka Term Curly"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss20" = 1}
-export-glyph-names = true
-[buildPlans.iosevka-term-curly.variants]
+exportGlyphNames = true
+[buildPlans.IosevkaTermCurly.variants]
inherits = "ss20"
-[buildPlans.iosevka-fixed-curly]
+[buildPlans.IosevkaFixedCurly]
family = "Iosevka Fixed Curly"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss20" = 1}
-export-glyph-names = true
-[buildPlans.iosevka-fixed-curly.variants]
+exportGlyphNames = true
+[buildPlans.IosevkaFixedCurly.variants]
inherits = "ss20"
# Curly Slab
-[buildPlans.iosevka-curly-slab]
+[buildPlans.IosevkaCurlySlab]
family = "Iosevka Curly Slab"
desc = "Curly Style, Slab-serif"
serifs = "slab"
snapshotFamily = 'Iosevka Slab'
snapshotFeature = {"ss20" = 1}
-export-glyph-names = true
-[buildPlans.iosevka-curly-slab.variants]
+exportGlyphNames = true
+[buildPlans.IosevkaCurlySlab.variants]
inherits = "ss20"
-[buildPlans.iosevka-term-curly-slab]
+[buildPlans.IosevkaTermCurlySlab]
family = "Iosevka Term Curly Slab"
serifs = "slab"
spacing = "term"
snapshotFamily = 'Iosevka Slab'
snapshotFeature = {"NWID" = 1, "ss20" = 1}
-export-glyph-names = true
-[buildPlans.iosevka-term-curly-slab.variants]
+exportGlyphNames = true
+[buildPlans.IosevkaTermCurlySlab.variants]
inherits = "ss20"
-[buildPlans.iosevka-fixed-curly-slab]
+[buildPlans.IosevkaFixedCurlySlab]
family = "Iosevka Fixed Curly Slab"
serifs = "slab"
spacing = "fixed"
snapshotFamily = 'Iosevka Slab'
snapshotFeature = {"NWID" = 1, "ss20" = 1}
-export-glyph-names = true
-[buildPlans.iosevka-fixed-curly-slab.variants]
+exportGlyphNames = true
+[buildPlans.IosevkaFixedCurlySlab.variants]
inherits = "ss20"
###################################################################################################
# SSxx
-[buildPlans.iosevka-ss01]
+[buildPlans.IosevkaSS01]
family = "Iosevka SS01"
desc = "Andale Mono Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss01" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss01.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS01.variants]
inherits = "ss01"
-[buildPlans.iosevka-term-ss01]
+[buildPlans.IosevkaTermSS01]
family = "Iosevka Term SS01"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss01" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss01.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS01.variants]
inherits = "ss01"
-[buildPlans.iosevka-fixed-ss01]
+[buildPlans.IosevkaFixedSS01]
family = "Iosevka Fixed SS01"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss01" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss01.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS01.variants]
inherits = "ss01"
-[buildPlans.iosevka-ss02]
+[buildPlans.IosevkaSS02]
family = "Iosevka SS02"
desc = "Anonymous Pro Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss02" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss02.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS02.variants]
inherits = "ss02"
-[buildPlans.iosevka-term-ss02]
+[buildPlans.IosevkaTermSS02]
family = "Iosevka Term SS02"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss02" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss02.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS02.variants]
inherits = "ss02"
-[buildPlans.iosevka-fixed-ss02]
+[buildPlans.IosevkaFixedSS02]
family = "Iosevka Fixed SS02"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss02" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss02.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS02.variants]
inherits = "ss02"
-[buildPlans.iosevka-ss03]
+[buildPlans.IosevkaSS03]
family = "Iosevka SS03"
desc = "Consolas Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss03" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss03.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS03.variants]
inherits = "ss03"
-[buildPlans.iosevka-term-ss03]
+[buildPlans.IosevkaTermSS03]
family = "Iosevka Term SS03"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss03" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss03.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS03.variants]
inherits = "ss03"
-[buildPlans.iosevka-fixed-ss03]
+[buildPlans.IosevkaFixedSS03]
family = "Iosevka Fixed SS03"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss03" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss03.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS03.variants]
inherits = "ss03"
-[buildPlans.iosevka-ss04]
+[buildPlans.IosevkaSS04]
family = "Iosevka SS04"
desc = "Menlo Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss04" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss04.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS04.variants]
inherits = "ss04"
-[buildPlans.iosevka-term-ss04]
+[buildPlans.IosevkaTermSS04]
family = "Iosevka Term SS04"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss04" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss04.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS04.variants]
inherits = "ss04"
-[buildPlans.iosevka-fixed-ss04]
+[buildPlans.IosevkaFixedSS04]
family = "Iosevka Fixed SS04"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss04" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss04.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS04.variants]
inherits = "ss04"
-[buildPlans.iosevka-ss05]
+[buildPlans.IosevkaSS05]
family = "Iosevka SS05"
desc = "Fira Mono Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss05" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss05.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS05.variants]
inherits = "ss05"
-[buildPlans.iosevka-term-ss05]
+[buildPlans.IosevkaTermSS05]
family = "Iosevka Term SS05"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss05" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss05.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS05.variants]
inherits = "ss05"
-[buildPlans.iosevka-fixed-ss05]
+[buildPlans.IosevkaFixedSS05]
family = "Iosevka Fixed SS05"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss05" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss05.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS05.variants]
inherits = "ss05"
-[buildPlans.iosevka-ss06]
+[buildPlans.IosevkaSS06]
family = "Iosevka SS06"
desc = "Liberation Mono Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss06" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss06.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS06.variants]
inherits = "ss06"
-[buildPlans.iosevka-term-ss06]
+[buildPlans.IosevkaTermSS06]
family = "Iosevka Term SS06"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss06" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss06.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS06.variants]
inherits = "ss06"
-[buildPlans.iosevka-fixed-ss06]
+[buildPlans.IosevkaFixedSS06]
family = "Iosevka Fixed SS06"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss06" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss06.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS06.variants]
inherits = "ss06"
-[buildPlans.iosevka-ss07]
+[buildPlans.IosevkaSS07]
family = "Iosevka SS07"
desc = "Monaco Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss07" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss07.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS07.variants]
inherits = "ss07"
-[buildPlans.iosevka-term-ss07]
+[buildPlans.IosevkaTermSS07]
family = "Iosevka Term SS07"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss07" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss07.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS07.variants]
inherits = "ss07"
-[buildPlans.iosevka-fixed-ss07]
+[buildPlans.IosevkaFixedSS07]
family = "Iosevka Fixed SS07"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss07" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss07.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS07.variants]
inherits = "ss07"
-[buildPlans.iosevka-ss08]
+[buildPlans.IosevkaSS08]
family = "Iosevka SS08"
desc = "Pragmata Pro Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss08" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss08.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS08.variants]
inherits = "ss08"
-[buildPlans.iosevka-term-ss08]
+[buildPlans.IosevkaTermSS08]
family = "Iosevka Term SS08"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss08" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss08.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS08.variants]
inherits = "ss08"
-[buildPlans.iosevka-fixed-ss08]
+[buildPlans.IosevkaFixedSS08]
family = "Iosevka Fixed SS08"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss08" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss08.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS08.variants]
inherits = "ss08"
-[buildPlans.iosevka-ss09]
+[buildPlans.IosevkaSS09]
family = "Iosevka SS09"
desc = "Source Code Pro Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss09" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss09.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS09.variants]
inherits = "ss09"
-[buildPlans.iosevka-term-ss09]
+[buildPlans.IosevkaTermSS09]
family = "Iosevka Term SS09"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss09" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss09.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS09.variants]
inherits = "ss09"
-[buildPlans.iosevka-fixed-ss09]
+[buildPlans.IosevkaFixedSS09]
family = "Iosevka Fixed SS09"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss09" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss09.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS09.variants]
inherits = "ss09"
-[buildPlans.iosevka-ss10]
+[buildPlans.IosevkaSS10]
family = "Iosevka SS10"
desc = "Envy Code R Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss10" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss10.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS10.variants]
inherits = "ss10"
-[buildPlans.iosevka-term-ss10]
+[buildPlans.IosevkaTermSS10]
family = "Iosevka Term SS10"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss10" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss10.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS10.variants]
inherits = "ss10"
-[buildPlans.iosevka-fixed-ss10]
+[buildPlans.IosevkaFixedSS10]
family = "Iosevka Fixed SS10"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss10" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss10.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS10.variants]
inherits = "ss10"
-[buildPlans.iosevka-ss11]
+[buildPlans.IosevkaSS11]
family = "Iosevka SS11"
desc = "X Windows Fixed Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss11" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss11.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS11.variants]
inherits = "ss11"
-[buildPlans.iosevka-term-ss11]
+[buildPlans.IosevkaTermSS11]
family = "Iosevka Term SS11"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss11" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss11.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS11.variants]
inherits = "ss11"
-[buildPlans.iosevka-fixed-ss11]
+[buildPlans.IosevkaFixedSS11]
family = "Iosevka Fixed SS11"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss11" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss11.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS11.variants]
inherits = "ss11"
-[buildPlans.iosevka-ss12]
+[buildPlans.IosevkaSS12]
family = "Iosevka SS12"
desc = "Ubuntu Mono Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss12" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss12.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS12.variants]
inherits = "ss12"
-[buildPlans.iosevka-term-ss12]
+[buildPlans.IosevkaTermSS12]
family = "Iosevka Term SS12"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss12" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss12.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS12.variants]
inherits = "ss12"
-[buildPlans.iosevka-fixed-ss12]
+[buildPlans.IosevkaFixedSS12]
family = "Iosevka Fixed SS12"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss12" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss12.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS12.variants]
inherits = "ss12"
-[buildPlans.iosevka-ss13]
+[buildPlans.IosevkaSS13]
family = "Iosevka SS13"
desc = "Lucida Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss13" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss13.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS13.variants]
inherits = "ss13"
-[buildPlans.iosevka-term-ss13]
+[buildPlans.IosevkaTermSS13]
family = "Iosevka Term SS13"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss13" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss13.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS13.variants]
inherits = "ss13"
-[buildPlans.iosevka-fixed-ss13]
+[buildPlans.IosevkaFixedSS13]
family = "Iosevka Fixed SS13"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss13" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss13.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS13.variants]
inherits = "ss13"
-[buildPlans.iosevka-ss14]
+[buildPlans.IosevkaSS14]
family = "Iosevka SS14"
desc = "JetBrains Mono Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss14" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss14.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS14.variants]
inherits = "ss14"
-[buildPlans.iosevka-term-ss14]
+[buildPlans.IosevkaTermSS14]
family = "Iosevka Term SS14"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss14" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss14.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS14.variants]
inherits = "ss14"
-[buildPlans.iosevka-fixed-ss14]
+[buildPlans.IosevkaFixedSS14]
family = "Iosevka Fixed SS14"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss14" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss14.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS14.variants]
inherits = "ss14"
-[buildPlans.iosevka-ss15]
+[buildPlans.IosevkaSS15]
family = "Iosevka SS15"
desc = "IBM Plex Mono Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss15" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss15.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS15.variants]
inherits = "ss15"
-[buildPlans.iosevka-term-ss15]
+[buildPlans.IosevkaTermSS15]
family = "Iosevka Term SS15"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss15" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss15.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS15.variants]
inherits = "ss15"
-[buildPlans.iosevka-fixed-ss15]
+[buildPlans.IosevkaFixedSS15]
family = "Iosevka Fixed SS15"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss15" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss15.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS15.variants]
inherits = "ss15"
-[buildPlans.iosevka-ss16]
+[buildPlans.IosevkaSS16]
family = "Iosevka SS16"
desc = "PT Mono Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss16" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss16.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS16.variants]
inherits = "ss16"
-[buildPlans.iosevka-term-ss16]
+[buildPlans.IosevkaTermSS16]
family = "Iosevka Term SS16"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss16" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss16.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS16.variants]
inherits = "ss16"
-[buildPlans.iosevka-fixed-ss16]
+[buildPlans.IosevkaFixedSS16]
family = "Iosevka Fixed SS16"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss16" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss16.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS16.variants]
inherits = "ss16"
-[buildPlans.iosevka-ss17]
+[buildPlans.IosevkaSS17]
family = "Iosevka SS17"
desc = "Recursive Mono Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss17" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss17.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS17.variants]
inherits = "ss17"
-[buildPlans.iosevka-term-ss17]
+[buildPlans.IosevkaTermSS17]
family = "Iosevka Term SS17"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss17" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss17.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS17.variants]
inherits = "ss17"
-[buildPlans.iosevka-fixed-ss17]
+[buildPlans.IosevkaFixedSS17]
family = "Iosevka Fixed SS17"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss17" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss17.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS17.variants]
inherits = "ss17"
-[buildPlans.iosevka-ss18]
+[buildPlans.IosevkaSS18]
family = "Iosevka SS18"
desc = "Input Mono Style"
snapshotFamily = 'Iosevka'
snapshotFeature = {"ss18" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-ss18.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaSS18.variants]
inherits = "ss18"
-[buildPlans.iosevka-term-ss18]
+[buildPlans.IosevkaTermSS18]
family = "Iosevka Term SS18"
spacing = "term"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss18" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-term-ss18.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaTermSS18.variants]
inherits = "ss18"
-[buildPlans.iosevka-fixed-ss18]
+[buildPlans.IosevkaFixedSS18]
family = "Iosevka Fixed SS18"
spacing = "fixed"
snapshotFamily = 'Iosevka'
snapshotFeature = {"NWID" = 1, "ss18" = 1}
-export-glyph-names = true
-no-cv-ss = true
-[buildPlans.iosevka-fixed-ss18.variants]
+exportGlyphNames = true
+noCvSs = true
+[buildPlans.IosevkaFixedSS18.variants]
inherits = "ss18"
###################################################################################################
# Proportional families
-[buildPlans.iosevka-aile]
+[buildPlans.IosevkaAile]
family = "Iosevka Aile"
desc = "Sans-serif"
spacing = "quasi-proportional"
snapshotFamily = 'Iosevka Aile'
snapshotFeature = {"NWID" = 0}
-export-glyph-names = true
+exportGlyphNames = true
-[buildPlans.iosevka-aile.variants.design]
+[buildPlans.IosevkaAile.variants.design]
capital-i = "serifless"
capital-j = "serifless"
capital-k = "straight-serifless"
@@ -719,7 +719,7 @@ percent = "rings-continuous-slash"
micro-sign = "toothed-serifless"
# Letterform control for U+1D670 ... U+1D6A3
-[buildPlans.iosevka-aile.derivingVariants.mathtt.design]
+[buildPlans.IosevkaAile.derivingVariants.mathtt.design]
capital-i = "serifed"
capital-j = "serifless"
capital-k = "straight-serifless"
@@ -756,23 +756,23 @@ at = "fourfold"
percent = "rings-continuous-slash"
micro-sign = "toothed-serifless"
-[buildPlans.iosevka-aile.widths.normal]
+[buildPlans.IosevkaAile.widths.Normal]
shape = 600
menu = 5
css = "normal"
-[buildPlans.iosevka-etoile]
+[buildPlans.IosevkaEtoile]
family = "Iosevka Etoile"
desc = "Slab-serif"
spacing = "quasi-proportional"
serifs = 'slab'
snapshotFamily = 'Iosevka Etoile'
snapshotFeature = {"NWID" = 0}
-export-glyph-names = true
+exportGlyphNames = true
-[buildPlans.iosevka-etoile.variants.design]
+[buildPlans.IosevkaEtoile.variants.design]
capital-m = "flat-bottom-serifed"
capital-w = "straight-flat-top-serifed"
f = "flat-hook-serifed"
@@ -789,7 +789,7 @@ cyrl-em = "flat-bottom-serifed"
at = "fourfold"
percent = "rings-continuous-slash"
-[buildPlans.iosevka-etoile.variants.italic]
+[buildPlans.IosevkaEtoile.variants.italic]
f = "flat-hook-tailed"
i = "serifed-flat-tailed"
l = "serifed-flat-tailed"
@@ -797,75 +797,75 @@ w = "straight-flat-top-motion-serifed"
long-s = "flat-hook-tailed"
eszet = "longs-s-lig-tailed-serifless"
-[buildPlans.iosevka-etoile.widths.normal]
+[buildPlans.IosevkaEtoile.widths.Normal]
shape = 600
menu = 5
css = "normal"
-[buildPlans.iosevka-QP]
+[buildPlans.IosevkaQp]
family = "Iosevka QP"
desc = "Customizer Preview Only Quasi-proportional Sans"
spacing = "quasi-proportional"
-export-glyph-names = false
+exportGlyphNames = false
-[buildPlans.iosevka-QP.weights.regular]
+[buildPlans.IosevkaQp.weights.regular]
shape = 400
menu = 400
css = 400
-[buildPlans.iosevka-QP.weights.bold]
+[buildPlans.IosevkaQp.weights.bold]
shape = 700
menu = 700
css = 700
-[buildPlans.iosevka-QP-slab]
+[buildPlans.IosevkaQpSlab]
family = "Iosevka QP Slab"
desc = "Customizer Preview Only Quasi-proportional Slab"
serifs = 'slab'
spacing = "quasi-proportional"
-export-glyph-names = false
+exportGlyphNames = false
-[buildPlans.iosevka-QP-slab.weights.regular]
+[buildPlans.IosevkaQpSlab.weights.regular]
shape = 400
menu = 400
css = 400
-[buildPlans.iosevka-QP-slab.weights.bold]
+[buildPlans.IosevkaQpSlab.weights.bold]
shape = 700
menu = 700
css = 700
-[buildPlans.iosevka-QPE]
+[buildPlans.IosevkaQpe]
family = "Iosevka QPE"
desc = "Customizer Preview Only Quasi-proportional-extension-only Sans"
spacing = "quasi-proportional-extension-only"
-export-glyph-names = false
+exportGlyphNames = false
-[buildPlans.iosevka-QPE.weights.regular]
+[buildPlans.IosevkaQpe.weights.regular]
shape = 400
menu = 400
css = 400
-[buildPlans.iosevka-QPE.weights.bold]
+[buildPlans.IosevkaQpe.weights.bold]
shape = 700
menu = 700
css = 700
-[buildPlans.iosevka-QPE-slab]
+[buildPlans.IosevkaQpeSlab]
family = "Iosevka QPE Slab"
desc = "Customizer Preview Only Quasi-proportional-extension-only Slab"
serifs = 'slab'
spacing = "quasi-proportional-extension-only"
-export-glyph-names = false
+exportGlyphNames = false
-[buildPlans.iosevka-QPE-slab.weights.regular]
+[buildPlans.IosevkaQpeSlab.weights.regular]
shape = 400
menu = 400
css = 400
-[buildPlans.iosevka-QPE-slab.weights.bold]
+[buildPlans.IosevkaQpeSlab.weights.bold]
shape = 700
menu = 700
css = 700
@@ -873,189 +873,189 @@ css = 700
###################################################################################################
# Collect plans
-[collectPlans.iosevka]
+[collectPlans.Iosevka]
release = true
from = [
- "iosevka",
- "iosevka-term",
- "iosevka-fixed"
+ "Iosevka",
+ "IosevkaTerm",
+ "IosevkaFixed"
]
-[collectPlans.iosevka-slab]
+[collectPlans.IosevkaSlab]
release = true
from = [
- "iosevka-slab",
- "iosevka-term-slab",
- "iosevka-fixed-slab"
+ "IosevkaSlab",
+ "IosevkaTermSlab",
+ "IosevkaFixedSlab"
]
-[collectPlans.iosevka-curly]
+[collectPlans.IosevkaCurly]
release = true
from = [
- "iosevka-curly",
- "iosevka-term-curly",
- "iosevka-fixed-curly"
+ "IosevkaCurly",
+ "IosevkaTermCurly",
+ "IosevkaFixedCurly"
]
-[collectPlans.iosevka-curly-slab]
+[collectPlans.IosevkaCurlySlab]
release = true
from = [
- "iosevka-curly-slab",
- "iosevka-term-curly-slab",
- "iosevka-fixed-curly-slab"
+ "IosevkaCurlySlab",
+ "IosevkaTermCurlySlab",
+ "IosevkaFixedCurlySlab"
]
-[collectPlans.iosevka-ss01]
+[collectPlans.IosevkaSS01]
release = true
from = [
- "iosevka-ss01",
- "iosevka-term-ss01",
- "iosevka-fixed-ss01"
+ "IosevkaSS01",
+ "IosevkaTermSS01",
+ "IosevkaFixedSS01"
]
-[collectPlans.iosevka-ss02]
+[collectPlans.IosevkaSS02]
release = true
from = [
- "iosevka-ss02",
- "iosevka-term-ss02",
- "iosevka-fixed-ss02"
+ "IosevkaSS02",
+ "IosevkaTermSS02",
+ "IosevkaFixedSS02"
]
-[collectPlans.iosevka-ss03]
+[collectPlans.IosevkaSS03]
release = true
from = [
- "iosevka-ss03",
- "iosevka-term-ss03",
- "iosevka-fixed-ss03"
+ "IosevkaSS03",
+ "IosevkaTermSS03",
+ "IosevkaFixedSS03"
]
-[collectPlans.iosevka-ss04]
+[collectPlans.IosevkaSS04]
release = true
from = [
- "iosevka-ss04",
- "iosevka-term-ss04",
- "iosevka-fixed-ss04"
+ "IosevkaSS04",
+ "IosevkaTermSS04",
+ "IosevkaFixedSS04"
]
-[collectPlans.iosevka-ss05]
+[collectPlans.IosevkaSS05]
release = true
from = [
- "iosevka-ss05",
- "iosevka-term-ss05",
- "iosevka-fixed-ss05"
+ "IosevkaSS05",
+ "IosevkaTermSS05",
+ "IosevkaFixedSS05"
]
-[collectPlans.iosevka-ss06]
+[collectPlans.IosevkaSS06]
release = true
from = [
- "iosevka-ss06",
- "iosevka-term-ss06",
- "iosevka-fixed-ss06"
+ "IosevkaSS06",
+ "IosevkaTermSS06",
+ "IosevkaFixedSS06"
]
-[collectPlans.iosevka-ss07]
+[collectPlans.IosevkaSS07]
release = true
from = [
- "iosevka-ss07",
- "iosevka-term-ss07",
- "iosevka-fixed-ss07"
+ "IosevkaSS07",
+ "IosevkaTermSS07",
+ "IosevkaFixedSS07"
]
-[collectPlans.iosevka-ss08]
+[collectPlans.IosevkaSS08]
release = true
from = [
- "iosevka-ss08",
- "iosevka-term-ss08",
- "iosevka-fixed-ss08"
+ "IosevkaSS08",
+ "IosevkaTermSS08",
+ "IosevkaFixedSS08"
]
-[collectPlans.iosevka-ss09]
+[collectPlans.IosevkaSS09]
release = true
from = [
- "iosevka-ss09",
- "iosevka-term-ss09",
- "iosevka-fixed-ss09"
+ "IosevkaSS09",
+ "IosevkaTermSS09",
+ "IosevkaFixedSS09"
]
-[collectPlans.iosevka-ss10]
+[collectPlans.IosevkaSS10]
release = true
from = [
- "iosevka-ss10",
- "iosevka-term-ss10",
- "iosevka-fixed-ss10"
+ "IosevkaSS10",
+ "IosevkaTermSS10",
+ "IosevkaFixedSS10"
]
-[collectPlans.iosevka-ss11]
+[collectPlans.IosevkaSS11]
release = true
from = [
- "iosevka-ss11",
- "iosevka-term-ss11",
- "iosevka-fixed-ss11"
+ "IosevkaSS11",
+ "IosevkaTermSS11",
+ "IosevkaFixedSS11"
]
-[collectPlans.iosevka-ss12]
+[collectPlans.IosevkaSS12]
release = true
from = [
- "iosevka-ss12",
- "iosevka-term-ss12",
- "iosevka-fixed-ss12"
+ "IosevkaSS12",
+ "IosevkaTermSS12",
+ "IosevkaFixedSS12"
]
-[collectPlans.iosevka-ss13]
+[collectPlans.IosevkaSS13]
release = true
from = [
- "iosevka-ss13",
- "iosevka-term-ss13",
- "iosevka-fixed-ss13"
+ "IosevkaSS13",
+ "IosevkaTermSS13",
+ "IosevkaFixedSS13"
]
-[collectPlans.iosevka-ss14]
+[collectPlans.IosevkaSS14]
release = true
from = [
- "iosevka-ss14",
- "iosevka-term-ss14",
- "iosevka-fixed-ss14"
+ "IosevkaSS14",
+ "IosevkaTermSS14",
+ "IosevkaFixedSS14"
]
-[collectPlans.iosevka-ss15]
+[collectPlans.IosevkaSS15]
release = true
from = [
- "iosevka-ss15",
- "iosevka-term-ss15",
- "iosevka-fixed-ss15"
+ "IosevkaSS15",
+ "IosevkaTermSS15",
+ "IosevkaFixedSS15"
]
-[collectPlans.iosevka-ss16]
+[collectPlans.IosevkaSS16]
release = true
from = [
- "iosevka-ss16",
- "iosevka-term-ss16",
- "iosevka-fixed-ss16"
+ "IosevkaSS16",
+ "IosevkaTermSS16",
+ "IosevkaFixedSS16"
]
-[collectPlans.iosevka-ss17]
+[collectPlans.IosevkaSS17]
release = true
from = [
- "iosevka-ss17",
- "iosevka-term-ss17",
- "iosevka-fixed-ss17"
+ "IosevkaSS17",
+ "IosevkaTermSS17",
+ "IosevkaFixedSS17"
]
-[collectPlans.iosevka-ss18]
+[collectPlans.IosevkaSS18]
release = true
from = [
- "iosevka-ss18",
- "iosevka-term-ss18",
- "iosevka-fixed-ss18"
+ "IosevkaSS18",
+ "IosevkaTermSS18",
+ "IosevkaFixedSS18"
]
-[collectPlans.iosevka-aile]
+[collectPlans.IosevkaAile]
release = true
-from = ["iosevka-aile"]
+from = ["IosevkaAile"]
-[collectPlans.iosevka-etoile]
+[collectPlans.IosevkaEtoile]
release = true
-from = ["iosevka-etoile"]
+from = ["IosevkaEtoile"]
###################################################################################################
# Weight mappings (style => shape weight, menu weight, CSS weight)
@@ -1065,65 +1065,65 @@ from = ["iosevka-etoile"]
# IMPORTANT : Currently "menu" property only support 100, 200, 300, 350, 400, 450, 500, 600, 700,
# 800, 900, and "shape" properly only supports number between 100 and 900 (inclusive).
-[weights.thin]
+[weights.Thin]
shape = 100
menu = 100
css = 100
-[weights.extralight]
+[weights.ExtraLight]
shape = 200
menu = 200
css = 200
-[weights.light]
+[weights.Light]
shape = 300
menu = 300
css = 300
-[weights.regular]
+[weights.Regular]
shape = 400
menu = 400
css = 400
-[weights.medium]
+[weights.Medium]
shape = 500
menu = 500
css = 500
-[weights.semibold]
+[weights.SemiBold]
shape = 600
menu = 600
css = 600
-[weights.bold]
+[weights.Bold]
shape = 700
menu = 700
css = 700
-[weights.extrabold]
+[weights.ExtraBold]
shape = 800
menu = 800
css = 800
-[weights.heavy]
+[weights.Heavy]
shape = 900
menu = 900
css = 900
# slope mappings (style => slope angle, shape slope grade, menu slope, CSS slope)
-[slopes.upright]
+[slopes.Upright]
angle = 0
shape = "upright"
menu = "upright"
css = "normal"
-[slopes.oblique]
+[slopes.Oblique]
angle = 9.4
shape = "oblique"
menu = "oblique"
css = "oblique"
-[slopes.italic]
+[slopes.Italic]
angle = 9.4
shape = "italic"
menu = "italic"
@@ -1137,12 +1137,12 @@ css = "italic"
# IMPORTANT : Currently "shape" property only support 3 ... 9
# and "menu" only support 1 ... 9
-[widths.normal]
+[widths.Normal]
shape = 500
menu = 5
css = "normal"
-[widths.extended]
+[widths.Extended]
shape = 600
menu = 7
css = "expanded"
diff --git a/changes/28.0.0-alpha.1.md b/changes/28.0.0-alpha.1.md
new file mode 100644
index 0000000000..96dcc366fe
--- /dev/null
+++ b/changes/28.0.0-alpha.1.md
@@ -0,0 +1,29 @@
+* \[**BREAKING**\] The filenames and package filenames are changed.
+ - They will now use PascalCase instead of kebab-case.
+ - To package manager maintainers: Please upgrade your script to make it capable to download and install the fonts under new names, and properly uninstall the fonts under old names.
+* \[**BREAKING**\] Certain properties in the build plans are changed to camelCase. Using them will trigger a build failure.
+ - `no-cv-ss` → `noCvSs`
+ - `no-ligation` → `noLigation`
+ - `export-glyph-names` → `exportGlyphNames`
+ - `build-texture-feature` → `buildTextureFeature`
+ - `metric-override` → `metricOverride`
+ - `compatibility-ligatures` → `compatibilityLigatures`
+ - `exclude-chars` → `excludeChars`
+ - `webfont-formats` → `webfontFormats`
+* \[**BREAKING**\] The "SGr" TTC packages for Iosevka Aile and Etoile will no longer be generated, as they are duplicates to the non-SGr TTC packages.
+* \[**BREAKING**\] Reorder of glyph variants:
+ - Influenced characters: `M`, `R`, `f`, `t`, `x`, Long S (`ſ`), Lower Lambda (`λ`), Lower Tau (`τ`), Lower Chi (`χ`), Cyrillic Lower Em (`м`), Cyrillic Lower Ef (`ф`), Cyrillic Ya (`Я`, `я`), `5`.
+* \[**BREAKING**\] Tags for variant features for Cyrillic lowercase Er and U are changed to `cv76` and `cv78`.
+ - Various other glyph variant tags are also changed to reflect this insertion.
+* Add Characters:
+ - CYRILLIC CAPITAL LETTER LHA (`U+0514`) ... CYRILLIC SMALL LETTER YAE (`U+0519`) (#2018).
+ - GEORGIAN PARAGRAPH SEPARATOR (`U+10FB`).
+ - COMBINING BREVE-MACRON (`U+1DCB`) ... COMBINING MACRON-BREVE (`U+1DCC`) (#1880).
+ - COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE (`U+1DD3`).
+ - LINE SEPARATOR (`U+2028`) ... PARAGRAPH SEPARATOR (`U+2029`).
+ - RAISED SQUARE (`U+2E0B`).
+ - HYPODIASTOLE (`U+2E12`).
+ - TWO DOTS OVER ONE DOT PUNCTUATION (`U+2E2A`) ... FIVE DOT MARK (`U+2E2D`).
+* Add hook-inward-serifed variants for `a` (#2085).
+* Remove earless-rounded variants for `U+01A5`, `U+0256`, `U+02A0`, and `U+1D91`.
+* Remove earless-corner variants for `U+027E`.
diff --git a/changes/27.0.0.md b/changes/archives/27.x/27.0.0.md
similarity index 100%
rename from changes/27.0.0.md
rename to changes/archives/27.x/27.0.0.md
diff --git a/changes/27.0.1.md b/changes/archives/27.x/27.0.1.md
similarity index 100%
rename from changes/27.0.1.md
rename to changes/archives/27.x/27.0.1.md
diff --git a/changes/27.0.2.md b/changes/archives/27.x/27.0.2.md
similarity index 100%
rename from changes/27.0.2.md
rename to changes/archives/27.x/27.0.2.md
diff --git a/changes/27.1.0.md b/changes/archives/27.x/27.1.0.md
similarity index 100%
rename from changes/27.1.0.md
rename to changes/archives/27.x/27.1.0.md
diff --git a/changes/27.2.0.md b/changes/archives/27.x/27.2.0.md
similarity index 100%
rename from changes/27.2.0.md
rename to changes/archives/27.x/27.2.0.md
diff --git a/changes/27.2.1.md b/changes/archives/27.x/27.2.1.md
similarity index 100%
rename from changes/27.2.1.md
rename to changes/archives/27.x/27.2.1.md
diff --git a/changes/27.3.0.md b/changes/archives/27.x/27.3.0.md
similarity index 100%
rename from changes/27.3.0.md
rename to changes/archives/27.x/27.3.0.md
diff --git a/changes/27.3.1.md b/changes/archives/27.x/27.3.1.md
similarity index 100%
rename from changes/27.3.1.md
rename to changes/archives/27.x/27.3.1.md
diff --git a/changes/27.3.2.md b/changes/archives/27.x/27.3.2.md
similarity index 100%
rename from changes/27.3.2.md
rename to changes/archives/27.x/27.3.2.md
diff --git a/changes/27.3.3.md b/changes/archives/27.x/27.3.3.md
similarity index 100%
rename from changes/27.3.3.md
rename to changes/archives/27.x/27.3.3.md
diff --git a/changes/27.3.4.md b/changes/archives/27.x/27.3.4.md
similarity index 100%
rename from changes/27.3.4.md
rename to changes/archives/27.x/27.3.4.md
diff --git a/changes/27.3.5.md b/changes/archives/27.x/27.3.5.md
similarity index 88%
rename from changes/27.3.5.md
rename to changes/archives/27.x/27.3.5.md
index 4b01ab5b2f..02001afe2a 100644
--- a/changes/27.3.5.md
+++ b/changes/archives/27.x/27.3.5.md
@@ -4,6 +4,6 @@
* Improve crossbar position of GREEK SMALL LETTER DIGAMMA (`U+03DD`) and add a middle serif under slab.
* Refine Greek Capital Sho (U+03F7) glyph (#2079).
* \[Experimental\] Add a font feature for texture control (#2081).
- - Currently only available through custom builds with `build-texture-feature = true`.
+ - Currently only available through custom builds with `buildTextureFeature = true`.
* Make SYMBOL FOR DELETE FORM TWO (`U+2425`) narrow by default, align with other Control Pictures characters (#2084).
* Make APL FUNCTIONAL SYMBOL CIRCLE STAR (`U+235F`) always be five-pointed and upright, to align its pentagram history (#2083).
diff --git a/changes/archives/3.x/3.0.0.md b/changes/archives/3.x/3.0.0.md
index 4a7b1d2126..4ed3a9989b 100644
--- a/changes/archives/3.x/3.0.0.md
+++ b/changes/archives/3.x/3.0.0.md
@@ -38,7 +38,7 @@
* Add reverse-slashed zero (#438).
* Add U+1F8B0 and U+1F8B1 (#459).
* Fixed broken shape around `srtail`, `Sswash` and `sswash`.
- * Fix `no-cv-ss` building (#460).
+ * Fix `noCvSs` building (#460).
* Retrocomputing symbols are now defaults to half-width.
* Made variant selectors work for turned letters.
* Make `ligset-dlig` usable from custom build (#463).
diff --git a/changes/archives/9.x/9.0.0.md b/changes/archives/9.x/9.0.0.md
index 6efa481371..8a1805de63 100644
--- a/changes/archives/9.x/9.0.0.md
+++ b/changes/archives/9.x/9.0.0.md
@@ -1,4 +1,4 @@
- * \[**Breaking**\]: Add support for expression-style metric override. The old `[metric-override.multiplies]` and `[metric-override.adds]` are no longer supported (#1181).
+ * \[**Breaking**\]: Add support for expression-style metric override. The old `[metricOverride.multiplies]` and `[metricOverride.adds]` are no longer supported (#1181).
* Fix motion-serifed N's broken shape (#1170).
* Fix bar-serif overlapping in Latin Small H-bar (`U+0127`) and Cyrillic Small Dje (`U+0452`) in Sans subfamily's with-serif variants (#1171).
* Add flat-boundary brace shape (#1172).
@@ -6,4 +6,4 @@
* Make dot size, period size and accent size / placement configurable (#1169, #1176).
* Make variants of `0` apply to APL Functional Symbol Zilde (`U+236C`) and Circled Zero with Slash (`U+1F10D`) (#1178).
* Add enclosed sans-serif digits.
- * Fix italic derived letters regression in 8.0.
\ No newline at end of file
+ * Fix italic derived letters regression in 8.0.
diff --git a/doc/PACKAGE-LIST.md b/doc/PACKAGE-LIST.md
index 83f7090694..1e67d095dc 100644
--- a/doc/PACKAGE-LIST.md
+++ b/doc/PACKAGE-LIST.md
@@ -1,4 +1,4 @@
-# Package list of Release 27.3.5
+# Package list of Release 28.0.0-alpha.1
## Prebuilt Packages
Iosevka provides a large variety of variants. Prebuilt variants are listed below. For all Monospace variants' packages, it will contain three _spacing variants_. You can either download the package containing all the spacing variants (recommended), or cherry-pick the variant with specific spacing.
@@ -19,145 +19,145 @@ Iosevka provides various packaging formats, here is the list of them:
-📦 Iosevka — Monospace, Default Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka Slab — Monospace, Slab-serif Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka Slab Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term Slab Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed Slab Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka Curly — Monospace, Curly Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka Curly Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term Curly Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed Curly Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka Curly Slab — Monospace, Curly Style, Slab-serif Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka Curly Slab Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term Curly Slab Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed Curly Slab Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS01 — Monospace, Andale Mono Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS01 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS01 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS01 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS02 — Monospace, Anonymous Pro Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS02 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS02 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS02 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS03 — Monospace, Consolas Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS03 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS03 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS03 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS04 — Monospace, Menlo Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS04 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS04 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS04 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS05 — Monospace, Fira Mono Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS05 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS05 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS05 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS06 — Monospace, Liberation Mono Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS06 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS06 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS06 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS07 — Monospace, Monaco Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS07 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS07 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS07 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS08 — Monospace, Pragmata Pro Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS08 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS08 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS08 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS09 — Monospace, Source Code Pro Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS09 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS09 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS09 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS10 — Monospace, Envy Code R Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS10 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS10 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS10 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS11 — Monospace, X Windows Fixed Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS11 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS11 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS11 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS12 — Monospace, Ubuntu Mono Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS12 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS12 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS12 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS13 — Monospace, Lucida Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS13 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS13 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS13 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS14 — Monospace, JetBrains Mono Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS14 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS14 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS14 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS15 — Monospace, IBM Plex Mono Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS15 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS15 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS15 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS16 — Monospace, PT Mono Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS16 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS16 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS16 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS17 — Monospace, Recursive Mono Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS17 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS17 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS17 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka SS18 — Monospace, Input Mono Style Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- ├ Iosevka SS18 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- ├ Iosevka Term SS18 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
- └ Iosevka Fixed SS18 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka Aile — Quasi-proportional, Sans-serif Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- └ Iosevka Aile Default No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
-📦 Iosevka Etoile — Quasi-proportional, Slab-serif Super TTC TTC
- └ Sub-packages Spacing Ligatures Downloads
- └ Iosevka Etoile Default No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
-
+📦 Iosevka — Monospace, Default Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka Slab — Monospace, Slab-serif Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka Slab Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term Slab Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed Slab Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka Curly — Monospace, Curly Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka Curly Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term Curly Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed Curly Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka Curly Slab — Monospace, Curly Style, Slab-serif Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka Curly Slab Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term Curly Slab Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed Curly Slab Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS01 — Monospace, Andale Mono Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS01 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS01 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS01 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS02 — Monospace, Anonymous Pro Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS02 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS02 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS02 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS03 — Monospace, Consolas Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS03 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS03 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS03 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS04 — Monospace, Menlo Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS04 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS04 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS04 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS05 — Monospace, Fira Mono Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS05 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS05 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS05 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS06 — Monospace, Liberation Mono Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS06 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS06 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS06 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS07 — Monospace, Monaco Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS07 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS07 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS07 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS08 — Monospace, Pragmata Pro Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS08 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS08 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS08 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS09 — Monospace, Source Code Pro Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS09 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS09 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS09 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS10 — Monospace, Envy Code R Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS10 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS10 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS10 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS11 — Monospace, X Windows Fixed Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS11 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS11 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS11 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS12 — Monospace, Ubuntu Mono Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS12 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS12 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS12 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS13 — Monospace, Lucida Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS13 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS13 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS13 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS14 — Monospace, JetBrains Mono Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS14 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS14 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS14 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS15 — Monospace, IBM Plex Mono Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS15 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS15 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS15 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS16 — Monospace, PT Mono Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS16 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS16 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS16 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS17 — Monospace, Recursive Mono Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS17 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS17 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS17 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka SS18 — Monospace, Input Mono Style Super TTC TTC
+ └ Sub-packages Spacing Ligatures Downloads
+ ├ Iosevka SS18 Default Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ ├ Iosevka Term SS18 Terminal Yes Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+ └ Iosevka Fixed SS18 Fixed No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka Aile — Quasi-proportional, Sans-serif
+ └ Sub-packages Spacing Ligatures Downloads
+ └ Iosevka Aile Default No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
+📦 Iosevka Etoile — Quasi-proportional, Slab-serif
+ └ Sub-packages Spacing Ligatures Downloads
+ └ Iosevka Etoile Default No Super TTC TTC TTF (Unhinted )WebFont (Unhinted )
+
diff --git a/doc/character-variants.md b/doc/character-variants.md
index 890b98db04..a0dad70325 100644
--- a/doc/character-variants.md
+++ b/doc/character-variants.md
@@ -323,12 +323,12 @@
-
-
-
+
+
+
@@ -419,13 +419,13 @@
+
+
+
+
+
-
-
-
-
-
1
@@ -442,18 +442,18 @@
12
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
13
@@ -470,7 +470,7 @@
24
-
+
@@ -740,13 +740,13 @@
+
+
+
+
+
-
-
-
-
-
1
@@ -763,14 +763,24 @@
12
+
+
+
+
+
-
+
13
14
-
+15
+16
+17
+18
+19
+
cv27
@@ -850,16 +860,16 @@
cv31
-
-
-
-
-
-
+
+
+
+
+
+
1
@@ -876,12 +886,12 @@
12
-
-
+
+
+
+
-
-
@@ -1400,17 +1410,17 @@
cv44
-
-
-
-
-
-
-
+
+
+
+
+
-
-
+
+
+
+
1
@@ -1427,17 +1437,17 @@
12
-
-
-
-
-
-
+
+
-
-
-
+
+
+
+
+
+
+
@@ -1716,12 +1726,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
1
@@ -1738,18 +1748,18 @@
12
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
13
@@ -1766,9 +1776,9 @@
24
-
-
-
+
+
+
@@ -2024,9 +2034,9 @@
cv61
+
-
@@ -2103,11 +2113,11 @@
cv65
+
-
@@ -2330,12 +2340,12 @@
-
-
-
+
+
+
@@ -2376,7 +2386,7 @@
-VXAA
+cv76
@@ -2397,7 +2407,7 @@
-cv76
+cv77
@@ -2444,7 +2454,7 @@
-VXAB
+cv78
@@ -2491,15 +2501,15 @@
-cv77
+cv79
-
+
-
+
@@ -2514,7 +2524,7 @@
-cv78
+cv80
@@ -2525,7 +2535,7 @@
-cv79
+cv81
@@ -2538,7 +2548,7 @@
-cv80
+cv82
@@ -2557,19 +2567,19 @@
-cv81
+cv83
-
-
-
-
-
-
+
+
+
+
+
+
1
@@ -2586,9 +2596,9 @@
12
-
-
-
+
+
+
@@ -2604,19 +2614,19 @@
-cv82
+cv84
-
-
-
-
-
-
+
+
+
+
+
+
1
@@ -2633,18 +2643,18 @@
12
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
13
@@ -2661,12 +2671,12 @@
24
-
-
-
-
-
-
+
+
+
+
+
+
@@ -2689,7 +2699,7 @@
36
-cv83
+cv85
@@ -2820,7 +2830,7 @@
-cv84
+cv86
@@ -2845,7 +2855,7 @@
-cv85
+cv87
@@ -2856,7 +2866,7 @@
-cv86
+cv88
@@ -2867,7 +2877,7 @@
-cv87
+cv89
@@ -2886,10 +2896,10 @@
-cv88
+cv90
-
+
@@ -2901,7 +2911,7 @@
-cv89
+cv91
@@ -2914,7 +2924,7 @@
-cv90
+cv92
@@ -2943,7 +2953,7 @@
12
-cv91
+cv93
@@ -2956,7 +2966,7 @@
-cv92
+cv94
@@ -2969,7 +2979,7 @@
-cv93
+cv95
@@ -2980,7 +2990,7 @@
-cv94
+cv96
@@ -2989,7 +2999,7 @@
2
-cv95
+cv97
@@ -3000,7 +3010,7 @@
-cv96
+cv98
@@ -3029,7 +3039,7 @@
12
-cv97
+cv99
@@ -3042,7 +3052,7 @@
-cv98
+VSAA
@@ -3055,7 +3065,31 @@
-cv99
+VSAB
+
+
+
+
+
+
+1
+2
+3
+
+
+
+VSAC
+
+
+
+
+
+1
+2
+
+
+
+VSAD
@@ -3068,7 +3102,7 @@
-VSAA
+VSAE
@@ -3081,7 +3115,7 @@
-VSAB
+VSAF
@@ -3092,7 +3126,7 @@
-VSAC
+VSAG
@@ -3115,7 +3149,7 @@
-VSAD
+VSAH
@@ -3138,7 +3172,7 @@
-VSAE
+VSAI
@@ -3163,7 +3197,7 @@
-VSAF
+VSAJ
@@ -3182,7 +3216,26 @@
-VSAG
+VSAK
+
+
+
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+
+
+
+VSAL
@@ -3197,7 +3250,7 @@
-VSAH
+VSAM
@@ -3208,31 +3261,7 @@
-VSAI
-
-
-
-
-
-1
-2
-
-
-
-VSAJ
-
-
-
-
-
-
-1
-2
-3
-
-
-
-VSAK
+VSAN
@@ -3245,7 +3274,7 @@
-VSAL
+VSAO
@@ -3256,26 +3285,7 @@
-VSAM
-
-
-
-
-
-
-
-
-
-1
-2
-3
-4
-5
-6
-
-
-
-VSAN
+VSAP
@@ -3286,7 +3296,7 @@
-VSAO
+VSAQ
diff --git a/doc/custom-build.md b/doc/custom-build.md
index 9eeb2969a7..534209d4c1 100644
--- a/doc/custom-build.md
+++ b/doc/custom-build.md
@@ -63,7 +63,7 @@ To create a custom build, you need:
### Configuring Custom Build
-Configuration of build plans are organized under `[buildPlans.]` sections in the `private-build-plans.toml`. You can use [the Customizer](https://be5invis.github.io/Iosevka/customizer) to create the build plan, and/or manually edit them, following the instructions below.
+Configuration of build plans are organized under `[buildPlans.]` sections in the `private-build-plans.toml`. You can use [the Customizer](https://be5invis.github.io/Iosevka/customizer) to create the build plan, and/or manually edit them, following the instructions below. It is recommended to use PascalCase in the plan names.
Inside the plan, top-level properties include:
@@ -85,12 +85,21 @@ Inside the plan, top-level properties include:
* `serifs`: Optional, String, configures style of serifs.
- When set to `slab`, the font will be converted into slab-serif.
- Otherwise the font will be sans-serif.
-* `no-cv-ss`: Optional, Boolean, disables `cv##` and `ss##` OpenType features.
-* `no-ligation`: Optional, Boolean, disables ligations.
-* `export-glyph-names`: Optional, Boolean, whether to export glyph names into the fonts. Setting this to `true` will increase file footprint, however this is necessary for ligature support in [Kitty](https://sw.kovidgoyal.net/kitty/).
-* `webfont-formats`: Optional, Array of String. Controls the formats needed to be exported into the webfont CSS. Valid options are `'ttf'` and `'woff2'`, or including both.
-
-Build plan could have 5 optional subsections: `ligations`, `variants`, `weights`, `widths` and `slopes`.
+* `noCvSs`: Optional, Boolean, disables `cv##` and `ss##` OpenType features.
+* `noLigation`: Optional, Boolean, disables ligations.
+* `exportGlyphNames`: Optional, Boolean, whether to export glyph names into the fonts. Setting this to `true` will increase file footprint, however this is necessary for ligature support in [Kitty](https://sw.kovidgoyal.net/kitty/).
+* `webfontFormats`: Optional, Array of String. Controls the formats needed to be exported into the webfont CSS. Valid options are `'ttf'` and `'woff2'`, or including both.
+* `buildTextureFeature`: Optional, Boolean, whether to build the `TXTR` feature for cross-letter texture adjustments. Defaults to false.
+
+Build plan could have 8 optional subsections:
+* `ligations`
+* `variants`
+* `weights`
+* `widths`
+* `slopes`
+* `compatibilityLigatures`
+* `excludeChars`
+* `metricOverride`
#### Configuring Ligations
@@ -269,7 +278,7 @@ Subsection `variants` is used to configure character variants in the font. Prope
- Styles for `L`:
capital-l = 'serifless'
, cv12 = 1
Serifless L
(default for Sans) capital-l = 'motion-serifed'
, cv12 = 2
Standard L
with motion serif at bottom right capital-l = 'serifed'
, cv12 = 3
L
with serifs (default for Slab)
- Styles for `M`:
- capital-m = 'hanging-serifless'
, cv13 = 1
M
with middle being hanging off baseline; without serifs (default for Sans)capital-m = 'hanging-motion-serifed'
, cv13 = 2
M
with middle being hanging off baseline, and motion serifscapital-m = 'hanging-serifed'
, cv13 = 3
M
with middle being hanging off baseline, and serifs (default for Slab)capital-m = 'slanted-sides-hanging-serifless'
, cv13 = 4
M
with slanted sides, and middle being hanging off baseline; without serifscapital-m = 'slanted-sides-hanging-motion-serifed'
, cv13 = 5
M
with slanted sides, middle being hanging off baseline, and motion serifscapital-m = 'slanted-sides-hanging-serifed'
, cv13 = 6
M
with slanted sides, middle being hanging off baseline, and serifscapital-m = 'flat-bottom-serifless'
, cv13 = 7
M
with middle aligned to baseline; without serifscapital-m = 'flat-bottom-motion-serifed'
, cv13 = 8
M
with middle aligned to baseline, and motion serifscapital-m = 'flat-bottom-serifed'
, cv13 = 9
M
with middle aligned to baseline, and serifscapital-m = 'slanted-sides-flat-bottom-serifless'
, cv13 = 10
M
with slanted sides, and middle aligned to baseline; without serifscapital-m = 'slanted-sides-flat-bottom-motion-serifed'
, cv13 = 11
M
with slanted sides, middle aligned to baseline, and motion serifscapital-m = 'slanted-sides-flat-bottom-serifed'
, cv13 = 12
M
with slanted sides, middle aligned to baseline, and serifs
+ capital-m = 'hanging-serifless'
, cv13 = 1
M
with middle being hanging off baseline; without serifs (default for Sans)capital-m = 'hanging-motion-serifed'
, cv13 = 2
M
with middle being hanging off baseline, and motion serifscapital-m = 'hanging-serifed'
, cv13 = 3
M
with middle being hanging off baseline, and serifs (default for Slab)capital-m = 'flat-bottom-serifless'
, cv13 = 4
M
with middle aligned to baseline; without serifscapital-m = 'flat-bottom-motion-serifed'
, cv13 = 5
M
with middle aligned to baseline, and motion serifscapital-m = 'flat-bottom-serifed'
, cv13 = 6
M
with middle aligned to baseline, and serifscapital-m = 'slanted-sides-hanging-serifless'
, cv13 = 7
M
with slanted sides, and middle being hanging off baseline; without serifscapital-m = 'slanted-sides-hanging-motion-serifed'
, cv13 = 8
M
with slanted sides, middle being hanging off baseline, and motion serifscapital-m = 'slanted-sides-hanging-serifed'
, cv13 = 9
M
with slanted sides, middle being hanging off baseline, and serifscapital-m = 'slanted-sides-flat-bottom-serifless'
, cv13 = 10
M
with slanted sides, and middle aligned to baseline; without serifscapital-m = 'slanted-sides-flat-bottom-motion-serifed'
, cv13 = 11
M
with slanted sides, middle aligned to baseline, and motion serifscapital-m = 'slanted-sides-flat-bottom-serifed'
, cv13 = 12
M
with slanted sides, middle aligned to baseline, and serifs
- Styles for `N`:
capital-n = 'standard-serifless'
, cv14 = 1
N
with standard shape; without serifs (default for Sans)capital-n = 'standard-motion-serifed'
, cv14 = 2
N
with standard shape, and motion serifscapital-n = 'standard-serifed'
, cv14 = 3
N
with standard shape, and serifs (default for Slab)capital-n = 'asymmetric-serifless'
, cv14 = 4
N
with asymmetric shape; without serifscapital-n = 'asymmetric-motion-serifed'
, cv14 = 5
N
with asymmetric shape, and motion serifscapital-n = 'asymmetric-serifed'
, cv14 = 6
N
with asymmetric shape, and serifs
- Styles for `P`:
@@ -277,7 +286,7 @@ Subsection `variants` is used to configure character variants in the font. Prope
- Styles for `Q`:
capital-q = 'curly-tailed'
, cv16 = 1
Q
with a curly tail (default)capital-q = 'crossing-curly-tailed'
, cv16 = 2
Q
with a curly tail crossing the ringcapital-q = 'straight'
, cv16 = 3
Q
with a straight tail like in the old versionscapital-q = 'crossing'
, cv16 = 4
Q
with a tail crossing the ringcapital-q = 'crossing-baseline'
, cv16 = 5
Q
with a tail above baseline crossing the ringcapital-q = 'vertical-crossing'
, cv16 = 6
Q
with a vertical tail crossing the ringcapital-q = 'horizontal-tailed'
, cv16 = 7
Q
with a horizontal tail, like Universcapital-q = 'detached-tailed'
, cv16 = 8
Q
with a oblique tail detachedcapital-q = 'detached-bend-tailed'
, cv16 = 9
Q
with a bend tail detachedcapital-q = 'open-swash'
, cv16 = 10
Q
with open contour and swash-y shape
- Styles for `R`:
- capital-r = 'straight-serifless'
, cv17 = 1
R
with straight leg; without serifs (default for Sans)capital-r = 'straight-top-left-serifed'
, cv17 = 2
R
with straight leg, and serifs at top-leftcapital-r = 'straight-bottom-right-serifed'
, cv17 = 3
R
with straight leg, and serifs at bottom-rightcapital-r = 'straight-top-left-and-bottom-right-serifed'
, cv17 = 4
R
with straight leg, and serifs at bottom-rightcapital-r = 'straight-serifed'
, cv17 = 5
R
with straight leg, and serifs (default for Slab)capital-r = 'curly-serifless'
, cv17 = 6
R
with curly leg; without serifscapital-r = 'curly-top-left-serifed'
, cv17 = 7
R
with curly leg, and serifs at top-leftcapital-r = 'curly-bottom-right-serifed'
, cv17 = 8
R
with curly leg, and serifs at bottom-rightcapital-r = 'curly-top-left-and-bottom-right-serifed'
, cv17 = 9
R
with curly leg, and serifs at bottom-rightcapital-r = 'curly-serifed'
, cv17 = 10
R
with curly leg, and serifscapital-r = 'standing-serifless'
, cv17 = 11
R
with standing leg (like Helvetica); without serifscapital-r = 'standing-top-left-serifed'
, cv17 = 12
R
with standing leg (like Helvetica), and serifs at top-leftcapital-r = 'standing-bottom-right-serifed'
, cv17 = 13
R
with standing leg (like Helvetica), and serifs at bottom-rightcapital-r = 'standing-top-left-and-bottom-right-serifed'
, cv17 = 14
R
with standing leg (like Helvetica), and serifs at bottom-rightcapital-r = 'standing-serifed'
, cv17 = 15
R
with standing leg (like Helvetica), and serifscapital-r = 'straight-open-serifless'
, cv17 = 16
R
with straight leg, and open contour; without serifscapital-r = 'straight-open-top-left-serifed'
, cv17 = 17
R
with straight leg, open contour, and serifs at top-leftcapital-r = 'straight-open-bottom-right-serifed'
, cv17 = 18
R
with straight leg, open contour, and serifs at bottom-rightcapital-r = 'straight-open-top-left-and-bottom-right-serifed'
, cv17 = 19
R
with straight leg, open contour, and serifs at bottom-rightcapital-r = 'straight-open-serifed'
, cv17 = 20
R
with straight leg, open contour, and serifscapital-r = 'curly-open-serifless'
, cv17 = 21
R
with curly leg, and open contour; without serifscapital-r = 'curly-open-top-left-serifed'
, cv17 = 22
R
with curly leg, open contour, and serifs at top-leftcapital-r = 'curly-open-bottom-right-serifed'
, cv17 = 23
R
with curly leg, open contour, and serifs at bottom-rightcapital-r = 'curly-open-top-left-and-bottom-right-serifed'
, cv17 = 24
R
with curly leg, open contour, and serifs at bottom-rightcapital-r = 'curly-open-serifed'
, cv17 = 25
R
with curly leg, open contour, and serifscapital-r = 'standing-open-serifless'
, cv17 = 26
R
with standing leg (like Helvetica), and open contour; without serifscapital-r = 'standing-open-top-left-serifed'
, cv17 = 27
R
with standing leg (like Helvetica), open contour, and serifs at top-leftcapital-r = 'standing-open-bottom-right-serifed'
, cv17 = 28
R
with standing leg (like Helvetica), open contour, and serifs at bottom-rightcapital-r = 'standing-open-top-left-and-bottom-right-serifed'
, cv17 = 29
R
with standing leg (like Helvetica), open contour, and serifs at bottom-rightcapital-r = 'standing-open-serifed'
, cv17 = 30
R
with standing leg (like Helvetica), open contour, and serifs
+ capital-r = 'straight-serifless'
, cv17 = 1
R
with straight leg; without serifs (default for Sans)capital-r = 'straight-top-left-serifed'
, cv17 = 2
R
with straight leg, and serifs at top-leftcapital-r = 'straight-bottom-right-serifed'
, cv17 = 3
R
with straight leg, and serifs at bottom-rightcapital-r = 'straight-top-left-and-bottom-right-serifed'
, cv17 = 4
R
with straight leg, and serifs at bottom-rightcapital-r = 'straight-serifed'
, cv17 = 5
R
with straight leg, and serifs (default for Slab)capital-r = 'straight-open-serifless'
, cv17 = 6
R
with straight leg, and open contour; without serifscapital-r = 'straight-open-top-left-serifed'
, cv17 = 7
R
with straight leg, open contour, and serifs at top-leftcapital-r = 'straight-open-bottom-right-serifed'
, cv17 = 8
R
with straight leg, open contour, and serifs at bottom-rightcapital-r = 'straight-open-top-left-and-bottom-right-serifed'
, cv17 = 9
R
with straight leg, open contour, and serifs at bottom-rightcapital-r = 'straight-open-serifed'
, cv17 = 10
R
with straight leg, open contour, and serifscapital-r = 'curly-serifless'
, cv17 = 11
R
with curly leg; without serifscapital-r = 'curly-top-left-serifed'
, cv17 = 12
R
with curly leg, and serifs at top-leftcapital-r = 'curly-bottom-right-serifed'
, cv17 = 13
R
with curly leg, and serifs at bottom-rightcapital-r = 'curly-top-left-and-bottom-right-serifed'
, cv17 = 14
R
with curly leg, and serifs at bottom-rightcapital-r = 'curly-serifed'
, cv17 = 15
R
with curly leg, and serifscapital-r = 'curly-open-serifless'
, cv17 = 16
R
with curly leg, and open contour; without serifscapital-r = 'curly-open-top-left-serifed'
, cv17 = 17
R
with curly leg, open contour, and serifs at top-leftcapital-r = 'curly-open-bottom-right-serifed'
, cv17 = 18
R
with curly leg, open contour, and serifs at bottom-rightcapital-r = 'curly-open-top-left-and-bottom-right-serifed'
, cv17 = 19
R
with curly leg, open contour, and serifs at bottom-rightcapital-r = 'curly-open-serifed'
, cv17 = 20
R
with curly leg, open contour, and serifscapital-r = 'standing-serifless'
, cv17 = 21
R
with standing leg (like Helvetica); without serifscapital-r = 'standing-top-left-serifed'
, cv17 = 22
R
with standing leg (like Helvetica), and serifs at top-leftcapital-r = 'standing-bottom-right-serifed'
, cv17 = 23
R
with standing leg (like Helvetica), and serifs at bottom-rightcapital-r = 'standing-top-left-and-bottom-right-serifed'
, cv17 = 24
R
with standing leg (like Helvetica), and serifs at bottom-rightcapital-r = 'standing-serifed'
, cv17 = 25
R
with standing leg (like Helvetica), and serifscapital-r = 'standing-open-serifless'
, cv17 = 26
R
with standing leg (like Helvetica), and open contour; without serifscapital-r = 'standing-open-top-left-serifed'
, cv17 = 27
R
with standing leg (like Helvetica), open contour, and serifs at top-leftcapital-r = 'standing-open-bottom-right-serifed'
, cv17 = 28
R
with standing leg (like Helvetica), open contour, and serifs at bottom-rightcapital-r = 'standing-open-top-left-and-bottom-right-serifed'
, cv17 = 29
R
with standing leg (like Helvetica), open contour, and serifs at bottom-rightcapital-r = 'standing-open-serifed'
, cv17 = 30
R
with standing leg (like Helvetica), open contour, and serifs
- Styles for `S`:
capital-s = 'serifless'
, cv18 = 1
Serifless S
(default for Sans) capital-s = 'unilateral-serifed'
, cv18 = 2
S
with single serif at topcapital-s = 'bilateral-serifed'
, cv18 = 3
S
with serifs at both end (default for Slab)capital-s = 'unilateral-inward-serifed'
, cv18 = 4
S
with single inward serif at topcapital-s = 'bilateral-inward-serifed'
, cv18 = 5
S
with inward serifs at both end
- Styles for `T`:
@@ -295,7 +304,7 @@ Subsection `variants` is used to configure character variants in the font. Prope
- Styles for `Z`:
capital-z = 'straight-serifless'
, cv25 = 1
Z
with straight body shape; without serifs (default for Sans)capital-z = 'straight-serifless-with-crossbar'
, cv25 = 2
Z
with straight body shape, and a diagonal crossbar; without serifscapital-z = 'straight-serifless-with-horizontal-crossbar'
, cv25 = 3
Z
with straight body shape, and a horizontal crossbar; without serifscapital-z = 'straight-serifed'
, cv25 = 4
Z
with straight body shape, and serifs (default for Slab)capital-z = 'straight-serifed-with-crossbar'
, cv25 = 5
Z
with straight body shape, serifs, and a diagonal crossbarcapital-z = 'straight-serifed-with-horizontal-crossbar'
, cv25 = 6
Z
with straight body shape, serifs, and a horizontal crossbarcapital-z = 'straight-bottom-serifed'
, cv25 = 7
Z
with straight body shape, and serifs at bottomcapital-z = 'straight-bottom-serifed-with-crossbar'
, cv25 = 8
Z
with straight body shape, serifs at bottom, and a diagonal crossbarcapital-z = 'straight-bottom-serifed-with-horizontal-crossbar'
, cv25 = 9
Z
with straight body shape, serifs at bottom, and a horizontal crossbarcapital-z = 'straight-top-serifed'
, cv25 = 10
Z
with straight body shape, and serifs at topcapital-z = 'straight-top-serifed-with-crossbar'
, cv25 = 11
Z
with straight body shape, serifs at top, and a diagonal crossbarcapital-z = 'straight-top-serifed-with-horizontal-crossbar'
, cv25 = 12
Z
with straight body shape, serifs at top, and a horizontal crossbarcapital-z = 'curly-serifless'
, cv25 = 13
Z
with curly body shape; without serifscapital-z = 'curly-serifless-with-crossbar'
, cv25 = 14
Z
with curly body shape, and a diagonal crossbar; without serifscapital-z = 'curly-serifless-with-horizontal-crossbar'
, cv25 = 15
Z
with curly body shape, and a horizontal crossbar; without serifscapital-z = 'curly-serifed'
, cv25 = 16
Z
with curly body shape, and serifscapital-z = 'curly-serifed-with-crossbar'
, cv25 = 17
Z
with curly body shape, serifs, and a diagonal crossbarcapital-z = 'curly-serifed-with-horizontal-crossbar'
, cv25 = 18
Z
with curly body shape, serifs, and a horizontal crossbarcapital-z = 'curly-bottom-serifed'
, cv25 = 19
Z
with curly body shape, and serifs at bottomcapital-z = 'curly-bottom-serifed-with-crossbar'
, cv25 = 20
Z
with curly body shape, serifs at bottom, and a diagonal crossbarcapital-z = 'curly-bottom-serifed-with-horizontal-crossbar'
, cv25 = 21
Z
with curly body shape, serifs at bottom, and a horizontal crossbarcapital-z = 'curly-top-serifed'
, cv25 = 22
Z
with curly body shape, and serifs at topcapital-z = 'curly-top-serifed-with-crossbar'
, cv25 = 23
Z
with curly body shape, serifs at top, and a diagonal crossbarcapital-z = 'curly-top-serifed-with-horizontal-crossbar'
, cv25 = 24
Z
with curly body shape, serifs at top, and a horizontal crossbarcapital-z = 'cursive'
, cv25 = 25
Z
with cursive body shapecapital-z = 'cursive-with-crossbar'
, cv25 = 26
Z
with cursive body shape, and a diagonal crossbarcapital-z = 'cursive-with-horizontal-crossbar'
, cv25 = 27
Z
with cursive body shape, and a horizontal crossbar
- Styles for `a`:
- a = 'double-storey-serifless'
, cv26 = 1
a
with double-storey body; without serif at terminal (default for Sans Upright)a = 'double-storey-tailed'
, cv26 = 2
a
with double-storey body, and curly taila = 'double-storey-toothless-corner'
, cv26 = 3
a
with double-storey body, and toothless (cornered bottom-right)a = 'double-storey-toothless-rounded'
, cv26 = 4
a
with double-storey body, and toothless (rounded bottom-right)a = 'double-storey-serifed'
, cv26 = 5
a
with double-storey body, and serif at terminal (default for Slab Upright)a = 'single-storey-serifless'
, cv26 = 6
a
with single-storey body; without serif at terminala = 'single-storey-tailed'
, cv26 = 7
a
with single-storey body, and curly tail (default for Italic)a = 'single-storey-serifed'
, cv26 = 8
a
with single-storey body, and serif at terminala = 'single-storey-earless-corner-serifless'
, cv26 = 9
a
with single-storey body, and earless (cornered top-right); without serif at terminala = 'single-storey-earless-corner-tailed'
, cv26 = 10
a
with single-storey body, earless (cornered top-right), and curly taila = 'single-storey-earless-corner-serifed'
, cv26 = 11
a
with single-storey body, earless (cornered top-right), and serif at terminala = 'single-storey-earless-rounded-serifless'
, cv26 = 12
a
with single-storey body, and earless (rounded top-right); without serif at terminala = 'single-storey-earless-rounded-tailed'
, cv26 = 13
a
with single-storey body, earless (rounded top-right), and curly taila = 'single-storey-earless-rounded-serifed'
, cv26 = 14
a
with single-storey body, earless (rounded top-right), and serif at terminal
+ a = 'double-storey-serifless'
, cv26 = 1
a
with double-storey body, and serifless hook; without serif at terminal (default for Sans Upright)a = 'double-storey-tailed'
, cv26 = 2
a
with double-storey body, serifless hook, and curly taila = 'double-storey-toothless-corner'
, cv26 = 3
a
with double-storey body, serifless hook, and toothless (cornered bottom-right)a = 'double-storey-toothless-rounded'
, cv26 = 4
a
with double-storey body, serifless hook, and toothless (rounded bottom-right)a = 'double-storey-serifed'
, cv26 = 5
a
with double-storey body, serifless hook, and serif at terminal (default for Slab Upright)a = 'double-storey-hook-inward-serifed-serifless'
, cv26 = 6
a
with double-storey body, and serifed hook; without serif at terminala = 'double-storey-hook-inward-serifed-tailed'
, cv26 = 7
a
with double-storey body, serifed hook, and curly taila = 'double-storey-hook-inward-serifed-toothless-corner'
, cv26 = 8
a
with double-storey body, serifed hook, and toothless (cornered bottom-right)a = 'double-storey-hook-inward-serifed-toothless-rounded'
, cv26 = 9
a
with double-storey body, serifed hook, and toothless (rounded bottom-right)a = 'double-storey-hook-inward-serifed-serifed'
, cv26 = 10
a
with double-storey body, serifed hook, and serif at terminala = 'single-storey-serifless'
, cv26 = 11
a
with single-storey body; without serif at terminala = 'single-storey-tailed'
, cv26 = 12
a
with single-storey body, and curly tail (default for Italic)a = 'single-storey-serifed'
, cv26 = 13
a
with single-storey body, and serif at terminala = 'single-storey-earless-corner-serifless'
, cv26 = 14
a
with single-storey body, and earless (cornered top-right); without serif at terminala = 'single-storey-earless-corner-tailed'
, cv26 = 15
a
with single-storey body, earless (cornered top-right), and curly taila = 'single-storey-earless-corner-serifed'
, cv26 = 16
a
with single-storey body, earless (cornered top-right), and serif at terminala = 'single-storey-earless-rounded-serifless'
, cv26 = 17
a
with single-storey body, and earless (rounded top-right); without serif at terminala = 'single-storey-earless-rounded-tailed'
, cv26 = 18
a
with single-storey body, earless (rounded top-right), and curly taila = 'single-storey-earless-rounded-serifed'
, cv26 = 19
a
with single-storey body, earless (rounded top-right), and serif at terminal
- Styles for `b`:
b = 'toothed-serifless'
, cv27 = 1
b
with toothed shape; without serifs (default for Sans)b = 'toothed-motion-serifed'
, cv27 = 2
b
with toothed shape, and motion serifsb = 'toothed-serifed'
, cv27 = 3
b
with toothed shape, and serifs (default for Slab)b = 'toothless-corner-serifless'
, cv27 = 4
b
with toothless (cornered) shape; without serifsb = 'toothless-corner-serifed'
, cv27 = 5
b
with toothless (cornered) shape, and serifsb = 'toothless-rounded-serifless'
, cv27 = 6
b
with toothless (rounded) shape; without serifsb = 'toothless-rounded-serifed'
, cv27 = 7
b
with toothless (rounded) shape, and serifs
- Styles for `c`:
@@ -305,7 +314,7 @@ Subsection `variants` is used to configure character variants in the font. Prope
- Styles for `e`:
e = 'flat-crossbar'
, cv30 = 1
e
with flat crossbar (default for Upright)e = 'rounded'
, cv30 = 2
e
with more rounded shape (default for Italic)
- Styles for `f`:
- f = 'serifless'
, cv31 = 1
f
without bottom serif, hook or extension (default for Sans Upright)f = 'serifless-crossbar-at-x-height'
, cv31 = 2
f
without bottom serif, hook or extension; with crossbar at X-heightf = 'flat-hook-serifless'
, cv31 = 3
f
without bottom serif, hook or extension; with flat top hookf = 'flat-hook-serifless-crossbar-at-x-height'
, cv31 = 4
f
without bottom serif, hook or extension; with flat top hook, and crossbar at X-heightf = 'serifed'
, cv31 = 5
f
with bottom serif (default for Slab Upright)f = 'serifed-crossbar-at-x-height'
, cv31 = 6
f
with bottom serif, and crossbar at X-heightf = 'flat-hook-serifed'
, cv31 = 7
f
with flat top hook, and bottom seriff = 'flat-hook-serifed-crossbar-at-x-height'
, cv31 = 8
f
with flat top hook, bottom serif, and crossbar at X-heightf = 'extended'
, cv31 = 9
f
with descending extensionf = 'extended-crossbar-at-x-height'
, cv31 = 10
f
with descending extension, and crossbar at X-heightf = 'flat-hook-extended'
, cv31 = 11
f
with flat top hook, and descending extensionf = 'flat-hook-extended-crossbar-at-x-height'
, cv31 = 12
f
with flat top hook, descending extension, and crossbar at X-heightf = 'tailed'
, cv31 = 13
f
with descending bottom hookf = 'tailed-crossbar-at-x-height'
, cv31 = 14
f
with descending bottom hook, and crossbar at X-heightf = 'flat-hook-tailed'
, cv31 = 15
f
with flat top hook, and descending bottom hook (default for Italic)f = 'flat-hook-tailed-crossbar-at-x-height'
, cv31 = 16
f
with flat top hook, descending bottom hook, and crossbar at X-heightf = 'diagonal-tailed'
, cv31 = 17
f
with diagonal tailf = 'diagonal-tailed-crossbar-at-x-height'
, cv31 = 18
f
with diagonal tail, and crossbar at X-heightf = 'flat-hook-diagonal-tailed'
, cv31 = 19
f
with flat top hook, and diagonal tailf = 'flat-hook-diagonal-tailed-crossbar-at-x-height'
, cv31 = 20
f
with flat top hook, diagonal tail, and crossbar at X-height
+ f = 'serifless'
, cv31 = 1
f
without bottom serif, hook or extension (default for Sans Upright)f = 'serifless-crossbar-at-x-height'
, cv31 = 2
f
without bottom serif, hook or extension; with crossbar at X-heightf = 'serifed'
, cv31 = 3
f
with bottom serif (default for Slab Upright)f = 'serifed-crossbar-at-x-height'
, cv31 = 4
f
with bottom serif, and crossbar at X-heightf = 'extended'
, cv31 = 5
f
with descending extensionf = 'extended-crossbar-at-x-height'
, cv31 = 6
f
with descending extension, and crossbar at X-heightf = 'tailed'
, cv31 = 7
f
with descending bottom hookf = 'tailed-crossbar-at-x-height'
, cv31 = 8
f
with descending bottom hook, and crossbar at X-heightf = 'diagonal-tailed'
, cv31 = 9
f
with diagonal tailf = 'diagonal-tailed-crossbar-at-x-height'
, cv31 = 10
f
with diagonal tail, and crossbar at X-heightf = 'flat-hook-serifless'
, cv31 = 11
f
with flat top hook; without bottom serif, hook or extensionf = 'flat-hook-serifless-crossbar-at-x-height'
, cv31 = 12
f
with flat top hook, and crossbar at X-height; without bottom serif, hook or extensionf = 'flat-hook-serifed'
, cv31 = 13
f
with flat top hook, and bottom seriff = 'flat-hook-serifed-crossbar-at-x-height'
, cv31 = 14
f
with flat top hook, bottom serif, and crossbar at X-heightf = 'flat-hook-extended'
, cv31 = 15
f
with flat top hook, and descending extensionf = 'flat-hook-extended-crossbar-at-x-height'
, cv31 = 16
f
with flat top hook, descending extension, and crossbar at X-heightf = 'flat-hook-tailed'
, cv31 = 17
f
with flat top hook, and descending bottom hook (default for Italic)f = 'flat-hook-tailed-crossbar-at-x-height'
, cv31 = 18
f
with flat top hook, descending bottom hook, and crossbar at X-heightf = 'flat-hook-diagonal-tailed'
, cv31 = 19
f
with flat top hook, and diagonal tailf = 'flat-hook-diagonal-tailed-crossbar-at-x-height'
, cv31 = 20
f
with flat top hook, diagonal tail, and crossbar at X-height
- Styles for `g`:
g = 'double-storey'
, cv32 = 1
g
with double-storey shapeg = 'double-storey-open'
, cv32 = 2
g
with double-storey shape, and open contourg = 'single-storey-serifless'
, cv32 = 3
g
with single-storey shape (default for Sans)g = 'single-storey-serifed'
, cv32 = 4
g
with single-storey shape, and top-right serif (default for Slab)g = 'single-storey-earless-corner'
, cv32 = 5
g
with single-storey shape, and earless (cornered top-right)g = 'single-storey-earless-rounded'
, cv32 = 6
g
with single-storey shape, and earless (rounded top-right)g = 'single-storey-flat-hook-serifless'
, cv32 = 7
g
with single-storey shape, and flat bottom hookg = 'single-storey-flat-hook-serifed'
, cv32 = 8
g
with single-storey shape, flat bottom hook, and top-right serifg = 'single-storey-flat-hook-earless-corner'
, cv32 = 9
g
with single-storey shape, flat bottom hook, and earless (cornered top-right)g = 'single-storey-flat-hook-earless-rounded'
, cv32 = 10
g
with single-storey shape, flat bottom hook, and earless (rounded top-right)
- Styles for `h`:
@@ -331,7 +340,7 @@ Subsection `variants` is used to configure character variants in the font. Prope
- Styles for `s`:
s = 'serifless'
, cv43 = 1
Serifless s
(default for Sans) s = 'unilateral-serifed'
, cv43 = 2
s
with single serif at tops = 'bilateral-serifed'
, cv43 = 3
s
with serifs at both end (default for Slab Upright)s = 'unilateral-inward-serifed'
, cv43 = 4
s
with single inward serif at tops = 'bilateral-inward-serifed'
, cv43 = 5
s
with inward serifs at both end (default for Slab Italic)
- Styles for `t`:
- t = 'bent-hook'
, cv44 = 1
t
with bent hook, and crossbar at both sides of the vertical stem (default)t = 'flat-hook'
, cv44 = 2
t
with flat hook, and crossbar at both sides of the vertical stemt = 'diagonal-tailed'
, cv44 = 3
t
with diagonal tail, and crossbar at both sides of the vertical stemt = 'hookless'
, cv44 = 4
t
with crossbar at both sides of the vertical stem; without hook or tailt = 'bent-hook-asymmetric'
, cv44 = 5
t
with bent hook, and crossbar at only right side of the vertical stemt = 'flat-hook-asymmetric'
, cv44 = 6
t
with flat hook, and crossbar at only right side of the vertical stemt = 'diagonal-tailed-asymmetric'
, cv44 = 7
t
with diagonal tail, and crossbar at only right side of the vertical stemt = 'hookless-asymmetric'
, cv44 = 8
t
with crossbar at only right side of the vertical stem; without hook or tailt = 'bent-hook-short-neck'
, cv44 = 9
t
with bent hook, crossbar at both sides of the vertical stem, and a shorter neckt = 'flat-hook-short-neck'
, cv44 = 10
t
with flat hook, crossbar at both sides of the vertical stem, and a shorter neckt = 'diagonal-tailed-short-neck'
, cv44 = 11
t
with diagonal tail, crossbar at both sides of the vertical stem, and a shorter neckt = 'hookless-short-neck'
, cv44 = 12
t
with crossbar at both sides of the vertical stem, and a shorter neck; without hook or tailt = 'bent-hook-asymmetric-short-neck'
, cv44 = 13
t
with bent hook, crossbar at only right side of the vertical stem, and a shorter neckt = 'flat-hook-asymmetric-short-neck'
, cv44 = 14
t
with flat hook, crossbar at only right side of the vertical stem, and a shorter neckt = 'diagonal-tailed-asymmetric-short-neck'
, cv44 = 15
t
with diagonal tail, crossbar at only right side of the vertical stem, and a shorter neckt = 'hookless-asymmetric-short-neck'
, cv44 = 16
t
with crossbar at only right side of the vertical stem, and a shorter neck; without hook or tailt = 'bent-hook-short-neck2'
, cv44 = 17
t
with bent hook, crossbar at both sides of the vertical stem, and a more shorter neckt = 'flat-hook-short-neck2'
, cv44 = 18
t
with flat hook, crossbar at both sides of the vertical stem, and a more shorter neckt = 'diagonal-tailed-short-neck2'
, cv44 = 19
t
with diagonal tail, crossbar at both sides of the vertical stem, and a more shorter neckt = 'hookless-short-neck2'
, cv44 = 20
t
with crossbar at both sides of the vertical stem, and a more shorter neck; without hook or tailt = 'bent-hook-asymmetric-short-neck2'
, cv44 = 21
t
with bent hook, crossbar at only right side of the vertical stem, and a more shorter neckt = 'flat-hook-asymmetric-short-neck2'
, cv44 = 22
t
with flat hook, crossbar at only right side of the vertical stem, and a more shorter neckt = 'diagonal-tailed-asymmetric-short-neck2'
, cv44 = 23
t
with diagonal tail, crossbar at only right side of the vertical stem, and a more shorter neckt = 'hookless-asymmetric-short-neck2'
, cv44 = 24
t
with crossbar at only right side of the vertical stem, and a more shorter neck; without hook or tail
+ t = 'bent-hook'
, cv44 = 1
t
with bent hook, and crossbar at both sides of the vertical stem (default)t = 'bent-hook-short-neck'
, cv44 = 2
t
with bent hook, crossbar at both sides of the vertical stem, and a shorter neckt = 'bent-hook-short-neck2'
, cv44 = 3
t
with bent hook, crossbar at both sides of the vertical stem, and a more shorter neckt = 'bent-hook-asymmetric'
, cv44 = 4
t
with bent hook, and crossbar at only right side of the vertical stemt = 'bent-hook-asymmetric-short-neck'
, cv44 = 5
t
with bent hook, crossbar at only right side of the vertical stem, and a shorter neckt = 'bent-hook-asymmetric-short-neck2'
, cv44 = 6
t
with bent hook, crossbar at only right side of the vertical stem, and a more shorter neckt = 'flat-hook'
, cv44 = 7
t
with flat hook, and crossbar at both sides of the vertical stemt = 'flat-hook-short-neck'
, cv44 = 8
t
with flat hook, crossbar at both sides of the vertical stem, and a shorter neckt = 'flat-hook-short-neck2'
, cv44 = 9
t
with flat hook, crossbar at both sides of the vertical stem, and a more shorter neckt = 'flat-hook-asymmetric'
, cv44 = 10
t
with flat hook, and crossbar at only right side of the vertical stemt = 'flat-hook-asymmetric-short-neck'
, cv44 = 11
t
with flat hook, crossbar at only right side of the vertical stem, and a shorter neckt = 'flat-hook-asymmetric-short-neck2'
, cv44 = 12
t
with flat hook, crossbar at only right side of the vertical stem, and a more shorter neckt = 'diagonal-tailed'
, cv44 = 13
t
with diagonal tail, and crossbar at both sides of the vertical stemt = 'diagonal-tailed-short-neck'
, cv44 = 14
t
with diagonal tail, crossbar at both sides of the vertical stem, and a shorter neckt = 'diagonal-tailed-short-neck2'
, cv44 = 15
t
with diagonal tail, crossbar at both sides of the vertical stem, and a more shorter neckt = 'diagonal-tailed-asymmetric'
, cv44 = 16
t
with diagonal tail, and crossbar at only right side of the vertical stemt = 'diagonal-tailed-asymmetric-short-neck'
, cv44 = 17
t
with diagonal tail, crossbar at only right side of the vertical stem, and a shorter neckt = 'diagonal-tailed-asymmetric-short-neck2'
, cv44 = 18
t
with diagonal tail, crossbar at only right side of the vertical stem, and a more shorter neckt = 'hookless'
, cv44 = 19
t
without hook or tail; with crossbar at both sides of the vertical stemt = 'hookless-short-neck'
, cv44 = 20
t
without hook or tail; with crossbar at both sides of the vertical stem, and a shorter neckt = 'hookless-short-neck2'
, cv44 = 21
t
without hook or tail; with crossbar at both sides of the vertical stem, and a more shorter neckt = 'hookless-asymmetric'
, cv44 = 22
t
without hook or tail; with crossbar at only right side of the vertical stemt = 'hookless-asymmetric-short-neck'
, cv44 = 23
t
without hook or tail; with crossbar at only right side of the vertical stem, and a shorter neckt = 'hookless-asymmetric-short-neck2'
, cv44 = 24
t
without hook or tail; with crossbar at only right side of the vertical stem, and a more shorter neck
- Styles for `u`:
u = 'toothed-serifless'
, cv45 = 1
u
with toothed shape; without serifs (default for Sans Upright)u = 'toothed-motion-serifed'
, cv45 = 2
u
with toothed shape, and motion serifs at top-left and bottom-rightu = 'toothed-bottom-right-serifed'
, cv45 = 3
u
with toothed shape, and motion serifs at left sideu = 'toothed-serifed'
, cv45 = 4
u
with toothed shape, and serifs (default for Slab Upright)u = 'tailed-serifless'
, cv45 = 5
u
with tailed shape; without serifs (default for Sans Italic)u = 'tailed-motion-serifed'
, cv45 = 6
u
with tailed shape, and motion serifs at top-left and bottom-right (default for Slab Italic)u = 'tailed-serifed'
, cv45 = 7
u
with tailed shape, and serifsu = 'toothless-corner-serifless'
, cv45 = 8
u
with toothless (corner bottom-right) shape; without serifsu = 'toothless-corner-motion-serifed'
, cv45 = 9
u
with toothless (corner bottom-right) shape, and motion serifs at top-left and bottom-rightu = 'toothless-corner-serifed'
, cv45 = 10
u
with toothless (corner bottom-right) shape, and serifsu = 'toothless-rounded-serifless'
, cv45 = 11
u
with toothless (rounded) shape; without serifsu = 'toothless-rounded-motion-serifed'
, cv45 = 12
u
with toothless (rounded) shape, and motion serifs at top-left and bottom-rightu = 'toothless-rounded-serifed'
, cv45 = 13
u
with toothless (rounded) shape, and serifs
- Styles for `v`:
@@ -345,7 +354,7 @@ Subsection `variants` is used to configure character variants in the font. Prope
- Styles for `z`:
z = 'straight-serifless'
, cv50 = 1
z
with straight body shape; without serifs (default for Sans)z = 'straight-serifless-with-crossbar'
, cv50 = 2
z
with straight body shape, and a diagonal crossbar; without serifsz = 'straight-serifless-with-horizontal-crossbar'
, cv50 = 3
z
with straight body shape, and a horizontal crossbar; without serifsz = 'straight-serifed'
, cv50 = 4
z
with straight body shape, and serifs (default for Slab Upright)z = 'straight-serifed-with-crossbar'
, cv50 = 5
z
with straight body shape, serifs, and a diagonal crossbarz = 'straight-serifed-with-horizontal-crossbar'
, cv50 = 6
z
with straight body shape, serifs, and a horizontal crossbarz = 'straight-bottom-serifed'
, cv50 = 7
z
with straight body shape, and serifs at bottomz = 'straight-bottom-serifed-with-crossbar'
, cv50 = 8
z
with straight body shape, serifs at bottom, and a diagonal crossbarz = 'straight-bottom-serifed-with-horizontal-crossbar'
, cv50 = 9
z
with straight body shape, serifs at bottom, and a horizontal crossbarz = 'straight-top-serifed'
, cv50 = 10
z
with straight body shape, and serifs at topz = 'straight-top-serifed-with-crossbar'
, cv50 = 11
z
with straight body shape, serifs at top, and a diagonal crossbarz = 'straight-top-serifed-with-horizontal-crossbar'
, cv50 = 12
z
with straight body shape, serifs at top, and a horizontal crossbarz = 'curly-serifless'
, cv50 = 13
z
with curly body shape; without serifsz = 'curly-serifless-with-crossbar'
, cv50 = 14
z
with curly body shape, and a diagonal crossbar; without serifsz = 'curly-serifless-with-horizontal-crossbar'
, cv50 = 15
z
with curly body shape, and a horizontal crossbar; without serifsz = 'curly-serifed'
, cv50 = 16
z
with curly body shape, and serifsz = 'curly-serifed-with-crossbar'
, cv50 = 17
z
with curly body shape, serifs, and a diagonal crossbarz = 'curly-serifed-with-horizontal-crossbar'
, cv50 = 18
z
with curly body shape, serifs, and a horizontal crossbarz = 'curly-bottom-serifed'
, cv50 = 19
z
with curly body shape, and serifs at bottomz = 'curly-bottom-serifed-with-crossbar'
, cv50 = 20
z
with curly body shape, serifs at bottom, and a diagonal crossbarz = 'curly-bottom-serifed-with-horizontal-crossbar'
, cv50 = 21
z
with curly body shape, serifs at bottom, and a horizontal crossbarz = 'curly-top-serifed'
, cv50 = 22
z
with curly body shape, and serifs at topz = 'curly-top-serifed-with-crossbar'
, cv50 = 23
z
with curly body shape, serifs at top, and a diagonal crossbarz = 'curly-top-serifed-with-horizontal-crossbar'
, cv50 = 24
z
with curly body shape, serifs at top, and a horizontal crossbarz = 'cursive'
, cv50 = 25
z
with cursive body shape (default for Slab Italic)z = 'cursive-with-crossbar'
, cv50 = 26
z
with cursive body shape, and a diagonal crossbarz = 'cursive-with-horizontal-crossbar'
, cv50 = 27
z
with cursive body shape, and a horizontal crossbar
- Styles for `ſ` (Long-S):
- long-s = 'bent-hook-serifless'
, cv51 = 1
Long S (ſ
) with bending top hook; without serifs (default for Sans Upright) long-s = 'bent-hook-middle-serifed'
, cv51 = 2
Long S (ſ
) with bending top hook, and middle serif long-s = 'bent-hook-middle-serifed-xh'
, cv51 = 3
Long S (ſ
) with bending top hook, and middle serif at x-height long-s = 'bent-hook-bottom-serifed'
, cv51 = 4
Long S (ſ
) with bending top hook, and bottom serif (default for Slab Upright) long-s = 'bent-hook-double-serifed'
, cv51 = 5
Long S (ſ
) with bending top hook, and bottom and middle serifs long-s = 'bent-hook-double-serifed-xh'
, cv51 = 6
Long S (ſ
) with bending top hook, and bottom and middle serifs at x-height long-s = 'flat-hook-serifless'
, cv51 = 7
Long S (ſ
) with flat top hook; without serifs long-s = 'flat-hook-middle-serifed'
, cv51 = 8
Long S (ſ
) with flat top hook, and middle serif long-s = 'flat-hook-middle-serifed-xh'
, cv51 = 9
Long S (ſ
) with flat top hook, and middle serif at x-height long-s = 'flat-hook-bottom-serifed'
, cv51 = 10
Long S (ſ
) with flat top hook, and bottom serif long-s = 'flat-hook-double-serifed'
, cv51 = 11
Long S (ſ
) with flat top hook, and bottom and middle serifs long-s = 'flat-hook-double-serifed-xh'
, cv51 = 12
Long S (ſ
) with flat top hook, and bottom and middle serifs at x-height long-s = 'bent-hook-descending'
, cv51 = 13
Long S (ſ
) with bending top hook, and terminal descends baseline; without serifs long-s = 'bent-hook-descending-middle-serifed'
, cv51 = 14
Long S (ſ
) with bending top hook, terminal descends baseline, and middle serif long-s = 'bent-hook-descending-middle-serifed-xh'
, cv51 = 15
Long S (ſ
) with bending top hook, terminal descends baseline, and middle serif at x-height long-s = 'flat-hook-descending'
, cv51 = 16
Long S (ſ
) with flat top hook, and terminal descends baseline; without serifs long-s = 'flat-hook-descending-middle-serifed'
, cv51 = 17
Long S (ſ
) with flat top hook, terminal descends baseline, and middle serif long-s = 'flat-hook-descending-middle-serifed-xh'
, cv51 = 18
Long S (ſ
) with flat top hook, terminal descends baseline, and middle serif at x-height long-s = 'bent-hook-tailed'
, cv51 = 19
Long S (ſ
) with bending top hook, and terminal has a tail; without serifs long-s = 'bent-hook-tailed-middle-serifed'
, cv51 = 20
Long S (ſ
) with bending top hook, terminal has a tail, and middle serif long-s = 'bent-hook-tailed-middle-serifed-xh'
, cv51 = 21
Long S (ſ
) with bending top hook, terminal has a tail, and middle serif at x-height long-s = 'flat-hook-tailed'
, cv51 = 22
Long S (ſ
) with flat top hook, and terminal has a tail; without serifs (default for Italic) long-s = 'flat-hook-tailed-middle-serifed'
, cv51 = 23
Long S (ſ
) with flat top hook, terminal has a tail, and middle serif long-s = 'flat-hook-tailed-middle-serifed-xh'
, cv51 = 24
Long S (ſ
) with flat top hook, terminal has a tail, and middle serif at x-height long-s = 'bent-hook-diagonal-tailed'
, cv51 = 25
Long S (ſ
) with bending top hook, and terminal has a diagonal tail; without serifs long-s = 'bent-hook-diagonal-tailed-middle-serifed'
, cv51 = 26
Long S (ſ
) with bending top hook, terminal has a diagonal tail, and middle serif long-s = 'bent-hook-diagonal-tailed-middle-serifed-xh'
, cv51 = 27
Long S (ſ
) with bending top hook, terminal has a diagonal tail, and middle serif at x-height long-s = 'flat-hook-diagonal-tailed'
, cv51 = 28
Long S (ſ
) with flat top hook, and terminal has a diagonal tail; without serifs long-s = 'flat-hook-diagonal-tailed-middle-serifed'
, cv51 = 29
Long S (ſ
) with flat top hook, terminal has a diagonal tail, and middle serif long-s = 'flat-hook-diagonal-tailed-middle-serifed-xh'
, cv51 = 30
Long S (ſ
) with flat top hook, terminal has a diagonal tail, and middle serif at x-height
+ long-s = 'bent-hook-serifless'
, cv51 = 1
Long S (ſ
) with bending top hook; without serifs (default for Sans Upright) long-s = 'bent-hook-middle-serifed'
, cv51 = 2
Long S (ſ
) with bending top hook, and middle serif long-s = 'bent-hook-middle-serifed-xh'
, cv51 = 3
Long S (ſ
) with bending top hook, and middle serif at x-height long-s = 'bent-hook-bottom-serifed'
, cv51 = 4
Long S (ſ
) with bending top hook, and bottom serif (default for Slab Upright) long-s = 'bent-hook-double-serifed'
, cv51 = 5
Long S (ſ
) with bending top hook, and bottom and middle serifs long-s = 'bent-hook-double-serifed-xh'
, cv51 = 6
Long S (ſ
) with bending top hook, and bottom and middle serifs at x-height long-s = 'bent-hook-descending'
, cv51 = 7
Long S (ſ
) with bending top hook, and terminal descends baseline; without serifs long-s = 'bent-hook-descending-middle-serifed'
, cv51 = 8
Long S (ſ
) with bending top hook, terminal descends baseline, and middle serif long-s = 'bent-hook-descending-middle-serifed-xh'
, cv51 = 9
Long S (ſ
) with bending top hook, terminal descends baseline, and middle serif at x-height long-s = 'bent-hook-tailed'
, cv51 = 10
Long S (ſ
) with bending top hook, and terminal has a tail; without serifs long-s = 'bent-hook-tailed-middle-serifed'
, cv51 = 11
Long S (ſ
) with bending top hook, terminal has a tail, and middle serif long-s = 'bent-hook-tailed-middle-serifed-xh'
, cv51 = 12
Long S (ſ
) with bending top hook, terminal has a tail, and middle serif at x-height long-s = 'bent-hook-diagonal-tailed'
, cv51 = 13
Long S (ſ
) with bending top hook, and terminal has a diagonal tail; without serifs long-s = 'bent-hook-diagonal-tailed-middle-serifed'
, cv51 = 14
Long S (ſ
) with bending top hook, terminal has a diagonal tail, and middle serif long-s = 'bent-hook-diagonal-tailed-middle-serifed-xh'
, cv51 = 15
Long S (ſ
) with bending top hook, terminal has a diagonal tail, and middle serif at x-height long-s = 'flat-hook-serifless'
, cv51 = 16
Long S (ſ
) with flat top hook; without serifs long-s = 'flat-hook-middle-serifed'
, cv51 = 17
Long S (ſ
) with flat top hook, and middle serif long-s = 'flat-hook-middle-serifed-xh'
, cv51 = 18
Long S (ſ
) with flat top hook, and middle serif at x-height long-s = 'flat-hook-bottom-serifed'
, cv51 = 19
Long S (ſ
) with flat top hook, and bottom serif long-s = 'flat-hook-double-serifed'
, cv51 = 20
Long S (ſ
) with flat top hook, and bottom and middle serifs long-s = 'flat-hook-double-serifed-xh'
, cv51 = 21
Long S (ſ
) with flat top hook, and bottom and middle serifs at x-height long-s = 'flat-hook-descending'
, cv51 = 22
Long S (ſ
) with flat top hook, and terminal descends baseline; without serifs long-s = 'flat-hook-descending-middle-serifed'
, cv51 = 23
Long S (ſ
) with flat top hook, terminal descends baseline, and middle serif long-s = 'flat-hook-descending-middle-serifed-xh'
, cv51 = 24
Long S (ſ
) with flat top hook, terminal descends baseline, and middle serif at x-height long-s = 'flat-hook-tailed'
, cv51 = 25
Long S (ſ
) with flat top hook, and terminal has a tail; without serifs (default for Italic) long-s = 'flat-hook-tailed-middle-serifed'
, cv51 = 26
Long S (ſ
) with flat top hook, terminal has a tail, and middle serif long-s = 'flat-hook-tailed-middle-serifed-xh'
, cv51 = 27
Long S (ſ
) with flat top hook, terminal has a tail, and middle serif at x-height long-s = 'flat-hook-diagonal-tailed'
, cv51 = 28
Long S (ſ
) with flat top hook, and terminal has a diagonal tail; without serifs long-s = 'flat-hook-diagonal-tailed-middle-serifed'
, cv51 = 29
Long S (ſ
) with flat top hook, terminal has a diagonal tail, and middle serif long-s = 'flat-hook-diagonal-tailed-middle-serifed-xh'
, cv51 = 30
Long S (ſ
) with flat top hook, terminal has a diagonal tail, and middle serif at x-height
- Styles for `ß` (Eszet):
eszet = 'traditional-serifless'
, cv52 = 1
Eszet (ß
) with traditional, Fraktur-like shape eszet = 'traditional-middle-serifed'
, cv52 = 2
Eszet (ß
) with traditional, Fraktur-like shape, and serif at middle eszet = 'traditional-bottom-serifed'
, cv52 = 3
Eszet (ß
) with traditional, Fraktur-like shape, and serif at bottom eszet = 'traditional-dual-serifed'
, cv52 = 4
Eszet (ß
) with traditional, Fraktur-like shape, and serif at middle and bottom eszet = 'traditional-descending-serifless'
, cv52 = 5
Eszet (ß
) with traditional, Fraktur-like shape, and terminal descends baseline eszet = 'traditional-descending-middle-serifed'
, cv52 = 6
Eszet (ß
) with traditional, Fraktur-like shape, terminal descends baseline, and serif at middle eszet = 'traditional-tailed-serifless'
, cv52 = 7
Eszet (ß
) with traditional, Fraktur-like shape, and terminal containing tail eszet = 'traditional-tailed-middle-serifed'
, cv52 = 8
Eszet (ß
) with traditional, Fraktur-like shape, terminal containing tail, and serif at middle eszet = 'traditional-flat-hook-serifless'
, cv52 = 9
Eszet (ß
) with traditional Fraktur-like shape (containing a flat top hook) eszet = 'traditional-flat-hook-middle-serifed'
, cv52 = 10
Eszet (ß
) with traditional Fraktur-like shape (containing a flat top hook), and serif at middle eszet = 'traditional-flat-hook-bottom-serifed'
, cv52 = 11
Eszet (ß
) with traditional Fraktur-like shape (containing a flat top hook), and serif at bottom eszet = 'traditional-flat-hook-dual-serifed'
, cv52 = 12
Eszet (ß
) with traditional Fraktur-like shape (containing a flat top hook), and serif at middle and bottom eszet = 'traditional-flat-hook-descending-serifless'
, cv52 = 13
Eszet (ß
) with traditional Fraktur-like shape (containing a flat top hook), and terminal descends baseline eszet = 'traditional-flat-hook-descending-middle-serifed'
, cv52 = 14
Eszet (ß
) with traditional Fraktur-like shape (containing a flat top hook), terminal descends baseline, and serif at middle eszet = 'traditional-flat-hook-tailed-serifless'
, cv52 = 15
Eszet (ß
) with traditional Fraktur-like shape (containing a flat top hook), and terminal containing tail eszet = 'traditional-flat-hook-tailed-middle-serifed'
, cv52 = 16
Eszet (ß
) with traditional Fraktur-like shape (containing a flat top hook), terminal containing tail, and serif at middle eszet = 'sulzbacher-serifless'
, cv52 = 17
Eszet (ß
) with more modern, beta-like shape (default for Sans Upright) eszet = 'sulzbacher-middle-serifed'
, cv52 = 18
Eszet (ß
) with more modern, beta-like shape, and serif at middle eszet = 'sulzbacher-middle-serifed-xh'
, cv52 = 19
Eszet (ß
) with more modern, beta-like shape, and serif at middle at x-height eszet = 'sulzbacher-bottom-serifed'
, cv52 = 20
Eszet (ß
) with more modern, beta-like shape, and serif at bottom (default for Slab Upright) eszet = 'sulzbacher-dual-serifed'
, cv52 = 21
Eszet (ß
) with more modern, beta-like shape, and serif at middle and bottom eszet = 'sulzbacher-dual-serifed-xh'
, cv52 = 22
Eszet (ß
) with more modern, beta-like shape, and serif at middle (x-height) and bottom eszet = 'sulzbacher-descending-serifless'
, cv52 = 23
Eszet (ß
) with more modern, beta-like shape, and terminal descends baseline eszet = 'sulzbacher-descending-middle-serifed'
, cv52 = 24
Eszet (ß
) with more modern, beta-like shape, terminal descends baseline, and serif at middle eszet = 'sulzbacher-descending-middle-serifed-xh'
, cv52 = 25
Eszet (ß
) with more modern, beta-like shape, terminal descends baseline, and serif at middle at x-height eszet = 'sulzbacher-tailed-serifless'
, cv52 = 26
Eszet (ß
) with more modern, beta-like shape, and terminal containing tail (default for Italic) eszet = 'sulzbacher-tailed-middle-serifed'
, cv52 = 27
Eszet (ß
) with more modern, beta-like shape, terminal containing tail, and serif at middle eszet = 'sulzbacher-tailed-middle-serifed-xh'
, cv52 = 28
Eszet (ß
) with more modern, beta-like shape, terminal containing tail, and serif at middle at x-height eszet = 'longs-s-lig-serifless'
, cv52 = 29
Eszet (ß
) with ligature of long-S (ſ
) and s
eszet = 'longs-s-lig-middle-serifed'
, cv52 = 30
Eszet (ß
) with ligature of long-S (ſ
) and s
, and serif at middle eszet = 'longs-s-lig-middle-serifed-xh'
, cv52 = 31
Eszet (ß
) with ligature of long-S (ſ
) and s
, and serif at middle at x-height eszet = 'longs-s-lig-bottom-serifed'
, cv52 = 32
Eszet (ß
) with ligature of long-S (ſ
) and s
, and serif at bottom eszet = 'longs-s-lig-dual-serifed'
, cv52 = 33
Eszet (ß
) with ligature of long-S (ſ
) and s
, and serif at middle and bottom eszet = 'longs-s-lig-dual-serifed-xh'
, cv52 = 34
Eszet (ß
) with ligature of long-S (ſ
) and s
, and serif at middle (x-height) and bottom eszet = 'longs-s-lig-descending-serifless'
, cv52 = 35
Eszet (ß
) with ligature of long-S (ſ
) and s
, and terminal descends baseline eszet = 'longs-s-lig-descending-middle-serifed'
, cv52 = 36
Eszet (ß
) with ligature of long-S (ſ
) and s
, terminal descends baseline, and serif at middle eszet = 'longs-s-lig-descending-middle-serifed-xh'
, cv52 = 37
Eszet (ß
) with ligature of long-S (ſ
) and s
, terminal descends baseline, and serif at middle at x-height eszet = 'longs-s-lig-tailed-serifless'
, cv52 = 38
Eszet (ß
) with ligature of long-S (ſ
) and s
, and terminal containing tail eszet = 'longs-s-lig-tailed-middle-serifed'
, cv52 = 39
Eszet (ß
) with ligature of long-S (ſ
) and s
, terminal containing tail, and serif at middle eszet = 'longs-s-lig-tailed-middle-serifed-xh'
, cv52 = 40
Eszet (ß
) with ligature of long-S (ſ
) and s
, terminal containing tail, and serif at middle at x-height
- Styles for `ð` (Lowercase Eth (`ð`)):
@@ -365,7 +374,7 @@ Subsection `variants` is used to configure character variants in the font. Prope
- Styles for `Λ` (Greek capital Lambda (`Λ`)):
capital-lambda = 'straight-serifless'
, cv60 = 1
Greek capital Lambda (Λ
) with straight shape; without serifs (default for Sans) capital-lambda = 'straight-top-serifed'
, cv60 = 2
Greek capital Lambda (Λ
) with straight shape, and serifs at top capital-lambda = 'straight-base-serifed'
, cv60 = 3
Greek capital Lambda (Λ
) with straight shape, and serifs at base (default for Slab) capital-lambda = 'straight-tri-serifed'
, cv60 = 4
Greek capital Lambda (Λ
) with straight shape, and serifs at both top and base capital-lambda = 'curly-serifless'
, cv60 = 5
Greek capital Lambda (Λ
) with curly shape; without serifs capital-lambda = 'curly-top-serifed'
, cv60 = 6
Greek capital Lambda (Λ
) with curly shape, and serifs at top capital-lambda = 'curly-base-serifed'
, cv60 = 7
Greek capital Lambda (Λ
) with curly shape, and serifs at base capital-lambda = 'curly-tri-serifed'
, cv60 = 8
Greek capital Lambda (Λ
) with curly shape, and serifs at both top and base
- Styles for `λ` (Greek small Lambda):
- lower-lambda = 'straight'
, cv61 = 1
More-straight Greek small Lambda (λ
) (default for Sans Upright, Sans Italic, Slab Italic) lower-lambda = 'straight-turn'
, cv61 = 2
Greek small Lambda (λ
) with straight upper and a tail turns leftward (default for Slab Upright) lower-lambda = 'curly'
, cv61 = 3
More curly Greek small Lambda (λ
), like Iosevka 2.x lower-lambda = 'curly-turn'
, cv61 = 4
More curly Greek small Lambda (λ
), like Iosevka 2.x, with a tail turns leftward lower-lambda = 'tailed-turn'
, cv61 = 5
More curly Greek small Lambda (λ
), with a tail turns leftward at top and a tail turns right at bottom-right lower-lambda = 'curly-tailed-turn'
, cv61 = 6
More curly Greek small Lambda (λ
), with a tail turns leftward at top, a tail turns right at bottom-right, and curly bottom-left leg
+ lower-lambda = 'straight'
, cv61 = 1
More-straight Greek small Lambda (λ
) (default for Sans Upright, Sans Italic, Slab Italic) lower-lambda = 'straight-turn'
, cv61 = 2
Greek small Lambda (λ
) with straight upper and a tail turns leftward (default for Slab Upright) lower-lambda = 'tailed-turn'
, cv61 = 3
More curly Greek small Lambda (λ
), with a tail turns leftward at top and a tail turns right at bottom-right lower-lambda = 'curly'
, cv61 = 4
More curly Greek small Lambda (λ
), like Iosevka 2.x lower-lambda = 'curly-turn'
, cv61 = 5
More curly Greek small Lambda (λ
), like Iosevka 2.x, with a tail turns leftward lower-lambda = 'curly-tailed-turn'
, cv61 = 6
More curly Greek small Lambda (λ
), with a tail turns leftward at top, a tail turns right at bottom-right, and curly bottom-left leg
- Styles for `μ` (Greek small Mu):
lower-mu = 'toothed-serifless'
, cv62 = 1
Greek small Mu (μ
) with toothed shape; without serifs lower-mu = 'toothed-motion-serifed'
, cv62 = 2
Greek small Mu (μ
) with toothed shape, and motion serifs at top-left and bottom-right lower-mu = 'toothed-bottom-right-serifed'
, cv62 = 3
Greek small Mu (μ
) with toothed shape, and serif at bottom-right lower-mu = 'toothed-serifed'
, cv62 = 4
Greek small Mu (μ
) with toothed shape, and serifs lower-mu = 'tailed-serifless'
, cv62 = 5
Greek small Mu (μ
) with tailed shape; without serifs (default for Sans) lower-mu = 'tailed-motion-serifed'
, cv62 = 6
Greek small Mu (μ
) with tailed shape, and motion serifs at top-left and bottom-right (default for Slab Italic) lower-mu = 'tailed-serifed'
, cv62 = 7
Greek small Mu (μ
) with tailed shape, and serifs (default for Slab Upright) lower-mu = 'toothless-corner-serifless'
, cv62 = 8
Greek small Mu (μ
) with toothless (corner bottom-right) shape; without serifs lower-mu = 'toothless-corner-motion-serifed'
, cv62 = 9
Greek small Mu (μ
) with toothless (corner bottom-right) shape, and motion serifs at top-left and bottom-right lower-mu = 'toothless-corner-serifed'
, cv62 = 10
Greek small Mu (μ
) with toothless (corner bottom-right) shape, and serifs lower-mu = 'toothless-rounded-serifless'
, cv62 = 11
Greek small Mu (μ
) with toothless (rounded) shape; without serifs lower-mu = 'toothless-rounded-motion-serifed'
, cv62 = 12
Greek small Mu (μ
) with toothless (rounded) shape, and motion serifs at top-left and bottom-right lower-mu = 'toothless-rounded-serifed'
, cv62 = 13
Greek small Mu (μ
) with toothless (rounded) shape, and serifs
- Styles for `ξ` (Greek lower Xi):
@@ -373,7 +382,7 @@ Subsection `variants` is used to configure character variants in the font. Prope
- Styles for `π` (Greek lower Pi):
lower-pi = 'tailless'
, cv64 = 1
Greek lower Pi (π
) with a tailless shape lower-pi = 'tailed'
, cv64 = 2
Greek lower Pi (π
) with a tailed shape (default) lower-pi = 'small-capital'
, cv64 = 3
Greek lower Pi (π
) with a small-capital shape
- Styles for `τ` (Greek lower Tau):
- lower-tau = 'tailless'
, cv65 = 1
Greek lower Tau (τ
) with a tailless shape lower-tau = 'tailed'
, cv65 = 2
Greek lower Tau (τ
) with curly tail lower-tau = 'flat-tailed'
, cv65 = 3
Greek lower Tau (τ
) with a flat tail (default) lower-tau = 'diagonal-tailed'
, cv65 = 4
Greek lower Tau (τ
) with a diagonal tail lower-tau = 'semi-tailed'
, cv65 = 5
Greek lower Tau (τ
) with a slightly curly tail lower-tau = 'short-tailed'
, cv65 = 6
Greek lower Tau (τ
) with a very short tail
+ lower-tau = 'tailless'
, cv65 = 1
Greek lower Tau (τ
) with a tailless shape lower-tau = 'short-tailed'
, cv65 = 2
Greek lower Tau (τ
) with a very short tail lower-tau = 'tailed'
, cv65 = 3
Greek lower Tau (τ
) with curly tail lower-tau = 'flat-tailed'
, cv65 = 4
Greek lower Tau (τ
) with a flat tail (default) lower-tau = 'diagonal-tailed'
, cv65 = 5
Greek lower Tau (τ
) with a diagonal tail lower-tau = 'semi-tailed'
, cv65 = 6
Greek lower Tau (τ
) with a slightly curly tail
- Styles for `χ` (Greek lower Chi):
lower-chi = 'straight-serifless'
, cv66 = 1
Greek lower Chi (χ
) with straight shape; without serifs (default for Sans) lower-chi = 'straight-motion-serifed'
, cv66 = 2
Greek lower Chi (χ
) with straight shape, and motion serifs lower-chi = 'straight-serifed'
, cv66 = 3
Greek lower Chi (χ
) with straight shape, and serifs (default for Slab) lower-chi = 'curly-serifless'
, cv66 = 4
Greek lower Chi (χ
) with curly shape; without serifs lower-chi = 'curly-motion-serifed'
, cv66 = 5
Greek lower Chi (χ
) with curly shape, and motion serifs lower-chi = 'curly-serifed'
, cv66 = 6
Greek lower Chi (χ
) with curly shape, and serifs lower-chi = 'semi-chancery-straight'
, cv66 = 7
Greek lower Chi (χ
) with Semi-chancery shape with straight counter-leg lower-chi = 'semi-chancery-curly'
, cv66 = 8
Greek lower Chi (χ
) with Semi-chancery shape with curly counter-leg lower-chi = 'chancery'
, cv66 = 9
Greek lower Chi (χ
) with Chancery shape
- Styles for `Ж` (Cyrillic Capital Zhe):
@@ -391,91 +400,91 @@ Subsection `variants` is used to configure character variants in the font. Prope
- Styles for `л` (Cyrillic Lower El):
cyrl-el = 'straight'
, cv73 = 1
Cyrillic Lower El (л
) with standard shape (default) cyrl-el = 'tailed'
, cv73 = 2
Cyrillic Lower El (л
) with tail shape
- Styles for `м` (Cyrillic Lower Em):
- cyrl-em = 'hanging-serifless'
, cv74 = 1
Cyrillic Lower Em (м
) with middle being hanging off baseline; without serifs (default for Sans) cyrl-em = 'hanging-motion-serifed'
, cv74 = 2
Cyrillic Lower Em (м
) with middle being hanging off baseline, and motion serifs cyrl-em = 'hanging-serifed'
, cv74 = 3
Cyrillic Lower Em (м
) with middle being hanging off baseline, and serifs (default for Slab) cyrl-em = 'slanted-sides-hanging-serifless'
, cv74 = 4
Cyrillic Lower Em (м
) with slanted sides, and middle being hanging off baseline; without serifs cyrl-em = 'slanted-sides-hanging-motion-serifed'
, cv74 = 5
Cyrillic Lower Em (м
) with slanted sides, middle being hanging off baseline, and motion serifs cyrl-em = 'slanted-sides-hanging-serifed'
, cv74 = 6
Cyrillic Lower Em (м
) with slanted sides, middle being hanging off baseline, and serifs cyrl-em = 'flat-bottom-serifless'
, cv74 = 7
Cyrillic Lower Em (м
) with middle aligned to baseline; without serifs cyrl-em = 'flat-bottom-motion-serifed'
, cv74 = 8
Cyrillic Lower Em (м
) with middle aligned to baseline, and motion serifs cyrl-em = 'flat-bottom-serifed'
, cv74 = 9
Cyrillic Lower Em (м
) with middle aligned to baseline, and serifs cyrl-em = 'slanted-sides-flat-bottom-serifless'
, cv74 = 10
Cyrillic Lower Em (м
) with slanted sides, and middle aligned to baseline; without serifs cyrl-em = 'slanted-sides-flat-bottom-motion-serifed'
, cv74 = 11
Cyrillic Lower Em (м
) with slanted sides, middle aligned to baseline, and motion serifs cyrl-em = 'slanted-sides-flat-bottom-serifed'
, cv74 = 12
Cyrillic Lower Em (м
) with slanted sides, middle aligned to baseline, and serifs
+ cyrl-em = 'hanging-serifless'
, cv74 = 1
Cyrillic Lower Em (м
) with middle being hanging off baseline; without serifs (default for Sans) cyrl-em = 'hanging-motion-serifed'
, cv74 = 2
Cyrillic Lower Em (м
) with middle being hanging off baseline, and motion serifs cyrl-em = 'hanging-serifed'
, cv74 = 3
Cyrillic Lower Em (м
) with middle being hanging off baseline, and serifs (default for Slab) cyrl-em = 'flat-bottom-serifless'
, cv74 = 4
Cyrillic Lower Em (м
) with middle aligned to baseline; without serifs cyrl-em = 'flat-bottom-motion-serifed'
, cv74 = 5
Cyrillic Lower Em (м
) with middle aligned to baseline, and motion serifs cyrl-em = 'flat-bottom-serifed'
, cv74 = 6
Cyrillic Lower Em (м
) with middle aligned to baseline, and serifs cyrl-em = 'slanted-sides-hanging-serifless'
, cv74 = 7
Cyrillic Lower Em (м
) with slanted sides, and middle being hanging off baseline; without serifs cyrl-em = 'slanted-sides-hanging-motion-serifed'
, cv74 = 8
Cyrillic Lower Em (м
) with slanted sides, middle being hanging off baseline, and motion serifs cyrl-em = 'slanted-sides-hanging-serifed'
, cv74 = 9
Cyrillic Lower Em (м
) with slanted sides, middle being hanging off baseline, and serifs cyrl-em = 'slanted-sides-flat-bottom-serifless'
, cv74 = 10
Cyrillic Lower Em (м
) with slanted sides, and middle aligned to baseline; without serifs cyrl-em = 'slanted-sides-flat-bottom-motion-serifed'
, cv74 = 11
Cyrillic Lower Em (м
) with slanted sides, middle aligned to baseline, and motion serifs cyrl-em = 'slanted-sides-flat-bottom-serifed'
, cv74 = 12
Cyrillic Lower Em (м
) with slanted sides, middle aligned to baseline, and serifs
- Styles for `н` (Cyrillic Lower En):
cyrl-en = 'serifless'
, cv75 = 1
Cyrillic Lower En (н
) without serifs (default for Sans) cyrl-en = 'top-left-serifed'
, cv75 = 2
Cyrillic Lower En (н
) with serifs at top left cyrl-en = 'top-left-bottom-right-serifed'
, cv75 = 3
Cyrillic Lower En (н
) with serifs at top left and bottom right (default for Slab Italic) cyrl-en = 'serifed'
, cv75 = 4
Cyrillic Lower En (н
) with serifs (default for Slab Upright) cyrl-en = 'tailed-serifless'
, cv75 = 5
Cyrillic Lower En (н
) with tail; without serifs cyrl-en = 'tailed-top-left-serifed'
, cv75 = 6
Cyrillic Lower En (н
) with tail, and serifs at top left cyrl-en = 'tailed-serifed'
, cv75 = 7
Cyrillic Lower En (н
) with tail, and serifs
- Styles for `р` (Cyrillic Lower Er):
- cyrl-er = 'eared-serifless'
, VXAA = 1
Cyrillic Lower Er (р
) with eared shape; without serifs (default for Sans) cyrl-er = 'eared-motion-serifed'
, VXAA = 2
Cyrillic Lower Er (р
) with eared shape, and motion serifs cyrl-er = 'eared-serifed'
, VXAA = 3
Cyrillic Lower Er (р
) with eared shape, and serifs (default for Slab) cyrl-er = 'earless-corner-serifless'
, VXAA = 4
Cyrillic Lower Er (р
) with earless (cornered) shape; without serifs cyrl-er = 'earless-corner-serifed'
, VXAA = 5
Cyrillic Lower Er (р
) with earless (cornered) shape, and serifs cyrl-er = 'earless-rounded-serifless'
, VXAA = 6
Cyrillic Lower Er (р
) with earless (rounded) shape; without serifs cyrl-er = 'earless-rounded-serifed'
, VXAA = 7
Cyrillic Lower Er (р
) with earless (rounded) shape, and serifs
+ cyrl-er = 'eared-serifless'
, cv76 = 1
Cyrillic Lower Er (р
) with eared shape; without serifs (default for Sans) cyrl-er = 'eared-motion-serifed'
, cv76 = 2
Cyrillic Lower Er (р
) with eared shape, and motion serifs cyrl-er = 'eared-serifed'
, cv76 = 3
Cyrillic Lower Er (р
) with eared shape, and serifs (default for Slab) cyrl-er = 'earless-corner-serifless'
, cv76 = 4
Cyrillic Lower Er (р
) with earless (cornered) shape; without serifs cyrl-er = 'earless-corner-serifed'
, cv76 = 5
Cyrillic Lower Er (р
) with earless (cornered) shape, and serifs cyrl-er = 'earless-rounded-serifless'
, cv76 = 6
Cyrillic Lower Er (р
) with earless (rounded) shape; without serifs cyrl-er = 'earless-rounded-serifed'
, cv76 = 7
Cyrillic Lower Er (р
) with earless (rounded) shape, and serifs
- Styles for `У` (Cyrillic Capital U):
- cyrl-capital-u = 'straight-serifless'
, cv76 = 1
Cyrillic Capital U (У
) with straight shape; without serifs (default for Sans) cyrl-capital-u = 'straight-motion-serifed'
, cv76 = 2
Cyrillic Capital U (У
) with straight shape, and motion serifs cyrl-capital-u = 'straight-serifed'
, cv76 = 3
Cyrillic Capital U (У
) with straight shape, and serifs cyrl-capital-u = 'straight-turn-serifless'
, cv76 = 4
Cyrillic Capital U (У
) with straight shape, and a tail turns leftward; without serifs cyrl-capital-u = 'straight-turn-motion-serifed'
, cv76 = 5
Cyrillic Capital U (У
) with straight shape, a tail turns leftward, and motion serifs cyrl-capital-u = 'straight-turn-serifed'
, cv76 = 6
Cyrillic Capital U (У
) with straight shape, a tail turns leftward, and serifs (default for Slab) cyrl-capital-u = 'curly-serifless'
, cv76 = 7
Cyrillic Capital U (У
) with curly shape; without serifs cyrl-capital-u = 'curly-motion-serifed'
, cv76 = 8
Cyrillic Capital U (У
) with curly shape, and motion serifs cyrl-capital-u = 'curly-serifed'
, cv76 = 9
Cyrillic Capital U (У
) with curly shape, and serifs cyrl-capital-u = 'curly-turn-serifless'
, cv76 = 10
Cyrillic Capital U (У
) with curly shape, and a tail turns leftward; without serifs cyrl-capital-u = 'curly-turn-motion-serifed'
, cv76 = 11
Cyrillic Capital U (У
) with curly shape, a tail turns leftward, and motion serifs cyrl-capital-u = 'curly-turn-serifed'
, cv76 = 12
Cyrillic Capital U (У
) with curly shape, a tail turns leftward, and serifs cyrl-capital-u = 'cursive-serifless'
, cv76 = 13
Cyrillic Capital U (У
) with cursive shape; without serifs cyrl-capital-u = 'cursive-motion-serifed'
, cv76 = 14
Cyrillic Capital U (У
) with cursive shape, and motion serifs cyrl-capital-u = 'cursive-serifed'
, cv76 = 15
Cyrillic Capital U (У
) with cursive shape, and serifs cyrl-capital-u = 'cursive-flat-hook-serifless'
, cv76 = 16
Cyrillic Capital U (У
) with cursive shape, and a flat terminal hook; without serifs cyrl-capital-u = 'cursive-flat-hook-motion-serifed'
, cv76 = 17
Cyrillic Capital U (У
) with cursive shape, a flat terminal hook, and motion serifs cyrl-capital-u = 'cursive-flat-hook-serifed'
, cv76 = 18
Cyrillic Capital U (У
) with cursive shape, a flat terminal hook, and serifs
+ cyrl-capital-u = 'straight-serifless'
, cv77 = 1
Cyrillic Capital U (У
) with straight shape; without serifs (default for Sans) cyrl-capital-u = 'straight-motion-serifed'
, cv77 = 2
Cyrillic Capital U (У
) with straight shape, and motion serifs cyrl-capital-u = 'straight-serifed'
, cv77 = 3
Cyrillic Capital U (У
) with straight shape, and serifs cyrl-capital-u = 'straight-turn-serifless'
, cv77 = 4
Cyrillic Capital U (У
) with straight shape, and a tail turns leftward; without serifs cyrl-capital-u = 'straight-turn-motion-serifed'
, cv77 = 5
Cyrillic Capital U (У
) with straight shape, a tail turns leftward, and motion serifs cyrl-capital-u = 'straight-turn-serifed'
, cv77 = 6
Cyrillic Capital U (У
) with straight shape, a tail turns leftward, and serifs (default for Slab) cyrl-capital-u = 'curly-serifless'
, cv77 = 7
Cyrillic Capital U (У
) with curly shape; without serifs cyrl-capital-u = 'curly-motion-serifed'
, cv77 = 8
Cyrillic Capital U (У
) with curly shape, and motion serifs cyrl-capital-u = 'curly-serifed'
, cv77 = 9
Cyrillic Capital U (У
) with curly shape, and serifs cyrl-capital-u = 'curly-turn-serifless'
, cv77 = 10
Cyrillic Capital U (У
) with curly shape, and a tail turns leftward; without serifs cyrl-capital-u = 'curly-turn-motion-serifed'
, cv77 = 11
Cyrillic Capital U (У
) with curly shape, a tail turns leftward, and motion serifs cyrl-capital-u = 'curly-turn-serifed'
, cv77 = 12
Cyrillic Capital U (У
) with curly shape, a tail turns leftward, and serifs cyrl-capital-u = 'cursive-serifless'
, cv77 = 13
Cyrillic Capital U (У
) with cursive shape; without serifs cyrl-capital-u = 'cursive-motion-serifed'
, cv77 = 14
Cyrillic Capital U (У
) with cursive shape, and motion serifs cyrl-capital-u = 'cursive-serifed'
, cv77 = 15
Cyrillic Capital U (У
) with cursive shape, and serifs cyrl-capital-u = 'cursive-flat-hook-serifless'
, cv77 = 16
Cyrillic Capital U (У
) with cursive shape, and a flat terminal hook; without serifs cyrl-capital-u = 'cursive-flat-hook-motion-serifed'
, cv77 = 17
Cyrillic Capital U (У
) with cursive shape, a flat terminal hook, and motion serifs cyrl-capital-u = 'cursive-flat-hook-serifed'
, cv77 = 18
Cyrillic Capital U (У
) with cursive shape, a flat terminal hook, and serifs
- Styles for `у` (Cyrillic Lower U):
- cyrl-u = 'straight-serifless'
, VXAB = 1
Cyrillic Lower U (у
) with straight shape; without serifs (default for Sans Upright) cyrl-u = 'straight-motion-serifed'
, VXAB = 2
Cyrillic Lower U (у
) with straight shape, and motion serifs cyrl-u = 'straight-serifed'
, VXAB = 3
Cyrillic Lower U (у
) with straight shape, and serifs cyrl-u = 'straight-turn-serifless'
, VXAB = 4
Cyrillic Lower U (у
) with straight shape, and a tail turns leftward; without serifs cyrl-u = 'straight-turn-motion-serifed'
, VXAB = 5
Cyrillic Lower U (у
) with straight shape, a tail turns leftward, and motion serifs cyrl-u = 'straight-turn-serifed'
, VXAB = 6
Cyrillic Lower U (у
) with straight shape, a tail turns leftward, and serifs (default for Slab Upright) cyrl-u = 'curly-serifless'
, VXAB = 7
Cyrillic Lower U (у
) with curly shape; without serifs cyrl-u = 'curly-motion-serifed'
, VXAB = 8
Cyrillic Lower U (у
) with curly shape, and motion serifs cyrl-u = 'curly-serifed'
, VXAB = 9
Cyrillic Lower U (у
) with curly shape, and serifs cyrl-u = 'curly-turn-serifless'
, VXAB = 10
Cyrillic Lower U (у
) with curly shape, and a tail turns leftward; without serifs cyrl-u = 'curly-turn-motion-serifed'
, VXAB = 11
Cyrillic Lower U (у
) with curly shape, a tail turns leftward, and motion serifs cyrl-u = 'curly-turn-serifed'
, VXAB = 12
Cyrillic Lower U (у
) with curly shape, a tail turns leftward, and serifs cyrl-u = 'cursive-serifless'
, VXAB = 13
Cyrillic Lower U (у
) with cursive shape; without serifs (default for Sans Italic) cyrl-u = 'cursive-motion-serifed'
, VXAB = 14
Cyrillic Lower U (у
) with cursive shape, and motion serifs (default for Slab Italic) cyrl-u = 'cursive-serifed'
, VXAB = 15
Cyrillic Lower U (у
) with cursive shape, and serifs cyrl-u = 'cursive-flat-hook-serifless'
, VXAB = 16
Cyrillic Lower U (у
) with cursive shape, and a flat terminal hook; without serifs cyrl-u = 'cursive-flat-hook-motion-serifed'
, VXAB = 17
Cyrillic Lower U (у
) with cursive shape, a flat terminal hook, and motion serifs cyrl-u = 'cursive-flat-hook-serifed'
, VXAB = 18
Cyrillic Lower U (у
) with cursive shape, a flat terminal hook, and serifs
+ cyrl-u = 'straight-serifless'
, cv78 = 1
Cyrillic Lower U (у
) with straight shape; without serifs (default for Sans Upright) cyrl-u = 'straight-motion-serifed'
, cv78 = 2
Cyrillic Lower U (у
) with straight shape, and motion serifs cyrl-u = 'straight-serifed'
, cv78 = 3
Cyrillic Lower U (у
) with straight shape, and serifs cyrl-u = 'straight-turn-serifless'
, cv78 = 4
Cyrillic Lower U (у
) with straight shape, and a tail turns leftward; without serifs cyrl-u = 'straight-turn-motion-serifed'
, cv78 = 5
Cyrillic Lower U (у
) with straight shape, a tail turns leftward, and motion serifs cyrl-u = 'straight-turn-serifed'
, cv78 = 6
Cyrillic Lower U (у
) with straight shape, a tail turns leftward, and serifs (default for Slab Upright) cyrl-u = 'curly-serifless'
, cv78 = 7
Cyrillic Lower U (у
) with curly shape; without serifs cyrl-u = 'curly-motion-serifed'
, cv78 = 8
Cyrillic Lower U (у
) with curly shape, and motion serifs cyrl-u = 'curly-serifed'
, cv78 = 9
Cyrillic Lower U (у
) with curly shape, and serifs cyrl-u = 'curly-turn-serifless'
, cv78 = 10
Cyrillic Lower U (у
) with curly shape, and a tail turns leftward; without serifs cyrl-u = 'curly-turn-motion-serifed'
, cv78 = 11
Cyrillic Lower U (у
) with curly shape, a tail turns leftward, and motion serifs cyrl-u = 'curly-turn-serifed'
, cv78 = 12
Cyrillic Lower U (у
) with curly shape, a tail turns leftward, and serifs cyrl-u = 'cursive-serifless'
, cv78 = 13
Cyrillic Lower U (у
) with cursive shape; without serifs (default for Sans Italic) cyrl-u = 'cursive-motion-serifed'
, cv78 = 14
Cyrillic Lower U (у
) with cursive shape, and motion serifs (default for Slab Italic) cyrl-u = 'cursive-serifed'
, cv78 = 15
Cyrillic Lower U (у
) with cursive shape, and serifs cyrl-u = 'cursive-flat-hook-serifless'
, cv78 = 16
Cyrillic Lower U (у
) with cursive shape, and a flat terminal hook; without serifs cyrl-u = 'cursive-flat-hook-motion-serifed'
, cv78 = 17
Cyrillic Lower U (у
) with cursive shape, a flat terminal hook, and motion serifs cyrl-u = 'cursive-flat-hook-serifed'
, cv78 = 18
Cyrillic Lower U (у
) with cursive shape, a flat terminal hook, and serifs
- Styles for `ф` (Cyrillic Lower Ef):
- cyrl-ef = 'serifless'
, cv77 = 1
Cyrillic Lower Ef (ф
) with straight bar; without serifs (default for Sans Upright) cyrl-ef = 'cursive'
, cv77 = 2
Cyrillic Lower Ef (ф
) with cursive bar (default for Italic) cyrl-ef = 'top-serifed'
, cv77 = 3
Cyrillic Lower Ef (ф
) with straight bar, and serif at top cyrl-ef = 'serifed'
, cv77 = 4
Cyrillic Lower Ef (ф
) with straight bar, and serifs at top and bottom (default for Slab Upright) cyrl-ef = 'split-serifless'
, cv77 = 5
Cyrillic Lower Ef (ф
) with split bowl, and straight bar; without serifs cyrl-ef = 'split-cursive'
, cv77 = 6
Cyrillic Lower Ef (ф
) with split bowl, and cursive bar cyrl-ef = 'split-top-serifed'
, cv77 = 7
Cyrillic Lower Ef (ф
) with split bowl, straight bar, and serif at top cyrl-ef = 'split-serifed'
, cv77 = 8
Cyrillic Lower Ef (ф
) with split bowl, straight bar, and serifs at top and bottom
+ cyrl-ef = 'serifless'
, cv79 = 1
Cyrillic Lower Ef (ф
) with straight bar; without serifs (default for Sans Upright) cyrl-ef = 'top-serifed'
, cv79 = 2
Cyrillic Lower Ef (ф
) with straight bar, and serif at top cyrl-ef = 'serifed'
, cv79 = 3
Cyrillic Lower Ef (ф
) with straight bar, and serifs at top and bottom (default for Slab Upright) cyrl-ef = 'cursive'
, cv79 = 4
Cyrillic Lower Ef (ф
) with cursive bar (default for Italic) cyrl-ef = 'split-serifless'
, cv79 = 5
Cyrillic Lower Ef (ф
) with split bowl, and straight bar; without serifs cyrl-ef = 'split-top-serifed'
, cv79 = 6
Cyrillic Lower Ef (ф
) with split bowl, straight bar, and serif at top cyrl-ef = 'split-serifed'
, cv79 = 7
Cyrillic Lower Ef (ф
) with split bowl, straight bar, and serifs at top and bottom cyrl-ef = 'split-cursive'
, cv79 = 8
Cyrillic Lower Ef (ф
) with split bowl, and cursive bar
- Styles for `ч` (Cyrillic Lower Che):
- cyrl-che = 'standard'
, cv78 = 1
Cyrillic Lower Che (ч
) with standard shape (default) cyrl-che = 'tailed'
, cv78 = 2
Cyrillic Lower Che (ч
) with tail
+ cyrl-che = 'standard'
, cv80 = 1
Cyrillic Lower Che (ч
) with standard shape (default) cyrl-che = 'tailed'
, cv80 = 2
Cyrillic Lower Che (ч
) with tail
- Styles for `ь` (Cyrillic Lower Yeri and related letters):
- cyrl-yeri = 'corner'
, cv79 = 1
Cyrillic Lower Yeri (ь
) with corner at bottom left (default for Upright) cyrl-yeri = 'round'
, cv79 = 2
Cyrillic Lower Yeri (ь
) with rounded shape (default for Sans Italic) cyrl-yeri = 'cursive'
, cv79 = 3
Cyrillic Lower Yeri (ь
) with cursive shape (default for Slab Italic)
+ cyrl-yeri = 'corner'
, cv81 = 1
Cyrillic Lower Yeri (ь
) with corner at bottom left (default for Upright) cyrl-yeri = 'round'
, cv81 = 2
Cyrillic Lower Yeri (ь
) with rounded shape (default for Sans Italic) cyrl-yeri = 'cursive'
, cv81 = 3
Cyrillic Lower Yeri (ь
) with cursive shape (default for Slab Italic)
- Styles for `ы` (Cyrillic Lower Yery):
- cyrl-yery = 'corner'
, cv80 = 1
Cyrillic Lower Yery (ы
) with corner at bottom left (default for Upright) cyrl-yery = 'corner-tailed'
, cv80 = 2
Cyrillic Lower Yery (ы
) with corner at bottom left and tail cyrl-yery = 'round'
, cv80 = 3
Cyrillic Lower Yery (ы
) with rounded shape (default for Sans Italic) cyrl-yery = 'round-tailed'
, cv80 = 4
Cyrillic Lower Yery (ы
) with rounded shape and tail cyrl-yery = 'cursive'
, cv80 = 5
Cyrillic Lower Yery (ы
) with cursive shape (default for Slab Italic) cyrl-yery = 'cursive-tailed'
, cv80 = 6
Cyrillic Lower Yery (ы
) with cursive shape and tail
+ cyrl-yery = 'corner'
, cv82 = 1
Cyrillic Lower Yery (ы
) with corner at bottom left (default for Upright) cyrl-yery = 'corner-tailed'
, cv82 = 2
Cyrillic Lower Yery (ы
) with corner at bottom left and tail cyrl-yery = 'round'
, cv82 = 3
Cyrillic Lower Yery (ы
) with rounded shape (default for Sans Italic) cyrl-yery = 'round-tailed'
, cv82 = 4
Cyrillic Lower Yery (ы
) with rounded shape and tail cyrl-yery = 'cursive'
, cv82 = 5
Cyrillic Lower Yery (ы
) with cursive shape (default for Slab Italic) cyrl-yery = 'cursive-tailed'
, cv82 = 6
Cyrillic Lower Yery (ы
) with cursive shape and tail
- Styles for `Я` (Cyrillic Capital Ya):
- cyrl-capital-ya = 'straight-serifless'
, cv81 = 1
Cyrillic Capital Ya (Я
) with straight leg; without serifs (default for Sans) cyrl-capital-ya = 'straight-motion-serifed'
, cv81 = 2
Cyrillic Capital Ya (Я
) with straight leg, and motion serifs at bottom-left cyrl-capital-ya = 'straight-serifed'
, cv81 = 3
Cyrillic Capital Ya (Я
) with straight leg, and serifs (default for Slab) cyrl-capital-ya = 'curly-serifless'
, cv81 = 4
Cyrillic Capital Ya (Я
) with curly leg; without serifs cyrl-capital-ya = 'curly-motion-serifed'
, cv81 = 5
Cyrillic Capital Ya (Я
) with curly leg, and motion serifs at bottom-left cyrl-capital-ya = 'curly-serifed'
, cv81 = 6
Cyrillic Capital Ya (Я
) with curly leg, and serifs cyrl-capital-ya = 'standing-serifless'
, cv81 = 7
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica); without serifs cyrl-capital-ya = 'standing-motion-serifed'
, cv81 = 8
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica), and motion serifs at bottom-left cyrl-capital-ya = 'standing-serifed'
, cv81 = 9
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica), and serifs cyrl-capital-ya = 'straight-open-serifless'
, cv81 = 10
Cyrillic Capital Ya (Я
) with straight leg, and open contour; without serifs cyrl-capital-ya = 'straight-open-motion-serifed'
, cv81 = 11
Cyrillic Capital Ya (Я
) with straight leg, open contour, and motion serifs at bottom-left cyrl-capital-ya = 'straight-open-serifed'
, cv81 = 12
Cyrillic Capital Ya (Я
) with straight leg, open contour, and serifs cyrl-capital-ya = 'curly-open-serifless'
, cv81 = 13
Cyrillic Capital Ya (Я
) with curly leg, and open contour; without serifs cyrl-capital-ya = 'curly-open-motion-serifed'
, cv81 = 14
Cyrillic Capital Ya (Я
) with curly leg, open contour, and motion serifs at bottom-left cyrl-capital-ya = 'curly-open-serifed'
, cv81 = 15
Cyrillic Capital Ya (Я
) with curly leg, open contour, and serifs cyrl-capital-ya = 'standing-open-serifless'
, cv81 = 16
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica), and open contour; without serifs cyrl-capital-ya = 'standing-open-motion-serifed'
, cv81 = 17
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica), open contour, and motion serifs at bottom-left cyrl-capital-ya = 'standing-open-serifed'
, cv81 = 18
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica), open contour, and serifs
+ cyrl-capital-ya = 'straight-serifless'
, cv83 = 1
Cyrillic Capital Ya (Я
) with straight leg; without serifs (default for Sans) cyrl-capital-ya = 'straight-motion-serifed'
, cv83 = 2
Cyrillic Capital Ya (Я
) with straight leg, and motion serifs at bottom-left cyrl-capital-ya = 'straight-serifed'
, cv83 = 3
Cyrillic Capital Ya (Я
) with straight leg, and serifs (default for Slab) cyrl-capital-ya = 'straight-open-serifless'
, cv83 = 4
Cyrillic Capital Ya (Я
) with straight leg, and open contour; without serifs cyrl-capital-ya = 'straight-open-motion-serifed'
, cv83 = 5
Cyrillic Capital Ya (Я
) with straight leg, open contour, and motion serifs at bottom-left cyrl-capital-ya = 'straight-open-serifed'
, cv83 = 6
Cyrillic Capital Ya (Я
) with straight leg, open contour, and serifs cyrl-capital-ya = 'curly-serifless'
, cv83 = 7
Cyrillic Capital Ya (Я
) with curly leg; without serifs cyrl-capital-ya = 'curly-motion-serifed'
, cv83 = 8
Cyrillic Capital Ya (Я
) with curly leg, and motion serifs at bottom-left cyrl-capital-ya = 'curly-serifed'
, cv83 = 9
Cyrillic Capital Ya (Я
) with curly leg, and serifs cyrl-capital-ya = 'curly-open-serifless'
, cv83 = 10
Cyrillic Capital Ya (Я
) with curly leg, and open contour; without serifs cyrl-capital-ya = 'curly-open-motion-serifed'
, cv83 = 11
Cyrillic Capital Ya (Я
) with curly leg, open contour, and motion serifs at bottom-left cyrl-capital-ya = 'curly-open-serifed'
, cv83 = 12
Cyrillic Capital Ya (Я
) with curly leg, open contour, and serifs cyrl-capital-ya = 'standing-serifless'
, cv83 = 13
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica); without serifs cyrl-capital-ya = 'standing-motion-serifed'
, cv83 = 14
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica), and motion serifs at bottom-left cyrl-capital-ya = 'standing-serifed'
, cv83 = 15
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica), and serifs cyrl-capital-ya = 'standing-open-serifless'
, cv83 = 16
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica), and open contour; without serifs cyrl-capital-ya = 'standing-open-motion-serifed'
, cv83 = 17
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica), open contour, and motion serifs at bottom-left cyrl-capital-ya = 'standing-open-serifed'
, cv83 = 18
Cyrillic Capital Ya (Я
) with standing leg (like Helvetica), open contour, and serifs
- Styles for `я` (Cyrillic Lower Ya):
- cyrl-ya = 'straight-serifless'
, cv82 = 1
Cyrillic Lower Ya (я
) with straight leg; without serifs (default for Sans) cyrl-ya = 'straight-motion-serifed'
, cv82 = 2
Cyrillic Lower Ya (я
) with straight leg, and motion serifs at bottom-left cyrl-ya = 'straight-serifed'
, cv82 = 3
Cyrillic Lower Ya (я
) with straight leg, and serifs (default for Slab) cyrl-ya = 'straight-tailed-serifless'
, cv82 = 4
Cyrillic Lower Ya (я
) with straight leg, and tail; without serifs cyrl-ya = 'straight-tailed-motion-serifed'
, cv82 = 5
Cyrillic Lower Ya (я
) with straight leg, tail, and motion serifs at bottom-left cyrl-ya = 'straight-tailed-serifed'
, cv82 = 6
Cyrillic Lower Ya (я
) with straight leg, tail, and serifs cyrl-ya = 'curly-serifless'
, cv82 = 7
Cyrillic Lower Ya (я
) with curly leg; without serifs cyrl-ya = 'curly-motion-serifed'
, cv82 = 8
Cyrillic Lower Ya (я
) with curly leg, and motion serifs at bottom-left cyrl-ya = 'curly-serifed'
, cv82 = 9
Cyrillic Lower Ya (я
) with curly leg, and serifs cyrl-ya = 'curly-tailed-serifless'
, cv82 = 10
Cyrillic Lower Ya (я
) with curly leg, and tail; without serifs cyrl-ya = 'curly-tailed-motion-serifed'
, cv82 = 11
Cyrillic Lower Ya (я
) with curly leg, tail, and motion serifs at bottom-left cyrl-ya = 'curly-tailed-serifed'
, cv82 = 12
Cyrillic Lower Ya (я
) with curly leg, tail, and serifs cyrl-ya = 'standing-serifless'
, cv82 = 13
Cyrillic Lower Ya (я
) with standing leg (like Helvetica); without serifs cyrl-ya = 'standing-motion-serifed'
, cv82 = 14
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), and motion serifs at bottom-left cyrl-ya = 'standing-serifed'
, cv82 = 15
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), and serifs cyrl-ya = 'standing-tailed-serifless'
, cv82 = 16
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), and tail; without serifs cyrl-ya = 'standing-tailed-motion-serifed'
, cv82 = 17
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), tail, and motion serifs at bottom-left cyrl-ya = 'standing-tailed-serifed'
, cv82 = 18
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), tail, and serifs cyrl-ya = 'straight-open-serifless'
, cv82 = 19
Cyrillic Lower Ya (я
) with straight leg, and open contour; without serifs cyrl-ya = 'straight-open-motion-serifed'
, cv82 = 20
Cyrillic Lower Ya (я
) with straight leg, open contour, and motion serifs at bottom-left cyrl-ya = 'straight-open-serifed'
, cv82 = 21
Cyrillic Lower Ya (я
) with straight leg, open contour, and serifs cyrl-ya = 'straight-open-tailed-serifless'
, cv82 = 22
Cyrillic Lower Ya (я
) with straight leg, open contour, and tail; without serifs cyrl-ya = 'straight-open-tailed-motion-serifed'
, cv82 = 23
Cyrillic Lower Ya (я
) with straight leg, open contour, tail, and motion serifs at bottom-left cyrl-ya = 'straight-open-tailed-serifed'
, cv82 = 24
Cyrillic Lower Ya (я
) with straight leg, open contour, tail, and serifs cyrl-ya = 'curly-open-serifless'
, cv82 = 25
Cyrillic Lower Ya (я
) with curly leg, and open contour; without serifs cyrl-ya = 'curly-open-motion-serifed'
, cv82 = 26
Cyrillic Lower Ya (я
) with curly leg, open contour, and motion serifs at bottom-left cyrl-ya = 'curly-open-serifed'
, cv82 = 27
Cyrillic Lower Ya (я
) with curly leg, open contour, and serifs cyrl-ya = 'curly-open-tailed-serifless'
, cv82 = 28
Cyrillic Lower Ya (я
) with curly leg, open contour, and tail; without serifs cyrl-ya = 'curly-open-tailed-motion-serifed'
, cv82 = 29
Cyrillic Lower Ya (я
) with curly leg, open contour, tail, and motion serifs at bottom-left cyrl-ya = 'curly-open-tailed-serifed'
, cv82 = 30
Cyrillic Lower Ya (я
) with curly leg, open contour, tail, and serifs cyrl-ya = 'standing-open-serifless'
, cv82 = 31
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), and open contour; without serifs cyrl-ya = 'standing-open-motion-serifed'
, cv82 = 32
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), open contour, and motion serifs at bottom-left cyrl-ya = 'standing-open-serifed'
, cv82 = 33
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), open contour, and serifs cyrl-ya = 'standing-open-tailed-serifless'
, cv82 = 34
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), open contour, and tail; without serifs cyrl-ya = 'standing-open-tailed-motion-serifed'
, cv82 = 35
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), open contour, tail, and motion serifs at bottom-left cyrl-ya = 'standing-open-tailed-serifed'
, cv82 = 36
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), open contour, tail, and serifs
+ cyrl-ya = 'straight-serifless'
, cv84 = 1
Cyrillic Lower Ya (я
) with straight leg; without serifs (default for Sans) cyrl-ya = 'straight-motion-serifed'
, cv84 = 2
Cyrillic Lower Ya (я
) with straight leg, and motion serifs at bottom-left cyrl-ya = 'straight-serifed'
, cv84 = 3
Cyrillic Lower Ya (я
) with straight leg, and serifs (default for Slab) cyrl-ya = 'straight-tailed-serifless'
, cv84 = 4
Cyrillic Lower Ya (я
) with straight leg, and tail; without serifs cyrl-ya = 'straight-tailed-motion-serifed'
, cv84 = 5
Cyrillic Lower Ya (я
) with straight leg, tail, and motion serifs at bottom-left cyrl-ya = 'straight-tailed-serifed'
, cv84 = 6
Cyrillic Lower Ya (я
) with straight leg, tail, and serifs cyrl-ya = 'straight-open-serifless'
, cv84 = 7
Cyrillic Lower Ya (я
) with straight leg, and open contour; without serifs cyrl-ya = 'straight-open-motion-serifed'
, cv84 = 8
Cyrillic Lower Ya (я
) with straight leg, open contour, and motion serifs at bottom-left cyrl-ya = 'straight-open-serifed'
, cv84 = 9
Cyrillic Lower Ya (я
) with straight leg, open contour, and serifs cyrl-ya = 'straight-open-tailed-serifless'
, cv84 = 10
Cyrillic Lower Ya (я
) with straight leg, open contour, and tail; without serifs cyrl-ya = 'straight-open-tailed-motion-serifed'
, cv84 = 11
Cyrillic Lower Ya (я
) with straight leg, open contour, tail, and motion serifs at bottom-left cyrl-ya = 'straight-open-tailed-serifed'
, cv84 = 12
Cyrillic Lower Ya (я
) with straight leg, open contour, tail, and serifs cyrl-ya = 'curly-serifless'
, cv84 = 13
Cyrillic Lower Ya (я
) with curly leg; without serifs cyrl-ya = 'curly-motion-serifed'
, cv84 = 14
Cyrillic Lower Ya (я
) with curly leg, and motion serifs at bottom-left cyrl-ya = 'curly-serifed'
, cv84 = 15
Cyrillic Lower Ya (я
) with curly leg, and serifs cyrl-ya = 'curly-tailed-serifless'
, cv84 = 16
Cyrillic Lower Ya (я
) with curly leg, and tail; without serifs cyrl-ya = 'curly-tailed-motion-serifed'
, cv84 = 17
Cyrillic Lower Ya (я
) with curly leg, tail, and motion serifs at bottom-left cyrl-ya = 'curly-tailed-serifed'
, cv84 = 18
Cyrillic Lower Ya (я
) with curly leg, tail, and serifs cyrl-ya = 'curly-open-serifless'
, cv84 = 19
Cyrillic Lower Ya (я
) with curly leg, and open contour; without serifs cyrl-ya = 'curly-open-motion-serifed'
, cv84 = 20
Cyrillic Lower Ya (я
) with curly leg, open contour, and motion serifs at bottom-left cyrl-ya = 'curly-open-serifed'
, cv84 = 21
Cyrillic Lower Ya (я
) with curly leg, open contour, and serifs cyrl-ya = 'curly-open-tailed-serifless'
, cv84 = 22
Cyrillic Lower Ya (я
) with curly leg, open contour, and tail; without serifs cyrl-ya = 'curly-open-tailed-motion-serifed'
, cv84 = 23
Cyrillic Lower Ya (я
) with curly leg, open contour, tail, and motion serifs at bottom-left cyrl-ya = 'curly-open-tailed-serifed'
, cv84 = 24
Cyrillic Lower Ya (я
) with curly leg, open contour, tail, and serifs cyrl-ya = 'standing-serifless'
, cv84 = 25
Cyrillic Lower Ya (я
) with standing leg (like Helvetica); without serifs cyrl-ya = 'standing-motion-serifed'
, cv84 = 26
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), and motion serifs at bottom-left cyrl-ya = 'standing-serifed'
, cv84 = 27
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), and serifs cyrl-ya = 'standing-tailed-serifless'
, cv84 = 28
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), and tail; without serifs cyrl-ya = 'standing-tailed-motion-serifed'
, cv84 = 29
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), tail, and motion serifs at bottom-left cyrl-ya = 'standing-tailed-serifed'
, cv84 = 30
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), tail, and serifs cyrl-ya = 'standing-open-serifless'
, cv84 = 31
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), and open contour; without serifs cyrl-ya = 'standing-open-motion-serifed'
, cv84 = 32
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), open contour, and motion serifs at bottom-left cyrl-ya = 'standing-open-serifed'
, cv84 = 33
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), open contour, and serifs cyrl-ya = 'standing-open-tailed-serifless'
, cv84 = 34
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), open contour, and tail; without serifs cyrl-ya = 'standing-open-tailed-motion-serifed'
, cv84 = 35
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), open contour, tail, and motion serifs at bottom-left cyrl-ya = 'standing-open-tailed-serifed'
, cv84 = 36
Cyrillic Lower Ya (я
) with standing leg (like Helvetica), open contour, tail, and serifs
- Styles for `0`:
- zero = 'unslashed'
, cv83 = 1
Zero (0
) with standard body shape; without slash zero = 'slashed'
, cv83 = 2
Zero (0
) with standard body shape, and slash (default) zero = 'reverse-slashed'
, cv83 = 3
Zero (0
) with standard body shape, and revese slash zero = 'tall-slashed'
, cv83 = 4
Zero (0
) with standard body shape, and tall slash zero = 'tall-reverse-slashed'
, cv83 = 5
Zero (0
) with standard body shape, and tall reverse slash zero = 'dotted'
, cv83 = 6
Zero (0
) with standard body shape, and center dot zero = 'long-dotted'
, cv83 = 7
Zero (0
) with standard body shape, and long center dot zero = 'slashed-split'
, cv83 = 8
Zero (0
) with standard body shape, and slash separated from the outline zero = 'reverse-slashed-split'
, cv83 = 9
Zero (0
) with standard body shape, and reverse slash separated from the outline zero = 'broken-slash'
, cv83 = 10
Zero (0
) with standard body shape, and slash broken in the middle (like in Fixedsys) zero = 'broken-reverse-slash'
, cv83 = 11
Zero (0
) with standard body shape, and reverse slash broken in the middle zero = 'broken-vertical-bar'
, cv83 = 12
Zero (0
) with standard body shape, and vertical bar broken in the middle zero = 'slashed-cutout'
, cv83 = 13
Zero (0
) with standard body shape, and a slash cutout zero = 'reverse-slashed-cutout'
, cv83 = 14
Zero (0
) with standard body shape, and a reverse-slash cutout zero = 'tall-slashed-cutout'
, cv83 = 15
Zero (0
) with standard body shape, and a taller slash cutout zero = 'tall-reverse-slashed-cutout'
, cv83 = 16
Zero (0
) with standard body shape, and a taller reverse-slash cutout zero = 'vertical-bar-cutout'
, cv83 = 17
Zero (0
) with standard body shape, and a vertical bar cutout zero = 'top-right-cutout'
, cv83 = 18
Zero (0
) with standard body shape, and the top-right bit cutout zero = 'oval-unslashed'
, cv83 = 19
Zero (0
) with oval body shape; without slash zero = 'oval-slashed'
, cv83 = 20
Zero (0
) with oval body shape, and slash zero = 'oval-reverse-slashed'
, cv83 = 21
Zero (0
) with oval body shape, and revese slash zero = 'oval-tall-slashed'
, cv83 = 22
Zero (0
) with oval body shape, and tall slash zero = 'oval-tall-reverse-slashed'
, cv83 = 23
Zero (0
) with oval body shape, and tall reverse slash zero = 'oval-dotted'
, cv83 = 24
Zero (0
) with oval body shape, and center dot zero = 'oval-long-dotted'
, cv83 = 25
Zero (0
) with oval body shape, and long center dot zero = 'oval-slashed-split'
, cv83 = 26
Zero (0
) with oval body shape, and slash separated from the outline zero = 'oval-reverse-slashed-split'
, cv83 = 27
Zero (0
) with oval body shape, and reverse slash separated from the outline zero = 'oval-broken-slash'
, cv83 = 28
Zero (0
) with oval body shape, and slash broken in the middle (like in Fixedsys) zero = 'oval-broken-reverse-slash'
, cv83 = 29
Zero (0
) with oval body shape, and reverse slash broken in the middle zero = 'oval-broken-vertical-bar'
, cv83 = 30
Zero (0
) with oval body shape, and vertical bar broken in the middle zero = 'oval-slashed-cutout'
, cv83 = 31
Zero (0
) with oval body shape, and a slash cutout zero = 'oval-reverse-slashed-cutout'
, cv83 = 32
Zero (0
) with oval body shape, and a reverse-slash cutout zero = 'oval-tall-slashed-cutout'
, cv83 = 33
Zero (0
) with oval body shape, and a taller slash cutout zero = 'oval-tall-reverse-slashed-cutout'
, cv83 = 34
Zero (0
) with oval body shape, and a taller reverse-slash cutout zero = 'oval-vertical-bar-cutout'
, cv83 = 35
Zero (0
) with oval body shape, and a vertical bar cutout zero = 'oval-top-right-cutout'
, cv83 = 36
Zero (0
) with oval body shape, and the top-right bit cutout zero = 'diamond-unslashed'
, cv83 = 37
Zero (0
) with diamond body shape; without slash zero = 'diamond-slashed'
, cv83 = 38
Zero (0
) with diamond body shape, and slash zero = 'diamond-reverse-slashed'
, cv83 = 39
Zero (0
) with diamond body shape, and revese slash zero = 'diamond-tall-slashed'
, cv83 = 40
Zero (0
) with diamond body shape, and tall slash zero = 'diamond-tall-reverse-slashed'
, cv83 = 41
Zero (0
) with diamond body shape, and tall reverse slash zero = 'diamond-dotted'
, cv83 = 42
Zero (0
) with diamond body shape, and center dot zero = 'diamond-long-dotted'
, cv83 = 43
Zero (0
) with diamond body shape, and long center dot zero = 'diamond-slashed-split'
, cv83 = 44
Zero (0
) with diamond body shape, and slash separated from the outline zero = 'diamond-reverse-slashed-split'
, cv83 = 45
Zero (0
) with diamond body shape, and reverse slash separated from the outline zero = 'diamond-broken-slash'
, cv83 = 46
Zero (0
) with diamond body shape, and slash broken in the middle (like in Fixedsys) zero = 'diamond-broken-reverse-slash'
, cv83 = 47
Zero (0
) with diamond body shape, and reverse slash broken in the middle zero = 'diamond-broken-vertical-bar'
, cv83 = 48
Zero (0
) with diamond body shape, and vertical bar broken in the middle zero = 'diamond-slashed-cutout'
, cv83 = 49
Zero (0
) with diamond body shape, and a slash cutout zero = 'diamond-reverse-slashed-cutout'
, cv83 = 50
Zero (0
) with diamond body shape, and a reverse-slash cutout zero = 'diamond-tall-slashed-cutout'
, cv83 = 51
Zero (0
) with diamond body shape, and a taller slash cutout zero = 'diamond-tall-reverse-slashed-cutout'
, cv83 = 52
Zero (0
) with diamond body shape, and a taller reverse-slash cutout zero = 'diamond-vertical-bar-cutout'
, cv83 = 53
Zero (0
) with diamond body shape, and a vertical bar cutout zero = 'diamond-top-right-cutout'
, cv83 = 54
Zero (0
) with diamond body shape, and the top-right bit cutout
+ zero = 'unslashed'
, cv85 = 1
Zero (0
) with standard body shape; without slash zero = 'slashed'
, cv85 = 2
Zero (0
) with standard body shape, and slash (default) zero = 'reverse-slashed'
, cv85 = 3
Zero (0
) with standard body shape, and revese slash zero = 'tall-slashed'
, cv85 = 4
Zero (0
) with standard body shape, and tall slash zero = 'tall-reverse-slashed'
, cv85 = 5
Zero (0
) with standard body shape, and tall reverse slash zero = 'dotted'
, cv85 = 6
Zero (0
) with standard body shape, and center dot zero = 'long-dotted'
, cv85 = 7
Zero (0
) with standard body shape, and long center dot zero = 'slashed-split'
, cv85 = 8
Zero (0
) with standard body shape, and slash separated from the outline zero = 'reverse-slashed-split'
, cv85 = 9
Zero (0
) with standard body shape, and reverse slash separated from the outline zero = 'broken-slash'
, cv85 = 10
Zero (0
) with standard body shape, and slash broken in the middle (like in Fixedsys) zero = 'broken-reverse-slash'
, cv85 = 11
Zero (0
) with standard body shape, and reverse slash broken in the middle zero = 'broken-vertical-bar'
, cv85 = 12
Zero (0
) with standard body shape, and vertical bar broken in the middle zero = 'slashed-cutout'
, cv85 = 13
Zero (0
) with standard body shape, and a slash cutout zero = 'reverse-slashed-cutout'
, cv85 = 14
Zero (0
) with standard body shape, and a reverse-slash cutout zero = 'tall-slashed-cutout'
, cv85 = 15
Zero (0
) with standard body shape, and a taller slash cutout zero = 'tall-reverse-slashed-cutout'
, cv85 = 16
Zero (0
) with standard body shape, and a taller reverse-slash cutout zero = 'vertical-bar-cutout'
, cv85 = 17
Zero (0
) with standard body shape, and a vertical bar cutout zero = 'top-right-cutout'
, cv85 = 18
Zero (0
) with standard body shape, and the top-right bit cutout zero = 'oval-unslashed'
, cv85 = 19
Zero (0
) with oval body shape; without slash zero = 'oval-slashed'
, cv85 = 20
Zero (0
) with oval body shape, and slash zero = 'oval-reverse-slashed'
, cv85 = 21
Zero (0
) with oval body shape, and revese slash zero = 'oval-tall-slashed'
, cv85 = 22
Zero (0
) with oval body shape, and tall slash zero = 'oval-tall-reverse-slashed'
, cv85 = 23
Zero (0
) with oval body shape, and tall reverse slash zero = 'oval-dotted'
, cv85 = 24
Zero (0
) with oval body shape, and center dot zero = 'oval-long-dotted'
, cv85 = 25
Zero (0
) with oval body shape, and long center dot zero = 'oval-slashed-split'
, cv85 = 26
Zero (0
) with oval body shape, and slash separated from the outline zero = 'oval-reverse-slashed-split'
, cv85 = 27
Zero (0
) with oval body shape, and reverse slash separated from the outline zero = 'oval-broken-slash'
, cv85 = 28
Zero (0
) with oval body shape, and slash broken in the middle (like in Fixedsys) zero = 'oval-broken-reverse-slash'
, cv85 = 29
Zero (0
) with oval body shape, and reverse slash broken in the middle zero = 'oval-broken-vertical-bar'
, cv85 = 30
Zero (0
) with oval body shape, and vertical bar broken in the middle zero = 'oval-slashed-cutout'
, cv85 = 31
Zero (0
) with oval body shape, and a slash cutout zero = 'oval-reverse-slashed-cutout'
, cv85 = 32
Zero (0
) with oval body shape, and a reverse-slash cutout zero = 'oval-tall-slashed-cutout'
, cv85 = 33
Zero (0
) with oval body shape, and a taller slash cutout zero = 'oval-tall-reverse-slashed-cutout'
, cv85 = 34
Zero (0
) with oval body shape, and a taller reverse-slash cutout zero = 'oval-vertical-bar-cutout'
, cv85 = 35
Zero (0
) with oval body shape, and a vertical bar cutout zero = 'oval-top-right-cutout'
, cv85 = 36
Zero (0
) with oval body shape, and the top-right bit cutout zero = 'diamond-unslashed'
, cv85 = 37
Zero (0
) with diamond body shape; without slash zero = 'diamond-slashed'
, cv85 = 38
Zero (0
) with diamond body shape, and slash zero = 'diamond-reverse-slashed'
, cv85 = 39
Zero (0
) with diamond body shape, and revese slash zero = 'diamond-tall-slashed'
, cv85 = 40
Zero (0
) with diamond body shape, and tall slash zero = 'diamond-tall-reverse-slashed'
, cv85 = 41
Zero (0
) with diamond body shape, and tall reverse slash zero = 'diamond-dotted'
, cv85 = 42
Zero (0
) with diamond body shape, and center dot zero = 'diamond-long-dotted'
, cv85 = 43
Zero (0
) with diamond body shape, and long center dot zero = 'diamond-slashed-split'
, cv85 = 44
Zero (0
) with diamond body shape, and slash separated from the outline zero = 'diamond-reverse-slashed-split'
, cv85 = 45
Zero (0
) with diamond body shape, and reverse slash separated from the outline zero = 'diamond-broken-slash'
, cv85 = 46
Zero (0
) with diamond body shape, and slash broken in the middle (like in Fixedsys) zero = 'diamond-broken-reverse-slash'
, cv85 = 47
Zero (0
) with diamond body shape, and reverse slash broken in the middle zero = 'diamond-broken-vertical-bar'
, cv85 = 48
Zero (0
) with diamond body shape, and vertical bar broken in the middle zero = 'diamond-slashed-cutout'
, cv85 = 49
Zero (0
) with diamond body shape, and a slash cutout zero = 'diamond-reverse-slashed-cutout'
, cv85 = 50
Zero (0
) with diamond body shape, and a reverse-slash cutout zero = 'diamond-tall-slashed-cutout'
, cv85 = 51
Zero (0
) with diamond body shape, and a taller slash cutout zero = 'diamond-tall-reverse-slashed-cutout'
, cv85 = 52
Zero (0
) with diamond body shape, and a taller reverse-slash cutout zero = 'diamond-vertical-bar-cutout'
, cv85 = 53
Zero (0
) with diamond body shape, and a vertical bar cutout zero = 'diamond-top-right-cutout'
, cv85 = 54
Zero (0
) with diamond body shape, and the top-right bit cutout
- Styles for `1`:
- one = 'line'
, cv84 = 1
1
drawn just like a straight lineone = 'no-base'
, cv84 = 2
1
without bottom serif (default for Sans)one = 'base'
, cv84 = 3
1
with bottom serif (default for Slab)one = 'no-base-long-top-serif'
, cv84 = 4
1
without bottom serif and with a long top serifone = 'base-long-top-serif'
, cv84 = 5
1
with bottom serif and a long top serifone = 'no-base-flat-top-serif'
, cv84 = 6
1
without bottom serif and with a flat top serifone = 'base-flat-top-serif'
, cv84 = 7
1
with bottom serif and a flat top serifone = 'no-base-top-cut'
, cv84 = 8
1
without bottom serif and with a diagonal cut at topone = 'base-top-cut'
, cv84 = 9
1
with bottom serif and a diagonal cut at top
+ one = 'line'
, cv86 = 1
1
drawn just like a straight lineone = 'no-base'
, cv86 = 2
1
without bottom serif (default for Sans)one = 'base'
, cv86 = 3
1
with bottom serif (default for Slab)one = 'no-base-long-top-serif'
, cv86 = 4
1
without bottom serif and with a long top serifone = 'base-long-top-serif'
, cv86 = 5
1
with bottom serif and a long top serifone = 'no-base-flat-top-serif'
, cv86 = 6
1
without bottom serif and with a flat top serifone = 'base-flat-top-serif'
, cv86 = 7
1
with bottom serif and a flat top serifone = 'no-base-top-cut'
, cv86 = 8
1
without bottom serif and with a diagonal cut at topone = 'base-top-cut'
, cv86 = 9
1
with bottom serif and a diagonal cut at top
- Styles for `2`:
- two = 'straight-neck'
, cv85 = 1
2
with straight necktwo = 'curly-neck'
, cv85 = 2
2
with curly neck (default)
+ two = 'straight-neck'
, cv87 = 1
2
with straight necktwo = 'curly-neck'
, cv87 = 2
2
with curly neck (default)
- Styles for `3`:
- three = 'flat-top'
, cv86 = 1
Flat top 3
(Like Museo Sans / Montserrat) three = 'two-arcs'
, cv86 = 2
Arched top 3
(default)
+ three = 'flat-top'
, cv88 = 1
Flat top 3
(Like Museo Sans / Montserrat) three = 'two-arcs'
, cv88 = 2
Arched top 3
(default)
- Styles for `4`:
- four = 'closed'
, cv87 = 1
4
with closed contourfour = 'closed-non-crossing'
, cv87 = 2
4
with closed contour but the horizontal bar does not overflow the vertical barfour = 'semi-open'
, cv87 = 3
4
with semi-open contour (default)four = 'semi-open-non-crossing'
, cv87 = 4
4
with semi-open contour but the horizontal bar does not overflow the vertical barfour = 'open'
, cv87 = 5
4
with open contourfour = 'open-non-crossing'
, cv87 = 6
4
with open contour but the horizontal bar does not overflow the vertical bar
+ four = 'closed'
, cv89 = 1
4
with closed contourfour = 'closed-non-crossing'
, cv89 = 2
4
with closed contour but the horizontal bar does not overflow the vertical barfour = 'semi-open'
, cv89 = 3
4
with semi-open contour (default)four = 'semi-open-non-crossing'
, cv89 = 4
4
with semi-open contour but the horizontal bar does not overflow the vertical barfour = 'open'
, cv89 = 5
4
with open contourfour = 'open-non-crossing'
, cv89 = 6
4
with open contour but the horizontal bar does not overflow the vertical bar
- Styles for `5`:
- five = 'upright-arched'
, cv88 = 1
5
with upright upper-left bar, and arched middle part (default)five = 'oblique-arched'
, cv88 = 2
5
with arched middle partfive = 'upright-flat'
, cv88 = 3
5
with upright upper-left bar, and flat middle partfive = 'oblique-flat'
, cv88 = 4
5
with flat middle part
+ five = 'upright-arched'
, cv90 = 1
5
with upright upper-left bar, and arched middle part (default)five = 'upright-flat'
, cv90 = 2
5
with upright upper-left bar, and flat middle partfive = 'oblique-arched'
, cv90 = 3
5
with arched middle partfive = 'oblique-flat'
, cv90 = 4
5
with flat middle part
- Styles for `6`:
- six = 'closed-contour'
, cv89 = 1
6
with a more closed contoursix = 'open-contour'
, cv89 = 2
6
with a more open contoursix = 'straight-bar'
, cv89 = 3
6
with a straight bar (default)
+ six = 'closed-contour'
, cv91 = 1
6
with a more closed contoursix = 'open-contour'
, cv91 = 2
6
with a more open contoursix = 'straight-bar'
, cv91 = 3
6
with a straight bar (default)
- Styles for `7`:
- seven = 'straight-serifless'
, cv90 = 1
7
with straight stem; without serifs (default for Sans)seven = 'straight-serifless-crossbar'
, cv90 = 2
7
with straight stem, and crossbar; without serifsseven = 'straight-serifed'
, cv90 = 3
7
with straight stem, and serifs (default for Slab)seven = 'straight-serifed-crossbar'
, cv90 = 4
7
with straight stem, serifs, and crossbarseven = 'bend-serifless'
, cv90 = 5
7
with bend stem; without serifsseven = 'bend-serifless-crossbar'
, cv90 = 6
7
with bend stem, and crossbar; without serifsseven = 'bend-serifed'
, cv90 = 7
7
with bend stem, and serifsseven = 'bend-serifed-crossbar'
, cv90 = 8
7
with bend stem, serifs, and crossbarseven = 'curly-serifless'
, cv90 = 9
7
with curly stem; without serifsseven = 'curly-serifless-crossbar'
, cv90 = 10
7
with curly stem, and crossbar; without serifsseven = 'curly-serifed'
, cv90 = 11
7
with curly stem, and serifsseven = 'curly-serifed-crossbar'
, cv90 = 12
7
with curly stem, serifs, and crossbar
+ seven = 'straight-serifless'
, cv92 = 1
7
with straight stem; without serifs (default for Sans)seven = 'straight-serifless-crossbar'
, cv92 = 2
7
with straight stem, and crossbar; without serifsseven = 'straight-serifed'
, cv92 = 3
7
with straight stem, and serifs (default for Slab)seven = 'straight-serifed-crossbar'
, cv92 = 4
7
with straight stem, serifs, and crossbarseven = 'bend-serifless'
, cv92 = 5
7
with bend stem; without serifsseven = 'bend-serifless-crossbar'
, cv92 = 6
7
with bend stem, and crossbar; without serifsseven = 'bend-serifed'
, cv92 = 7
7
with bend stem, and serifsseven = 'bend-serifed-crossbar'
, cv92 = 8
7
with bend stem, serifs, and crossbarseven = 'curly-serifless'
, cv92 = 9
7
with curly stem; without serifsseven = 'curly-serifless-crossbar'
, cv92 = 10
7
with curly stem, and crossbar; without serifsseven = 'curly-serifed'
, cv92 = 11
7
with curly stem, and serifsseven = 'curly-serifed-crossbar'
, cv92 = 12
7
with curly stem, serifs, and crossbar
- Styles for `8`:
- eight = 'crossing'
, cv91 = 1
8
with crossing middle part (default)eight = 'two-circles'
, cv91 = 2
8
looks like two circles joined togethereight = 'crossing-asymmetric'
, cv91 = 3
8
looks asymmetric crossing middle part
+ eight = 'crossing'
, cv93 = 1
8
with crossing middle part (default)eight = 'two-circles'
, cv93 = 2
8
looks like two circles joined togethereight = 'crossing-asymmetric'
, cv93 = 3
8
looks asymmetric crossing middle part
- Styles for `9`:
- nine = 'closed-contour'
, cv92 = 1
9
with a more closed contournine = 'open-contour'
, cv92 = 2
9
with a more open contournine = 'straight-bar'
, cv92 = 3
9
with a straight bar (default)
+ nine = 'closed-contour'
, cv94 = 1
9
with a more closed contournine = 'open-contour'
, cv94 = 2
9
with a more open contournine = 'straight-bar'
, cv94 = 3
9
with a straight bar (default)
- Styles for `öẋ`, `ij` (Dot and Comma shape in diacritics):
- diacritic-dot = 'round'
, cv93 = 1
Dots and Commas in diacritics are round (default) diacritic-dot = 'square'
, cv93 = 2
Dots and Commas in diacritics are square
+ diacritic-dot = 'round'
, cv95 = 1
Dots and Commas in diacritics are round (default) diacritic-dot = 'square'
, cv95 = 2
Dots and Commas in diacritics are square
- Styles for `.,`, `:;` (Dot and Comma shape in punctuations and symbols):
- punctuation-dot = 'round'
, cv94 = 1
Small punctuations (like .
, ,
) use round dots (default) punctuation-dot = 'square'
, cv94 = 2
Small punctuations (like .
, ,
) use square dots
+ punctuation-dot = 'round'
, cv96 = 1
Small punctuations (like .
, ,
) use round dots (default) punctuation-dot = 'square'
, cv96 = 2
Small punctuations (like .
, ,
) use square dots
- Styles for `~`:
- tilde = 'high'
, cv95 = 1
Higher tilde ~
tilde = 'low'
, cv95 = 2
Lower tilde ~
(default)
+ tilde = 'high'
, cv97 = 1
Higher tilde ~
tilde = 'low'
, cv97 = 2
Lower tilde ~
(default)
- Styles for `*`:
- asterisk = 'penta-high'
, cv96 = 1
Asterisk (*
) with five-pointed shape, and high position (default) asterisk = 'penta-mid'
, cv96 = 2
Asterisk (*
) with five-pointed shape, and medium position asterisk = 'penta-low'
, cv96 = 3
Asterisk (*
) with five-pointed shape, and low position asterisk = 'turn-penta-high'
, cv96 = 4
Asterisk (*
) with turned five-pointed shape, and high position asterisk = 'turn-penta-mid'
, cv96 = 5
Asterisk (*
) with turned five-pointed shape, and medium position asterisk = 'turn-penta-low'
, cv96 = 6
Asterisk (*
) with turned five-pointed shape, and low position asterisk = 'hex-high'
, cv96 = 7
Asterisk (*
) with six-pointed shape, and high position asterisk = 'hex-mid'
, cv96 = 8
Asterisk (*
) with six-pointed shape, and medium position asterisk = 'hex-low'
, cv96 = 9
Asterisk (*
) with six-pointed shape, and low position asterisk = 'turn-hex-high'
, cv96 = 10
Asterisk (*
) with turned six-pointed shape, and high position asterisk = 'turn-hex-mid'
, cv96 = 11
Asterisk (*
) with turned six-pointed shape, and medium position asterisk = 'turn-hex-low'
, cv96 = 12
Asterisk (*
) with turned six-pointed shape, and low position
+ asterisk = 'penta-high'
, cv98 = 1
Asterisk (*
) with five-pointed shape, and high position (default) asterisk = 'penta-mid'
, cv98 = 2
Asterisk (*
) with five-pointed shape, and medium position asterisk = 'penta-low'
, cv98 = 3
Asterisk (*
) with five-pointed shape, and low position asterisk = 'turn-penta-high'
, cv98 = 4
Asterisk (*
) with turned five-pointed shape, and high position asterisk = 'turn-penta-mid'
, cv98 = 5
Asterisk (*
) with turned five-pointed shape, and medium position asterisk = 'turn-penta-low'
, cv98 = 6
Asterisk (*
) with turned five-pointed shape, and low position asterisk = 'hex-high'
, cv98 = 7
Asterisk (*
) with six-pointed shape, and high position asterisk = 'hex-mid'
, cv98 = 8
Asterisk (*
) with six-pointed shape, and medium position asterisk = 'hex-low'
, cv98 = 9
Asterisk (*
) with six-pointed shape, and low position asterisk = 'turn-hex-high'
, cv98 = 10
Asterisk (*
) with turned six-pointed shape, and high position asterisk = 'turn-hex-mid'
, cv98 = 11
Asterisk (*
) with turned six-pointed shape, and medium position asterisk = 'turn-hex-low'
, cv98 = 12
Asterisk (*
) with turned six-pointed shape, and low position
- Styles for `_`:
- underscore = 'above-baseline'
, cv97 = 1
Extra-high _
, placed right below baseline underscore = 'high'
, cv97 = 2
Higher underscore _
, placed right below baseline (default) underscore = 'low'
, cv97 = 3
Lower underscore _
, placed right above descender line
+ underscore = 'above-baseline'
, cv99 = 1
Extra-high _
, placed right above baseline underscore = 'high'
, cv99 = 2
Higher underscore _
, placed right below baseline (default) underscore = 'low'
, cv99 = 3
Lower underscore _
, placed right above descender line
- Styles for `^`:
- caret = 'high'
, cv98 = 1
Higher circumflex ^
caret = 'medium'
, cv98 = 2
Lower circumflex ^
(default) caret = 'low'
, cv98 = 3
Lower circumflex ^
+ caret = 'high'
, VSAA = 1
Higher circumflex ^
caret = 'medium'
, VSAA = 2
Lower circumflex ^
(default) caret = 'low'
, VSAA = 3
Lower circumflex ^
+ - Styles for `` ` ``:
+ ascii-grave = 'straight'
, VSAB = 1
Show ASCII grave (`
) as short diagonal straight bar. (default) ascii-grave = 'raised-inverse-comma'
, VSAB = 2
Show ASCII grave (`
) as raised comma. ascii-grave = 'raised-turn-comma'
, VSAB = 3
Show ASCII grave (`
) as raised turned comma, identical to curly open single quote symbols (U+2018).
+ - Styles for `'`:
+ ascii-single-quote = 'straight'
, VSAC = 1
Show ASCII quote ("
) as short vertical straight bar. (default) ascii-single-quote = 'raised-comma'
, VSAC = 2
Show ASCII quote ("
) as raised comma.
- Styles for `(`, `)`:
- paren = 'normal'
, cv99 = 1
Parenthesis with normal contour (default) paren = 'large-contour'
, cv99 = 2
Parenthesis with larger contour, like that in Monaco paren = 'flat-arc'
, cv99 = 3
Parenthesis with flat arc, like that in JetBrains Mono
+ paren = 'normal'
, VSAD = 1
Parenthesis with normal contour (default) paren = 'large-contour'
, VSAD = 2
Parenthesis with larger contour, like that in Monaco paren = 'flat-arc'
, VSAD = 3
Parenthesis with flat arc, like that in JetBrains Mono
- Styles for `{`, `}`:
- brace = 'straight'
, VSAA = 1
More straight braces brace = 'curly'
, VSAA = 2
More curly braces (default) brace = 'curly-flat-boundary'
, VSAA = 3
Curly braces with flat boundary shape
+ brace = 'straight'
, VSAE = 1
More straight braces brace = 'curly'
, VSAE = 2
More curly braces (default) brace = 'curly-flat-boundary'
, VSAE = 3
Curly braces with flat boundary shape
- Styles for `«`, `»` (Guillemets):
- guillemet = 'straight'
, VSAB = 1
Straight Guillemets (« »
) guillemet = 'curly'
, VSAB = 2
Curly Guillemets (« »
) (default)
+ guillemet = 'straight'
, VSAF = 1
Straight Guillemets (« »
) guillemet = 'curly'
, VSAF = 2
Curly Guillemets (« »
) (default)
- Styles for `#`:
- number-sign = 'upright'
, VSAC = 1
Number sign with vertical bars (default) number-sign = 'slanted'
, VSAC = 2
Number sign with slanted bars number-sign = 'upright-open'
, VSAC = 3
Number sign with vertical bars and open inner number-sign = 'slanted-open'
, VSAC = 4
Number sign with slanted bars and open inner number-sign = 'upright-tall'
, VSAC = 5
Number sign with vertical bars and taller than digits number-sign = 'slanted-tall'
, VSAC = 6
Number sign with slanted bars and taller than digits number-sign = 'upright-open-tall'
, VSAC = 7
Number sign with vertical bars, open inner, and taller than digits number-sign = 'slanted-open-tall'
, VSAC = 8
Number sign with slanted bars, open inner, and taller than digits
+ number-sign = 'upright'
, VSAG = 1
Number sign with vertical bars (default) number-sign = 'slanted'
, VSAG = 2
Number sign with slanted bars number-sign = 'upright-open'
, VSAG = 3
Number sign with vertical bars and open inner number-sign = 'slanted-open'
, VSAG = 4
Number sign with slanted bars and open inner number-sign = 'upright-tall'
, VSAG = 5
Number sign with vertical bars and taller than digits number-sign = 'slanted-tall'
, VSAG = 6
Number sign with slanted bars and taller than digits number-sign = 'upright-open-tall'
, VSAG = 7
Number sign with vertical bars, open inner, and taller than digits number-sign = 'slanted-open-tall'
, VSAG = 8
Number sign with slanted bars, open inner, and taller than digits
- Styles for `&`:
- ampersand = 'closed'
, VSAD = 1
Ampersand (&
) with a closed contour (default) ampersand = 'upper-open'
, VSAD = 2
Ampersand (&
) with an open contour at upper half ampersand = 'lower-open'
, VSAD = 3
Ampersand (&
) with an open contour at lower half ampersand = 'flat-top'
, VSAD = 4
Ampersand (&
) drawn with a flat top ampersand = 'et-toothed'
, VSAD = 5
Ampersand (&
) drawn like a ligature of Ɛ and t with tooth ampersand = 'et-toothless-corner'
, VSAD = 6
Ampersand (&
) drawn like a ligature of Ɛ and t without tooth (corner) ampersand = 'et-toothless-rounded'
, VSAD = 7
Ampersand (&
) drawn like a ligature of Ɛ and t without tooth (rounded) ampersand = 'et-tailed'
, VSAD = 8
Ampersand (&
) drawn like a ligature of Ɛ and t with tail
+ ampersand = 'closed'
, VSAH = 1
Ampersand (&
) with a closed contour (default) ampersand = 'upper-open'
, VSAH = 2
Ampersand (&
) with an open contour at upper half ampersand = 'lower-open'
, VSAH = 3
Ampersand (&
) with an open contour at lower half ampersand = 'flat-top'
, VSAH = 4
Ampersand (&
) drawn with a flat top ampersand = 'et-toothed'
, VSAH = 5
Ampersand (&
) drawn like a ligature of Ɛ and t with tooth ampersand = 'et-toothless-corner'
, VSAH = 6
Ampersand (&
) drawn like a ligature of Ɛ and t without tooth (corner) ampersand = 'et-toothless-rounded'
, VSAH = 7
Ampersand (&
) drawn like a ligature of Ɛ and t without tooth (rounded) ampersand = 'et-tailed'
, VSAH = 8
Ampersand (&
) drawn like a ligature of Ɛ and t with tail
- Styles for `@`:
- at = 'threefold'
, VSAE = 1
At symbol (@
) with three-fold body (default) at = 'threefold-tall'
, VSAE = 2
At symbol (@
) with three-fold body, and tall height at = 'threefold-solid-inner'
, VSAE = 3
At symbol (@
) with three-fold body, and solid inner at = 'threefold-solid-inner-tall'
, VSAE = 4
At symbol (@
) with three-fold body, solid inner, and tall height at = 'fourfold'
, VSAE = 5
At symbol (@
) with four-fold body at = 'fourfold-tall'
, VSAE = 6
At symbol (@
) with four-fold body, and tall height at = 'fourfold-solid-inner'
, VSAE = 7
At symbol (@
) with four-fold body, and solid inner at = 'fourfold-solid-inner-tall'
, VSAE = 8
At symbol (@
) with four-fold body, solid inner, and tall height at = 'compact'
, VSAE = 9
At symbol (@
) with compact body
+ at = 'threefold'
, VSAI = 1
At symbol (@
) with three-fold body (default) at = 'threefold-tall'
, VSAI = 2
At symbol (@
) with three-fold body, and tall height at = 'threefold-solid-inner'
, VSAI = 3
At symbol (@
) with three-fold body, and solid inner at = 'threefold-solid-inner-tall'
, VSAI = 4
At symbol (@
) with three-fold body, solid inner, and tall height at = 'fourfold'
, VSAI = 5
At symbol (@
) with four-fold body at = 'fourfold-tall'
, VSAI = 6
At symbol (@
) with four-fold body, and tall height at = 'fourfold-solid-inner'
, VSAI = 7
At symbol (@
) with four-fold body, and solid inner at = 'fourfold-solid-inner-tall'
, VSAI = 8
At symbol (@
) with four-fold body, solid inner, and tall height at = 'compact'
, VSAI = 9
At symbol (@
) with compact body
- Styles for `$`:
- dollar = 'open'
, VSAF = 1
Dollar symbol with open contour dollar = 'through'
, VSAF = 2
Dollar symbol with strike-through vertical bar (default) dollar = 'interrupted'
, VSAF = 3
Dollar symbol with interrupted strike-through vertical bar dollar = 'open-cap'
, VSAF = 4
Dollar symbol with open contour, sized not exceeding baseline and ascender dollar = 'through-cap'
, VSAF = 5
Dollar symbol with strike-through vertical bar, sized not exceeding baseline and ascender dollar = 'interrupted-cap'
, VSAF = 6
Dollar symbol with interrupted strike-through vertical bar, sized not exceeding baseline and ascender
+ dollar = 'open'
, VSAJ = 1
Dollar symbol with open contour dollar = 'through'
, VSAJ = 2
Dollar symbol with strike-through vertical bar (default) dollar = 'interrupted'
, VSAJ = 3
Dollar symbol with interrupted strike-through vertical bar dollar = 'open-cap'
, VSAJ = 4
Dollar symbol with open contour, sized not exceeding baseline and ascender dollar = 'through-cap'
, VSAJ = 5
Dollar symbol with strike-through vertical bar, sized not exceeding baseline and ascender dollar = 'interrupted-cap'
, VSAJ = 6
Dollar symbol with interrupted strike-through vertical bar, sized not exceeding baseline and ascender
+ - Styles for `¢`:
+ cent = 'open'
, VSAK = 1
Cent sign (¢
) with open contour cent = 'through'
, VSAK = 2
Cent sign (¢
) with vertical bar all through the c
part (default) cent = 'bar-interrupted'
, VSAK = 3
Cent sign (¢
) with vertical bar breaks at center cent = 'open-cap'
, VSAK = 4
Cent sign (¢
) with open contour, sized not exceeding baseline and ascender cent = 'through-cap'
, VSAK = 5
Cent sign (¢
) with vertical bar all through the c
part, sized not exceeding baseline and ascender cent = 'bar-interrupted-cap'
, VSAK = 6
Cent sign (¢
) with vertical bar breaks at center, sized not exceeding baseline and ascender
- Styles for `%`:
- percent = 'dots'
, VSAG = 1
Percent %
with rectangular dots percent = 'rings-segmented-slash'
, VSAG = 2
Percent %
with rings and segmented slash (default) percent = 'rings-continuous-slash'
, VSAG = 3
Percent %
with rings and continuous bar percent = 'rings-continuous-slash-also-connected'
, VSAG = 4
Percent %
with rings and continuous bar and the slash in %
is also connected to the top-left ring
+ percent = 'dots'
, VSAL = 1
Percent %
with rectangular dots percent = 'rings-segmented-slash'
, VSAL = 2
Percent %
with rings and segmented slash (default) percent = 'rings-continuous-slash'
, VSAL = 3
Percent %
with rings and continuous bar percent = 'rings-continuous-slash-also-connected'
, VSAL = 4
Percent %
with rings and continuous bar and the slash in %
is also connected to the top-left ring
- Styles for `|`, `¦`:
- bar = 'natural-slope'
, VSAH = 1
Bar punctuations (|
) has a natural slope under italics and oblique (default) bar = 'force-upright'
, VSAH = 2
Bar punctuations (|
) is forced upright under italics and oblique
- - Styles for `'`:
- ascii-single-quote = 'straight'
, VSAI = 1
Show ASCII quote ("
) as short vertical straight bar. (default) ascii-single-quote = 'raised-comma'
, VSAI = 2
Show ASCII quote ("
) as raised comma.
- - Styles for `` ` ``:
- ascii-grave = 'straight'
, VSAJ = 1
Show ASCII grave (`
) as short diagonal straight bar. (default) ascii-grave = 'raised-inverse-comma'
, VSAJ = 2
Show ASCII grave (`
) as raised comma. ascii-grave = 'raised-turn-comma'
, VSAJ = 3
Show ASCII grave (`
) as raised turned comma, identical to curly open single quote symbols (U+2018).
+ bar = 'natural-slope'
, VSAM = 1
Bar punctuations (|
) has a natural slope under italics and oblique (default) bar = 'force-upright'
, VSAM = 2
Bar punctuations (|
) is forced upright under italics and oblique
- Styles for `?`:
- question = 'smooth'
, VSAK = 1
Smooth question mark (?
) (default) question = 'corner'
, VSAK = 2
Question mark (?
) with a corner at middle question = 'corner-flat-hooked'
, VSAK = 3
Question mark (?
) with a corner at middle and flat hook
+ question = 'smooth'
, VSAN = 1
Smooth question mark (?
) (default) question = 'corner'
, VSAN = 2
Question mark (?
) with a corner at middle question = 'corner-flat-hooked'
, VSAN = 3
Question mark (?
) with a corner at middle and flat hook
- Styles for `¶`:
- pilcrow = 'high'
, VSAL = 1
Higher pilcrow sign ¶
(default) pilcrow = 'low'
, VSAL = 2
Lower pilcrow sign ¶
- - Styles for `¢`:
- cent = 'open'
, VSAM = 1
Cent sign (¢
) with open contour cent = 'through'
, VSAM = 2
Cent sign (¢
) with vertical bar all through the c
part (default) cent = 'bar-interrupted'
, VSAM = 3
Cent sign (¢
) with vertical bar breaks at center cent = 'open-cap'
, VSAM = 4
Cent sign (¢
) with open contour, sized not exceeding baseline and ascender cent = 'through-cap'
, VSAM = 5
Cent sign (¢
) with vertical bar all through the c
part, sized not exceeding baseline and ascender cent = 'bar-interrupted-cap'
, VSAM = 6
Cent sign (¢
) with vertical bar breaks at center, sized not exceeding baseline and ascender
+ pilcrow = 'high'
, VSAO = 1
Higher pilcrow sign ¶
(default) pilcrow = 'low'
, VSAO = 2
Lower pilcrow sign ¶
- Styles for `∂` (Partial derivative symbol):
- partial-derivative = 'straight-bar'
, VSAN = 1
The upper bar of the partial derivative symbol is straight partial-derivative = 'curly-bar'
, VSAN = 2
The upper bar of the partial derivative symbol is curly (default)
+ partial-derivative = 'straight-bar'
, VSAP = 1
The upper bar of the partial derivative symbol is straight partial-derivative = 'curly-bar'
, VSAP = 2
The upper bar of the partial derivative symbol is curly (default)
- Styles for `µ` (Micro sign):
- micro-sign = 'toothed-serifless'
, VSAO = 1
Micro Sign (µ
) with toothed shape; without serifs (default for Sans Upright) micro-sign = 'toothed-motion-serifed'
, VSAO = 2
Micro Sign (µ
) with toothed shape, and motion serifs at top-left and bottom-right micro-sign = 'toothed-bottom-right-serifed'
, VSAO = 3
Micro Sign (µ
) with toothed shape, and serif at bottom-right micro-sign = 'toothed-serifed'
, VSAO = 4
Micro Sign (µ
) with toothed shape, and serifs (default for Slab Upright) micro-sign = 'tailed-serifless'
, VSAO = 5
Micro Sign (µ
) with tailed shape; without serifs (default for Sans Italic) micro-sign = 'tailed-motion-serifed'
, VSAO = 6
Micro Sign (µ
) with tailed shape, and motion serifs at top-left and bottom-right (default for Slab Italic) micro-sign = 'tailed-serifed'
, VSAO = 7
Micro Sign (µ
) with tailed shape, and serifs micro-sign = 'toothless-corner-serifless'
, VSAO = 8
Micro Sign (µ
) with toothless (corner bottom-right) shape; without serifs micro-sign = 'toothless-corner-motion-serifed'
, VSAO = 9
Micro Sign (µ
) with toothless (corner bottom-right) shape, and motion serifs at top-left and bottom-right micro-sign = 'toothless-corner-serifed'
, VSAO = 10
Micro Sign (µ
) with toothless (corner bottom-right) shape, and serifs micro-sign = 'toothless-rounded-serifless'
, VSAO = 11
Micro Sign (µ
) with toothless (rounded) shape; without serifs micro-sign = 'toothless-rounded-motion-serifed'
, VSAO = 12
Micro Sign (µ
) with toothless (rounded) shape, and motion serifs at top-left and bottom-right micro-sign = 'toothless-rounded-serifed'
, VSAO = 13
Micro Sign (µ
) with toothless (rounded) shape, and serifs
+ micro-sign = 'toothed-serifless'
, VSAQ = 1
Micro Sign (µ
) with toothed shape; without serifs (default for Sans Upright) micro-sign = 'toothed-motion-serifed'
, VSAQ = 2
Micro Sign (µ
) with toothed shape, and motion serifs at top-left and bottom-right micro-sign = 'toothed-bottom-right-serifed'
, VSAQ = 3
Micro Sign (µ
) with toothed shape, and serif at bottom-right micro-sign = 'toothed-serifed'
, VSAQ = 4
Micro Sign (µ
) with toothed shape, and serifs (default for Slab Upright) micro-sign = 'tailed-serifless'
, VSAQ = 5
Micro Sign (µ
) with tailed shape; without serifs (default for Sans Italic) micro-sign = 'tailed-motion-serifed'
, VSAQ = 6
Micro Sign (µ
) with tailed shape, and motion serifs at top-left and bottom-right (default for Slab Italic) micro-sign = 'tailed-serifed'
, VSAQ = 7
Micro Sign (µ
) with tailed shape, and serifs micro-sign = 'toothless-corner-serifless'
, VSAQ = 8
Micro Sign (µ
) with toothless (corner bottom-right) shape; without serifs micro-sign = 'toothless-corner-motion-serifed'
, VSAQ = 9
Micro Sign (µ
) with toothless (corner bottom-right) shape, and motion serifs at top-left and bottom-right micro-sign = 'toothless-corner-serifed'
, VSAQ = 10
Micro Sign (µ
) with toothless (corner bottom-right) shape, and serifs micro-sign = 'toothless-rounded-serifless'
, VSAQ = 11
Micro Sign (µ
) with toothless (rounded) shape; without serifs micro-sign = 'toothless-rounded-motion-serifed'
, VSAQ = 12
Micro Sign (µ
) with toothless (rounded) shape, and motion serifs at top-left and bottom-right micro-sign = 'toothless-rounded-serifed'
, VSAQ = 13
Micro Sign (µ
) with toothless (rounded) shape, and serifs
- Styles for `<=`, `>=` (Less-equal and Greater-equal ligations):
lig-ltgteq = 'flat'
, VLAA = 1
The lower bar of <=
and >=
ligation is flat (default) lig-ltgteq = 'slanted'
, VLAA = 2
The lower bar of <=
and >=
ligation is slanted
- Styles for `!=` (Not-equal ligations):
@@ -493,30 +502,34 @@ Subsection `variants` is used to configure character variants in the font. Prope
#### Configuring Weights, Widths and Slopes
-Subsection `weights` is used to change the weight grades that the custom family needs. It is a dictionary of either strings formatted in `default.` format, meaning reusing a default weight grade, or sub-objects with properties:
+Subsection `weights` is used to change the weight grades that the custom family needs. It is a dictionary from the filename suffix (in PascalCase) to either...
-* `shape`: Number, configures the weight grade of the glyphs' shapes.
-* `menu`: Integer, configures the weight grade used when naming fonts.
-* `css`: Integer, configures the weight grade used in web font CSS.
+ * A string formatted in `default.` format, meaning reusing a default weight grade;
+ * Or, a sub-object with properties:
+ * `shape`: Number, configures the weight grade of the glyphs' shapes.
+ * `menu`: Integer, configures the weight grade used when naming fonts.
+ * `css`: Integer, configures the weight grade used in web font CSS.
-Subsection `widths` is used to change the width grades that the custom family needs. It is a dictionary of either strings formatted in `default.` format, meaning reusing a default width grade, or sub-objects with properties:
+Subsection `widths` is used to change the width grades that the custom family needs. It is a dictionary from the filename suffix (in PascalCase) to either...
-* `shape`: Number, configures the width of the glyphs' shapes, measured in 1/1000 em.
-* `menu`: Integer, configures the width grade used when naming fonts. The valid values are `1` to `9`, inclusive.
-* `css`: String, configures the [font-stretch](https://developer.mozilla.org/en-US/docs/Web/CSS/font-stretch) value used in web font CSS.
+ * A string formatted in `default.` format, meaning reusing a default width grade;
+ * Or, a sub-object with properties:
+ * `shape`: Number, configures the width of the glyphs' shapes, measured in 1/1000 em.
+ * `menu`: Integer, configures the width grade used when naming fonts. The valid values are from `1` to `9`, inclusive.
+ * `css`: String, configures the [font-stretch](https://developer.mozilla.org/en-US/docs/Web/CSS/font-stretch) value used in web font CSS.
-Subsection `slopes` is used to change the slope angles and grades that the custom family needs. It is a dictionary of either strings formatted in `default.` format, meaning reusing a default slope grade, or sub-objects with properties:
+Subsection `slopes` is used to change the slope angles and grades that the custom family needs. It is a dictionary from the filename suffix (in PascalCase) to either...
-* `angle`: Number, configures the slope angle in degrees. The valid vales are `0` to `15`, inclusive.
-* `shape`: String from `upright`, `italic` or `oblique`. Configures the slope used for variant selection.
-* `menu`: String from `upright`, `italic` or `oblique`. Configures the slope grade used when naming fonts.
-* `css`: String from `normal`, `italic` or `oblique`. Configures the [CSS font-style](https://developer.mozilla.org/zh-CN/docs/Web/CSS/font-style) value.
-
-Subsection `slopes` is a simple string-to-string dictionary maps slopes (`upright`, `italic` or `oblique`) to [CSS font-style](https://developer.mozilla.org/zh-CN/docs/Web/CSS/font-style) values, represented in string.
+ * A string formatted in `default.` format, meaning reusing a default slope grade;
+ * Or, a sub-object with properties:
+ * `angle`: Number, configures the slope angle in degrees. The valid vales are from `0` to `15`, inclusive.
+ * `shape`: String from `upright`, `italic` or `oblique`. Configures the slope used for variant selection.
+ * `menu`: String from `upright`, `italic` or `oblique`. Configures the slope grade used when naming fonts.
+ * `css`: String from `normal`, `italic` or `oblique`. Configures the [CSS font-style](https://developer.mozilla.org/zh-CN/docs/Web/CSS/font-style) value.
#### Compatibility Ligatures
-Certain software, notably Emacs, relies on pre-encoded ligatures instead of OpenType to provide ligations. Iosevka could be configured with additional subsection `compatibility-ligatures`, being an array of records with following fields:
+Certain software, notably Emacs, relies on pre-encoded ligatures instead of OpenType to provide ligations. Iosevka could be configured with additional subsection `compatibilityLigatures`, being an array of records with following fields:
* `unicode`: The PUA code point being assigned to.
* `featureTag`: The feature tag to compute ligations.
@@ -525,15 +538,24 @@ Certain software, notably Emacs, relies on pre-encoded ligatures instead of Open
A sample of compatibility ligature config is:
```toml
-[[buildPlans.iosevka-custom.compatibility-ligatures]]
+[[buildPlans.IosevkaCustom.compatibilityLigatures]]
unicode = 57600 # 0xE100
featureTag = 'calt'
sequence = '<*>'
```
+#### Excluding Characters
+
+Use the `excludeChars` configuration to exclude character ranges from the font.
+
+```toml
+[buildPlans.iosevkaCustom.excludeChars]
+ranges = [[10003, 10008]]
+```
+
#### Metric Override
-Subsection `metric-override` provides ability to override certain metric values, if you *reallly* want to. Adding this section is **strongly discouraged** as it may introduce broken geometry or broken shapes.
+Subsection `metricOverride` provides ability to override certain metric values, if you *reallly* want to. Adding this section is **strongly discouraged** as it may introduce broken geometry or broken shapes.
| Property | Unit | Default Value | Meaning |
|----------|------|---------|----------|
@@ -592,7 +614,7 @@ Valid functions include:
For example, the following configuration:
```toml
-[buildPlans.iosevka-custom.metric-override]
+[buildPlans.IosevkaCustom.metricOverride]
leading = 1500
sb = 'default_sb * 1.0625 + 15'
dotSize = 'blend(weight, [100, 50], [400, 125], [900, 180])'
@@ -614,12 +636,12 @@ It is possible to create a customized TTC build by using the following method:
1. Add a collect plan into `private-build-plans.toml`, with a `from` field containing all the TTF groups it needs:
```toml
- [collectPlans.iosevka-custom]
- from = ["iosevka-custom1", "iosevka-custom-2"]
+ [collectPlans.IosevkaCustom]
+ from = ["IosevkaCustom1", "IosevkaCustom2"]
```
2. Run build with the following command:
- - `npm run build -- ttc::iosevka-custom`: Create TTCs from collection `iosevka-custom`; The file will be saved into `dist/.ttc`.
- - `npm run build -- super-ttc::iosevka-custom`: Create a single-file TTC from collection `iosevka-custom`; The file will be saved into `dist/.super-ttc`.
+ - `npm run build -- ttc::IosevkaCustom`: Create TTCs from collection `IosevkaCustom`; The file will be saved into `dist/.ttc`.
+ - `npm run build -- super-ttc::IosevkaCustom`: Create a single-file TTC from collection `IosevkaCustom`; The file will be saved into `dist/.super-ttc`.
### Baking other OpenType features
diff --git a/doc/cv-influences.md b/doc/cv-influences.md
index d4a920bbd1..5cb6472cd1 100644
--- a/doc/cv-influences.md
+++ b/doc/cv-influences.md
@@ -21,7 +21,7 @@
- `cv05`:
- E (`U+0045`), Æ (`U+00C6`), È (`U+00C8`), É (`U+00C9`), Ê (`U+00CA`), Ë (`U+00CB`), Ē (`U+0112`), Ĕ (`U+0114`), Ė (`U+0116`), Ę (`U+0118`), Ě (`U+011A`), Œ (`U+0152`), Ǝ (`U+018E`), Ǣ (`U+01E2`), Ǽ (`U+01FC`), Ȅ (`U+0204`), Ȇ (`U+0206`), Ȩ (`U+0228`), Ɇ (`U+0246`), ɶ (`U+0276`), Έ (`U+0388`), Ε (`U+0395`), Ѐ (`U+0400`), Ё (`U+0401`), Е (`U+0415`), Ӕ (`U+04D4`), Ӗ (`U+04D6`), ᴁ (`U+1D01`), ᴇ (`U+1D07`), ᴭ (`U+1D2D`), ᴱ (`U+1D31`), ᴲ (`U+1D32`), Ḕ (`U+1E14`), Ḗ (`U+1E16`), Ḙ (`U+1E18`), Ḛ (`U+1E1A`), Ḝ (`U+1E1C`), Ẹ (`U+1EB8`), Ẻ (`U+1EBA`), Ẽ (`U+1EBC`), Ế (`U+1EBE`), Ề (`U+1EC0`), Ể (`U+1EC2`), Ễ (`U+1EC4`), Ệ (`U+1EC6`), Ἐ (`U+1F18`), Ἑ (`U+1F19`), Ἒ (`U+1F1A`), Ἓ (`U+1F1B`), Ἔ (`U+1F1C`), Ἕ (`U+1F1D`), Ὲ (`U+1FC8`), Έ (`U+1FC9`), ℡ (`U+2121`), ␃ (`U+2403`), ␄ (`U+2404`), ␅ (`U+2405`), ␇ (`U+2407`), ␐ (`U+2410`), ␗ (`U+2417`), ␙ (`U+2419`), ␛ (`U+241B`), ␡ (`U+2421`), Ⓔ (`U+24BA`), ⱻ (`U+2C7B`), 𐞣 (`U+107A3`), 𝐄 (`U+1D404`), 𝐸 (`U+1D438`), 𝑬 (`U+1D46C`), 𝖤 (`U+1D5A4`), 𝗘 (`U+1D5D8`), 𝘌 (`U+1D60C`), 𝙀 (`U+1D640`), 𝙴 (`U+1D674`), 𝚬 (`U+1D6AC`), 𝛦 (`U+1D6E6`), 𝜠 (`U+1D720`), 𝝚 (`U+1D75A`), 𝞔 (`U+1D794`), 🄔 (`U+1F114`), 🄴 (`U+1F134`), 🅔 (`U+1F154`), 🅴 (`U+1F174`), 🆓 (`U+1F193`), 🆕 (`U+1F195`), 🆨 (`U+1F1A8`), 🆩 (`U+1F1A9`)
+ E (`U+0045`), Æ (`U+00C6`), È (`U+00C8`), É (`U+00C9`), Ê (`U+00CA`), Ë (`U+00CB`), Ē (`U+0112`), Ĕ (`U+0114`), Ė (`U+0116`), Ę (`U+0118`), Ě (`U+011A`), Œ (`U+0152`), Ǝ (`U+018E`), Ǣ (`U+01E2`), Ǽ (`U+01FC`), Ȅ (`U+0204`), Ȇ (`U+0206`), Ȩ (`U+0228`), Ɇ (`U+0246`), ɶ (`U+0276`), Έ (`U+0388`), Ε (`U+0395`), Ѐ (`U+0400`), Ё (`U+0401`), Е (`U+0415`), Ӕ (`U+04D4`), Ӗ (`U+04D6`), Ԙ (`U+0518`), ᴁ (`U+1D01`), ᴇ (`U+1D07`), ᴭ (`U+1D2D`), ᴱ (`U+1D31`), ᴲ (`U+1D32`), Ḕ (`U+1E14`), Ḗ (`U+1E16`), Ḙ (`U+1E18`), Ḛ (`U+1E1A`), Ḝ (`U+1E1C`), Ẹ (`U+1EB8`), Ẻ (`U+1EBA`), Ẽ (`U+1EBC`), Ế (`U+1EBE`), Ề (`U+1EC0`), Ể (`U+1EC2`), Ễ (`U+1EC4`), Ệ (`U+1EC6`), Ἐ (`U+1F18`), Ἑ (`U+1F19`), Ἒ (`U+1F1A`), Ἓ (`U+1F1B`), Ἔ (`U+1F1C`), Ἕ (`U+1F1D`), Ὲ (`U+1FC8`), Έ (`U+1FC9`), ℡ (`U+2121`), ␃ (`U+2403`), ␄ (`U+2404`), ␅ (`U+2405`), ␇ (`U+2407`), ␐ (`U+2410`), ␗ (`U+2417`), ␙ (`U+2419`), ␛ (`U+241B`), ␡ (`U+2421`), Ⓔ (`U+24BA`), ⱻ (`U+2C7B`), 𐞣 (`U+107A3`), 𝐄 (`U+1D404`), 𝐸 (`U+1D438`), 𝑬 (`U+1D46C`), 𝖤 (`U+1D5A4`), 𝗘 (`U+1D5D8`), 𝘌 (`U+1D60C`), 𝙀 (`U+1D640`), 𝙴 (`U+1D674`), 𝚬 (`U+1D6AC`), 𝛦 (`U+1D6E6`), 𝜠 (`U+1D720`), 𝝚 (`U+1D75A`), 𝞔 (`U+1D794`), 🄔 (`U+1F114`), 🄴 (`U+1F134`), 🅔 (`U+1F154`), 🅴 (`U+1F174`), 🆓 (`U+1F193`), 🆕 (`U+1F195`), 🆨 (`U+1F1A8`), 🆩 (`U+1F1A9`)
- `cv06`:
@@ -61,7 +61,7 @@
- `cv15`:
- P (`U+0050`), Ƥ (`U+01A4`), Ρ (`U+03A1`), Р (`U+0420`), Ҏ (`U+048E`), ᴘ (`U+1D18`), ᴩ (`U+1D29`), ᴾ (`U+1D3E`), Ṕ (`U+1E54`), Ṗ (`U+1E56`), Ῥ (`U+1FEC`), ₧ (`U+20A7`), ₱ (`U+20B1`), ₽ (`U+20BD`), ℗ (`U+2117`), ␠ (`U+2420`), Ⓟ (`U+24C5`), Ᵽ (`U+2C63`), ꟼ (`U+A7FC`), 𝐏 (`U+1D40F`), 𝑃 (`U+1D443`), 𝑷 (`U+1D477`), 𝖯 (`U+1D5AF`), 𝗣 (`U+1D5E3`), 𝘗 (`U+1D617`), 𝙋 (`U+1D64B`), 𝙿 (`U+1D67F`), 𝚸 (`U+1D6B8`), 𝛲 (`U+1D6F2`), 𝜬 (`U+1D72C`), 𝝦 (`U+1D766`), 𝞠 (`U+1D7A0`), 🄟 (`U+1F11F`), 🄿 (`U+1F13F`), 🅎 (`U+1F14E`), 🅟 (`U+1F15F`), 🅿 (`U+1F17F`), 🆌 (`U+1F18C`), 🆙 (`U+1F199`), 🆣 (`U+1F1A3`), 🆤 (`U+1F1A4`)
+ P (`U+0050`), Ƥ (`U+01A4`), Ρ (`U+03A1`), Р (`U+0420`), Ҏ (`U+048E`), Ԗ (`U+0516`), ᴘ (`U+1D18`), ᴩ (`U+1D29`), ᴾ (`U+1D3E`), Ṕ (`U+1E54`), Ṗ (`U+1E56`), Ῥ (`U+1FEC`), ₧ (`U+20A7`), ₱ (`U+20B1`), ₽ (`U+20BD`), ℗ (`U+2117`), ␠ (`U+2420`), Ⓟ (`U+24C5`), Ᵽ (`U+2C63`), ꟼ (`U+A7FC`), 𝐏 (`U+1D40F`), 𝑃 (`U+1D443`), 𝑷 (`U+1D477`), 𝖯 (`U+1D5AF`), 𝗣 (`U+1D5E3`), 𝘗 (`U+1D617`), 𝙋 (`U+1D64B`), 𝙿 (`U+1D67F`), 𝚸 (`U+1D6B8`), 𝛲 (`U+1D6F2`), 𝜬 (`U+1D72C`), 𝝦 (`U+1D766`), 𝞠 (`U+1D7A0`), 🄟 (`U+1F11F`), 🄿 (`U+1F13F`), 🅎 (`U+1F14E`), 🅟 (`U+1F15F`), 🅿 (`U+1F17F`), 🆌 (`U+1F18C`), 🆙 (`U+1F199`), 🆣 (`U+1F1A3`), 🆤 (`U+1F1A4`)
- `cv16`:
@@ -93,7 +93,7 @@
- `cv23`:
- X (`U+0058`), Χ (`U+03A7`), Х (`U+0425`), Ҳ (`U+04B2`), Ӽ (`U+04FC`), Ӿ (`U+04FE`), Ẋ (`U+1E8A`), Ẍ (`U+1E8C`), ℻ (`U+213B`), Ⅸ (`U+2168`), Ⅹ (`U+2169`), Ⅺ (`U+216A`), Ⅻ (`U+216B`), ␂ (`U+2402`), ␃ (`U+2403`), Ⓧ (`U+24CD`), Ꭓ (`U+A7B3`), 𝐗 (`U+1D417`), 𝑋 (`U+1D44B`), 𝑿 (`U+1D47F`), 𝖷 (`U+1D5B7`), 𝗫 (`U+1D5EB`), 𝘟 (`U+1D61F`), 𝙓 (`U+1D653`), 𝚇 (`U+1D687`), 𝚾 (`U+1D6BE`), 𝛸 (`U+1D6F8`), 𝜲 (`U+1D732`), 𝝬 (`U+1D76C`), 𝞦 (`U+1D7A6`), 🄧 (`U+1F127`), 🅇 (`U+1F147`), 🅧 (`U+1F167`), 🆇 (`U+1F187`)
+ X (`U+0058`), Χ (`U+03A7`), Х (`U+0425`), Ҳ (`U+04B2`), Ӽ (`U+04FC`), Ӿ (`U+04FE`), Ԕ (`U+0514`), Ԗ (`U+0516`), Ẋ (`U+1E8A`), Ẍ (`U+1E8C`), ℻ (`U+213B`), Ⅸ (`U+2168`), Ⅹ (`U+2169`), Ⅺ (`U+216A`), Ⅻ (`U+216B`), ␂ (`U+2402`), ␃ (`U+2403`), Ⓧ (`U+24CD`), Ꭓ (`U+A7B3`), 𝐗 (`U+1D417`), 𝑋 (`U+1D44B`), 𝑿 (`U+1D47F`), 𝖷 (`U+1D5B7`), 𝗫 (`U+1D5EB`), 𝘟 (`U+1D61F`), 𝙓 (`U+1D653`), 𝚇 (`U+1D687`), 𝚾 (`U+1D6BE`), 𝛸 (`U+1D6F8`), 𝜲 (`U+1D732`), 𝝬 (`U+1D76C`), 𝞦 (`U+1D7A6`), 🄧 (`U+1F127`), 🅇 (`U+1F147`), 🅧 (`U+1F167`), 🆇 (`U+1F187`)
- `cv24`:
@@ -105,7 +105,7 @@
- `cv26`:
- a (`U+0061`), ª (`U+00AA`), à (`U+00E0`), á (`U+00E1`), â (`U+00E2`), ã (`U+00E3`), ä (`U+00E4`), å (`U+00E5`), ā (`U+0101`), ă (`U+0103`), ą (`U+0105`), ǎ (`U+01CE`), ǟ (`U+01DF`), ǡ (`U+01E1`), ǻ (`U+01FB`), ȁ (`U+0201`), ȃ (`U+0203`), ȧ (`U+0227`), ɐ (`U+0250`), ɑ (`U+0251`), ɒ (`U+0252`), ͣ (`U+0363`), а (`U+0430`), ӑ (`U+04D1`), ӓ (`U+04D3`), ᵃ (`U+1D43`), ᵄ (`U+1D44`), ᵅ (`U+1D45`), ᶏ (`U+1D8F`), ᶛ (`U+1D9B`), ᷧ (`U+1DE7`), ᷲ (`U+1DF2`), ḁ (`U+1E01`), ẚ (`U+1E9A`), ạ (`U+1EA1`), ả (`U+1EA3`), ấ (`U+1EA5`), ầ (`U+1EA7`), ẩ (`U+1EA9`), ẫ (`U+1EAB`), ậ (`U+1EAD`), ắ (`U+1EAF`), ằ (`U+1EB1`), ẳ (`U+1EB3`), ẵ (`U+1EB5`), ặ (`U+1EB7`), ₐ (`U+2090`), ℀ (`U+2100`), ℁ (`U+2101`), ⒜ (`U+249C`), ⓐ (`U+24D0`), ⱥ (`U+2C65`), Ɑ (`U+2C6D`), Ɒ (`U+2C70`), ⷶ (`U+2DF6`), ⷼ (`U+2DFC`), ꙗ (`U+A657`), ꜳ (`U+A733`), Ꞛ (`U+A79A`), ꞛ (`U+A79B`), ꞻ (`U+A7BB`), ꬰ (`U+AB30`), ꭤ (`U+AB64`), 𝐚 (`U+1D41A`), 𝑎 (`U+1D44E`), 𝒂 (`U+1D482`), 𝖺 (`U+1D5BA`), 𝗮 (`U+1D5EE`), 𝘢 (`U+1D622`), 𝙖 (`U+1D656`), 𝚊 (`U+1D68A`), 𞀰 (`U+1E030`), 𞁑 (`U+1E051`)
+ a (`U+0061`), ª (`U+00AA`), à (`U+00E0`), á (`U+00E1`), â (`U+00E2`), ã (`U+00E3`), ä (`U+00E4`), å (`U+00E5`), æ (`U+00E6`), ā (`U+0101`), ă (`U+0103`), ą (`U+0105`), ǎ (`U+01CE`), ǟ (`U+01DF`), ǡ (`U+01E1`), ǣ (`U+01E3`), ǻ (`U+01FB`), ǽ (`U+01FD`), ȁ (`U+0201`), ȃ (`U+0203`), ȧ (`U+0227`), ɐ (`U+0250`), ɑ (`U+0251`), ɒ (`U+0252`), ͣ (`U+0363`), а (`U+0430`), ӑ (`U+04D1`), ӓ (`U+04D3`), ӕ (`U+04D5`), ᴂ (`U+1D02`), ᵃ (`U+1D43`), ᵄ (`U+1D44`), ᵅ (`U+1D45`), ᵆ (`U+1D46`), ᶏ (`U+1D8F`), ᶛ (`U+1D9B`), ᷔ (`U+1DD4`), ᷕ (`U+1DD5`), ᷧ (`U+1DE7`), ᷲ (`U+1DF2`), ḁ (`U+1E01`), ẚ (`U+1E9A`), ạ (`U+1EA1`), ả (`U+1EA3`), ấ (`U+1EA5`), ầ (`U+1EA7`), ẩ (`U+1EA9`), ẫ (`U+1EAB`), ậ (`U+1EAD`), ắ (`U+1EAF`), ằ (`U+1EB1`), ẳ (`U+1EB3`), ẵ (`U+1EB5`), ặ (`U+1EB7`), ₐ (`U+2090`), ℀ (`U+2100`), ℁ (`U+2101`), ⒜ (`U+249C`), ⓐ (`U+24D0`), ⱥ (`U+2C65`), Ɑ (`U+2C6D`), Ɒ (`U+2C70`), ⷶ (`U+2DF6`), ⷼ (`U+2DFC`), ꙗ (`U+A657`), ꜳ (`U+A733`), ꜵ (`U+A735`), Ꞛ (`U+A79A`), ꞛ (`U+A79B`), ꞻ (`U+A7BB`), ꬰ (`U+AB30`), ꬱ (`U+AB31`), ꭤ (`U+AB64`), 𐞃 (`U+10783`), 𝐚 (`U+1D41A`), 𝑎 (`U+1D44E`), 𝒂 (`U+1D482`), 𝖺 (`U+1D5BA`), 𝗮 (`U+1D5EE`), 𝘢 (`U+1D622`), 𝙖 (`U+1D656`), 𝚊 (`U+1D68A`), 𞀰 (`U+1E030`), 𞁑 (`U+1E051`)
- `cv27`:
@@ -121,7 +121,7 @@
- `cv30`:
- e (`U+0065`), æ (`U+00E6`), è (`U+00E8`), é (`U+00E9`), ê (`U+00EA`), ë (`U+00EB`), ē (`U+0113`), ĕ (`U+0115`), ė (`U+0117`), ę (`U+0119`), ě (`U+011B`), œ (`U+0153`), Ə (`U+018F`), ǝ (`U+01DD`), ǣ (`U+01E3`), ǽ (`U+01FD`), ȅ (`U+0205`), ȇ (`U+0207`), ȩ (`U+0229`), ɇ (`U+0247`), ɘ (`U+0258`), ə (`U+0259`), ɚ (`U+025A`), ͤ (`U+0364`), е (`U+0435`), ѐ (`U+0450`), ё (`U+0451`), Ҽ (`U+04BC`), ҽ (`U+04BD`), Ҿ (`U+04BE`), ҿ (`U+04BF`), ӕ (`U+04D5`), ӗ (`U+04D7`), Ә (`U+04D8`), ә (`U+04D9`), Ӛ (`U+04DA`), ӛ (`U+04DB`), ᴂ (`U+1D02`), ᴔ (`U+1D14`), ᵆ (`U+1D46`), ᵉ (`U+1D49`), ᵊ (`U+1D4A`), ᵫ (`U+1D6B`), ᶒ (`U+1D92`), ᶕ (`U+1D95`), ᷔ (`U+1DD4`), ᷪ (`U+1DEA`), ḕ (`U+1E15`), ḗ (`U+1E17`), ḙ (`U+1E19`), ḛ (`U+1E1B`), ḝ (`U+1E1D`), ẹ (`U+1EB9`), ẻ (`U+1EBB`), ẽ (`U+1EBD`), ế (`U+1EBF`), ề (`U+1EC1`), ể (`U+1EC3`), ễ (`U+1EC5`), ệ (`U+1EC7`), ₑ (`U+2091`), ₔ (`U+2094`), ≝ (`U+225D`), ⒠ (`U+24A0`), ⓔ (`U+24D4`), ⱸ (`U+2C78`), ⷷ (`U+2DF7`), ꟹ (`U+A7F9`), ꬱ (`U+AB31`), ꬳ (`U+AB33`), ꭀ (`U+AB40`), ꭁ (`U+AB41`), ꭂ (`U+AB42`), ꭡ (`U+AB61`), ꭢ (`U+AB62`), 𐞃 (`U+10783`), 𐞎 (`U+1078E`), 𝐞 (`U+1D41E`), 𝑒 (`U+1D452`), 𝒆 (`U+1D486`), 𝖾 (`U+1D5BE`), 𝗲 (`U+1D5F2`), 𝘦 (`U+1D626`), 𝙚 (`U+1D65A`), 𝚎 (`U+1D68E`), 𞀵 (`U+1E035`), 𞁋 (`U+1E04B`), 𞁖 (`U+1E056`)
+ e (`U+0065`), æ (`U+00E6`), è (`U+00E8`), é (`U+00E9`), ê (`U+00EA`), ë (`U+00EB`), ē (`U+0113`), ĕ (`U+0115`), ė (`U+0117`), ę (`U+0119`), ě (`U+011B`), œ (`U+0153`), Ə (`U+018F`), ǝ (`U+01DD`), ǣ (`U+01E3`), ǽ (`U+01FD`), ȅ (`U+0205`), ȇ (`U+0207`), ȩ (`U+0229`), ɇ (`U+0247`), ɘ (`U+0258`), ə (`U+0259`), ɚ (`U+025A`), ͤ (`U+0364`), е (`U+0435`), ѐ (`U+0450`), ё (`U+0451`), Ҽ (`U+04BC`), ҽ (`U+04BD`), Ҿ (`U+04BE`), ҿ (`U+04BF`), ӕ (`U+04D5`), ӗ (`U+04D7`), Ә (`U+04D8`), ә (`U+04D9`), Ӛ (`U+04DA`), ӛ (`U+04DB`), ԙ (`U+0519`), ᴂ (`U+1D02`), ᴔ (`U+1D14`), ᵆ (`U+1D46`), ᵉ (`U+1D49`), ᵊ (`U+1D4A`), ᵫ (`U+1D6B`), ᶒ (`U+1D92`), ᶕ (`U+1D95`), ᷔ (`U+1DD4`), ᷪ (`U+1DEA`), ḕ (`U+1E15`), ḗ (`U+1E17`), ḙ (`U+1E19`), ḛ (`U+1E1B`), ḝ (`U+1E1D`), ẹ (`U+1EB9`), ẻ (`U+1EBB`), ẽ (`U+1EBD`), ế (`U+1EBF`), ề (`U+1EC1`), ể (`U+1EC3`), ễ (`U+1EC5`), ệ (`U+1EC7`), ₑ (`U+2091`), ₔ (`U+2094`), ≝ (`U+225D`), ⒠ (`U+24A0`), ⓔ (`U+24D4`), ⱸ (`U+2C78`), ⷷ (`U+2DF7`), ꟹ (`U+A7F9`), ꬱ (`U+AB31`), ꬳ (`U+AB33`), ꭀ (`U+AB40`), ꭁ (`U+AB41`), ꭂ (`U+AB42`), ꭡ (`U+AB61`), ꭢ (`U+AB62`), 𐞃 (`U+10783`), 𐞎 (`U+1078E`), 𝐞 (`U+1D41E`), 𝑒 (`U+1D452`), 𝒆 (`U+1D486`), 𝖾 (`U+1D5BE`), 𝗲 (`U+1D5F2`), 𝘦 (`U+1D626`), 𝙚 (`U+1D65A`), 𝚎 (`U+1D68E`), 𞀵 (`U+1E035`), 𞁋 (`U+1E04B`), 𞁖 (`U+1E056`)
- `cv31`:
@@ -193,7 +193,7 @@
- `cv48`:
- x (`U+0078`), ˣ (`U+02E3`), ͯ (`U+036F`), х (`U+0445`), ҳ (`U+04B3`), ӽ (`U+04FD`), ӿ (`U+04FF`), ᶍ (`U+1D8D`), ẋ (`U+1E8B`), ẍ (`U+1E8D`), ₓ (`U+2093`), ⅸ (`U+2178`), ⅹ (`U+2179`), ⅺ (`U+217A`), ⅻ (`U+217B`), ⒳ (`U+24B3`), ⓧ (`U+24E7`), ⷯ (`U+2DEF`), ꭓ (`U+AB53`), 𝐱 (`U+1D431`), 𝑥 (`U+1D465`), 𝒙 (`U+1D499`), 𝗑 (`U+1D5D1`), 𝘅 (`U+1D605`), 𝘹 (`U+1D639`), 𝙭 (`U+1D66D`), 𝚡 (`U+1D6A1`), 𞁃 (`U+1E043`), 𞁡 (`U+1E061`)
+ x (`U+0078`), ˣ (`U+02E3`), ͯ (`U+036F`), х (`U+0445`), ҳ (`U+04B3`), ӽ (`U+04FD`), ӿ (`U+04FF`), ԕ (`U+0515`), ԗ (`U+0517`), ᶍ (`U+1D8D`), ẋ (`U+1E8B`), ẍ (`U+1E8D`), ₓ (`U+2093`), ⅸ (`U+2178`), ⅹ (`U+2179`), ⅺ (`U+217A`), ⅻ (`U+217B`), ⒳ (`U+24B3`), ⓧ (`U+24E7`), ⷯ (`U+2DEF`), ꭓ (`U+AB53`), 𝐱 (`U+1D431`), 𝑥 (`U+1D465`), 𝒙 (`U+1D499`), 𝗑 (`U+1D5D1`), 𝘅 (`U+1D605`), 𝘹 (`U+1D639`), 𝙭 (`U+1D66D`), 𝚡 (`U+1D6A1`), 𞁃 (`U+1E043`), 𞁡 (`U+1E061`)
- `cv49`:
@@ -305,163 +305,163 @@
- `cv76`:
- Ў (`U+040E`), У (`U+0423`), Ӯ (`U+04EE`), Ӱ (`U+04F0`), Ӳ (`U+04F2`)
+ р (`U+0440`), ҏ (`U+048F`), ԗ (`U+0517`), ⷬ (`U+2DEC`), 𞀾 (`U+1E03E`)
- `cv77`:
- ф (`U+0444`), ꚞ (`U+A69E`), 𞁂 (`U+1E042`), 𞁠 (`U+1E060`)
+ Ў (`U+040E`), У (`U+0423`), Ӯ (`U+04EE`), Ӱ (`U+04F0`), Ӳ (`U+04F2`)
- `cv78`:
- ч (`U+0447`), ҹ (`U+04B9`), ӵ (`U+04F5`), ⷱ (`U+2DF1`), 𞁅 (`U+1E045`), 𞁣 (`U+1E063`)
+ у (`U+0443`), ў (`U+045E`), Ѹ (`U+0478`), ѹ (`U+0479`), ӯ (`U+04EF`), ӱ (`U+04F1`), ӳ (`U+04F3`), ꙷ (`U+A677`), 𞁁 (`U+1E041`), 𞁟 (`U+1E05F`)
- `cv79`:
- ƅ (`U+0185`), ъ (`U+044A`), ь (`U+044C`), љ (`U+0459`), њ (`U+045A`), ѣ (`U+0463`), ҍ (`U+048D`), ᲆ (`U+1C86`), ᲇ (`U+1C87`), ⷺ (`U+2DFA`), ꙏ (`U+A64F`), ꙓ (`U+A653`), ꙸ (`U+A678`), ꙺ (`U+A67A`), ꚜ (`U+A69C`), ꚝ (`U+A69D`), ꭠ (`U+AB60`), 𞁥 (`U+1E065`)
+ ф (`U+0444`), ꚞ (`U+A69E`), 𞁂 (`U+1E042`), 𞁠 (`U+1E060`)
- `cv80`:
- ы (`U+044B`), ӹ (`U+04F9`), ꙑ (`U+A651`), ꙹ (`U+A679`), 𞁇 (`U+1E047`), 𞁦 (`U+1E066`), 𞁬 (`U+1E06C`)
+ ч (`U+0447`), ҹ (`U+04B9`), ӵ (`U+04F5`), ⷱ (`U+2DF1`), 𞁅 (`U+1E045`), 𞁣 (`U+1E063`)
- `cv81`:
- Я (`U+042F`)
+ ƅ (`U+0185`), ъ (`U+044A`), ь (`U+044C`), љ (`U+0459`), њ (`U+045A`), ѣ (`U+0463`), ҍ (`U+048D`), ᲆ (`U+1C86`), ᲇ (`U+1C87`), ⷺ (`U+2DFA`), ꙏ (`U+A64F`), ꙓ (`U+A653`), ꙸ (`U+A678`), ꙺ (`U+A67A`), ꚜ (`U+A69C`), ꚝ (`U+A69D`), ꭠ (`U+AB60`), 𞁥 (`U+1E065`)
- `cv82`:
- я (`U+044F`)
+ ы (`U+044B`), ӹ (`U+04F9`), ꙑ (`U+A651`), ꙹ (`U+A679`), 𞁇 (`U+1E047`), 𞁦 (`U+1E066`), 𞁬 (`U+1E06C`)
- `cv83`:
- 0 (`U+0030`), ⁰ (`U+2070`), ₀ (`U+2080`), ⅒ (`U+2152`), ↉ (`U+2189`), ⍬ (`U+236C`), ⏨ (`U+23E8`), ⑩ (`U+2469`), ⑳ (`U+2473`), ⑽ (`U+247D`), ⒇ (`U+2487`), ⒑ (`U+2491`), ⒛ (`U+249B`), ⓪ (`U+24EA`), ⓴ (`U+24F4`), ⓾ (`U+24FE`), ⓿ (`U+24FF`), ❿ (`U+277F`), ➉ (`U+2789`), ➓ (`U+2793`), ㉚ (`U+325A`), ㊵ (`U+32B5`), ㊿ (`U+32BF`), 𝟎 (`U+1D7CE`), 𝟢 (`U+1D7E2`), 𝟬 (`U+1D7EC`), 𝟶 (`U+1D7F6`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄋 (`U+1F10B`), 🄌 (`U+1F10C`), 🄍 (`U+1F10D`), 🆣 (`U+1F1A3`), 🆤 (`U+1F1A4`)
+ Я (`U+042F`), Ԙ (`U+0518`)
- `cv84`:
- 1 (`U+0031`), ¹ (`U+00B9`), ¼ (`U+00BC`), ½ (`U+00BD`), ₁ (`U+2081`), ⅐ (`U+2150`), ⅑ (`U+2151`), ⅒ (`U+2152`), ⅓ (`U+2153`), ⅕ (`U+2155`), ⅙ (`U+2159`), ⅛ (`U+215B`), ⏨ (`U+23E8`), ␑ (`U+2411`), ① (`U+2460`), ⑩ (`U+2469`), ⑪ (`U+246A`), ⑫ (`U+246B`), ⑬ (`U+246C`), ⑭ (`U+246D`), ⑮ (`U+246E`), ⑯ (`U+246F`), ⑰ (`U+2470`), ⑱ (`U+2471`), ⑲ (`U+2472`), ⑴ (`U+2474`), ⑽ (`U+247D`), ⑾ (`U+247E`), ⑿ (`U+247F`), ⒀ (`U+2480`), ⒁ (`U+2481`), ⒂ (`U+2482`), ⒃ (`U+2483`), ⒄ (`U+2484`), ⒅ (`U+2485`), ⒆ (`U+2486`), ⒈ (`U+2488`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⓫ (`U+24EB`), ⓬ (`U+24EC`), ⓭ (`U+24ED`), ⓮ (`U+24EE`), ⓯ (`U+24EF`), ⓰ (`U+24F0`), ⓱ (`U+24F1`), ⓲ (`U+24F2`), ⓳ (`U+24F3`), ⓵ (`U+24F5`), ⓾ (`U+24FE`), ❶ (`U+2776`), ❿ (`U+277F`), ➀ (`U+2780`), ➉ (`U+2789`), ➊ (`U+278A`), ➓ (`U+2793`), ㉑ (`U+3251`), ㉛ (`U+325B`), ㊶ (`U+32B6`), 𝟏 (`U+1D7CF`), 𝟣 (`U+1D7E3`), 𝟭 (`U+1D7ED`), 𝟷 (`U+1D7F7`), 🄂 (`U+1F102`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆤 (`U+1F1A4`)
+ я (`U+044F`), ԙ (`U+0519`)
- `cv85`:
- 2 (`U+0032`), ² (`U+00B2`), ½ (`U+00BD`), ƻ (`U+01BB`), ₂ (`U+2082`), ⅔ (`U+2154`), ⅖ (`U+2156`), ↊ (`U+218A`), ␒ (`U+2412`), ② (`U+2461`), ⑫ (`U+246B`), ⑳ (`U+2473`), ⑵ (`U+2475`), ⑿ (`U+247F`), ⒇ (`U+2487`), ⒉ (`U+2489`), ⒓ (`U+2493`), ⒛ (`U+249B`), ⓬ (`U+24EC`), ⓴ (`U+24F4`), ⓶ (`U+24F6`), ❷ (`U+2777`), ➁ (`U+2781`), ➋ (`U+278B`), ㉑ (`U+3251`), ㉒ (`U+3252`), ㉓ (`U+3253`), ㉔ (`U+3254`), ㉕ (`U+3255`), ㉖ (`U+3256`), ㉗ (`U+3257`), ㉘ (`U+3258`), ㉙ (`U+3259`), ㉜ (`U+325C`), ㊷ (`U+32B7`), 𝟐 (`U+1D7D0`), 𝟤 (`U+1D7E4`), 𝟮 (`U+1D7EE`), 𝟸 (`U+1D7F8`), 🄃 (`U+1F103`), 🆜 (`U+1F19C`), 🆝 (`U+1F19D`), 🆢 (`U+1F1A2`), 🆤 (`U+1F1A4`)
+ 0 (`U+0030`), ⁰ (`U+2070`), ₀ (`U+2080`), ⅒ (`U+2152`), ↉ (`U+2189`), ⍬ (`U+236C`), ⏨ (`U+23E8`), ⑩ (`U+2469`), ⑳ (`U+2473`), ⑽ (`U+247D`), ⒇ (`U+2487`), ⒑ (`U+2491`), ⒛ (`U+249B`), ⓪ (`U+24EA`), ⓴ (`U+24F4`), ⓾ (`U+24FE`), ⓿ (`U+24FF`), ❿ (`U+277F`), ➉ (`U+2789`), ➓ (`U+2793`), ㉚ (`U+325A`), ㊵ (`U+32B5`), ㊿ (`U+32BF`), 𝟎 (`U+1D7CE`), 𝟢 (`U+1D7E2`), 𝟬 (`U+1D7EC`), 𝟶 (`U+1D7F6`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄋 (`U+1F10B`), 🄌 (`U+1F10C`), 🄍 (`U+1F10D`), 🆣 (`U+1F1A3`), 🆤 (`U+1F1A4`)
- `cv86`:
- 3 (`U+0033`), ³ (`U+00B3`), ¾ (`U+00BE`), ₃ (`U+2083`), ⅓ (`U+2153`), ⅔ (`U+2154`), ⅗ (`U+2157`), ⅜ (`U+215C`), ↉ (`U+2189`), ↋ (`U+218B`), ∛ (`U+221B`), ␓ (`U+2413`), ③ (`U+2462`), ⑬ (`U+246C`), ⑶ (`U+2476`), ⒀ (`U+2480`), ⒊ (`U+248A`), ⒔ (`U+2494`), ⓭ (`U+24ED`), ⓷ (`U+24F7`), ❸ (`U+2778`), ➂ (`U+2782`), ➌ (`U+278C`), ㉓ (`U+3253`), ㉚ (`U+325A`), ㉛ (`U+325B`), ㉜ (`U+325C`), ㉝ (`U+325D`), ㉞ (`U+325E`), ㉟ (`U+325F`), ㊱ (`U+32B1`), ㊲ (`U+32B2`), ㊳ (`U+32B3`), ㊴ (`U+32B4`), ㊸ (`U+32B8`), 𝟑 (`U+1D7D1`), 𝟥 (`U+1D7E5`), 𝟯 (`U+1D7EF`), 𝟹 (`U+1D7F9`), 🄄 (`U+1F104`), 🆛 (`U+1F19B`)
+ 1 (`U+0031`), ¹ (`U+00B9`), ¼ (`U+00BC`), ½ (`U+00BD`), ₁ (`U+2081`), ⅐ (`U+2150`), ⅑ (`U+2151`), ⅒ (`U+2152`), ⅓ (`U+2153`), ⅕ (`U+2155`), ⅙ (`U+2159`), ⅛ (`U+215B`), ⏨ (`U+23E8`), ␑ (`U+2411`), ① (`U+2460`), ⑩ (`U+2469`), ⑪ (`U+246A`), ⑫ (`U+246B`), ⑬ (`U+246C`), ⑭ (`U+246D`), ⑮ (`U+246E`), ⑯ (`U+246F`), ⑰ (`U+2470`), ⑱ (`U+2471`), ⑲ (`U+2472`), ⑴ (`U+2474`), ⑽ (`U+247D`), ⑾ (`U+247E`), ⑿ (`U+247F`), ⒀ (`U+2480`), ⒁ (`U+2481`), ⒂ (`U+2482`), ⒃ (`U+2483`), ⒄ (`U+2484`), ⒅ (`U+2485`), ⒆ (`U+2486`), ⒈ (`U+2488`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⓫ (`U+24EB`), ⓬ (`U+24EC`), ⓭ (`U+24ED`), ⓮ (`U+24EE`), ⓯ (`U+24EF`), ⓰ (`U+24F0`), ⓱ (`U+24F1`), ⓲ (`U+24F2`), ⓳ (`U+24F3`), ⓵ (`U+24F5`), ⓾ (`U+24FE`), ❶ (`U+2776`), ❿ (`U+277F`), ➀ (`U+2780`), ➉ (`U+2789`), ➊ (`U+278A`), ➓ (`U+2793`), ㉑ (`U+3251`), ㉛ (`U+325B`), ㊶ (`U+32B6`), 𝟏 (`U+1D7CF`), 𝟣 (`U+1D7E3`), 𝟭 (`U+1D7ED`), 𝟷 (`U+1D7F7`), 🄂 (`U+1F102`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆤 (`U+1F1A4`)
- `cv87`:
- 4 (`U+0034`), ¼ (`U+00BC`), ¾ (`U+00BE`), ⁴ (`U+2074`), ₄ (`U+2084`), ⅘ (`U+2158`), ∜ (`U+221C`), ␔ (`U+2414`), ④ (`U+2463`), ⑭ (`U+246D`), ⑷ (`U+2477`), ⒁ (`U+2481`), ⒋ (`U+248B`), ⒕ (`U+2495`), ⓮ (`U+24EE`), ⓸ (`U+24F8`), ❹ (`U+2779`), ➃ (`U+2783`), ➍ (`U+278D`), ㉔ (`U+3254`), ㉞ (`U+325E`), ㊵ (`U+32B5`), ㊶ (`U+32B6`), ㊷ (`U+32B7`), ㊸ (`U+32B8`), ㊹ (`U+32B9`), ㊺ (`U+32BA`), ㊻ (`U+32BB`), ㊼ (`U+32BC`), ㊽ (`U+32BD`), ㊾ (`U+32BE`), 𝟒 (`U+1D7D2`), 𝟦 (`U+1D7E6`), 𝟰 (`U+1D7F0`), 𝟺 (`U+1D7FA`), 🄅 (`U+1F105`), 🆞 (`U+1F19E`)
+ 2 (`U+0032`), ² (`U+00B2`), ½ (`U+00BD`), ƻ (`U+01BB`), ₂ (`U+2082`), ⅔ (`U+2154`), ⅖ (`U+2156`), ↊ (`U+218A`), ␒ (`U+2412`), ② (`U+2461`), ⑫ (`U+246B`), ⑳ (`U+2473`), ⑵ (`U+2475`), ⑿ (`U+247F`), ⒇ (`U+2487`), ⒉ (`U+2489`), ⒓ (`U+2493`), ⒛ (`U+249B`), ⓬ (`U+24EC`), ⓴ (`U+24F4`), ⓶ (`U+24F6`), ❷ (`U+2777`), ➁ (`U+2781`), ➋ (`U+278B`), ㉑ (`U+3251`), ㉒ (`U+3252`), ㉓ (`U+3253`), ㉔ (`U+3254`), ㉕ (`U+3255`), ㉖ (`U+3256`), ㉗ (`U+3257`), ㉘ (`U+3258`), ㉙ (`U+3259`), ㉜ (`U+325C`), ㊷ (`U+32B7`), 𝟐 (`U+1D7D0`), 𝟤 (`U+1D7E4`), 𝟮 (`U+1D7EE`), 𝟸 (`U+1D7F8`), 🄃 (`U+1F103`), 🆜 (`U+1F19C`), 🆝 (`U+1F19D`), 🆢 (`U+1F1A2`), 🆤 (`U+1F1A4`)
- `cv88`:
- 5 (`U+0035`), Ƽ (`U+01BC`), ƽ (`U+01BD`), ⁵ (`U+2075`), ₅ (`U+2085`), ⅕ (`U+2155`), ⅖ (`U+2156`), ⅗ (`U+2157`), ⅘ (`U+2158`), ⅚ (`U+215A`), ⅝ (`U+215D`), ⑤ (`U+2464`), ⑮ (`U+246E`), ⑸ (`U+2478`), ⒂ (`U+2482`), ⒌ (`U+248C`), ⒖ (`U+2496`), ⓯ (`U+24EF`), ⓹ (`U+24F9`), ❺ (`U+277A`), ➄ (`U+2784`), ➎ (`U+278E`), ㉕ (`U+3255`), ㉟ (`U+325F`), ㊺ (`U+32BA`), ㊿ (`U+32BF`), 𝟓 (`U+1D7D3`), 𝟧 (`U+1D7E7`), 𝟱 (`U+1D7F1`), 𝟻 (`U+1D7FB`), 🄆 (`U+1F106`), 🆠 (`U+1F1A0`)
+ 3 (`U+0033`), ³ (`U+00B3`), ¾ (`U+00BE`), ₃ (`U+2083`), ⅓ (`U+2153`), ⅔ (`U+2154`), ⅗ (`U+2157`), ⅜ (`U+215C`), ↉ (`U+2189`), ↋ (`U+218B`), ∛ (`U+221B`), ␓ (`U+2413`), ③ (`U+2462`), ⑬ (`U+246C`), ⑶ (`U+2476`), ⒀ (`U+2480`), ⒊ (`U+248A`), ⒔ (`U+2494`), ⓭ (`U+24ED`), ⓷ (`U+24F7`), ❸ (`U+2778`), ➂ (`U+2782`), ➌ (`U+278C`), ㉓ (`U+3253`), ㉚ (`U+325A`), ㉛ (`U+325B`), ㉜ (`U+325C`), ㉝ (`U+325D`), ㉞ (`U+325E`), ㉟ (`U+325F`), ㊱ (`U+32B1`), ㊲ (`U+32B2`), ㊳ (`U+32B3`), ㊴ (`U+32B4`), ㊸ (`U+32B8`), 𝟑 (`U+1D7D1`), 𝟥 (`U+1D7E5`), 𝟯 (`U+1D7EF`), 𝟹 (`U+1D7F9`), 🄄 (`U+1F104`), 🆛 (`U+1F19B`)
- `cv89`:
- 6 (`U+0036`), ⁶ (`U+2076`), ₆ (`U+2086`), ⅙ (`U+2159`), ⅚ (`U+215A`), ⑥ (`U+2465`), ⑯ (`U+246F`), ⑹ (`U+2479`), ⒃ (`U+2483`), ⒍ (`U+248D`), ⒗ (`U+2497`), ⓰ (`U+24F0`), ⓺ (`U+24FA`), ❻ (`U+277B`), ➅ (`U+2785`), ➏ (`U+278F`), ㉖ (`U+3256`), ㊱ (`U+32B1`), ㊻ (`U+32BB`), 𝟔 (`U+1D7D4`), 𝟨 (`U+1D7E8`), 𝟲 (`U+1D7F2`), 𝟼 (`U+1D7FC`), 🄇 (`U+1F107`), 🆣 (`U+1F1A3`)
+ 4 (`U+0034`), ¼ (`U+00BC`), ¾ (`U+00BE`), ⁴ (`U+2074`), ₄ (`U+2084`), ⅘ (`U+2158`), ∜ (`U+221C`), ␔ (`U+2414`), ④ (`U+2463`), ⑭ (`U+246D`), ⑷ (`U+2477`), ⒁ (`U+2481`), ⒋ (`U+248B`), ⒕ (`U+2495`), ⓮ (`U+24EE`), ⓸ (`U+24F8`), ❹ (`U+2779`), ➃ (`U+2783`), ➍ (`U+278D`), ㉔ (`U+3254`), ㉞ (`U+325E`), ㊵ (`U+32B5`), ㊶ (`U+32B6`), ㊷ (`U+32B7`), ㊸ (`U+32B8`), ㊹ (`U+32B9`), ㊺ (`U+32BA`), ㊻ (`U+32BB`), ㊼ (`U+32BC`), ㊽ (`U+32BD`), ㊾ (`U+32BE`), 𝟒 (`U+1D7D2`), 𝟦 (`U+1D7E6`), 𝟰 (`U+1D7F0`), 𝟺 (`U+1D7FA`), 🄅 (`U+1F105`), 🆞 (`U+1F19E`)
- `cv90`:
- 7 (`U+0037`), ⁷ (`U+2077`), ₇ (`U+2087`), ⅐ (`U+2150`), ⅞ (`U+215E`), ⑦ (`U+2466`), ⑰ (`U+2470`), ⑺ (`U+247A`), ⒄ (`U+2484`), ⒎ (`U+248E`), ⒘ (`U+2498`), ⓱ (`U+24F1`), ⓻ (`U+24FB`), ❼ (`U+277C`), ➆ (`U+2786`), ➐ (`U+2790`), ㉗ (`U+3257`), ㊲ (`U+32B2`), ㊼ (`U+32BC`), 𝟕 (`U+1D7D5`), 𝟩 (`U+1D7E9`), 𝟳 (`U+1D7F3`), 𝟽 (`U+1D7FD`), 🄈 (`U+1F108`), 🆡 (`U+1F1A1`)
+ 5 (`U+0035`), Ƽ (`U+01BC`), ƽ (`U+01BD`), ⁵ (`U+2075`), ₅ (`U+2085`), ⅕ (`U+2155`), ⅖ (`U+2156`), ⅗ (`U+2157`), ⅘ (`U+2158`), ⅚ (`U+215A`), ⅝ (`U+215D`), ⑤ (`U+2464`), ⑮ (`U+246E`), ⑸ (`U+2478`), ⒂ (`U+2482`), ⒌ (`U+248C`), ⒖ (`U+2496`), ⓯ (`U+24EF`), ⓹ (`U+24F9`), ❺ (`U+277A`), ➄ (`U+2784`), ➎ (`U+278E`), ㉕ (`U+3255`), ㉟ (`U+325F`), ㊺ (`U+32BA`), ㊿ (`U+32BF`), 𝟓 (`U+1D7D3`), 𝟧 (`U+1D7E7`), 𝟱 (`U+1D7F1`), 𝟻 (`U+1D7FB`), 🄆 (`U+1F106`), 🆠 (`U+1F1A0`)
- `cv91`:
- 8 (`U+0038`), ⁸ (`U+2078`), ₈ (`U+2088`), ⅛ (`U+215B`), ⅜ (`U+215C`), ⅝ (`U+215D`), ⅞ (`U+215E`), ⑧ (`U+2467`), ⑱ (`U+2471`), ⑻ (`U+247B`), ⒅ (`U+2485`), ⒏ (`U+248F`), ⒙ (`U+2499`), ⓲ (`U+24F2`), ⓼ (`U+24FC`), ❽ (`U+277D`), ➇ (`U+2787`), ➑ (`U+2791`), ㉘ (`U+3258`), ㊳ (`U+32B3`), ㊽ (`U+32BD`), 𝟖 (`U+1D7D6`), 𝟪 (`U+1D7EA`), 𝟴 (`U+1D7F4`), 𝟾 (`U+1D7FE`), 🄉 (`U+1F109`), 🆟 (`U+1F19F`)
+ 6 (`U+0036`), ⁶ (`U+2076`), ₆ (`U+2086`), ⅙ (`U+2159`), ⅚ (`U+215A`), ⑥ (`U+2465`), ⑯ (`U+246F`), ⑹ (`U+2479`), ⒃ (`U+2483`), ⒍ (`U+248D`), ⒗ (`U+2497`), ⓰ (`U+24F0`), ⓺ (`U+24FA`), ❻ (`U+277B`), ➅ (`U+2785`), ➏ (`U+278F`), ㉖ (`U+3256`), ㊱ (`U+32B1`), ㊻ (`U+32BB`), 𝟔 (`U+1D7D4`), 𝟨 (`U+1D7E8`), 𝟲 (`U+1D7F2`), 𝟼 (`U+1D7FC`), 🄇 (`U+1F107`), 🆣 (`U+1F1A3`)
- `cv92`:
- 9 (`U+0039`), ⁹ (`U+2079`), ₉ (`U+2089`), ⅑ (`U+2151`), ⑨ (`U+2468`), ⑲ (`U+2472`), ⑼ (`U+247C`), ⒆ (`U+2486`), ⒐ (`U+2490`), ⒚ (`U+249A`), ⓳ (`U+24F3`), ⓽ (`U+24FD`), ❾ (`U+277E`), ➈ (`U+2788`), ➒ (`U+2792`), ㉙ (`U+3259`), ㊴ (`U+32B4`), ㊾ (`U+32BE`), 𝟗 (`U+1D7D7`), 𝟫 (`U+1D7EB`), 𝟵 (`U+1D7F5`), 𝟿 (`U+1D7FF`), 🄊 (`U+1F10A`)
+ 7 (`U+0037`), ⁷ (`U+2077`), ₇ (`U+2087`), ⅐ (`U+2150`), ⅞ (`U+215E`), ⑦ (`U+2466`), ⑰ (`U+2470`), ⑺ (`U+247A`), ⒄ (`U+2484`), ⒎ (`U+248E`), ⒘ (`U+2498`), ⓱ (`U+24F1`), ⓻ (`U+24FB`), ❼ (`U+277C`), ➆ (`U+2786`), ➐ (`U+2790`), ㉗ (`U+3257`), ㊲ (`U+32B2`), ㊼ (`U+32BC`), 𝟕 (`U+1D7D5`), 𝟩 (`U+1D7E9`), 𝟳 (`U+1D7F3`), 𝟽 (`U+1D7FD`), 🄈 (`U+1F108`), 🆡 (`U+1F1A1`)
- `cv93`:
- i (`U+0069`), j (`U+006A`), ¨ (`U+00A8`), Ä (`U+00C4`), Ë (`U+00CB`), Ï (`U+00CF`), Ö (`U+00D6`), Ü (`U+00DC`), ä (`U+00E4`), ë (`U+00EB`), ï (`U+00EF`), ö (`U+00F6`), ü (`U+00FC`), ÿ (`U+00FF`), Ċ (`U+010A`), ċ (`U+010B`), ď (`U+010F`), Ė (`U+0116`), ė (`U+0117`), Ġ (`U+0120`), ġ (`U+0121`), Ģ (`U+0122`), ģ (`U+0123`), į (`U+012F`), İ (`U+0130`), ij (`U+0133`), Ķ (`U+0136`), ķ (`U+0137`), Ļ (`U+013B`), ļ (`U+013C`), Ľ (`U+013D`), ľ (`U+013E`), Ņ (`U+0145`), ņ (`U+0146`), Ŗ (`U+0156`), ŗ (`U+0157`), ť (`U+0165`), Ÿ (`U+0178`), Ż (`U+017B`), ż (`U+017C`), Ơ (`U+01A0`), ơ (`U+01A1`), Ư (`U+01AF`), ư (`U+01B0`), Lj (`U+01C8`), lj (`U+01C9`), Nj (`U+01CB`), nj (`U+01CC`), Ǖ (`U+01D5`), ǖ (`U+01D6`), Ǘ (`U+01D7`), ǘ (`U+01D8`), Ǚ (`U+01D9`), ǚ (`U+01DA`), Ǜ (`U+01DB`), ǜ (`U+01DC`), Ǟ (`U+01DE`), ǟ (`U+01DF`), Ǡ (`U+01E0`), ǡ (`U+01E1`), Ș (`U+0218`), ș (`U+0219`), Ț (`U+021A`), ț (`U+021B`), Ȧ (`U+0226`), ȧ (`U+0227`), Ȫ (`U+022A`), ȫ (`U+022B`), Ȯ (`U+022E`), ȯ (`U+022F`), Ȱ (`U+0230`), ȱ (`U+0231`), ɉ (`U+0249`), ɨ (`U+0268`), ʘ (`U+0298`), ʝ (`U+029D`), ʲ (`U+02B2`), ˙ (`U+02D9`), ̇ (`U+0307`), ̈ (`U+0308`), ̐ (`U+0310`), ̒ (`U+0312`), ̓ (`U+0313`), ̔ (`U+0314`), ̕ (`U+0315`), ̛ (`U+031B`), ̣ (`U+0323`), ̤ (`U+0324`), ̦ (`U+0326`), ̓ (`U+0343`), ̈́ (`U+0344`), ͋ (`U+034B`), ͒ (`U+0352`), ͘ (`U+0358`), ͥ (`U+0365`), ͼ (`U+037C`), ͽ (`U+037D`), ΅ (`U+0385`), ΐ (`U+0390`), Ϊ (`U+03AA`), Ϋ (`U+03AB`), ΰ (`U+03B0`), ϊ (`U+03CA`), ϋ (`U+03CB`), ϔ (`U+03D4`), ϳ (`U+03F3`), Ͼ (`U+03FE`), Ͽ (`U+03FF`), Ё (`U+0401`), Ї (`U+0407`), ё (`U+0451`), і (`U+0456`), ї (`U+0457`), ј (`U+0458`), Ѽ (`U+047C`), ѽ (`U+047D`), ҅ (`U+0485`), ҆ (`U+0486`), Ӓ (`U+04D2`), ӓ (`U+04D3`), Ӛ (`U+04DA`), ӛ (`U+04DB`), Ӝ (`U+04DC`), ӝ (`U+04DD`), Ӟ (`U+04DE`), ӟ (`U+04DF`), Ӥ (`U+04E4`), ӥ (`U+04E5`), Ӧ (`U+04E6`), ӧ (`U+04E7`), Ӫ (`U+04EA`), ӫ (`U+04EB`), Ӭ (`U+04EC`), ӭ (`U+04ED`), Ӱ (`U+04F0`), ӱ (`U+04F1`), Ӵ (`U+04F4`), ӵ (`U+04F5`), Ӹ (`U+04F8`), ӹ (`U+04F9`), ᪱ (`U+1AB1`), ᪴ (`U+1AB4`), ᴉ (`U+1D09`), ᴞ (`U+1D1E`), ᵎ (`U+1D4E`), ᵢ (`U+1D62`), ᶖ (`U+1D96`), ᶤ (`U+1DA4`), ᶨ (`U+1DA8`), ᷲ (`U+1DF2`), ᷳ (`U+1DF3`), ᷴ (`U+1DF4`), ᷸ (`U+1DF8`), ᷺ (`U+1DFA`), Ḃ (`U+1E02`), ḃ (`U+1E03`), Ḅ (`U+1E04`), ḅ (`U+1E05`), Ḋ (`U+1E0A`), ḋ (`U+1E0B`), Ḍ (`U+1E0C`), ḍ (`U+1E0D`), Ḑ (`U+1E10`), ḑ (`U+1E11`), Ḟ (`U+1E1E`), ḟ (`U+1E1F`), Ḣ (`U+1E22`), ḣ (`U+1E23`), Ḥ (`U+1E24`), ḥ (`U+1E25`), Ḧ (`U+1E26`), ḧ (`U+1E27`), ḭ (`U+1E2D`), Ḯ (`U+1E2E`), ḯ (`U+1E2F`), Ḳ (`U+1E32`), ḳ (`U+1E33`), Ḷ (`U+1E36`), ḷ (`U+1E37`), Ḹ (`U+1E38`), ḹ (`U+1E39`), Ṁ (`U+1E40`), ṁ (`U+1E41`), Ṃ (`U+1E42`), ṃ (`U+1E43`), Ṅ (`U+1E44`), ṅ (`U+1E45`), Ṇ (`U+1E46`), ṇ (`U+1E47`), Ṏ (`U+1E4E`), ṏ (`U+1E4F`), Ṗ (`U+1E56`), ṗ (`U+1E57`), Ṙ (`U+1E58`), ṙ (`U+1E59`), Ṛ (`U+1E5A`), ṛ (`U+1E5B`), Ṝ (`U+1E5C`), ṝ (`U+1E5D`), Ṡ (`U+1E60`), ṡ (`U+1E61`), Ṣ (`U+1E62`), ṣ (`U+1E63`), Ṥ (`U+1E64`), ṥ (`U+1E65`), Ṧ (`U+1E66`), ṧ (`U+1E67`), Ṩ (`U+1E68`), ṩ (`U+1E69`), Ṫ (`U+1E6A`), ṫ (`U+1E6B`), Ṭ (`U+1E6C`), ṭ (`U+1E6D`), Ṳ (`U+1E72`), ṳ (`U+1E73`), Ṻ (`U+1E7A`), ṻ (`U+1E7B`), Ṿ (`U+1E7E`), ṿ (`U+1E7F`), Ẅ (`U+1E84`), ẅ (`U+1E85`), Ẇ (`U+1E86`), ẇ (`U+1E87`), Ẉ (`U+1E88`), ẉ (`U+1E89`), Ẋ (`U+1E8A`), ẋ (`U+1E8B`), Ẍ (`U+1E8C`), ẍ (`U+1E8D`), Ẏ (`U+1E8E`), ẏ (`U+1E8F`), Ẓ (`U+1E92`), ẓ (`U+1E93`), ẗ (`U+1E97`), ẛ (`U+1E9B`), Ạ (`U+1EA0`), ạ (`U+1EA1`), Ậ (`U+1EAC`), ậ (`U+1EAD`), Ặ (`U+1EB6`), ặ (`U+1EB7`), Ẹ (`U+1EB8`), ẹ (`U+1EB9`), Ệ (`U+1EC6`), ệ (`U+1EC7`), Ị (`U+1ECA`), ị (`U+1ECB`), Ọ (`U+1ECC`), ọ (`U+1ECD`), Ộ (`U+1ED8`), ộ (`U+1ED9`), Ớ (`U+1EDA`), ớ (`U+1EDB`), Ờ (`U+1EDC`), ờ (`U+1EDD`), Ở (`U+1EDE`), ở (`U+1EDF`), Ỡ (`U+1EE0`), ỡ (`U+1EE1`), Ợ (`U+1EE2`), ợ (`U+1EE3`), Ụ (`U+1EE4`), ụ (`U+1EE5`), Ứ (`U+1EE8`), ứ (`U+1EE9`), Ừ (`U+1EEA`), ừ (`U+1EEB`), Ử (`U+1EEC`), ử (`U+1EED`), Ữ (`U+1EEE`), ữ (`U+1EEF`), Ự (`U+1EF0`), ự (`U+1EF1`), Ỵ (`U+1EF4`), ỵ (`U+1EF5`), ἀ (`U+1F00`), ἁ (`U+1F01`), ἂ (`U+1F02`), ἃ (`U+1F03`), ἄ (`U+1F04`), ἅ (`U+1F05`), ἆ (`U+1F06`), ἇ (`U+1F07`), Ἀ (`U+1F08`), Ἁ (`U+1F09`), Ἂ (`U+1F0A`), Ἃ (`U+1F0B`), Ἄ (`U+1F0C`), Ἅ (`U+1F0D`), Ἆ (`U+1F0E`), Ἇ (`U+1F0F`), ἐ (`U+1F10`), ἑ (`U+1F11`), ἒ (`U+1F12`), ἓ (`U+1F13`), ἔ (`U+1F14`), ἕ (`U+1F15`), Ἐ (`U+1F18`), Ἑ (`U+1F19`), Ἒ (`U+1F1A`), Ἓ (`U+1F1B`), Ἔ (`U+1F1C`), Ἕ (`U+1F1D`), ἠ (`U+1F20`), ἡ (`U+1F21`), ἢ (`U+1F22`), ἣ (`U+1F23`), ἤ (`U+1F24`), ἥ (`U+1F25`), ἦ (`U+1F26`), ἧ (`U+1F27`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ἰ (`U+1F30`), ἱ (`U+1F31`), ἲ (`U+1F32`), ἳ (`U+1F33`), ἴ (`U+1F34`), ἵ (`U+1F35`), ἶ (`U+1F36`), ἷ (`U+1F37`), Ἰ (`U+1F38`), Ἱ (`U+1F39`), Ἲ (`U+1F3A`), Ἳ (`U+1F3B`), Ἴ (`U+1F3C`), Ἵ (`U+1F3D`), Ἶ (`U+1F3E`), Ἷ (`U+1F3F`), ὀ (`U+1F40`), ὁ (`U+1F41`), ὂ (`U+1F42`), ὃ (`U+1F43`), ὄ (`U+1F44`), ὅ (`U+1F45`), Ὀ (`U+1F48`), Ὁ (`U+1F49`), Ὂ (`U+1F4A`), Ὃ (`U+1F4B`), Ὄ (`U+1F4C`), Ὅ (`U+1F4D`), ὐ (`U+1F50`), ὑ (`U+1F51`), ὒ (`U+1F52`), ὓ (`U+1F53`), ὔ (`U+1F54`), ὕ (`U+1F55`), ὖ (`U+1F56`), ὗ (`U+1F57`), Ὑ (`U+1F59`), Ὓ (`U+1F5B`), Ὕ (`U+1F5D`), Ὗ (`U+1F5F`), ὠ (`U+1F60`), ὡ (`U+1F61`), ὢ (`U+1F62`), ὣ (`U+1F63`), ὤ (`U+1F64`), ὥ (`U+1F65`), ὦ (`U+1F66`), ὧ (`U+1F67`), Ὠ (`U+1F68`), Ὡ (`U+1F69`), Ὢ (`U+1F6A`), Ὣ (`U+1F6B`), Ὤ (`U+1F6C`), Ὥ (`U+1F6D`), Ὦ (`U+1F6E`), Ὧ (`U+1F6F`), ᾀ (`U+1F80`), ᾁ (`U+1F81`), ᾂ (`U+1F82`), ᾃ (`U+1F83`), ᾄ (`U+1F84`), ᾅ (`U+1F85`), ᾆ (`U+1F86`), ᾇ (`U+1F87`), ᾈ (`U+1F88`), ᾉ (`U+1F89`), ᾊ (`U+1F8A`), ᾋ (`U+1F8B`), ᾌ (`U+1F8C`), ᾍ (`U+1F8D`), ᾎ (`U+1F8E`), ᾏ (`U+1F8F`), ᾐ (`U+1F90`), ᾑ (`U+1F91`), ᾒ (`U+1F92`), ᾓ (`U+1F93`), ᾔ (`U+1F94`), ᾕ (`U+1F95`), ᾖ (`U+1F96`), ᾗ (`U+1F97`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), ᾠ (`U+1FA0`), ᾡ (`U+1FA1`), ᾢ (`U+1FA2`), ᾣ (`U+1FA3`), ᾤ (`U+1FA4`), ᾥ (`U+1FA5`), ᾦ (`U+1FA6`), ᾧ (`U+1FA7`), ᾨ (`U+1FA8`), ᾩ (`U+1FA9`), ᾪ (`U+1FAA`), ᾫ (`U+1FAB`), ᾬ (`U+1FAC`), ᾭ (`U+1FAD`), ᾮ (`U+1FAE`), ᾯ (`U+1FAF`), ᾽ (`U+1FBD`), ᾿ (`U+1FBF`), ῁ (`U+1FC1`), ῍ (`U+1FCD`), ῎ (`U+1FCE`), ῏ (`U+1FCF`), ῒ (`U+1FD2`), ΐ (`U+1FD3`), ῗ (`U+1FD7`), ῝ (`U+1FDD`), ῞ (`U+1FDE`), ῟ (`U+1FDF`), ῢ (`U+1FE2`), ΰ (`U+1FE3`), ῤ (`U+1FE4`), ῥ (`U+1FE5`), ῧ (`U+1FE7`), Ῥ (`U+1FEC`), ῭ (`U+1FED`), ΅ (`U+1FEE`), ῾ (`U+1FFE`), ⁱ (`U+2071`), ⃛ (`U+20DB`), ⃜ (`U+20DC`), ⃨ (`U+20E8`), ⅰ (`U+2170`), ⅱ (`U+2171`), ⅲ (`U+2172`), ⅳ (`U+2173`), ⅵ (`U+2175`), ⅶ (`U+2176`), ⅷ (`U+2177`), ⅸ (`U+2178`), ⅺ (`U+217A`), ⅻ (`U+217B`), ⍡ (`U+2361`), ⍢ (`U+2362`), ⍣ (`U+2363`), ⍤ (`U+2364`), ⍥ (`U+2365`), ⍨ (`U+2368`), ⍩ (`U+2369`), ⒤ (`U+24A4`), ⒥ (`U+24A5`), ⓘ (`U+24D8`), ⓙ (`U+24D9`), ⱼ (`U+2C7C`), ⸚ (`U+2E1A`), Ꙩ (`U+A668`), ꙩ (`U+A669`), Ꙫ (`U+A66A`), ꙫ (`U+A66B`), Ꙭ (`U+A66C`), ꙭ (`U+A66D`), ꙮ (`U+A66E`), ꙶ (`U+A676`), Ꜿ (`U+A73E`), ꜿ (`U+A73F`), 𐞵 (`U+107B5`), 𝐢 (`U+1D422`), 𝐣 (`U+1D423`), 𝑖 (`U+1D456`), 𝑗 (`U+1D457`), 𝒊 (`U+1D48A`), 𝒋 (`U+1D48B`), 𝗂 (`U+1D5C2`), 𝗃 (`U+1D5C3`), 𝗶 (`U+1D5F6`), 𝗷 (`U+1D5F7`), 𝘪 (`U+1D62A`), 𝘫 (`U+1D62B`), 𝙞 (`U+1D65E`), 𝙟 (`U+1D65F`), 𝚒 (`U+1D692`), 𝚓 (`U+1D693`), 𞁌 (`U+1E04C`), 𞁍 (`U+1E04D`), 𞁨 (`U+1E068`), 𞂏 (`U+1E08F`)
+ 8 (`U+0038`), ⁸ (`U+2078`), ₈ (`U+2088`), ⅛ (`U+215B`), ⅜ (`U+215C`), ⅝ (`U+215D`), ⅞ (`U+215E`), ⑧ (`U+2467`), ⑱ (`U+2471`), ⑻ (`U+247B`), ⒅ (`U+2485`), ⒏ (`U+248F`), ⒙ (`U+2499`), ⓲ (`U+24F2`), ⓼ (`U+24FC`), ❽ (`U+277D`), ➇ (`U+2787`), ➑ (`U+2791`), ㉘ (`U+3258`), ㊳ (`U+32B3`), ㊽ (`U+32BD`), 𝟖 (`U+1D7D6`), 𝟪 (`U+1D7EA`), 𝟴 (`U+1D7F4`), 𝟾 (`U+1D7FE`), 🄉 (`U+1F109`), 🆟 (`U+1F19F`)
- `cv94`:
- \! (`U+0021`), ' (`U+0027`), , (`U+002C`), \. (`U+002E`), : (`U+003A`), ; (`U+003B`), ? (`U+003F`), \` (`U+0060`), ¡ (`U+00A1`), · (`U+00B7`), ¿ (`U+00BF`), ÷ (`U+00F7`), Ŀ (`U+013F`), ŀ (`U+0140`), ʼn (`U+0149`), ǃ (`U+01C3`), ʻ (`U+02BB`), ʼ (`U+02BC`), ʽ (`U+02BD`), ˮ (`U+02EE`), ˸ (`U+02F8`), ; (`U+037E`), · (`U+0387`), ‘ (`U+2018`), ’ (`U+2019`), ‚ (`U+201A`), ‛ (`U+201B`), “ (`U+201C`), ” (`U+201D`), „ (`U+201E`), ‟ (`U+201F`), ․ (`U+2024`), ‥ (`U+2025`), … (`U+2026`), ‧ (`U+2027`), ※ (`U+203B`), ‼ (`U+203C`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ⁏ (`U+204F`), ⁒ (`U+2052`), ⁖ (`U+2056`), ⁘ (`U+2058`), ⁙ (`U+2059`), ⁚ (`U+205A`), ⁛ (`U+205B`), ⁜ (`U+205C`), ⁝ (`U+205D`), ⁞ (`U+205E`), ∔ (`U+2214`), ∴ (`U+2234`), ∵ (`U+2235`), ∶ (`U+2236`), ∷ (`U+2237`), ∸ (`U+2238`), ∹ (`U+2239`), ∺ (`U+223A`), ∻ (`U+223B`), ≐ (`U+2250`), ≑ (`U+2251`), ≒ (`U+2252`), ≓ (`U+2253`), ≔ (`U+2254`), ≕ (`U+2255`), ≟ (`U+225F`), ⊍ (`U+228D`), ⊙ (`U+2299`), ⊡ (`U+22A1`), ⋅ (`U+22C5`), ⋇ (`U+22C7`), ⋖ (`U+22D6`), ⋗ (`U+22D7`), ⋮ (`U+22EE`), ⋯ (`U+22EF`), ⋰ (`U+22F0`), ⋱ (`U+22F1`), ⋵ (`U+22F5`), ⌹ (`U+2339`), ⍠ (`U+2360`), ⍪ (`U+236A`), ⍮ (`U+236E`), ⍰ (`U+2370`), ␦ (`U+2426`), ⒈ (`U+2488`), ⒉ (`U+2489`), ⒊ (`U+248A`), ⒋ (`U+248B`), ⒌ (`U+248C`), ⒍ (`U+248D`), ⒎ (`U+248E`), ⒏ (`U+248F`), ⒐ (`U+2490`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⒛ (`U+249B`), ⦙ (`U+2999`), ⦼ (`U+29BC`), ⧴ (`U+29F4`), ⨀ (`U+2A00`), ⨒ (`U+2A12`), ⨓ (`U+2A13`), ⨔ (`U+2A14`), ⨕ (`U+2A15`), ⨥ (`U+2A25`), ⨪ (`U+2A2A`), ⨫ (`U+2A2B`), ⨬ (`U+2A2C`), ⨰ (`U+2A30`), ⨸ (`U+2A38`), ⩀ (`U+2A40`), ⩦ (`U+2A66`), ⩧ (`U+2A67`), ⩪ (`U+2A6A`), ⩫ (`U+2A6B`), ⩭ (`U+2A6D`), ⩿ (`U+2A7F`), ⪀ (`U+2A80`), ⪗ (`U+2A97`), ⪘ (`U+2A98`), ⫶ (`U+2AF6`), ⸘ (`U+2E18`), ⸞ (`U+2E1E`), ⸟ (`U+2E1F`), ⸮ (`U+2E2E`), ⸱ (`U+2E31`), ⸲ (`U+2E32`), ⸳ (`U+2E33`), ⸴ (`U+2E34`), ⸵ (`U+2E35`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ꜝ (`U+A71D`), ꜞ (`U+A71E`), ꜟ (`U+A71F`), ꞉ (`U+A789`), ꞏ (`U+A78F`), � (`U+FFFD`), 𐞹 (`U+107B9`), 𝼊 (`U+1DF0A`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄂 (`U+1F102`), 🄃 (`U+1F103`), 🄄 (`U+1F104`), 🄅 (`U+1F105`), 🄆 (`U+1F106`), 🄇 (`U+1F107`), 🄈 (`U+1F108`), 🄉 (`U+1F109`), 🄊 (`U+1F10A`), 🆙 (`U+1F199`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆢 (`U+1F1A2`), 🯄 (`U+1FBC4`)
+ 9 (`U+0039`), ⁹ (`U+2079`), ₉ (`U+2089`), ⅑ (`U+2151`), ⑨ (`U+2468`), ⑲ (`U+2472`), ⑼ (`U+247C`), ⒆ (`U+2486`), ⒐ (`U+2490`), ⒚ (`U+249A`), ⓳ (`U+24F3`), ⓽ (`U+24FD`), ❾ (`U+277E`), ➈ (`U+2788`), ➒ (`U+2792`), ㉙ (`U+3259`), ㊴ (`U+32B4`), ㊾ (`U+32BE`), 𝟗 (`U+1D7D7`), 𝟫 (`U+1D7EB`), 𝟵 (`U+1D7F5`), 𝟿 (`U+1D7FF`), 🄊 (`U+1F10A`)
- `cv95`:
- ~ (`U+007E`)
+ i (`U+0069`), j (`U+006A`), ¨ (`U+00A8`), Ä (`U+00C4`), Ë (`U+00CB`), Ï (`U+00CF`), Ö (`U+00D6`), Ü (`U+00DC`), ä (`U+00E4`), ë (`U+00EB`), ï (`U+00EF`), ö (`U+00F6`), ü (`U+00FC`), ÿ (`U+00FF`), Ċ (`U+010A`), ċ (`U+010B`), ď (`U+010F`), Ė (`U+0116`), ė (`U+0117`), Ġ (`U+0120`), ġ (`U+0121`), Ģ (`U+0122`), ģ (`U+0123`), į (`U+012F`), İ (`U+0130`), ij (`U+0133`), Ķ (`U+0136`), ķ (`U+0137`), Ļ (`U+013B`), ļ (`U+013C`), Ľ (`U+013D`), ľ (`U+013E`), Ņ (`U+0145`), ņ (`U+0146`), Ŗ (`U+0156`), ŗ (`U+0157`), ť (`U+0165`), Ÿ (`U+0178`), Ż (`U+017B`), ż (`U+017C`), Ơ (`U+01A0`), ơ (`U+01A1`), Ư (`U+01AF`), ư (`U+01B0`), Lj (`U+01C8`), lj (`U+01C9`), Nj (`U+01CB`), nj (`U+01CC`), Ǖ (`U+01D5`), ǖ (`U+01D6`), Ǘ (`U+01D7`), ǘ (`U+01D8`), Ǚ (`U+01D9`), ǚ (`U+01DA`), Ǜ (`U+01DB`), ǜ (`U+01DC`), Ǟ (`U+01DE`), ǟ (`U+01DF`), Ǡ (`U+01E0`), ǡ (`U+01E1`), Ș (`U+0218`), ș (`U+0219`), Ț (`U+021A`), ț (`U+021B`), Ȧ (`U+0226`), ȧ (`U+0227`), Ȫ (`U+022A`), ȫ (`U+022B`), Ȯ (`U+022E`), ȯ (`U+022F`), Ȱ (`U+0230`), ȱ (`U+0231`), ɉ (`U+0249`), ɨ (`U+0268`), ʘ (`U+0298`), ʝ (`U+029D`), ʲ (`U+02B2`), ˙ (`U+02D9`), ̇ (`U+0307`), ̈ (`U+0308`), ̐ (`U+0310`), ̒ (`U+0312`), ̓ (`U+0313`), ̔ (`U+0314`), ̕ (`U+0315`), ̛ (`U+031B`), ̣ (`U+0323`), ̤ (`U+0324`), ̦ (`U+0326`), ̓ (`U+0343`), ̈́ (`U+0344`), ͋ (`U+034B`), ͒ (`U+0352`), ͘ (`U+0358`), ͥ (`U+0365`), ͼ (`U+037C`), ͽ (`U+037D`), ΅ (`U+0385`), ΐ (`U+0390`), Ϊ (`U+03AA`), Ϋ (`U+03AB`), ΰ (`U+03B0`), ϊ (`U+03CA`), ϋ (`U+03CB`), ϔ (`U+03D4`), ϳ (`U+03F3`), Ͼ (`U+03FE`), Ͽ (`U+03FF`), Ё (`U+0401`), Ї (`U+0407`), ё (`U+0451`), і (`U+0456`), ї (`U+0457`), ј (`U+0458`), Ѽ (`U+047C`), ѽ (`U+047D`), ҅ (`U+0485`), ҆ (`U+0486`), Ӓ (`U+04D2`), ӓ (`U+04D3`), Ӛ (`U+04DA`), ӛ (`U+04DB`), Ӝ (`U+04DC`), ӝ (`U+04DD`), Ӟ (`U+04DE`), ӟ (`U+04DF`), Ӥ (`U+04E4`), ӥ (`U+04E5`), Ӧ (`U+04E6`), ӧ (`U+04E7`), Ӫ (`U+04EA`), ӫ (`U+04EB`), Ӭ (`U+04EC`), ӭ (`U+04ED`), Ӱ (`U+04F0`), ӱ (`U+04F1`), Ӵ (`U+04F4`), ӵ (`U+04F5`), Ӹ (`U+04F8`), ӹ (`U+04F9`), ᪱ (`U+1AB1`), ᪴ (`U+1AB4`), ᴉ (`U+1D09`), ᴞ (`U+1D1E`), ᵎ (`U+1D4E`), ᵢ (`U+1D62`), ᶖ (`U+1D96`), ᶤ (`U+1DA4`), ᶨ (`U+1DA8`), ᷲ (`U+1DF2`), ᷳ (`U+1DF3`), ᷴ (`U+1DF4`), ᷸ (`U+1DF8`), ᷺ (`U+1DFA`), Ḃ (`U+1E02`), ḃ (`U+1E03`), Ḅ (`U+1E04`), ḅ (`U+1E05`), Ḋ (`U+1E0A`), ḋ (`U+1E0B`), Ḍ (`U+1E0C`), ḍ (`U+1E0D`), Ḑ (`U+1E10`), ḑ (`U+1E11`), Ḟ (`U+1E1E`), ḟ (`U+1E1F`), Ḣ (`U+1E22`), ḣ (`U+1E23`), Ḥ (`U+1E24`), ḥ (`U+1E25`), Ḧ (`U+1E26`), ḧ (`U+1E27`), ḭ (`U+1E2D`), Ḯ (`U+1E2E`), ḯ (`U+1E2F`), Ḳ (`U+1E32`), ḳ (`U+1E33`), Ḷ (`U+1E36`), ḷ (`U+1E37`), Ḹ (`U+1E38`), ḹ (`U+1E39`), Ṁ (`U+1E40`), ṁ (`U+1E41`), Ṃ (`U+1E42`), ṃ (`U+1E43`), Ṅ (`U+1E44`), ṅ (`U+1E45`), Ṇ (`U+1E46`), ṇ (`U+1E47`), Ṏ (`U+1E4E`), ṏ (`U+1E4F`), Ṗ (`U+1E56`), ṗ (`U+1E57`), Ṙ (`U+1E58`), ṙ (`U+1E59`), Ṛ (`U+1E5A`), ṛ (`U+1E5B`), Ṝ (`U+1E5C`), ṝ (`U+1E5D`), Ṡ (`U+1E60`), ṡ (`U+1E61`), Ṣ (`U+1E62`), ṣ (`U+1E63`), Ṥ (`U+1E64`), ṥ (`U+1E65`), Ṧ (`U+1E66`), ṧ (`U+1E67`), Ṩ (`U+1E68`), ṩ (`U+1E69`), Ṫ (`U+1E6A`), ṫ (`U+1E6B`), Ṭ (`U+1E6C`), ṭ (`U+1E6D`), Ṳ (`U+1E72`), ṳ (`U+1E73`), Ṻ (`U+1E7A`), ṻ (`U+1E7B`), Ṿ (`U+1E7E`), ṿ (`U+1E7F`), Ẅ (`U+1E84`), ẅ (`U+1E85`), Ẇ (`U+1E86`), ẇ (`U+1E87`), Ẉ (`U+1E88`), ẉ (`U+1E89`), Ẋ (`U+1E8A`), ẋ (`U+1E8B`), Ẍ (`U+1E8C`), ẍ (`U+1E8D`), Ẏ (`U+1E8E`), ẏ (`U+1E8F`), Ẓ (`U+1E92`), ẓ (`U+1E93`), ẗ (`U+1E97`), ẛ (`U+1E9B`), Ạ (`U+1EA0`), ạ (`U+1EA1`), Ậ (`U+1EAC`), ậ (`U+1EAD`), Ặ (`U+1EB6`), ặ (`U+1EB7`), Ẹ (`U+1EB8`), ẹ (`U+1EB9`), Ệ (`U+1EC6`), ệ (`U+1EC7`), Ị (`U+1ECA`), ị (`U+1ECB`), Ọ (`U+1ECC`), ọ (`U+1ECD`), Ộ (`U+1ED8`), ộ (`U+1ED9`), Ớ (`U+1EDA`), ớ (`U+1EDB`), Ờ (`U+1EDC`), ờ (`U+1EDD`), Ở (`U+1EDE`), ở (`U+1EDF`), Ỡ (`U+1EE0`), ỡ (`U+1EE1`), Ợ (`U+1EE2`), ợ (`U+1EE3`), Ụ (`U+1EE4`), ụ (`U+1EE5`), Ứ (`U+1EE8`), ứ (`U+1EE9`), Ừ (`U+1EEA`), ừ (`U+1EEB`), Ử (`U+1EEC`), ử (`U+1EED`), Ữ (`U+1EEE`), ữ (`U+1EEF`), Ự (`U+1EF0`), ự (`U+1EF1`), Ỵ (`U+1EF4`), ỵ (`U+1EF5`), ἀ (`U+1F00`), ἁ (`U+1F01`), ἂ (`U+1F02`), ἃ (`U+1F03`), ἄ (`U+1F04`), ἅ (`U+1F05`), ἆ (`U+1F06`), ἇ (`U+1F07`), Ἀ (`U+1F08`), Ἁ (`U+1F09`), Ἂ (`U+1F0A`), Ἃ (`U+1F0B`), Ἄ (`U+1F0C`), Ἅ (`U+1F0D`), Ἆ (`U+1F0E`), Ἇ (`U+1F0F`), ἐ (`U+1F10`), ἑ (`U+1F11`), ἒ (`U+1F12`), ἓ (`U+1F13`), ἔ (`U+1F14`), ἕ (`U+1F15`), Ἐ (`U+1F18`), Ἑ (`U+1F19`), Ἒ (`U+1F1A`), Ἓ (`U+1F1B`), Ἔ (`U+1F1C`), Ἕ (`U+1F1D`), ἠ (`U+1F20`), ἡ (`U+1F21`), ἢ (`U+1F22`), ἣ (`U+1F23`), ἤ (`U+1F24`), ἥ (`U+1F25`), ἦ (`U+1F26`), ἧ (`U+1F27`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ἰ (`U+1F30`), ἱ (`U+1F31`), ἲ (`U+1F32`), ἳ (`U+1F33`), ἴ (`U+1F34`), ἵ (`U+1F35`), ἶ (`U+1F36`), ἷ (`U+1F37`), Ἰ (`U+1F38`), Ἱ (`U+1F39`), Ἲ (`U+1F3A`), Ἳ (`U+1F3B`), Ἴ (`U+1F3C`), Ἵ (`U+1F3D`), Ἶ (`U+1F3E`), Ἷ (`U+1F3F`), ὀ (`U+1F40`), ὁ (`U+1F41`), ὂ (`U+1F42`), ὃ (`U+1F43`), ὄ (`U+1F44`), ὅ (`U+1F45`), Ὀ (`U+1F48`), Ὁ (`U+1F49`), Ὂ (`U+1F4A`), Ὃ (`U+1F4B`), Ὄ (`U+1F4C`), Ὅ (`U+1F4D`), ὐ (`U+1F50`), ὑ (`U+1F51`), ὒ (`U+1F52`), ὓ (`U+1F53`), ὔ (`U+1F54`), ὕ (`U+1F55`), ὖ (`U+1F56`), ὗ (`U+1F57`), Ὑ (`U+1F59`), Ὓ (`U+1F5B`), Ὕ (`U+1F5D`), Ὗ (`U+1F5F`), ὠ (`U+1F60`), ὡ (`U+1F61`), ὢ (`U+1F62`), ὣ (`U+1F63`), ὤ (`U+1F64`), ὥ (`U+1F65`), ὦ (`U+1F66`), ὧ (`U+1F67`), Ὠ (`U+1F68`), Ὡ (`U+1F69`), Ὢ (`U+1F6A`), Ὣ (`U+1F6B`), Ὤ (`U+1F6C`), Ὥ (`U+1F6D`), Ὦ (`U+1F6E`), Ὧ (`U+1F6F`), ᾀ (`U+1F80`), ᾁ (`U+1F81`), ᾂ (`U+1F82`), ᾃ (`U+1F83`), ᾄ (`U+1F84`), ᾅ (`U+1F85`), ᾆ (`U+1F86`), ᾇ (`U+1F87`), ᾈ (`U+1F88`), ᾉ (`U+1F89`), ᾊ (`U+1F8A`), ᾋ (`U+1F8B`), ᾌ (`U+1F8C`), ᾍ (`U+1F8D`), ᾎ (`U+1F8E`), ᾏ (`U+1F8F`), ᾐ (`U+1F90`), ᾑ (`U+1F91`), ᾒ (`U+1F92`), ᾓ (`U+1F93`), ᾔ (`U+1F94`), ᾕ (`U+1F95`), ᾖ (`U+1F96`), ᾗ (`U+1F97`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), ᾠ (`U+1FA0`), ᾡ (`U+1FA1`), ᾢ (`U+1FA2`), ᾣ (`U+1FA3`), ᾤ (`U+1FA4`), ᾥ (`U+1FA5`), ᾦ (`U+1FA6`), ᾧ (`U+1FA7`), ᾨ (`U+1FA8`), ᾩ (`U+1FA9`), ᾪ (`U+1FAA`), ᾫ (`U+1FAB`), ᾬ (`U+1FAC`), ᾭ (`U+1FAD`), ᾮ (`U+1FAE`), ᾯ (`U+1FAF`), ᾽ (`U+1FBD`), ᾿ (`U+1FBF`), ῁ (`U+1FC1`), ῍ (`U+1FCD`), ῎ (`U+1FCE`), ῏ (`U+1FCF`), ῒ (`U+1FD2`), ΐ (`U+1FD3`), ῗ (`U+1FD7`), ῝ (`U+1FDD`), ῞ (`U+1FDE`), ῟ (`U+1FDF`), ῢ (`U+1FE2`), ΰ (`U+1FE3`), ῤ (`U+1FE4`), ῥ (`U+1FE5`), ῧ (`U+1FE7`), Ῥ (`U+1FEC`), ῭ (`U+1FED`), ΅ (`U+1FEE`), ῾ (`U+1FFE`), ⁱ (`U+2071`), ⃛ (`U+20DB`), ⃜ (`U+20DC`), ⃨ (`U+20E8`), ⅰ (`U+2170`), ⅱ (`U+2171`), ⅲ (`U+2172`), ⅳ (`U+2173`), ⅵ (`U+2175`), ⅶ (`U+2176`), ⅷ (`U+2177`), ⅸ (`U+2178`), ⅺ (`U+217A`), ⅻ (`U+217B`), ⍡ (`U+2361`), ⍢ (`U+2362`), ⍣ (`U+2363`), ⍤ (`U+2364`), ⍥ (`U+2365`), ⍨ (`U+2368`), ⍩ (`U+2369`), ⒤ (`U+24A4`), ⒥ (`U+24A5`), ⓘ (`U+24D8`), ⓙ (`U+24D9`), ⱼ (`U+2C7C`), ⸚ (`U+2E1A`), Ꙩ (`U+A668`), ꙩ (`U+A669`), Ꙫ (`U+A66A`), ꙫ (`U+A66B`), Ꙭ (`U+A66C`), ꙭ (`U+A66D`), ꙮ (`U+A66E`), ꙶ (`U+A676`), Ꜿ (`U+A73E`), ꜿ (`U+A73F`), 𐞵 (`U+107B5`), 𝐢 (`U+1D422`), 𝐣 (`U+1D423`), 𝑖 (`U+1D456`), 𝑗 (`U+1D457`), 𝒊 (`U+1D48A`), 𝒋 (`U+1D48B`), 𝗂 (`U+1D5C2`), 𝗃 (`U+1D5C3`), 𝗶 (`U+1D5F6`), 𝗷 (`U+1D5F7`), 𝘪 (`U+1D62A`), 𝘫 (`U+1D62B`), 𝙞 (`U+1D65E`), 𝙟 (`U+1D65F`), 𝚒 (`U+1D692`), 𝚓 (`U+1D693`), 𞁌 (`U+1E04C`), 𞁍 (`U+1E04D`), 𞁨 (`U+1E068`), 𞂏 (`U+1E08F`)
- `cv96`:
- \* (`U+002A`), ͙ (`U+0359`), ⁂ (`U+2042`), ⁎ (`U+204E`), ⁑ (`U+2051`), ⁕ (`U+2055`), ⃰ (`U+20F0`), ∗ (`U+2217`), ⊛ (`U+229B`), ⧆ (`U+29C6`), ⩮ (`U+2A6E`)
+ \! (`U+0021`), ' (`U+0027`), , (`U+002C`), \. (`U+002E`), : (`U+003A`), ; (`U+003B`), ? (`U+003F`), \` (`U+0060`), ¡ (`U+00A1`), · (`U+00B7`), ¿ (`U+00BF`), ÷ (`U+00F7`), Ŀ (`U+013F`), ŀ (`U+0140`), ʼn (`U+0149`), ǃ (`U+01C3`), ʻ (`U+02BB`), ʼ (`U+02BC`), ʽ (`U+02BD`), ˮ (`U+02EE`), ˸ (`U+02F8`), ; (`U+037E`), · (`U+0387`), ჻ (`U+10FB`), ‘ (`U+2018`), ’ (`U+2019`), ‚ (`U+201A`), ‛ (`U+201B`), “ (`U+201C`), ” (`U+201D`), „ (`U+201E`), ‟ (`U+201F`), ․ (`U+2024`), ‥ (`U+2025`), … (`U+2026`), ‧ (`U+2027`), ※ (`U+203B`), ‼ (`U+203C`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ⁏ (`U+204F`), ⁒ (`U+2052`), ⁖ (`U+2056`), ⁘ (`U+2058`), ⁙ (`U+2059`), ⁚ (`U+205A`), ⁛ (`U+205B`), ⁜ (`U+205C`), ⁝ (`U+205D`), ⁞ (`U+205E`), ∔ (`U+2214`), ∴ (`U+2234`), ∵ (`U+2235`), ∶ (`U+2236`), ∷ (`U+2237`), ∸ (`U+2238`), ∹ (`U+2239`), ∺ (`U+223A`), ∻ (`U+223B`), ≐ (`U+2250`), ≑ (`U+2251`), ≒ (`U+2252`), ≓ (`U+2253`), ≔ (`U+2254`), ≕ (`U+2255`), ≟ (`U+225F`), ⊍ (`U+228D`), ⊙ (`U+2299`), ⊡ (`U+22A1`), ⋅ (`U+22C5`), ⋇ (`U+22C7`), ⋖ (`U+22D6`), ⋗ (`U+22D7`), ⋮ (`U+22EE`), ⋯ (`U+22EF`), ⋰ (`U+22F0`), ⋱ (`U+22F1`), ⋵ (`U+22F5`), ⌹ (`U+2339`), ⍠ (`U+2360`), ⍪ (`U+236A`), ⍮ (`U+236E`), ⍰ (`U+2370`), ␦ (`U+2426`), ⒈ (`U+2488`), ⒉ (`U+2489`), ⒊ (`U+248A`), ⒋ (`U+248B`), ⒌ (`U+248C`), ⒍ (`U+248D`), ⒎ (`U+248E`), ⒏ (`U+248F`), ⒐ (`U+2490`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⒛ (`U+249B`), ⦙ (`U+2999`), ⦼ (`U+29BC`), ⧴ (`U+29F4`), ⨀ (`U+2A00`), ⨒ (`U+2A12`), ⨓ (`U+2A13`), ⨔ (`U+2A14`), ⨕ (`U+2A15`), ⨥ (`U+2A25`), ⨪ (`U+2A2A`), ⨫ (`U+2A2B`), ⨬ (`U+2A2C`), ⨰ (`U+2A30`), ⨸ (`U+2A38`), ⩀ (`U+2A40`), ⩦ (`U+2A66`), ⩧ (`U+2A67`), ⩪ (`U+2A6A`), ⩫ (`U+2A6B`), ⩭ (`U+2A6D`), ⩿ (`U+2A7F`), ⪀ (`U+2A80`), ⪗ (`U+2A97`), ⪘ (`U+2A98`), ⫶ (`U+2AF6`), ⸘ (`U+2E18`), ⸞ (`U+2E1E`), ⸟ (`U+2E1F`), ⸪ (`U+2E2A`), ⸫ (`U+2E2B`), ⸬ (`U+2E2C`), ⸭ (`U+2E2D`), ⸮ (`U+2E2E`), ⸱ (`U+2E31`), ⸲ (`U+2E32`), ⸳ (`U+2E33`), ⸴ (`U+2E34`), ⸵ (`U+2E35`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ꜝ (`U+A71D`), ꜞ (`U+A71E`), ꜟ (`U+A71F`), ꞉ (`U+A789`), ꞏ (`U+A78F`), � (`U+FFFD`), 𐞹 (`U+107B9`), 𝼊 (`U+1DF0A`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄂 (`U+1F102`), 🄃 (`U+1F103`), 🄄 (`U+1F104`), 🄅 (`U+1F105`), 🄆 (`U+1F106`), 🄇 (`U+1F107`), 🄈 (`U+1F108`), 🄉 (`U+1F109`), 🄊 (`U+1F10A`), 🆙 (`U+1F199`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆢 (`U+1F1A2`), 🯄 (`U+1FBC4`)
- `cv97`:
- \_ (`U+005F`), ‗ (`U+2017`), ⍽ (`U+237D`), ␣ (`U+2423`)
+ ~ (`U+007E`)
- `cv98`:
- ^ (`U+005E`)
+ \* (`U+002A`), ͙ (`U+0359`), ⁂ (`U+2042`), ⁎ (`U+204E`), ⁑ (`U+2051`), ⁕ (`U+2055`), ⃰ (`U+20F0`), ∗ (`U+2217`), ⊛ (`U+229B`), ⧆ (`U+29C6`), ⩮ (`U+2A6E`)
- `cv99`:
- \( (`U+0028`), \) (`U+0029`), ⁽ (`U+207D`), ⁾ (`U+207E`), ₍ (`U+208D`), ₎ (`U+208E`), ⸨ (`U+2E28`), ⸩ (`U+2E29`)
+ \_ (`U+005F`), ‗ (`U+2017`), ⍽ (`U+237D`), ␣ (`U+2423`)
- `VSAA`:
- \{ (`U+007B`), \} (`U+007D`), ⦃ (`U+2983`), ⦄ (`U+2984`)
+ ^ (`U+005E`)
- `VSAB`:
- « (`U+00AB`), » (`U+00BB`), ‹ (`U+2039`), › (`U+203A`)
+ \` (`U+0060`)
- `VSAC`:
- \# (`U+0023`), ᫆ (`U+1AC6`)
+ ' (`U+0027`)
- `VSAD`:
- & (`U+0026`), ⅋ (`U+214B`)
+ \( (`U+0028`), \) (`U+0029`), ⁽ (`U+207D`), ⁾ (`U+207E`), ₍ (`U+208D`), ₎ (`U+208E`), ⸨ (`U+2E28`), ⸩ (`U+2E29`)
- `VSAE`:
- @ (`U+0040`)
+ \{ (`U+007B`), \} (`U+007D`), ⦃ (`U+2983`), ⦄ (`U+2984`)
- `VSAF`:
- $ (`U+0024`), 🄏 (`U+1F10F`)
+ « (`U+00AB`), » (`U+00BB`), ‹ (`U+2039`), › (`U+203A`)
- `VSAG`:
- % (`U+0025`), ‰ (`U+2030`), ‱ (`U+2031`)
+ \# (`U+0023`), ᫆ (`U+1AC6`)
+
+- `VSAH`:
+
+ & (`U+0026`), ⅋ (`U+214B`)
- `VSAI`:
- ' (`U+0027`)
+ @ (`U+0040`)
- `VSAJ`:
- \` (`U+0060`)
+ $ (`U+0024`), 🄏 (`U+1F10F`)
- `VSAK`:
- ? (`U+003F`), ¿ (`U+00BF`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ≟ (`U+225F`), ⍰ (`U+2370`), ␦ (`U+2426`), ⸘ (`U+2E18`), ⸮ (`U+2E2E`), � (`U+FFFD`), 🯄 (`U+1FBC4`)
+ ¢ (`U+00A2`)
- `VSAL`:
- ¶ (`U+00B6`), ⁋ (`U+204B`)
-
-- `VSAM`:
-
- ¢ (`U+00A2`)
+ % (`U+0025`), ‰ (`U+2030`), ‱ (`U+2031`)
- `VSAN`:
- ∂ (`U+2202`), 𝛛 (`U+1D6DB`), 𝜕 (`U+1D715`), 𝝏 (`U+1D74F`), 𝞉 (`U+1D789`), 𝟃 (`U+1D7C3`)
+ ? (`U+003F`), ¿ (`U+00BF`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ≟ (`U+225F`), ⍰ (`U+2370`), ␦ (`U+2426`), ⸘ (`U+2E18`), ⸮ (`U+2E2E`), � (`U+FFFD`), 🯄 (`U+1FBC4`)
- `VSAO`:
- µ (`U+00B5`)
+ ¶ (`U+00B6`), ⁋ (`U+204B`)
-- `VXAA`:
+- `VSAP`:
- р (`U+0440`), ҏ (`U+048F`), ⷬ (`U+2DEC`), 𞀾 (`U+1E03E`)
+ ∂ (`U+2202`), 𝛛 (`U+1D6DB`), 𝜕 (`U+1D715`), 𝝏 (`U+1D74F`), 𝞉 (`U+1D789`), 𝟃 (`U+1D7C3`)
-- `VXAB`:
+- `VSAQ`:
- у (`U+0443`), ў (`U+045E`), Ѹ (`U+0478`), ѹ (`U+0479`), ӯ (`U+04EF`), ӱ (`U+04F1`), ӳ (`U+04F3`), ꙷ (`U+A677`), 𞁁 (`U+1E041`), 𞁟 (`U+1E05F`)
+ µ (`U+00B5`)
### Italic CV influences
@@ -484,7 +484,7 @@
- `cv05`:
- E (`U+0045`), Æ (`U+00C6`), È (`U+00C8`), É (`U+00C9`), Ê (`U+00CA`), Ë (`U+00CB`), Ē (`U+0112`), Ĕ (`U+0114`), Ė (`U+0116`), Ę (`U+0118`), Ě (`U+011A`), Œ (`U+0152`), Ǝ (`U+018E`), Ǣ (`U+01E2`), Ǽ (`U+01FC`), Ȅ (`U+0204`), Ȇ (`U+0206`), Ȩ (`U+0228`), Ɇ (`U+0246`), ɶ (`U+0276`), Έ (`U+0388`), Ε (`U+0395`), Ѐ (`U+0400`), Ё (`U+0401`), Е (`U+0415`), Ӕ (`U+04D4`), Ӗ (`U+04D6`), ᴁ (`U+1D01`), ᴇ (`U+1D07`), ᴭ (`U+1D2D`), ᴱ (`U+1D31`), ᴲ (`U+1D32`), Ḕ (`U+1E14`), Ḗ (`U+1E16`), Ḙ (`U+1E18`), Ḛ (`U+1E1A`), Ḝ (`U+1E1C`), Ẹ (`U+1EB8`), Ẻ (`U+1EBA`), Ẽ (`U+1EBC`), Ế (`U+1EBE`), Ề (`U+1EC0`), Ể (`U+1EC2`), Ễ (`U+1EC4`), Ệ (`U+1EC6`), Ἐ (`U+1F18`), Ἑ (`U+1F19`), Ἒ (`U+1F1A`), Ἓ (`U+1F1B`), Ἔ (`U+1F1C`), Ἕ (`U+1F1D`), Ὲ (`U+1FC8`), Έ (`U+1FC9`), ℡ (`U+2121`), ␃ (`U+2403`), ␄ (`U+2404`), ␅ (`U+2405`), ␇ (`U+2407`), ␐ (`U+2410`), ␗ (`U+2417`), ␙ (`U+2419`), ␛ (`U+241B`), ␡ (`U+2421`), Ⓔ (`U+24BA`), ⱻ (`U+2C7B`), 𐞣 (`U+107A3`), 𝐄 (`U+1D404`), 𝐸 (`U+1D438`), 𝑬 (`U+1D46C`), 𝖤 (`U+1D5A4`), 𝗘 (`U+1D5D8`), 𝘌 (`U+1D60C`), 𝙀 (`U+1D640`), 𝙴 (`U+1D674`), 𝚬 (`U+1D6AC`), 𝛦 (`U+1D6E6`), 𝜠 (`U+1D720`), 𝝚 (`U+1D75A`), 𝞔 (`U+1D794`), 🄔 (`U+1F114`), 🄴 (`U+1F134`), 🅔 (`U+1F154`), 🅴 (`U+1F174`), 🆓 (`U+1F193`), 🆕 (`U+1F195`), 🆨 (`U+1F1A8`), 🆩 (`U+1F1A9`)
+ E (`U+0045`), Æ (`U+00C6`), È (`U+00C8`), É (`U+00C9`), Ê (`U+00CA`), Ë (`U+00CB`), Ē (`U+0112`), Ĕ (`U+0114`), Ė (`U+0116`), Ę (`U+0118`), Ě (`U+011A`), Œ (`U+0152`), Ǝ (`U+018E`), Ǣ (`U+01E2`), Ǽ (`U+01FC`), Ȅ (`U+0204`), Ȇ (`U+0206`), Ȩ (`U+0228`), Ɇ (`U+0246`), ɶ (`U+0276`), Έ (`U+0388`), Ε (`U+0395`), Ѐ (`U+0400`), Ё (`U+0401`), Е (`U+0415`), Ӕ (`U+04D4`), Ӗ (`U+04D6`), Ԙ (`U+0518`), ᴁ (`U+1D01`), ᴇ (`U+1D07`), ᴭ (`U+1D2D`), ᴱ (`U+1D31`), ᴲ (`U+1D32`), Ḕ (`U+1E14`), Ḗ (`U+1E16`), Ḙ (`U+1E18`), Ḛ (`U+1E1A`), Ḝ (`U+1E1C`), Ẹ (`U+1EB8`), Ẻ (`U+1EBA`), Ẽ (`U+1EBC`), Ế (`U+1EBE`), Ề (`U+1EC0`), Ể (`U+1EC2`), Ễ (`U+1EC4`), Ệ (`U+1EC6`), Ἐ (`U+1F18`), Ἑ (`U+1F19`), Ἒ (`U+1F1A`), Ἓ (`U+1F1B`), Ἔ (`U+1F1C`), Ἕ (`U+1F1D`), Ὲ (`U+1FC8`), Έ (`U+1FC9`), ℡ (`U+2121`), ␃ (`U+2403`), ␄ (`U+2404`), ␅ (`U+2405`), ␇ (`U+2407`), ␐ (`U+2410`), ␗ (`U+2417`), ␙ (`U+2419`), ␛ (`U+241B`), ␡ (`U+2421`), Ⓔ (`U+24BA`), ⱻ (`U+2C7B`), 𐞣 (`U+107A3`), 𝐄 (`U+1D404`), 𝐸 (`U+1D438`), 𝑬 (`U+1D46C`), 𝖤 (`U+1D5A4`), 𝗘 (`U+1D5D8`), 𝘌 (`U+1D60C`), 𝙀 (`U+1D640`), 𝙴 (`U+1D674`), 𝚬 (`U+1D6AC`), 𝛦 (`U+1D6E6`), 𝜠 (`U+1D720`), 𝝚 (`U+1D75A`), 𝞔 (`U+1D794`), 🄔 (`U+1F114`), 🄴 (`U+1F134`), 🅔 (`U+1F154`), 🅴 (`U+1F174`), 🆓 (`U+1F193`), 🆕 (`U+1F195`), 🆨 (`U+1F1A8`), 🆩 (`U+1F1A9`)
- `cv06`:
@@ -524,7 +524,7 @@
- `cv15`:
- P (`U+0050`), Ƥ (`U+01A4`), Ρ (`U+03A1`), Р (`U+0420`), Ҏ (`U+048E`), ᴘ (`U+1D18`), ᴩ (`U+1D29`), ᴾ (`U+1D3E`), Ṕ (`U+1E54`), Ṗ (`U+1E56`), Ῥ (`U+1FEC`), ₧ (`U+20A7`), ₱ (`U+20B1`), ₽ (`U+20BD`), ℗ (`U+2117`), ␠ (`U+2420`), Ⓟ (`U+24C5`), Ᵽ (`U+2C63`), ꟼ (`U+A7FC`), 𝐏 (`U+1D40F`), 𝑃 (`U+1D443`), 𝑷 (`U+1D477`), 𝖯 (`U+1D5AF`), 𝗣 (`U+1D5E3`), 𝘗 (`U+1D617`), 𝙋 (`U+1D64B`), 𝙿 (`U+1D67F`), 𝚸 (`U+1D6B8`), 𝛲 (`U+1D6F2`), 𝜬 (`U+1D72C`), 𝝦 (`U+1D766`), 𝞠 (`U+1D7A0`), 🄟 (`U+1F11F`), 🄿 (`U+1F13F`), 🅎 (`U+1F14E`), 🅟 (`U+1F15F`), 🅿 (`U+1F17F`), 🆌 (`U+1F18C`), 🆙 (`U+1F199`), 🆣 (`U+1F1A3`), 🆤 (`U+1F1A4`)
+ P (`U+0050`), Ƥ (`U+01A4`), Ρ (`U+03A1`), Р (`U+0420`), Ҏ (`U+048E`), Ԗ (`U+0516`), ᴘ (`U+1D18`), ᴩ (`U+1D29`), ᴾ (`U+1D3E`), Ṕ (`U+1E54`), Ṗ (`U+1E56`), Ῥ (`U+1FEC`), ₧ (`U+20A7`), ₱ (`U+20B1`), ₽ (`U+20BD`), ℗ (`U+2117`), ␠ (`U+2420`), Ⓟ (`U+24C5`), Ᵽ (`U+2C63`), ꟼ (`U+A7FC`), 𝐏 (`U+1D40F`), 𝑃 (`U+1D443`), 𝑷 (`U+1D477`), 𝖯 (`U+1D5AF`), 𝗣 (`U+1D5E3`), 𝘗 (`U+1D617`), 𝙋 (`U+1D64B`), 𝙿 (`U+1D67F`), 𝚸 (`U+1D6B8`), 𝛲 (`U+1D6F2`), 𝜬 (`U+1D72C`), 𝝦 (`U+1D766`), 𝞠 (`U+1D7A0`), 🄟 (`U+1F11F`), 🄿 (`U+1F13F`), 🅎 (`U+1F14E`), 🅟 (`U+1F15F`), 🅿 (`U+1F17F`), 🆌 (`U+1F18C`), 🆙 (`U+1F199`), 🆣 (`U+1F1A3`), 🆤 (`U+1F1A4`)
- `cv16`:
@@ -556,7 +556,7 @@
- `cv23`:
- X (`U+0058`), Χ (`U+03A7`), Х (`U+0425`), Ҳ (`U+04B2`), Ӽ (`U+04FC`), Ӿ (`U+04FE`), Ẋ (`U+1E8A`), Ẍ (`U+1E8C`), ℻ (`U+213B`), Ⅸ (`U+2168`), Ⅹ (`U+2169`), Ⅺ (`U+216A`), Ⅻ (`U+216B`), ␂ (`U+2402`), ␃ (`U+2403`), Ⓧ (`U+24CD`), Ꭓ (`U+A7B3`), 𝐗 (`U+1D417`), 𝑋 (`U+1D44B`), 𝑿 (`U+1D47F`), 𝖷 (`U+1D5B7`), 𝗫 (`U+1D5EB`), 𝘟 (`U+1D61F`), 𝙓 (`U+1D653`), 𝚇 (`U+1D687`), 𝚾 (`U+1D6BE`), 𝛸 (`U+1D6F8`), 𝜲 (`U+1D732`), 𝝬 (`U+1D76C`), 𝞦 (`U+1D7A6`), 🄧 (`U+1F127`), 🅇 (`U+1F147`), 🅧 (`U+1F167`), 🆇 (`U+1F187`)
+ X (`U+0058`), Χ (`U+03A7`), Х (`U+0425`), Ҳ (`U+04B2`), Ӽ (`U+04FC`), Ӿ (`U+04FE`), Ԕ (`U+0514`), Ԗ (`U+0516`), Ẋ (`U+1E8A`), Ẍ (`U+1E8C`), ℻ (`U+213B`), Ⅸ (`U+2168`), Ⅹ (`U+2169`), Ⅺ (`U+216A`), Ⅻ (`U+216B`), ␂ (`U+2402`), ␃ (`U+2403`), Ⓧ (`U+24CD`), Ꭓ (`U+A7B3`), 𝐗 (`U+1D417`), 𝑋 (`U+1D44B`), 𝑿 (`U+1D47F`), 𝖷 (`U+1D5B7`), 𝗫 (`U+1D5EB`), 𝘟 (`U+1D61F`), 𝙓 (`U+1D653`), 𝚇 (`U+1D687`), 𝚾 (`U+1D6BE`), 𝛸 (`U+1D6F8`), 𝜲 (`U+1D732`), 𝝬 (`U+1D76C`), 𝞦 (`U+1D7A6`), 🄧 (`U+1F127`), 🅇 (`U+1F147`), 🅧 (`U+1F167`), 🆇 (`U+1F187`)
- `cv24`:
@@ -568,7 +568,7 @@
- `cv26`:
- a (`U+0061`), ª (`U+00AA`), à (`U+00E0`), á (`U+00E1`), â (`U+00E2`), ã (`U+00E3`), ä (`U+00E4`), å (`U+00E5`), ā (`U+0101`), ă (`U+0103`), ą (`U+0105`), ǎ (`U+01CE`), ǟ (`U+01DF`), ǡ (`U+01E1`), ǻ (`U+01FB`), ȁ (`U+0201`), ȃ (`U+0203`), ȧ (`U+0227`), ɐ (`U+0250`), ɑ (`U+0251`), ɒ (`U+0252`), ͣ (`U+0363`), а (`U+0430`), ӑ (`U+04D1`), ӓ (`U+04D3`), ᵃ (`U+1D43`), ᵄ (`U+1D44`), ᵅ (`U+1D45`), ᶏ (`U+1D8F`), ᶛ (`U+1D9B`), ᷧ (`U+1DE7`), ᷲ (`U+1DF2`), ḁ (`U+1E01`), ẚ (`U+1E9A`), ạ (`U+1EA1`), ả (`U+1EA3`), ấ (`U+1EA5`), ầ (`U+1EA7`), ẩ (`U+1EA9`), ẫ (`U+1EAB`), ậ (`U+1EAD`), ắ (`U+1EAF`), ằ (`U+1EB1`), ẳ (`U+1EB3`), ẵ (`U+1EB5`), ặ (`U+1EB7`), ₐ (`U+2090`), ℀ (`U+2100`), ℁ (`U+2101`), ⒜ (`U+249C`), ⓐ (`U+24D0`), ⱥ (`U+2C65`), Ɑ (`U+2C6D`), Ɒ (`U+2C70`), ⷶ (`U+2DF6`), ⷼ (`U+2DFC`), ꙗ (`U+A657`), ꜳ (`U+A733`), Ꞛ (`U+A79A`), ꞛ (`U+A79B`), ꞻ (`U+A7BB`), ꬰ (`U+AB30`), ꭤ (`U+AB64`), 𝐚 (`U+1D41A`), 𝑎 (`U+1D44E`), 𝒂 (`U+1D482`), 𝖺 (`U+1D5BA`), 𝗮 (`U+1D5EE`), 𝘢 (`U+1D622`), 𝙖 (`U+1D656`), 𝚊 (`U+1D68A`), 𞀰 (`U+1E030`), 𞁑 (`U+1E051`)
+ a (`U+0061`), ª (`U+00AA`), à (`U+00E0`), á (`U+00E1`), â (`U+00E2`), ã (`U+00E3`), ä (`U+00E4`), å (`U+00E5`), æ (`U+00E6`), ā (`U+0101`), ă (`U+0103`), ą (`U+0105`), ǎ (`U+01CE`), ǟ (`U+01DF`), ǡ (`U+01E1`), ǣ (`U+01E3`), ǻ (`U+01FB`), ǽ (`U+01FD`), ȁ (`U+0201`), ȃ (`U+0203`), ȧ (`U+0227`), ɐ (`U+0250`), ɑ (`U+0251`), ɒ (`U+0252`), ͣ (`U+0363`), а (`U+0430`), ӑ (`U+04D1`), ӓ (`U+04D3`), ӕ (`U+04D5`), ᴂ (`U+1D02`), ᵃ (`U+1D43`), ᵄ (`U+1D44`), ᵅ (`U+1D45`), ᵆ (`U+1D46`), ᶏ (`U+1D8F`), ᶛ (`U+1D9B`), ᷔ (`U+1DD4`), ᷕ (`U+1DD5`), ᷧ (`U+1DE7`), ᷲ (`U+1DF2`), ḁ (`U+1E01`), ẚ (`U+1E9A`), ạ (`U+1EA1`), ả (`U+1EA3`), ấ (`U+1EA5`), ầ (`U+1EA7`), ẩ (`U+1EA9`), ẫ (`U+1EAB`), ậ (`U+1EAD`), ắ (`U+1EAF`), ằ (`U+1EB1`), ẳ (`U+1EB3`), ẵ (`U+1EB5`), ặ (`U+1EB7`), ₐ (`U+2090`), ℀ (`U+2100`), ℁ (`U+2101`), ⒜ (`U+249C`), ⓐ (`U+24D0`), ⱥ (`U+2C65`), Ɑ (`U+2C6D`), Ɒ (`U+2C70`), ⷶ (`U+2DF6`), ⷼ (`U+2DFC`), ꙗ (`U+A657`), ꜳ (`U+A733`), ꜵ (`U+A735`), Ꞛ (`U+A79A`), ꞛ (`U+A79B`), ꞻ (`U+A7BB`), ꬰ (`U+AB30`), ꬱ (`U+AB31`), ꭤ (`U+AB64`), 𐞃 (`U+10783`), 𝐚 (`U+1D41A`), 𝑎 (`U+1D44E`), 𝒂 (`U+1D482`), 𝖺 (`U+1D5BA`), 𝗮 (`U+1D5EE`), 𝘢 (`U+1D622`), 𝙖 (`U+1D656`), 𝚊 (`U+1D68A`), 𞀰 (`U+1E030`), 𞁑 (`U+1E051`)
- `cv27`:
@@ -584,7 +584,7 @@
- `cv30`:
- e (`U+0065`), æ (`U+00E6`), è (`U+00E8`), é (`U+00E9`), ê (`U+00EA`), ë (`U+00EB`), ē (`U+0113`), ĕ (`U+0115`), ė (`U+0117`), ę (`U+0119`), ě (`U+011B`), œ (`U+0153`), Ə (`U+018F`), ǝ (`U+01DD`), ǣ (`U+01E3`), ǽ (`U+01FD`), ȅ (`U+0205`), ȇ (`U+0207`), ȩ (`U+0229`), ɇ (`U+0247`), ɘ (`U+0258`), ə (`U+0259`), ɚ (`U+025A`), ͤ (`U+0364`), е (`U+0435`), ѐ (`U+0450`), ё (`U+0451`), Ҽ (`U+04BC`), ҽ (`U+04BD`), Ҿ (`U+04BE`), ҿ (`U+04BF`), ӕ (`U+04D5`), ӗ (`U+04D7`), Ә (`U+04D8`), ә (`U+04D9`), Ӛ (`U+04DA`), ӛ (`U+04DB`), ᴂ (`U+1D02`), ᴔ (`U+1D14`), ᵆ (`U+1D46`), ᵉ (`U+1D49`), ᵊ (`U+1D4A`), ᵫ (`U+1D6B`), ᶒ (`U+1D92`), ᶕ (`U+1D95`), ᷔ (`U+1DD4`), ᷪ (`U+1DEA`), ḕ (`U+1E15`), ḗ (`U+1E17`), ḙ (`U+1E19`), ḛ (`U+1E1B`), ḝ (`U+1E1D`), ẹ (`U+1EB9`), ẻ (`U+1EBB`), ẽ (`U+1EBD`), ế (`U+1EBF`), ề (`U+1EC1`), ể (`U+1EC3`), ễ (`U+1EC5`), ệ (`U+1EC7`), ₑ (`U+2091`), ₔ (`U+2094`), ≝ (`U+225D`), ⒠ (`U+24A0`), ⓔ (`U+24D4`), ⱸ (`U+2C78`), ⷷ (`U+2DF7`), ꟹ (`U+A7F9`), ꬱ (`U+AB31`), ꬳ (`U+AB33`), ꭀ (`U+AB40`), ꭁ (`U+AB41`), ꭂ (`U+AB42`), ꭡ (`U+AB61`), ꭢ (`U+AB62`), 𐞃 (`U+10783`), 𐞎 (`U+1078E`), 𝐞 (`U+1D41E`), 𝑒 (`U+1D452`), 𝒆 (`U+1D486`), 𝖾 (`U+1D5BE`), 𝗲 (`U+1D5F2`), 𝘦 (`U+1D626`), 𝙚 (`U+1D65A`), 𝚎 (`U+1D68E`), 𞀵 (`U+1E035`), 𞁋 (`U+1E04B`), 𞁖 (`U+1E056`)
+ e (`U+0065`), æ (`U+00E6`), è (`U+00E8`), é (`U+00E9`), ê (`U+00EA`), ë (`U+00EB`), ē (`U+0113`), ĕ (`U+0115`), ė (`U+0117`), ę (`U+0119`), ě (`U+011B`), œ (`U+0153`), Ə (`U+018F`), ǝ (`U+01DD`), ǣ (`U+01E3`), ǽ (`U+01FD`), ȅ (`U+0205`), ȇ (`U+0207`), ȩ (`U+0229`), ɇ (`U+0247`), ɘ (`U+0258`), ə (`U+0259`), ɚ (`U+025A`), ͤ (`U+0364`), е (`U+0435`), ѐ (`U+0450`), ё (`U+0451`), Ҽ (`U+04BC`), ҽ (`U+04BD`), Ҿ (`U+04BE`), ҿ (`U+04BF`), ӕ (`U+04D5`), ӗ (`U+04D7`), Ә (`U+04D8`), ә (`U+04D9`), Ӛ (`U+04DA`), ӛ (`U+04DB`), ԙ (`U+0519`), ᴂ (`U+1D02`), ᴔ (`U+1D14`), ᵆ (`U+1D46`), ᵉ (`U+1D49`), ᵊ (`U+1D4A`), ᵫ (`U+1D6B`), ᶒ (`U+1D92`), ᶕ (`U+1D95`), ᷔ (`U+1DD4`), ᷪ (`U+1DEA`), ḕ (`U+1E15`), ḗ (`U+1E17`), ḙ (`U+1E19`), ḛ (`U+1E1B`), ḝ (`U+1E1D`), ẹ (`U+1EB9`), ẻ (`U+1EBB`), ẽ (`U+1EBD`), ế (`U+1EBF`), ề (`U+1EC1`), ể (`U+1EC3`), ễ (`U+1EC5`), ệ (`U+1EC7`), ₑ (`U+2091`), ₔ (`U+2094`), ≝ (`U+225D`), ⒠ (`U+24A0`), ⓔ (`U+24D4`), ⱸ (`U+2C78`), ⷷ (`U+2DF7`), ꟹ (`U+A7F9`), ꬱ (`U+AB31`), ꬳ (`U+AB33`), ꭀ (`U+AB40`), ꭁ (`U+AB41`), ꭂ (`U+AB42`), ꭡ (`U+AB61`), ꭢ (`U+AB62`), 𐞃 (`U+10783`), 𐞎 (`U+1078E`), 𝐞 (`U+1D41E`), 𝑒 (`U+1D452`), 𝒆 (`U+1D486`), 𝖾 (`U+1D5BE`), 𝗲 (`U+1D5F2`), 𝘦 (`U+1D626`), 𝙚 (`U+1D65A`), 𝚎 (`U+1D68E`), 𞀵 (`U+1E035`), 𞁋 (`U+1E04B`), 𞁖 (`U+1E056`)
- `cv31`:
@@ -656,7 +656,7 @@
- `cv48`:
- x (`U+0078`), ˣ (`U+02E3`), ͯ (`U+036F`), х (`U+0445`), ҳ (`U+04B3`), ӽ (`U+04FD`), ӿ (`U+04FF`), ᶍ (`U+1D8D`), ẋ (`U+1E8B`), ẍ (`U+1E8D`), ₓ (`U+2093`), ⅸ (`U+2178`), ⅹ (`U+2179`), ⅺ (`U+217A`), ⅻ (`U+217B`), ⒳ (`U+24B3`), ⓧ (`U+24E7`), ⷯ (`U+2DEF`), ꭓ (`U+AB53`), 𝐱 (`U+1D431`), 𝑥 (`U+1D465`), 𝒙 (`U+1D499`), 𝗑 (`U+1D5D1`), 𝘅 (`U+1D605`), 𝘹 (`U+1D639`), 𝙭 (`U+1D66D`), 𝚡 (`U+1D6A1`), 𞁃 (`U+1E043`), 𞁡 (`U+1E061`)
+ x (`U+0078`), ˣ (`U+02E3`), ͯ (`U+036F`), х (`U+0445`), ҳ (`U+04B3`), ӽ (`U+04FD`), ӿ (`U+04FF`), ԕ (`U+0515`), ԗ (`U+0517`), ᶍ (`U+1D8D`), ẋ (`U+1E8B`), ẍ (`U+1E8D`), ₓ (`U+2093`), ⅸ (`U+2178`), ⅹ (`U+2179`), ⅺ (`U+217A`), ⅻ (`U+217B`), ⒳ (`U+24B3`), ⓧ (`U+24E7`), ⷯ (`U+2DEF`), ꭓ (`U+AB53`), 𝐱 (`U+1D431`), 𝑥 (`U+1D465`), 𝒙 (`U+1D499`), 𝗑 (`U+1D5D1`), 𝘅 (`U+1D605`), 𝘹 (`U+1D639`), 𝙭 (`U+1D66D`), 𝚡 (`U+1D6A1`), 𞁃 (`U+1E043`), 𞁡 (`U+1E061`)
- `cv49`:
@@ -768,167 +768,167 @@
- `cv76`:
- Ў (`U+040E`), У (`U+0423`), Ӯ (`U+04EE`), Ӱ (`U+04F0`), Ӳ (`U+04F2`)
+ р (`U+0440`), ҏ (`U+048F`), ԗ (`U+0517`), ⷬ (`U+2DEC`), 𞀾 (`U+1E03E`)
- `cv77`:
- ф (`U+0444`), ꚞ (`U+A69E`), 𞁂 (`U+1E042`), 𞁠 (`U+1E060`)
+ Ў (`U+040E`), У (`U+0423`), Ӯ (`U+04EE`), Ӱ (`U+04F0`), Ӳ (`U+04F2`)
- `cv78`:
- ч (`U+0447`), ҹ (`U+04B9`), ӵ (`U+04F5`), ԭ (`U+052D`), ⷱ (`U+2DF1`), 𞁅 (`U+1E045`), 𞁣 (`U+1E063`)
+ у (`U+0443`), ў (`U+045E`), Ѹ (`U+0478`), ѹ (`U+0479`), ӯ (`U+04EF`), ӱ (`U+04F1`), ӳ (`U+04F3`), ꙷ (`U+A677`), 𞁁 (`U+1E041`), 𞁟 (`U+1E05F`)
- `cv79`:
- ƅ (`U+0185`), ъ (`U+044A`), ь (`U+044C`), љ (`U+0459`), њ (`U+045A`), ѣ (`U+0463`), ҍ (`U+048D`), ᲆ (`U+1C86`), ᲇ (`U+1C87`), ⷺ (`U+2DFA`), ꙏ (`U+A64F`), ꙓ (`U+A653`), ꙸ (`U+A678`), ꙺ (`U+A67A`), ꚜ (`U+A69C`), ꚝ (`U+A69D`), ꭠ (`U+AB60`), 𞁥 (`U+1E065`)
+ ф (`U+0444`), ꚞ (`U+A69E`), 𞁂 (`U+1E042`), 𞁠 (`U+1E060`)
- `cv80`:
- ы (`U+044B`), ӹ (`U+04F9`), ꙑ (`U+A651`), ꙹ (`U+A679`), 𞁇 (`U+1E047`), 𞁦 (`U+1E066`), 𞁬 (`U+1E06C`)
+ ч (`U+0447`), ҹ (`U+04B9`), ӵ (`U+04F5`), ԭ (`U+052D`), ⷱ (`U+2DF1`), 𞁅 (`U+1E045`), 𞁣 (`U+1E063`)
- `cv81`:
- Я (`U+042F`)
+ ƅ (`U+0185`), ъ (`U+044A`), ь (`U+044C`), љ (`U+0459`), њ (`U+045A`), ѣ (`U+0463`), ҍ (`U+048D`), ᲆ (`U+1C86`), ᲇ (`U+1C87`), ⷺ (`U+2DFA`), ꙏ (`U+A64F`), ꙓ (`U+A653`), ꙸ (`U+A678`), ꙺ (`U+A67A`), ꚜ (`U+A69C`), ꚝ (`U+A69D`), ꭠ (`U+AB60`), 𞁥 (`U+1E065`)
- `cv82`:
- я (`U+044F`)
+ ы (`U+044B`), ӹ (`U+04F9`), ꙑ (`U+A651`), ꙹ (`U+A679`), 𞁇 (`U+1E047`), 𞁦 (`U+1E066`), 𞁬 (`U+1E06C`)
- `cv83`:
- 0 (`U+0030`), ⁰ (`U+2070`), ₀ (`U+2080`), ⅒ (`U+2152`), ↉ (`U+2189`), ⍬ (`U+236C`), ⏨ (`U+23E8`), ⑩ (`U+2469`), ⑳ (`U+2473`), ⑽ (`U+247D`), ⒇ (`U+2487`), ⒑ (`U+2491`), ⒛ (`U+249B`), ⓪ (`U+24EA`), ⓴ (`U+24F4`), ⓾ (`U+24FE`), ⓿ (`U+24FF`), ❿ (`U+277F`), ➉ (`U+2789`), ➓ (`U+2793`), ㉚ (`U+325A`), ㊵ (`U+32B5`), ㊿ (`U+32BF`), 𝟎 (`U+1D7CE`), 𝟢 (`U+1D7E2`), 𝟬 (`U+1D7EC`), 𝟶 (`U+1D7F6`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄋 (`U+1F10B`), 🄌 (`U+1F10C`), 🄍 (`U+1F10D`), 🆣 (`U+1F1A3`), 🆤 (`U+1F1A4`)
+ Я (`U+042F`), Ԙ (`U+0518`)
- `cv84`:
- 1 (`U+0031`), ¹ (`U+00B9`), ¼ (`U+00BC`), ½ (`U+00BD`), ₁ (`U+2081`), ⅐ (`U+2150`), ⅑ (`U+2151`), ⅒ (`U+2152`), ⅓ (`U+2153`), ⅕ (`U+2155`), ⅙ (`U+2159`), ⅛ (`U+215B`), ⏨ (`U+23E8`), ␑ (`U+2411`), ① (`U+2460`), ⑩ (`U+2469`), ⑪ (`U+246A`), ⑫ (`U+246B`), ⑬ (`U+246C`), ⑭ (`U+246D`), ⑮ (`U+246E`), ⑯ (`U+246F`), ⑰ (`U+2470`), ⑱ (`U+2471`), ⑲ (`U+2472`), ⑴ (`U+2474`), ⑽ (`U+247D`), ⑾ (`U+247E`), ⑿ (`U+247F`), ⒀ (`U+2480`), ⒁ (`U+2481`), ⒂ (`U+2482`), ⒃ (`U+2483`), ⒄ (`U+2484`), ⒅ (`U+2485`), ⒆ (`U+2486`), ⒈ (`U+2488`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⓫ (`U+24EB`), ⓬ (`U+24EC`), ⓭ (`U+24ED`), ⓮ (`U+24EE`), ⓯ (`U+24EF`), ⓰ (`U+24F0`), ⓱ (`U+24F1`), ⓲ (`U+24F2`), ⓳ (`U+24F3`), ⓵ (`U+24F5`), ⓾ (`U+24FE`), ❶ (`U+2776`), ❿ (`U+277F`), ➀ (`U+2780`), ➉ (`U+2789`), ➊ (`U+278A`), ➓ (`U+2793`), ㉑ (`U+3251`), ㉛ (`U+325B`), ㊶ (`U+32B6`), 𝟏 (`U+1D7CF`), 𝟣 (`U+1D7E3`), 𝟭 (`U+1D7ED`), 𝟷 (`U+1D7F7`), 🄂 (`U+1F102`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆤 (`U+1F1A4`)
+ я (`U+044F`), ԙ (`U+0519`)
- `cv85`:
- 2 (`U+0032`), ² (`U+00B2`), ½ (`U+00BD`), ƻ (`U+01BB`), ₂ (`U+2082`), ⅔ (`U+2154`), ⅖ (`U+2156`), ↊ (`U+218A`), ␒ (`U+2412`), ② (`U+2461`), ⑫ (`U+246B`), ⑳ (`U+2473`), ⑵ (`U+2475`), ⑿ (`U+247F`), ⒇ (`U+2487`), ⒉ (`U+2489`), ⒓ (`U+2493`), ⒛ (`U+249B`), ⓬ (`U+24EC`), ⓴ (`U+24F4`), ⓶ (`U+24F6`), ❷ (`U+2777`), ➁ (`U+2781`), ➋ (`U+278B`), ㉑ (`U+3251`), ㉒ (`U+3252`), ㉓ (`U+3253`), ㉔ (`U+3254`), ㉕ (`U+3255`), ㉖ (`U+3256`), ㉗ (`U+3257`), ㉘ (`U+3258`), ㉙ (`U+3259`), ㉜ (`U+325C`), ㊷ (`U+32B7`), 𝟐 (`U+1D7D0`), 𝟤 (`U+1D7E4`), 𝟮 (`U+1D7EE`), 𝟸 (`U+1D7F8`), 🄃 (`U+1F103`), 🆜 (`U+1F19C`), 🆝 (`U+1F19D`), 🆢 (`U+1F1A2`), 🆤 (`U+1F1A4`)
+ 0 (`U+0030`), ⁰ (`U+2070`), ₀ (`U+2080`), ⅒ (`U+2152`), ↉ (`U+2189`), ⍬ (`U+236C`), ⏨ (`U+23E8`), ⑩ (`U+2469`), ⑳ (`U+2473`), ⑽ (`U+247D`), ⒇ (`U+2487`), ⒑ (`U+2491`), ⒛ (`U+249B`), ⓪ (`U+24EA`), ⓴ (`U+24F4`), ⓾ (`U+24FE`), ⓿ (`U+24FF`), ❿ (`U+277F`), ➉ (`U+2789`), ➓ (`U+2793`), ㉚ (`U+325A`), ㊵ (`U+32B5`), ㊿ (`U+32BF`), 𝟎 (`U+1D7CE`), 𝟢 (`U+1D7E2`), 𝟬 (`U+1D7EC`), 𝟶 (`U+1D7F6`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄋 (`U+1F10B`), 🄌 (`U+1F10C`), 🄍 (`U+1F10D`), 🆣 (`U+1F1A3`), 🆤 (`U+1F1A4`)
- `cv86`:
- 3 (`U+0033`), ³ (`U+00B3`), ¾ (`U+00BE`), ₃ (`U+2083`), ⅓ (`U+2153`), ⅔ (`U+2154`), ⅗ (`U+2157`), ⅜ (`U+215C`), ↉ (`U+2189`), ↋ (`U+218B`), ∛ (`U+221B`), ␓ (`U+2413`), ③ (`U+2462`), ⑬ (`U+246C`), ⑶ (`U+2476`), ⒀ (`U+2480`), ⒊ (`U+248A`), ⒔ (`U+2494`), ⓭ (`U+24ED`), ⓷ (`U+24F7`), ❸ (`U+2778`), ➂ (`U+2782`), ➌ (`U+278C`), ㉓ (`U+3253`), ㉚ (`U+325A`), ㉛ (`U+325B`), ㉜ (`U+325C`), ㉝ (`U+325D`), ㉞ (`U+325E`), ㉟ (`U+325F`), ㊱ (`U+32B1`), ㊲ (`U+32B2`), ㊳ (`U+32B3`), ㊴ (`U+32B4`), ㊸ (`U+32B8`), 𝟑 (`U+1D7D1`), 𝟥 (`U+1D7E5`), 𝟯 (`U+1D7EF`), 𝟹 (`U+1D7F9`), 🄄 (`U+1F104`), 🆛 (`U+1F19B`)
+ 1 (`U+0031`), ¹ (`U+00B9`), ¼ (`U+00BC`), ½ (`U+00BD`), ₁ (`U+2081`), ⅐ (`U+2150`), ⅑ (`U+2151`), ⅒ (`U+2152`), ⅓ (`U+2153`), ⅕ (`U+2155`), ⅙ (`U+2159`), ⅛ (`U+215B`), ⏨ (`U+23E8`), ␑ (`U+2411`), ① (`U+2460`), ⑩ (`U+2469`), ⑪ (`U+246A`), ⑫ (`U+246B`), ⑬ (`U+246C`), ⑭ (`U+246D`), ⑮ (`U+246E`), ⑯ (`U+246F`), ⑰ (`U+2470`), ⑱ (`U+2471`), ⑲ (`U+2472`), ⑴ (`U+2474`), ⑽ (`U+247D`), ⑾ (`U+247E`), ⑿ (`U+247F`), ⒀ (`U+2480`), ⒁ (`U+2481`), ⒂ (`U+2482`), ⒃ (`U+2483`), ⒄ (`U+2484`), ⒅ (`U+2485`), ⒆ (`U+2486`), ⒈ (`U+2488`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⓫ (`U+24EB`), ⓬ (`U+24EC`), ⓭ (`U+24ED`), ⓮ (`U+24EE`), ⓯ (`U+24EF`), ⓰ (`U+24F0`), ⓱ (`U+24F1`), ⓲ (`U+24F2`), ⓳ (`U+24F3`), ⓵ (`U+24F5`), ⓾ (`U+24FE`), ❶ (`U+2776`), ❿ (`U+277F`), ➀ (`U+2780`), ➉ (`U+2789`), ➊ (`U+278A`), ➓ (`U+2793`), ㉑ (`U+3251`), ㉛ (`U+325B`), ㊶ (`U+32B6`), 𝟏 (`U+1D7CF`), 𝟣 (`U+1D7E3`), 𝟭 (`U+1D7ED`), 𝟷 (`U+1D7F7`), 🄂 (`U+1F102`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆤 (`U+1F1A4`)
- `cv87`:
- 4 (`U+0034`), ¼ (`U+00BC`), ¾ (`U+00BE`), ⁴ (`U+2074`), ₄ (`U+2084`), ⅘ (`U+2158`), ∜ (`U+221C`), ␔ (`U+2414`), ④ (`U+2463`), ⑭ (`U+246D`), ⑷ (`U+2477`), ⒁ (`U+2481`), ⒋ (`U+248B`), ⒕ (`U+2495`), ⓮ (`U+24EE`), ⓸ (`U+24F8`), ❹ (`U+2779`), ➃ (`U+2783`), ➍ (`U+278D`), ㉔ (`U+3254`), ㉞ (`U+325E`), ㊵ (`U+32B5`), ㊶ (`U+32B6`), ㊷ (`U+32B7`), ㊸ (`U+32B8`), ㊹ (`U+32B9`), ㊺ (`U+32BA`), ㊻ (`U+32BB`), ㊼ (`U+32BC`), ㊽ (`U+32BD`), ㊾ (`U+32BE`), 𝟒 (`U+1D7D2`), 𝟦 (`U+1D7E6`), 𝟰 (`U+1D7F0`), 𝟺 (`U+1D7FA`), 🄅 (`U+1F105`), 🆞 (`U+1F19E`)
+ 2 (`U+0032`), ² (`U+00B2`), ½ (`U+00BD`), ƻ (`U+01BB`), ₂ (`U+2082`), ⅔ (`U+2154`), ⅖ (`U+2156`), ↊ (`U+218A`), ␒ (`U+2412`), ② (`U+2461`), ⑫ (`U+246B`), ⑳ (`U+2473`), ⑵ (`U+2475`), ⑿ (`U+247F`), ⒇ (`U+2487`), ⒉ (`U+2489`), ⒓ (`U+2493`), ⒛ (`U+249B`), ⓬ (`U+24EC`), ⓴ (`U+24F4`), ⓶ (`U+24F6`), ❷ (`U+2777`), ➁ (`U+2781`), ➋ (`U+278B`), ㉑ (`U+3251`), ㉒ (`U+3252`), ㉓ (`U+3253`), ㉔ (`U+3254`), ㉕ (`U+3255`), ㉖ (`U+3256`), ㉗ (`U+3257`), ㉘ (`U+3258`), ㉙ (`U+3259`), ㉜ (`U+325C`), ㊷ (`U+32B7`), 𝟐 (`U+1D7D0`), 𝟤 (`U+1D7E4`), 𝟮 (`U+1D7EE`), 𝟸 (`U+1D7F8`), 🄃 (`U+1F103`), 🆜 (`U+1F19C`), 🆝 (`U+1F19D`), 🆢 (`U+1F1A2`), 🆤 (`U+1F1A4`)
- `cv88`:
- 5 (`U+0035`), Ƽ (`U+01BC`), ƽ (`U+01BD`), ⁵ (`U+2075`), ₅ (`U+2085`), ⅕ (`U+2155`), ⅖ (`U+2156`), ⅗ (`U+2157`), ⅘ (`U+2158`), ⅚ (`U+215A`), ⅝ (`U+215D`), ⑤ (`U+2464`), ⑮ (`U+246E`), ⑸ (`U+2478`), ⒂ (`U+2482`), ⒌ (`U+248C`), ⒖ (`U+2496`), ⓯ (`U+24EF`), ⓹ (`U+24F9`), ❺ (`U+277A`), ➄ (`U+2784`), ➎ (`U+278E`), ㉕ (`U+3255`), ㉟ (`U+325F`), ㊺ (`U+32BA`), ㊿ (`U+32BF`), 𝟓 (`U+1D7D3`), 𝟧 (`U+1D7E7`), 𝟱 (`U+1D7F1`), 𝟻 (`U+1D7FB`), 🄆 (`U+1F106`), 🆠 (`U+1F1A0`)
+ 3 (`U+0033`), ³ (`U+00B3`), ¾ (`U+00BE`), ₃ (`U+2083`), ⅓ (`U+2153`), ⅔ (`U+2154`), ⅗ (`U+2157`), ⅜ (`U+215C`), ↉ (`U+2189`), ↋ (`U+218B`), ∛ (`U+221B`), ␓ (`U+2413`), ③ (`U+2462`), ⑬ (`U+246C`), ⑶ (`U+2476`), ⒀ (`U+2480`), ⒊ (`U+248A`), ⒔ (`U+2494`), ⓭ (`U+24ED`), ⓷ (`U+24F7`), ❸ (`U+2778`), ➂ (`U+2782`), ➌ (`U+278C`), ㉓ (`U+3253`), ㉚ (`U+325A`), ㉛ (`U+325B`), ㉜ (`U+325C`), ㉝ (`U+325D`), ㉞ (`U+325E`), ㉟ (`U+325F`), ㊱ (`U+32B1`), ㊲ (`U+32B2`), ㊳ (`U+32B3`), ㊴ (`U+32B4`), ㊸ (`U+32B8`), 𝟑 (`U+1D7D1`), 𝟥 (`U+1D7E5`), 𝟯 (`U+1D7EF`), 𝟹 (`U+1D7F9`), 🄄 (`U+1F104`), 🆛 (`U+1F19B`)
- `cv89`:
- 6 (`U+0036`), ⁶ (`U+2076`), ₆ (`U+2086`), ⅙ (`U+2159`), ⅚ (`U+215A`), ⑥ (`U+2465`), ⑯ (`U+246F`), ⑹ (`U+2479`), ⒃ (`U+2483`), ⒍ (`U+248D`), ⒗ (`U+2497`), ⓰ (`U+24F0`), ⓺ (`U+24FA`), ❻ (`U+277B`), ➅ (`U+2785`), ➏ (`U+278F`), ㉖ (`U+3256`), ㊱ (`U+32B1`), ㊻ (`U+32BB`), 𝟔 (`U+1D7D4`), 𝟨 (`U+1D7E8`), 𝟲 (`U+1D7F2`), 𝟼 (`U+1D7FC`), 🄇 (`U+1F107`), 🆣 (`U+1F1A3`)
+ 4 (`U+0034`), ¼ (`U+00BC`), ¾ (`U+00BE`), ⁴ (`U+2074`), ₄ (`U+2084`), ⅘ (`U+2158`), ∜ (`U+221C`), ␔ (`U+2414`), ④ (`U+2463`), ⑭ (`U+246D`), ⑷ (`U+2477`), ⒁ (`U+2481`), ⒋ (`U+248B`), ⒕ (`U+2495`), ⓮ (`U+24EE`), ⓸ (`U+24F8`), ❹ (`U+2779`), ➃ (`U+2783`), ➍ (`U+278D`), ㉔ (`U+3254`), ㉞ (`U+325E`), ㊵ (`U+32B5`), ㊶ (`U+32B6`), ㊷ (`U+32B7`), ㊸ (`U+32B8`), ㊹ (`U+32B9`), ㊺ (`U+32BA`), ㊻ (`U+32BB`), ㊼ (`U+32BC`), ㊽ (`U+32BD`), ㊾ (`U+32BE`), 𝟒 (`U+1D7D2`), 𝟦 (`U+1D7E6`), 𝟰 (`U+1D7F0`), 𝟺 (`U+1D7FA`), 🄅 (`U+1F105`), 🆞 (`U+1F19E`)
- `cv90`:
- 7 (`U+0037`), ⁷ (`U+2077`), ₇ (`U+2087`), ⅐ (`U+2150`), ⅞ (`U+215E`), ⑦ (`U+2466`), ⑰ (`U+2470`), ⑺ (`U+247A`), ⒄ (`U+2484`), ⒎ (`U+248E`), ⒘ (`U+2498`), ⓱ (`U+24F1`), ⓻ (`U+24FB`), ❼ (`U+277C`), ➆ (`U+2786`), ➐ (`U+2790`), ㉗ (`U+3257`), ㊲ (`U+32B2`), ㊼ (`U+32BC`), 𝟕 (`U+1D7D5`), 𝟩 (`U+1D7E9`), 𝟳 (`U+1D7F3`), 𝟽 (`U+1D7FD`), 🄈 (`U+1F108`), 🆡 (`U+1F1A1`)
+ 5 (`U+0035`), Ƽ (`U+01BC`), ƽ (`U+01BD`), ⁵ (`U+2075`), ₅ (`U+2085`), ⅕ (`U+2155`), ⅖ (`U+2156`), ⅗ (`U+2157`), ⅘ (`U+2158`), ⅚ (`U+215A`), ⅝ (`U+215D`), ⑤ (`U+2464`), ⑮ (`U+246E`), ⑸ (`U+2478`), ⒂ (`U+2482`), ⒌ (`U+248C`), ⒖ (`U+2496`), ⓯ (`U+24EF`), ⓹ (`U+24F9`), ❺ (`U+277A`), ➄ (`U+2784`), ➎ (`U+278E`), ㉕ (`U+3255`), ㉟ (`U+325F`), ㊺ (`U+32BA`), ㊿ (`U+32BF`), 𝟓 (`U+1D7D3`), 𝟧 (`U+1D7E7`), 𝟱 (`U+1D7F1`), 𝟻 (`U+1D7FB`), 🄆 (`U+1F106`), 🆠 (`U+1F1A0`)
- `cv91`:
- 8 (`U+0038`), ⁸ (`U+2078`), ₈ (`U+2088`), ⅛ (`U+215B`), ⅜ (`U+215C`), ⅝ (`U+215D`), ⅞ (`U+215E`), ⑧ (`U+2467`), ⑱ (`U+2471`), ⑻ (`U+247B`), ⒅ (`U+2485`), ⒏ (`U+248F`), ⒙ (`U+2499`), ⓲ (`U+24F2`), ⓼ (`U+24FC`), ❽ (`U+277D`), ➇ (`U+2787`), ➑ (`U+2791`), ㉘ (`U+3258`), ㊳ (`U+32B3`), ㊽ (`U+32BD`), 𝟖 (`U+1D7D6`), 𝟪 (`U+1D7EA`), 𝟴 (`U+1D7F4`), 𝟾 (`U+1D7FE`), 🄉 (`U+1F109`), 🆟 (`U+1F19F`)
+ 6 (`U+0036`), ⁶ (`U+2076`), ₆ (`U+2086`), ⅙ (`U+2159`), ⅚ (`U+215A`), ⑥ (`U+2465`), ⑯ (`U+246F`), ⑹ (`U+2479`), ⒃ (`U+2483`), ⒍ (`U+248D`), ⒗ (`U+2497`), ⓰ (`U+24F0`), ⓺ (`U+24FA`), ❻ (`U+277B`), ➅ (`U+2785`), ➏ (`U+278F`), ㉖ (`U+3256`), ㊱ (`U+32B1`), ㊻ (`U+32BB`), 𝟔 (`U+1D7D4`), 𝟨 (`U+1D7E8`), 𝟲 (`U+1D7F2`), 𝟼 (`U+1D7FC`), 🄇 (`U+1F107`), 🆣 (`U+1F1A3`)
- `cv92`:
- 9 (`U+0039`), ⁹ (`U+2079`), ₉ (`U+2089`), ⅑ (`U+2151`), ⑨ (`U+2468`), ⑲ (`U+2472`), ⑼ (`U+247C`), ⒆ (`U+2486`), ⒐ (`U+2490`), ⒚ (`U+249A`), ⓳ (`U+24F3`), ⓽ (`U+24FD`), ❾ (`U+277E`), ➈ (`U+2788`), ➒ (`U+2792`), ㉙ (`U+3259`), ㊴ (`U+32B4`), ㊾ (`U+32BE`), 𝟗 (`U+1D7D7`), 𝟫 (`U+1D7EB`), 𝟵 (`U+1D7F5`), 𝟿 (`U+1D7FF`), 🄊 (`U+1F10A`)
+ 7 (`U+0037`), ⁷ (`U+2077`), ₇ (`U+2087`), ⅐ (`U+2150`), ⅞ (`U+215E`), ⑦ (`U+2466`), ⑰ (`U+2470`), ⑺ (`U+247A`), ⒄ (`U+2484`), ⒎ (`U+248E`), ⒘ (`U+2498`), ⓱ (`U+24F1`), ⓻ (`U+24FB`), ❼ (`U+277C`), ➆ (`U+2786`), ➐ (`U+2790`), ㉗ (`U+3257`), ㊲ (`U+32B2`), ㊼ (`U+32BC`), 𝟕 (`U+1D7D5`), 𝟩 (`U+1D7E9`), 𝟳 (`U+1D7F3`), 𝟽 (`U+1D7FD`), 🄈 (`U+1F108`), 🆡 (`U+1F1A1`)
- `cv93`:
- i (`U+0069`), j (`U+006A`), ¨ (`U+00A8`), Ä (`U+00C4`), Ë (`U+00CB`), Ï (`U+00CF`), Ö (`U+00D6`), Ü (`U+00DC`), ä (`U+00E4`), ë (`U+00EB`), ï (`U+00EF`), ö (`U+00F6`), ü (`U+00FC`), ÿ (`U+00FF`), Ċ (`U+010A`), ċ (`U+010B`), ď (`U+010F`), Ė (`U+0116`), ė (`U+0117`), Ġ (`U+0120`), ġ (`U+0121`), Ģ (`U+0122`), ģ (`U+0123`), į (`U+012F`), İ (`U+0130`), ij (`U+0133`), Ķ (`U+0136`), ķ (`U+0137`), Ļ (`U+013B`), ļ (`U+013C`), Ľ (`U+013D`), ľ (`U+013E`), Ņ (`U+0145`), ņ (`U+0146`), Ŗ (`U+0156`), ŗ (`U+0157`), ť (`U+0165`), Ÿ (`U+0178`), Ż (`U+017B`), ż (`U+017C`), Ơ (`U+01A0`), ơ (`U+01A1`), Ư (`U+01AF`), ư (`U+01B0`), Lj (`U+01C8`), lj (`U+01C9`), Nj (`U+01CB`), nj (`U+01CC`), Ǖ (`U+01D5`), ǖ (`U+01D6`), Ǘ (`U+01D7`), ǘ (`U+01D8`), Ǚ (`U+01D9`), ǚ (`U+01DA`), Ǜ (`U+01DB`), ǜ (`U+01DC`), Ǟ (`U+01DE`), ǟ (`U+01DF`), Ǡ (`U+01E0`), ǡ (`U+01E1`), Ș (`U+0218`), ș (`U+0219`), Ț (`U+021A`), ț (`U+021B`), Ȧ (`U+0226`), ȧ (`U+0227`), Ȫ (`U+022A`), ȫ (`U+022B`), Ȯ (`U+022E`), ȯ (`U+022F`), Ȱ (`U+0230`), ȱ (`U+0231`), ɉ (`U+0249`), ɨ (`U+0268`), ʘ (`U+0298`), ʝ (`U+029D`), ʲ (`U+02B2`), ˙ (`U+02D9`), ̇ (`U+0307`), ̈ (`U+0308`), ̐ (`U+0310`), ̒ (`U+0312`), ̓ (`U+0313`), ̔ (`U+0314`), ̕ (`U+0315`), ̛ (`U+031B`), ̣ (`U+0323`), ̤ (`U+0324`), ̦ (`U+0326`), ̓ (`U+0343`), ̈́ (`U+0344`), ͋ (`U+034B`), ͒ (`U+0352`), ͘ (`U+0358`), ͥ (`U+0365`), ͼ (`U+037C`), ͽ (`U+037D`), ΅ (`U+0385`), ΐ (`U+0390`), Ϊ (`U+03AA`), Ϋ (`U+03AB`), ΰ (`U+03B0`), ϊ (`U+03CA`), ϋ (`U+03CB`), ϔ (`U+03D4`), ϳ (`U+03F3`), Ͼ (`U+03FE`), Ͽ (`U+03FF`), Ё (`U+0401`), Ї (`U+0407`), ё (`U+0451`), і (`U+0456`), ї (`U+0457`), ј (`U+0458`), Ѽ (`U+047C`), ѽ (`U+047D`), ҅ (`U+0485`), ҆ (`U+0486`), Ӓ (`U+04D2`), ӓ (`U+04D3`), Ӛ (`U+04DA`), ӛ (`U+04DB`), Ӝ (`U+04DC`), ӝ (`U+04DD`), Ӟ (`U+04DE`), ӟ (`U+04DF`), Ӥ (`U+04E4`), ӥ (`U+04E5`), Ӧ (`U+04E6`), ӧ (`U+04E7`), Ӫ (`U+04EA`), ӫ (`U+04EB`), Ӭ (`U+04EC`), ӭ (`U+04ED`), Ӱ (`U+04F0`), ӱ (`U+04F1`), Ӵ (`U+04F4`), ӵ (`U+04F5`), Ӹ (`U+04F8`), ӹ (`U+04F9`), ᪱ (`U+1AB1`), ᪴ (`U+1AB4`), ᴉ (`U+1D09`), ᴞ (`U+1D1E`), ᵎ (`U+1D4E`), ᵢ (`U+1D62`), ᶖ (`U+1D96`), ᶤ (`U+1DA4`), ᶨ (`U+1DA8`), ᷲ (`U+1DF2`), ᷳ (`U+1DF3`), ᷴ (`U+1DF4`), ᷸ (`U+1DF8`), ᷺ (`U+1DFA`), Ḃ (`U+1E02`), ḃ (`U+1E03`), Ḅ (`U+1E04`), ḅ (`U+1E05`), Ḋ (`U+1E0A`), ḋ (`U+1E0B`), Ḍ (`U+1E0C`), ḍ (`U+1E0D`), Ḑ (`U+1E10`), ḑ (`U+1E11`), Ḟ (`U+1E1E`), ḟ (`U+1E1F`), Ḣ (`U+1E22`), ḣ (`U+1E23`), Ḥ (`U+1E24`), ḥ (`U+1E25`), Ḧ (`U+1E26`), ḧ (`U+1E27`), ḭ (`U+1E2D`), Ḯ (`U+1E2E`), ḯ (`U+1E2F`), Ḳ (`U+1E32`), ḳ (`U+1E33`), Ḷ (`U+1E36`), ḷ (`U+1E37`), Ḹ (`U+1E38`), ḹ (`U+1E39`), Ṁ (`U+1E40`), ṁ (`U+1E41`), Ṃ (`U+1E42`), ṃ (`U+1E43`), Ṅ (`U+1E44`), ṅ (`U+1E45`), Ṇ (`U+1E46`), ṇ (`U+1E47`), Ṏ (`U+1E4E`), ṏ (`U+1E4F`), Ṗ (`U+1E56`), ṗ (`U+1E57`), Ṙ (`U+1E58`), ṙ (`U+1E59`), Ṛ (`U+1E5A`), ṛ (`U+1E5B`), Ṝ (`U+1E5C`), ṝ (`U+1E5D`), Ṡ (`U+1E60`), ṡ (`U+1E61`), Ṣ (`U+1E62`), ṣ (`U+1E63`), Ṥ (`U+1E64`), ṥ (`U+1E65`), Ṧ (`U+1E66`), ṧ (`U+1E67`), Ṩ (`U+1E68`), ṩ (`U+1E69`), Ṫ (`U+1E6A`), ṫ (`U+1E6B`), Ṭ (`U+1E6C`), ṭ (`U+1E6D`), Ṳ (`U+1E72`), ṳ (`U+1E73`), Ṻ (`U+1E7A`), ṻ (`U+1E7B`), Ṿ (`U+1E7E`), ṿ (`U+1E7F`), Ẅ (`U+1E84`), ẅ (`U+1E85`), Ẇ (`U+1E86`), ẇ (`U+1E87`), Ẉ (`U+1E88`), ẉ (`U+1E89`), Ẋ (`U+1E8A`), ẋ (`U+1E8B`), Ẍ (`U+1E8C`), ẍ (`U+1E8D`), Ẏ (`U+1E8E`), ẏ (`U+1E8F`), Ẓ (`U+1E92`), ẓ (`U+1E93`), ẗ (`U+1E97`), ẛ (`U+1E9B`), Ạ (`U+1EA0`), ạ (`U+1EA1`), Ậ (`U+1EAC`), ậ (`U+1EAD`), Ặ (`U+1EB6`), ặ (`U+1EB7`), Ẹ (`U+1EB8`), ẹ (`U+1EB9`), Ệ (`U+1EC6`), ệ (`U+1EC7`), Ị (`U+1ECA`), ị (`U+1ECB`), Ọ (`U+1ECC`), ọ (`U+1ECD`), Ộ (`U+1ED8`), ộ (`U+1ED9`), Ớ (`U+1EDA`), ớ (`U+1EDB`), Ờ (`U+1EDC`), ờ (`U+1EDD`), Ở (`U+1EDE`), ở (`U+1EDF`), Ỡ (`U+1EE0`), ỡ (`U+1EE1`), Ợ (`U+1EE2`), ợ (`U+1EE3`), Ụ (`U+1EE4`), ụ (`U+1EE5`), Ứ (`U+1EE8`), ứ (`U+1EE9`), Ừ (`U+1EEA`), ừ (`U+1EEB`), Ử (`U+1EEC`), ử (`U+1EED`), Ữ (`U+1EEE`), ữ (`U+1EEF`), Ự (`U+1EF0`), ự (`U+1EF1`), Ỵ (`U+1EF4`), ỵ (`U+1EF5`), ἀ (`U+1F00`), ἁ (`U+1F01`), ἂ (`U+1F02`), ἃ (`U+1F03`), ἄ (`U+1F04`), ἅ (`U+1F05`), ἆ (`U+1F06`), ἇ (`U+1F07`), Ἀ (`U+1F08`), Ἁ (`U+1F09`), Ἂ (`U+1F0A`), Ἃ (`U+1F0B`), Ἄ (`U+1F0C`), Ἅ (`U+1F0D`), Ἆ (`U+1F0E`), Ἇ (`U+1F0F`), ἐ (`U+1F10`), ἑ (`U+1F11`), ἒ (`U+1F12`), ἓ (`U+1F13`), ἔ (`U+1F14`), ἕ (`U+1F15`), Ἐ (`U+1F18`), Ἑ (`U+1F19`), Ἒ (`U+1F1A`), Ἓ (`U+1F1B`), Ἔ (`U+1F1C`), Ἕ (`U+1F1D`), ἠ (`U+1F20`), ἡ (`U+1F21`), ἢ (`U+1F22`), ἣ (`U+1F23`), ἤ (`U+1F24`), ἥ (`U+1F25`), ἦ (`U+1F26`), ἧ (`U+1F27`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ἰ (`U+1F30`), ἱ (`U+1F31`), ἲ (`U+1F32`), ἳ (`U+1F33`), ἴ (`U+1F34`), ἵ (`U+1F35`), ἶ (`U+1F36`), ἷ (`U+1F37`), Ἰ (`U+1F38`), Ἱ (`U+1F39`), Ἲ (`U+1F3A`), Ἳ (`U+1F3B`), Ἴ (`U+1F3C`), Ἵ (`U+1F3D`), Ἶ (`U+1F3E`), Ἷ (`U+1F3F`), ὀ (`U+1F40`), ὁ (`U+1F41`), ὂ (`U+1F42`), ὃ (`U+1F43`), ὄ (`U+1F44`), ὅ (`U+1F45`), Ὀ (`U+1F48`), Ὁ (`U+1F49`), Ὂ (`U+1F4A`), Ὃ (`U+1F4B`), Ὄ (`U+1F4C`), Ὅ (`U+1F4D`), ὐ (`U+1F50`), ὑ (`U+1F51`), ὒ (`U+1F52`), ὓ (`U+1F53`), ὔ (`U+1F54`), ὕ (`U+1F55`), ὖ (`U+1F56`), ὗ (`U+1F57`), Ὑ (`U+1F59`), Ὓ (`U+1F5B`), Ὕ (`U+1F5D`), Ὗ (`U+1F5F`), ὠ (`U+1F60`), ὡ (`U+1F61`), ὢ (`U+1F62`), ὣ (`U+1F63`), ὤ (`U+1F64`), ὥ (`U+1F65`), ὦ (`U+1F66`), ὧ (`U+1F67`), Ὠ (`U+1F68`), Ὡ (`U+1F69`), Ὢ (`U+1F6A`), Ὣ (`U+1F6B`), Ὤ (`U+1F6C`), Ὥ (`U+1F6D`), Ὦ (`U+1F6E`), Ὧ (`U+1F6F`), ᾀ (`U+1F80`), ᾁ (`U+1F81`), ᾂ (`U+1F82`), ᾃ (`U+1F83`), ᾄ (`U+1F84`), ᾅ (`U+1F85`), ᾆ (`U+1F86`), ᾇ (`U+1F87`), ᾈ (`U+1F88`), ᾉ (`U+1F89`), ᾊ (`U+1F8A`), ᾋ (`U+1F8B`), ᾌ (`U+1F8C`), ᾍ (`U+1F8D`), ᾎ (`U+1F8E`), ᾏ (`U+1F8F`), ᾐ (`U+1F90`), ᾑ (`U+1F91`), ᾒ (`U+1F92`), ᾓ (`U+1F93`), ᾔ (`U+1F94`), ᾕ (`U+1F95`), ᾖ (`U+1F96`), ᾗ (`U+1F97`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), ᾠ (`U+1FA0`), ᾡ (`U+1FA1`), ᾢ (`U+1FA2`), ᾣ (`U+1FA3`), ᾤ (`U+1FA4`), ᾥ (`U+1FA5`), ᾦ (`U+1FA6`), ᾧ (`U+1FA7`), ᾨ (`U+1FA8`), ᾩ (`U+1FA9`), ᾪ (`U+1FAA`), ᾫ (`U+1FAB`), ᾬ (`U+1FAC`), ᾭ (`U+1FAD`), ᾮ (`U+1FAE`), ᾯ (`U+1FAF`), ᾽ (`U+1FBD`), ᾿ (`U+1FBF`), ῁ (`U+1FC1`), ῍ (`U+1FCD`), ῎ (`U+1FCE`), ῏ (`U+1FCF`), ῒ (`U+1FD2`), ΐ (`U+1FD3`), ῗ (`U+1FD7`), ῝ (`U+1FDD`), ῞ (`U+1FDE`), ῟ (`U+1FDF`), ῢ (`U+1FE2`), ΰ (`U+1FE3`), ῤ (`U+1FE4`), ῥ (`U+1FE5`), ῧ (`U+1FE7`), Ῥ (`U+1FEC`), ῭ (`U+1FED`), ΅ (`U+1FEE`), ῾ (`U+1FFE`), ⁱ (`U+2071`), ⃛ (`U+20DB`), ⃜ (`U+20DC`), ⃨ (`U+20E8`), ⅰ (`U+2170`), ⅱ (`U+2171`), ⅲ (`U+2172`), ⅳ (`U+2173`), ⅵ (`U+2175`), ⅶ (`U+2176`), ⅷ (`U+2177`), ⅸ (`U+2178`), ⅺ (`U+217A`), ⅻ (`U+217B`), ⍡ (`U+2361`), ⍢ (`U+2362`), ⍣ (`U+2363`), ⍤ (`U+2364`), ⍥ (`U+2365`), ⍨ (`U+2368`), ⍩ (`U+2369`), ⒤ (`U+24A4`), ⒥ (`U+24A5`), ⓘ (`U+24D8`), ⓙ (`U+24D9`), ⱼ (`U+2C7C`), ⸚ (`U+2E1A`), Ꙩ (`U+A668`), ꙩ (`U+A669`), Ꙫ (`U+A66A`), ꙫ (`U+A66B`), Ꙭ (`U+A66C`), ꙭ (`U+A66D`), ꙮ (`U+A66E`), ꙶ (`U+A676`), Ꜿ (`U+A73E`), ꜿ (`U+A73F`), 𐞵 (`U+107B5`), 𝐢 (`U+1D422`), 𝐣 (`U+1D423`), 𝑖 (`U+1D456`), 𝑗 (`U+1D457`), 𝒊 (`U+1D48A`), 𝒋 (`U+1D48B`), 𝗂 (`U+1D5C2`), 𝗃 (`U+1D5C3`), 𝗶 (`U+1D5F6`), 𝗷 (`U+1D5F7`), 𝘪 (`U+1D62A`), 𝘫 (`U+1D62B`), 𝙞 (`U+1D65E`), 𝙟 (`U+1D65F`), 𝚒 (`U+1D692`), 𝚓 (`U+1D693`), 𞁌 (`U+1E04C`), 𞁍 (`U+1E04D`), 𞁨 (`U+1E068`), 𞂏 (`U+1E08F`)
+ 8 (`U+0038`), ⁸ (`U+2078`), ₈ (`U+2088`), ⅛ (`U+215B`), ⅜ (`U+215C`), ⅝ (`U+215D`), ⅞ (`U+215E`), ⑧ (`U+2467`), ⑱ (`U+2471`), ⑻ (`U+247B`), ⒅ (`U+2485`), ⒏ (`U+248F`), ⒙ (`U+2499`), ⓲ (`U+24F2`), ⓼ (`U+24FC`), ❽ (`U+277D`), ➇ (`U+2787`), ➑ (`U+2791`), ㉘ (`U+3258`), ㊳ (`U+32B3`), ㊽ (`U+32BD`), 𝟖 (`U+1D7D6`), 𝟪 (`U+1D7EA`), 𝟴 (`U+1D7F4`), 𝟾 (`U+1D7FE`), 🄉 (`U+1F109`), 🆟 (`U+1F19F`)
- `cv94`:
- \! (`U+0021`), ' (`U+0027`), , (`U+002C`), \. (`U+002E`), : (`U+003A`), ; (`U+003B`), ? (`U+003F`), \` (`U+0060`), ¡ (`U+00A1`), · (`U+00B7`), ¿ (`U+00BF`), ÷ (`U+00F7`), Ŀ (`U+013F`), ŀ (`U+0140`), ʼn (`U+0149`), ǃ (`U+01C3`), ʻ (`U+02BB`), ʼ (`U+02BC`), ʽ (`U+02BD`), ˮ (`U+02EE`), ˸ (`U+02F8`), ; (`U+037E`), · (`U+0387`), ‘ (`U+2018`), ’ (`U+2019`), ‚ (`U+201A`), ‛ (`U+201B`), “ (`U+201C`), ” (`U+201D`), „ (`U+201E`), ‟ (`U+201F`), ․ (`U+2024`), ‥ (`U+2025`), … (`U+2026`), ‧ (`U+2027`), ※ (`U+203B`), ‼ (`U+203C`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ⁏ (`U+204F`), ⁒ (`U+2052`), ⁖ (`U+2056`), ⁘ (`U+2058`), ⁙ (`U+2059`), ⁚ (`U+205A`), ⁛ (`U+205B`), ⁜ (`U+205C`), ⁝ (`U+205D`), ⁞ (`U+205E`), ∔ (`U+2214`), ∴ (`U+2234`), ∵ (`U+2235`), ∶ (`U+2236`), ∷ (`U+2237`), ∸ (`U+2238`), ∹ (`U+2239`), ∺ (`U+223A`), ∻ (`U+223B`), ≐ (`U+2250`), ≑ (`U+2251`), ≒ (`U+2252`), ≓ (`U+2253`), ≔ (`U+2254`), ≕ (`U+2255`), ≟ (`U+225F`), ⊍ (`U+228D`), ⊙ (`U+2299`), ⊡ (`U+22A1`), ⋅ (`U+22C5`), ⋇ (`U+22C7`), ⋖ (`U+22D6`), ⋗ (`U+22D7`), ⋮ (`U+22EE`), ⋯ (`U+22EF`), ⋰ (`U+22F0`), ⋱ (`U+22F1`), ⋵ (`U+22F5`), ⌹ (`U+2339`), ⍠ (`U+2360`), ⍪ (`U+236A`), ⍮ (`U+236E`), ⍰ (`U+2370`), ␦ (`U+2426`), ⒈ (`U+2488`), ⒉ (`U+2489`), ⒊ (`U+248A`), ⒋ (`U+248B`), ⒌ (`U+248C`), ⒍ (`U+248D`), ⒎ (`U+248E`), ⒏ (`U+248F`), ⒐ (`U+2490`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⒛ (`U+249B`), ⦙ (`U+2999`), ⦼ (`U+29BC`), ⧴ (`U+29F4`), ⨀ (`U+2A00`), ⨒ (`U+2A12`), ⨓ (`U+2A13`), ⨔ (`U+2A14`), ⨕ (`U+2A15`), ⨥ (`U+2A25`), ⨪ (`U+2A2A`), ⨫ (`U+2A2B`), ⨬ (`U+2A2C`), ⨰ (`U+2A30`), ⨸ (`U+2A38`), ⩀ (`U+2A40`), ⩦ (`U+2A66`), ⩧ (`U+2A67`), ⩪ (`U+2A6A`), ⩫ (`U+2A6B`), ⩭ (`U+2A6D`), ⩿ (`U+2A7F`), ⪀ (`U+2A80`), ⪗ (`U+2A97`), ⪘ (`U+2A98`), ⫶ (`U+2AF6`), ⸘ (`U+2E18`), ⸞ (`U+2E1E`), ⸟ (`U+2E1F`), ⸮ (`U+2E2E`), ⸱ (`U+2E31`), ⸲ (`U+2E32`), ⸳ (`U+2E33`), ⸴ (`U+2E34`), ⸵ (`U+2E35`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ꜝ (`U+A71D`), ꜞ (`U+A71E`), ꜟ (`U+A71F`), ꞉ (`U+A789`), ꞏ (`U+A78F`), � (`U+FFFD`), 𐞹 (`U+107B9`), 𝼊 (`U+1DF0A`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄂 (`U+1F102`), 🄃 (`U+1F103`), 🄄 (`U+1F104`), 🄅 (`U+1F105`), 🄆 (`U+1F106`), 🄇 (`U+1F107`), 🄈 (`U+1F108`), 🄉 (`U+1F109`), 🄊 (`U+1F10A`), 🆙 (`U+1F199`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆢 (`U+1F1A2`), 🯄 (`U+1FBC4`)
+ 9 (`U+0039`), ⁹ (`U+2079`), ₉ (`U+2089`), ⅑ (`U+2151`), ⑨ (`U+2468`), ⑲ (`U+2472`), ⑼ (`U+247C`), ⒆ (`U+2486`), ⒐ (`U+2490`), ⒚ (`U+249A`), ⓳ (`U+24F3`), ⓽ (`U+24FD`), ❾ (`U+277E`), ➈ (`U+2788`), ➒ (`U+2792`), ㉙ (`U+3259`), ㊴ (`U+32B4`), ㊾ (`U+32BE`), 𝟗 (`U+1D7D7`), 𝟫 (`U+1D7EB`), 𝟵 (`U+1D7F5`), 𝟿 (`U+1D7FF`), 🄊 (`U+1F10A`)
- `cv95`:
- ~ (`U+007E`)
+ i (`U+0069`), j (`U+006A`), ¨ (`U+00A8`), Ä (`U+00C4`), Ë (`U+00CB`), Ï (`U+00CF`), Ö (`U+00D6`), Ü (`U+00DC`), ä (`U+00E4`), ë (`U+00EB`), ï (`U+00EF`), ö (`U+00F6`), ü (`U+00FC`), ÿ (`U+00FF`), Ċ (`U+010A`), ċ (`U+010B`), ď (`U+010F`), Ė (`U+0116`), ė (`U+0117`), Ġ (`U+0120`), ġ (`U+0121`), Ģ (`U+0122`), ģ (`U+0123`), į (`U+012F`), İ (`U+0130`), ij (`U+0133`), Ķ (`U+0136`), ķ (`U+0137`), Ļ (`U+013B`), ļ (`U+013C`), Ľ (`U+013D`), ľ (`U+013E`), Ņ (`U+0145`), ņ (`U+0146`), Ŗ (`U+0156`), ŗ (`U+0157`), ť (`U+0165`), Ÿ (`U+0178`), Ż (`U+017B`), ż (`U+017C`), Ơ (`U+01A0`), ơ (`U+01A1`), Ư (`U+01AF`), ư (`U+01B0`), Lj (`U+01C8`), lj (`U+01C9`), Nj (`U+01CB`), nj (`U+01CC`), Ǖ (`U+01D5`), ǖ (`U+01D6`), Ǘ (`U+01D7`), ǘ (`U+01D8`), Ǚ (`U+01D9`), ǚ (`U+01DA`), Ǜ (`U+01DB`), ǜ (`U+01DC`), Ǟ (`U+01DE`), ǟ (`U+01DF`), Ǡ (`U+01E0`), ǡ (`U+01E1`), Ș (`U+0218`), ș (`U+0219`), Ț (`U+021A`), ț (`U+021B`), Ȧ (`U+0226`), ȧ (`U+0227`), Ȫ (`U+022A`), ȫ (`U+022B`), Ȯ (`U+022E`), ȯ (`U+022F`), Ȱ (`U+0230`), ȱ (`U+0231`), ɉ (`U+0249`), ɨ (`U+0268`), ʘ (`U+0298`), ʝ (`U+029D`), ʲ (`U+02B2`), ˙ (`U+02D9`), ̇ (`U+0307`), ̈ (`U+0308`), ̐ (`U+0310`), ̒ (`U+0312`), ̓ (`U+0313`), ̔ (`U+0314`), ̕ (`U+0315`), ̛ (`U+031B`), ̣ (`U+0323`), ̤ (`U+0324`), ̦ (`U+0326`), ̓ (`U+0343`), ̈́ (`U+0344`), ͋ (`U+034B`), ͒ (`U+0352`), ͘ (`U+0358`), ͥ (`U+0365`), ͼ (`U+037C`), ͽ (`U+037D`), ΅ (`U+0385`), ΐ (`U+0390`), Ϊ (`U+03AA`), Ϋ (`U+03AB`), ΰ (`U+03B0`), ϊ (`U+03CA`), ϋ (`U+03CB`), ϔ (`U+03D4`), ϳ (`U+03F3`), Ͼ (`U+03FE`), Ͽ (`U+03FF`), Ё (`U+0401`), Ї (`U+0407`), ё (`U+0451`), і (`U+0456`), ї (`U+0457`), ј (`U+0458`), Ѽ (`U+047C`), ѽ (`U+047D`), ҅ (`U+0485`), ҆ (`U+0486`), Ӓ (`U+04D2`), ӓ (`U+04D3`), Ӛ (`U+04DA`), ӛ (`U+04DB`), Ӝ (`U+04DC`), ӝ (`U+04DD`), Ӟ (`U+04DE`), ӟ (`U+04DF`), Ӥ (`U+04E4`), ӥ (`U+04E5`), Ӧ (`U+04E6`), ӧ (`U+04E7`), Ӫ (`U+04EA`), ӫ (`U+04EB`), Ӭ (`U+04EC`), ӭ (`U+04ED`), Ӱ (`U+04F0`), ӱ (`U+04F1`), Ӵ (`U+04F4`), ӵ (`U+04F5`), Ӹ (`U+04F8`), ӹ (`U+04F9`), ᪱ (`U+1AB1`), ᪴ (`U+1AB4`), ᴉ (`U+1D09`), ᴞ (`U+1D1E`), ᵎ (`U+1D4E`), ᵢ (`U+1D62`), ᶖ (`U+1D96`), ᶤ (`U+1DA4`), ᶨ (`U+1DA8`), ᷲ (`U+1DF2`), ᷳ (`U+1DF3`), ᷴ (`U+1DF4`), ᷸ (`U+1DF8`), ᷺ (`U+1DFA`), Ḃ (`U+1E02`), ḃ (`U+1E03`), Ḅ (`U+1E04`), ḅ (`U+1E05`), Ḋ (`U+1E0A`), ḋ (`U+1E0B`), Ḍ (`U+1E0C`), ḍ (`U+1E0D`), Ḑ (`U+1E10`), ḑ (`U+1E11`), Ḟ (`U+1E1E`), ḟ (`U+1E1F`), Ḣ (`U+1E22`), ḣ (`U+1E23`), Ḥ (`U+1E24`), ḥ (`U+1E25`), Ḧ (`U+1E26`), ḧ (`U+1E27`), ḭ (`U+1E2D`), Ḯ (`U+1E2E`), ḯ (`U+1E2F`), Ḳ (`U+1E32`), ḳ (`U+1E33`), Ḷ (`U+1E36`), ḷ (`U+1E37`), Ḹ (`U+1E38`), ḹ (`U+1E39`), Ṁ (`U+1E40`), ṁ (`U+1E41`), Ṃ (`U+1E42`), ṃ (`U+1E43`), Ṅ (`U+1E44`), ṅ (`U+1E45`), Ṇ (`U+1E46`), ṇ (`U+1E47`), Ṏ (`U+1E4E`), ṏ (`U+1E4F`), Ṗ (`U+1E56`), ṗ (`U+1E57`), Ṙ (`U+1E58`), ṙ (`U+1E59`), Ṛ (`U+1E5A`), ṛ (`U+1E5B`), Ṝ (`U+1E5C`), ṝ (`U+1E5D`), Ṡ (`U+1E60`), ṡ (`U+1E61`), Ṣ (`U+1E62`), ṣ (`U+1E63`), Ṥ (`U+1E64`), ṥ (`U+1E65`), Ṧ (`U+1E66`), ṧ (`U+1E67`), Ṩ (`U+1E68`), ṩ (`U+1E69`), Ṫ (`U+1E6A`), ṫ (`U+1E6B`), Ṭ (`U+1E6C`), ṭ (`U+1E6D`), Ṳ (`U+1E72`), ṳ (`U+1E73`), Ṻ (`U+1E7A`), ṻ (`U+1E7B`), Ṿ (`U+1E7E`), ṿ (`U+1E7F`), Ẅ (`U+1E84`), ẅ (`U+1E85`), Ẇ (`U+1E86`), ẇ (`U+1E87`), Ẉ (`U+1E88`), ẉ (`U+1E89`), Ẋ (`U+1E8A`), ẋ (`U+1E8B`), Ẍ (`U+1E8C`), ẍ (`U+1E8D`), Ẏ (`U+1E8E`), ẏ (`U+1E8F`), Ẓ (`U+1E92`), ẓ (`U+1E93`), ẗ (`U+1E97`), ẛ (`U+1E9B`), Ạ (`U+1EA0`), ạ (`U+1EA1`), Ậ (`U+1EAC`), ậ (`U+1EAD`), Ặ (`U+1EB6`), ặ (`U+1EB7`), Ẹ (`U+1EB8`), ẹ (`U+1EB9`), Ệ (`U+1EC6`), ệ (`U+1EC7`), Ị (`U+1ECA`), ị (`U+1ECB`), Ọ (`U+1ECC`), ọ (`U+1ECD`), Ộ (`U+1ED8`), ộ (`U+1ED9`), Ớ (`U+1EDA`), ớ (`U+1EDB`), Ờ (`U+1EDC`), ờ (`U+1EDD`), Ở (`U+1EDE`), ở (`U+1EDF`), Ỡ (`U+1EE0`), ỡ (`U+1EE1`), Ợ (`U+1EE2`), ợ (`U+1EE3`), Ụ (`U+1EE4`), ụ (`U+1EE5`), Ứ (`U+1EE8`), ứ (`U+1EE9`), Ừ (`U+1EEA`), ừ (`U+1EEB`), Ử (`U+1EEC`), ử (`U+1EED`), Ữ (`U+1EEE`), ữ (`U+1EEF`), Ự (`U+1EF0`), ự (`U+1EF1`), Ỵ (`U+1EF4`), ỵ (`U+1EF5`), ἀ (`U+1F00`), ἁ (`U+1F01`), ἂ (`U+1F02`), ἃ (`U+1F03`), ἄ (`U+1F04`), ἅ (`U+1F05`), ἆ (`U+1F06`), ἇ (`U+1F07`), Ἀ (`U+1F08`), Ἁ (`U+1F09`), Ἂ (`U+1F0A`), Ἃ (`U+1F0B`), Ἄ (`U+1F0C`), Ἅ (`U+1F0D`), Ἆ (`U+1F0E`), Ἇ (`U+1F0F`), ἐ (`U+1F10`), ἑ (`U+1F11`), ἒ (`U+1F12`), ἓ (`U+1F13`), ἔ (`U+1F14`), ἕ (`U+1F15`), Ἐ (`U+1F18`), Ἑ (`U+1F19`), Ἒ (`U+1F1A`), Ἓ (`U+1F1B`), Ἔ (`U+1F1C`), Ἕ (`U+1F1D`), ἠ (`U+1F20`), ἡ (`U+1F21`), ἢ (`U+1F22`), ἣ (`U+1F23`), ἤ (`U+1F24`), ἥ (`U+1F25`), ἦ (`U+1F26`), ἧ (`U+1F27`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ἰ (`U+1F30`), ἱ (`U+1F31`), ἲ (`U+1F32`), ἳ (`U+1F33`), ἴ (`U+1F34`), ἵ (`U+1F35`), ἶ (`U+1F36`), ἷ (`U+1F37`), Ἰ (`U+1F38`), Ἱ (`U+1F39`), Ἲ (`U+1F3A`), Ἳ (`U+1F3B`), Ἴ (`U+1F3C`), Ἵ (`U+1F3D`), Ἶ (`U+1F3E`), Ἷ (`U+1F3F`), ὀ (`U+1F40`), ὁ (`U+1F41`), ὂ (`U+1F42`), ὃ (`U+1F43`), ὄ (`U+1F44`), ὅ (`U+1F45`), Ὀ (`U+1F48`), Ὁ (`U+1F49`), Ὂ (`U+1F4A`), Ὃ (`U+1F4B`), Ὄ (`U+1F4C`), Ὅ (`U+1F4D`), ὐ (`U+1F50`), ὑ (`U+1F51`), ὒ (`U+1F52`), ὓ (`U+1F53`), ὔ (`U+1F54`), ὕ (`U+1F55`), ὖ (`U+1F56`), ὗ (`U+1F57`), Ὑ (`U+1F59`), Ὓ (`U+1F5B`), Ὕ (`U+1F5D`), Ὗ (`U+1F5F`), ὠ (`U+1F60`), ὡ (`U+1F61`), ὢ (`U+1F62`), ὣ (`U+1F63`), ὤ (`U+1F64`), ὥ (`U+1F65`), ὦ (`U+1F66`), ὧ (`U+1F67`), Ὠ (`U+1F68`), Ὡ (`U+1F69`), Ὢ (`U+1F6A`), Ὣ (`U+1F6B`), Ὤ (`U+1F6C`), Ὥ (`U+1F6D`), Ὦ (`U+1F6E`), Ὧ (`U+1F6F`), ᾀ (`U+1F80`), ᾁ (`U+1F81`), ᾂ (`U+1F82`), ᾃ (`U+1F83`), ᾄ (`U+1F84`), ᾅ (`U+1F85`), ᾆ (`U+1F86`), ᾇ (`U+1F87`), ᾈ (`U+1F88`), ᾉ (`U+1F89`), ᾊ (`U+1F8A`), ᾋ (`U+1F8B`), ᾌ (`U+1F8C`), ᾍ (`U+1F8D`), ᾎ (`U+1F8E`), ᾏ (`U+1F8F`), ᾐ (`U+1F90`), ᾑ (`U+1F91`), ᾒ (`U+1F92`), ᾓ (`U+1F93`), ᾔ (`U+1F94`), ᾕ (`U+1F95`), ᾖ (`U+1F96`), ᾗ (`U+1F97`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), ᾠ (`U+1FA0`), ᾡ (`U+1FA1`), ᾢ (`U+1FA2`), ᾣ (`U+1FA3`), ᾤ (`U+1FA4`), ᾥ (`U+1FA5`), ᾦ (`U+1FA6`), ᾧ (`U+1FA7`), ᾨ (`U+1FA8`), ᾩ (`U+1FA9`), ᾪ (`U+1FAA`), ᾫ (`U+1FAB`), ᾬ (`U+1FAC`), ᾭ (`U+1FAD`), ᾮ (`U+1FAE`), ᾯ (`U+1FAF`), ᾽ (`U+1FBD`), ᾿ (`U+1FBF`), ῁ (`U+1FC1`), ῍ (`U+1FCD`), ῎ (`U+1FCE`), ῏ (`U+1FCF`), ῒ (`U+1FD2`), ΐ (`U+1FD3`), ῗ (`U+1FD7`), ῝ (`U+1FDD`), ῞ (`U+1FDE`), ῟ (`U+1FDF`), ῢ (`U+1FE2`), ΰ (`U+1FE3`), ῤ (`U+1FE4`), ῥ (`U+1FE5`), ῧ (`U+1FE7`), Ῥ (`U+1FEC`), ῭ (`U+1FED`), ΅ (`U+1FEE`), ῾ (`U+1FFE`), ⁱ (`U+2071`), ⃛ (`U+20DB`), ⃜ (`U+20DC`), ⃨ (`U+20E8`), ⅰ (`U+2170`), ⅱ (`U+2171`), ⅲ (`U+2172`), ⅳ (`U+2173`), ⅵ (`U+2175`), ⅶ (`U+2176`), ⅷ (`U+2177`), ⅸ (`U+2178`), ⅺ (`U+217A`), ⅻ (`U+217B`), ⍡ (`U+2361`), ⍢ (`U+2362`), ⍣ (`U+2363`), ⍤ (`U+2364`), ⍥ (`U+2365`), ⍨ (`U+2368`), ⍩ (`U+2369`), ⒤ (`U+24A4`), ⒥ (`U+24A5`), ⓘ (`U+24D8`), ⓙ (`U+24D9`), ⱼ (`U+2C7C`), ⸚ (`U+2E1A`), Ꙩ (`U+A668`), ꙩ (`U+A669`), Ꙫ (`U+A66A`), ꙫ (`U+A66B`), Ꙭ (`U+A66C`), ꙭ (`U+A66D`), ꙮ (`U+A66E`), ꙶ (`U+A676`), Ꜿ (`U+A73E`), ꜿ (`U+A73F`), 𐞵 (`U+107B5`), 𝐢 (`U+1D422`), 𝐣 (`U+1D423`), 𝑖 (`U+1D456`), 𝑗 (`U+1D457`), 𝒊 (`U+1D48A`), 𝒋 (`U+1D48B`), 𝗂 (`U+1D5C2`), 𝗃 (`U+1D5C3`), 𝗶 (`U+1D5F6`), 𝗷 (`U+1D5F7`), 𝘪 (`U+1D62A`), 𝘫 (`U+1D62B`), 𝙞 (`U+1D65E`), 𝙟 (`U+1D65F`), 𝚒 (`U+1D692`), 𝚓 (`U+1D693`), 𞁌 (`U+1E04C`), 𞁍 (`U+1E04D`), 𞁨 (`U+1E068`), 𞂏 (`U+1E08F`)
- `cv96`:
- \* (`U+002A`), ͙ (`U+0359`), ⁂ (`U+2042`), ⁎ (`U+204E`), ⁑ (`U+2051`), ⁕ (`U+2055`), ⃰ (`U+20F0`), ∗ (`U+2217`), ⊛ (`U+229B`), ⧆ (`U+29C6`), ⩮ (`U+2A6E`)
+ \! (`U+0021`), ' (`U+0027`), , (`U+002C`), \. (`U+002E`), : (`U+003A`), ; (`U+003B`), ? (`U+003F`), \` (`U+0060`), ¡ (`U+00A1`), · (`U+00B7`), ¿ (`U+00BF`), ÷ (`U+00F7`), Ŀ (`U+013F`), ŀ (`U+0140`), ʼn (`U+0149`), ǃ (`U+01C3`), ʻ (`U+02BB`), ʼ (`U+02BC`), ʽ (`U+02BD`), ˮ (`U+02EE`), ˸ (`U+02F8`), ; (`U+037E`), · (`U+0387`), ჻ (`U+10FB`), ‘ (`U+2018`), ’ (`U+2019`), ‚ (`U+201A`), ‛ (`U+201B`), “ (`U+201C`), ” (`U+201D`), „ (`U+201E`), ‟ (`U+201F`), ․ (`U+2024`), ‥ (`U+2025`), … (`U+2026`), ‧ (`U+2027`), ※ (`U+203B`), ‼ (`U+203C`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ⁏ (`U+204F`), ⁒ (`U+2052`), ⁖ (`U+2056`), ⁘ (`U+2058`), ⁙ (`U+2059`), ⁚ (`U+205A`), ⁛ (`U+205B`), ⁜ (`U+205C`), ⁝ (`U+205D`), ⁞ (`U+205E`), ∔ (`U+2214`), ∴ (`U+2234`), ∵ (`U+2235`), ∶ (`U+2236`), ∷ (`U+2237`), ∸ (`U+2238`), ∹ (`U+2239`), ∺ (`U+223A`), ∻ (`U+223B`), ≐ (`U+2250`), ≑ (`U+2251`), ≒ (`U+2252`), ≓ (`U+2253`), ≔ (`U+2254`), ≕ (`U+2255`), ≟ (`U+225F`), ⊍ (`U+228D`), ⊙ (`U+2299`), ⊡ (`U+22A1`), ⋅ (`U+22C5`), ⋇ (`U+22C7`), ⋖ (`U+22D6`), ⋗ (`U+22D7`), ⋮ (`U+22EE`), ⋯ (`U+22EF`), ⋰ (`U+22F0`), ⋱ (`U+22F1`), ⋵ (`U+22F5`), ⌹ (`U+2339`), ⍠ (`U+2360`), ⍪ (`U+236A`), ⍮ (`U+236E`), ⍰ (`U+2370`), ␦ (`U+2426`), ⒈ (`U+2488`), ⒉ (`U+2489`), ⒊ (`U+248A`), ⒋ (`U+248B`), ⒌ (`U+248C`), ⒍ (`U+248D`), ⒎ (`U+248E`), ⒏ (`U+248F`), ⒐ (`U+2490`), ⒑ (`U+2491`), ⒒ (`U+2492`), ⒓ (`U+2493`), ⒔ (`U+2494`), ⒕ (`U+2495`), ⒖ (`U+2496`), ⒗ (`U+2497`), ⒘ (`U+2498`), ⒙ (`U+2499`), ⒚ (`U+249A`), ⒛ (`U+249B`), ⦙ (`U+2999`), ⦼ (`U+29BC`), ⧴ (`U+29F4`), ⨀ (`U+2A00`), ⨒ (`U+2A12`), ⨓ (`U+2A13`), ⨔ (`U+2A14`), ⨕ (`U+2A15`), ⨥ (`U+2A25`), ⨪ (`U+2A2A`), ⨫ (`U+2A2B`), ⨬ (`U+2A2C`), ⨰ (`U+2A30`), ⨸ (`U+2A38`), ⩀ (`U+2A40`), ⩦ (`U+2A66`), ⩧ (`U+2A67`), ⩪ (`U+2A6A`), ⩫ (`U+2A6B`), ⩭ (`U+2A6D`), ⩿ (`U+2A7F`), ⪀ (`U+2A80`), ⪗ (`U+2A97`), ⪘ (`U+2A98`), ⫶ (`U+2AF6`), ⸘ (`U+2E18`), ⸞ (`U+2E1E`), ⸟ (`U+2E1F`), ⸪ (`U+2E2A`), ⸫ (`U+2E2B`), ⸬ (`U+2E2C`), ⸭ (`U+2E2D`), ⸮ (`U+2E2E`), ⸱ (`U+2E31`), ⸲ (`U+2E32`), ⸳ (`U+2E33`), ⸴ (`U+2E34`), ⸵ (`U+2E35`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ꜝ (`U+A71D`), ꜞ (`U+A71E`), ꜟ (`U+A71F`), ꞉ (`U+A789`), ꞏ (`U+A78F`), � (`U+FFFD`), 𐞹 (`U+107B9`), 𝼊 (`U+1DF0A`), 🄀 (`U+1F100`), 🄁 (`U+1F101`), 🄂 (`U+1F102`), 🄃 (`U+1F103`), 🄄 (`U+1F104`), 🄅 (`U+1F105`), 🄆 (`U+1F106`), 🄇 (`U+1F107`), 🄈 (`U+1F108`), 🄉 (`U+1F109`), 🄊 (`U+1F10A`), 🆙 (`U+1F199`), 🆠 (`U+1F1A0`), 🆡 (`U+1F1A1`), 🆢 (`U+1F1A2`), 🯄 (`U+1FBC4`)
- `cv97`:
- \_ (`U+005F`), ‗ (`U+2017`), ⍽ (`U+237D`), ␣ (`U+2423`)
+ ~ (`U+007E`)
- `cv98`:
- ^ (`U+005E`)
+ \* (`U+002A`), ͙ (`U+0359`), ⁂ (`U+2042`), ⁎ (`U+204E`), ⁑ (`U+2051`), ⁕ (`U+2055`), ⃰ (`U+20F0`), ∗ (`U+2217`), ⊛ (`U+229B`), ⧆ (`U+29C6`), ⩮ (`U+2A6E`)
- `cv99`:
- \( (`U+0028`), \) (`U+0029`), ⁽ (`U+207D`), ⁾ (`U+207E`), ₍ (`U+208D`), ₎ (`U+208E`), ⸨ (`U+2E28`), ⸩ (`U+2E29`)
+ \_ (`U+005F`), ‗ (`U+2017`), ⍽ (`U+237D`), ␣ (`U+2423`)
- `VSAA`:
- \{ (`U+007B`), \} (`U+007D`), ⦃ (`U+2983`), ⦄ (`U+2984`)
+ ^ (`U+005E`)
- `VSAB`:
- « (`U+00AB`), » (`U+00BB`), ‹ (`U+2039`), › (`U+203A`)
+ \` (`U+0060`)
- `VSAC`:
- \# (`U+0023`), ᫆ (`U+1AC6`)
+ ' (`U+0027`)
- `VSAD`:
- & (`U+0026`), ⅋ (`U+214B`)
+ \( (`U+0028`), \) (`U+0029`), ⁽ (`U+207D`), ⁾ (`U+207E`), ₍ (`U+208D`), ₎ (`U+208E`), ⸨ (`U+2E28`), ⸩ (`U+2E29`)
- `VSAE`:
- @ (`U+0040`)
+ \{ (`U+007B`), \} (`U+007D`), ⦃ (`U+2983`), ⦄ (`U+2984`)
- `VSAF`:
- $ (`U+0024`), 🄏 (`U+1F10F`)
+ « (`U+00AB`), » (`U+00BB`), ‹ (`U+2039`), › (`U+203A`)
- `VSAG`:
- % (`U+0025`), ‰ (`U+2030`), ‱ (`U+2031`)
+ \# (`U+0023`), ᫆ (`U+1AC6`)
- `VSAH`:
- | (`U+007C`), ¦ (`U+00A6`), ‖ (`U+2016`), ⫼ (`U+2AFC`)
+ & (`U+0026`), ⅋ (`U+214B`)
- `VSAI`:
- ' (`U+0027`)
+ @ (`U+0040`)
- `VSAJ`:
- \` (`U+0060`)
+ $ (`U+0024`), 🄏 (`U+1F10F`)
- `VSAK`:
- ? (`U+003F`), ¿ (`U+00BF`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ≟ (`U+225F`), ⍰ (`U+2370`), ␦ (`U+2426`), ⸘ (`U+2E18`), ⸮ (`U+2E2E`), � (`U+FFFD`), 🯄 (`U+1FBC4`)
+ ¢ (`U+00A2`)
- `VSAL`:
- ¶ (`U+00B6`), ⁋ (`U+204B`)
+ % (`U+0025`), ‰ (`U+2030`), ‱ (`U+2031`)
- `VSAM`:
- ¢ (`U+00A2`)
+ | (`U+007C`), ¦ (`U+00A6`), ‖ (`U+2016`), ⫼ (`U+2AFC`)
- `VSAN`:
- ∂ (`U+2202`), 𝛛 (`U+1D6DB`), 𝜕 (`U+1D715`), 𝝏 (`U+1D74F`), 𝞉 (`U+1D789`), 𝟃 (`U+1D7C3`)
+ ? (`U+003F`), ¿ (`U+00BF`), ‽ (`U+203D`), ⁇ (`U+2047`), ⁈ (`U+2048`), ⁉ (`U+2049`), ≟ (`U+225F`), ⍰ (`U+2370`), ␦ (`U+2426`), ⸘ (`U+2E18`), ⸮ (`U+2E2E`), � (`U+FFFD`), 🯄 (`U+1FBC4`)
- `VSAO`:
- µ (`U+00B5`)
+ ¶ (`U+00B6`), ⁋ (`U+204B`)
-- `VXAA`:
+- `VSAP`:
- р (`U+0440`), ҏ (`U+048F`), ⷬ (`U+2DEC`), 𞀾 (`U+1E03E`)
+ ∂ (`U+2202`), 𝛛 (`U+1D6DB`), 𝜕 (`U+1D715`), 𝝏 (`U+1D74F`), 𝞉 (`U+1D789`), 𝟃 (`U+1D7C3`)
-- `VXAB`:
+- `VSAQ`:
- у (`U+0443`), ў (`U+045E`), Ѹ (`U+0478`), ѹ (`U+0479`), ӯ (`U+04EF`), ӱ (`U+04F1`), ӳ (`U+04F3`), ꙷ (`U+A677`), 𞁁 (`U+1E041`), 𞁟 (`U+1E05F`)
+ µ (`U+00B5`)
diff --git a/doc/packages-sha.txt b/doc/packages-sha.txt
index 68b5a1384a..d4db981e96 100644
--- a/doc/packages-sha.txt
+++ b/doc/packages-sha.txt
@@ -1,456 +1,452 @@
-e385e21e8ca96e4dfd412d1a117f278a173637e9e63083e1cd560b6323fa89cb undefined
-8404c941d3fac293355b65c23a6bee8be499a468d660c163f2dfea70d1e2da49 undefined
-b12da78e9d6f272b1fc23cd6ee8de5d1103f11a322cd5432cfcf3e30b5c03920 undefined
-06e4ac5cf44c8228fc491b352fbe41dc74ecf9ae574b089edbeccb14f99c2af5 undefined
-8f77f1a17bde3de6b4a39f0bf0622c533ea554c6f19821052b391a26393a3207 undefined
-9cfce3ccf22dfe978848c42addc76397098a868512ceb77ef60637fdcf694cb0 undefined
-361f48d641c02318b70ce4e1f93fb743b9d4b3379498837f1b5f75394948dc81 undefined
-47f7a127a8b9525c2a3b1729649c53acb29c0ce5ee05093c27594ef6c64a8ca1 undefined
-9566205a0378b1242e5c5dfb5e3559a59e95514261863d9e0373a28a96a035a5 undefined
-bbbb829c8cbe50478e027cd7529e8abb0e5a246fa1e02a8635503df2648acb95 undefined
-66bc860b6aafa4ab06880665927bd8772649401b8235c39a109b6ef966827d0b undefined
-fb348a23e3371573e6285c939e88876219847c7824880f38dcf9fe430884bf83 undefined
-47a8874c34131dfaee19643168cb841234df0c8e71c91aaaa74fe8b078eb8ab5 undefined
-401727c2b4007547a358c7f09f51a1a36236ed55c42f6f5d0c476ac07cb92188 undefined
-65ee2d4423cd38a5ceb87d2f40fe6ff7d7bf1a3bfa975444a48e017105f63b51 undefined
-9fdfdacbd05940e55b9fda334002f501fea3b0e5daf72b6ec9fd94301eab6755 undefined
-38ccb2b79cc42c97f4e91e2013edfccd0606670cf55b909e1a602d0fb3bf0ce5 undefined
-03cb2db581cb96ec09a727e76080101c2aefd20c3d6a5a4889a7122342c952a5 undefined
-f75729d1feb674a58e1f448b3056b22ab04fc1e88f2184bd72267f58b0922d38 undefined
-ab140439642afb85053f79d124a2e5ad9fa95647697c37f9f22e6aea6af0a4d9 undefined
-38c4d2f7e30e2f02fc43860a7b9a19af9a5e7a778c5a4fd2aa6414ef90258ad6 undefined
-efbeee7ad53e0e92dab60c1246a71c5f82fc9ad2f7b0aa3b76b85dea356e8749 undefined
-0763df0e0558a6c4be153016869998573c800237d558f9a6eb3b24376bb023cf undefined
-49b416e4f14d5da0597e00d53efdc380dedadf791d229c0a23bb0c29280fc969 undefined
-24da413663310eac37f9d8e5a51e10794d9ed7757b7896735cfaabcc433e73fa undefined
-ea7c01de5ece31a645f277dbaba38b7e2a15b08ea99318810395296fddddbc77 undefined
-1228bf4e1246170b2cd941aa36138065df5367e0ede644987f5dc5c68aab1226 undefined
-c2989df0ec9aff9c17e089fa86ae99dad327c763c02fbdbe12afeb6a7d7e69db undefined
-8d15f7885d08f70672ebeff96a0c490596fcbf5eb564402301ce190a32229af2 undefined
-a92e9caac22b2a285eabd1bf1c92d058056296f79c696d25382c4fa19716d239 undefined
-af0a793e7e849c920adb6285831f43333a6de64fbe633267ab07838ea8626b96 undefined
-03a6d457e361ef8f7ce425da9ce3efd3866cd018ed736447e479a60af44bb1b6 undefined
-f55cf5510fd645510e2240aaf9d428a032db040bf4c77c02884c52ee7c79e8f5 undefined
-cfd9b295573d29a49bda4dc4e8c46ed66a9dd172ee1210e29cabfe807823d3ae undefined
-cc345dfc3756bd34b3a0d458ad06d175a4e5ad6a44cfe059fe955bbba50ef922 undefined
-57a2843b5f9cf35d19f4c6ea6f9b78054c0d4f57244a516d6942b04c4f82703d undefined
-38c572df1b3985d80db1630985e8e90acc0d09348f705a6b8d42ef45f70f095c undefined
-729b953108ba5db27f9246b3f305434595099a4da16d2d2d67753663d94a8362 undefined
-30a67db499099ce0936a3e95d84fd1af9ae8d139303dfdb4e34f905649375d12 undefined
-2255db3b3429df0a91a6f478e7447357a2f7bbfc8d55aad231aa8704857e7e74 undefined
-b4ec912aa01834e5f85086f117b1b6ce37b35944c61c5f86b704f9a1d0871de7 undefined
-9415a8d166ec916311d226ce9e0eab03b8fab7ca7667721f67614834c511b657 undefined
-cac67ac6540c8e5f9b462edee095643e3ca4afc5f90aab37538c711dbe3a54fe undefined
-c70a7296986e826c0b80df19a0c57c95f06584e83476bcbaac9247620aeb5775 undefined
-6df038af3dcc4b2e769c9acd99e9eff89e433d1edd294c2a05ba35e585a62a95 undefined
-fe731642e77885fc6c0a80f8bb9f9fffe6e722dd23dcb8f9421fbdbde2d7e887 undefined
-e12e0e1105d8ad5be4dd96b46d61e645bfc94422586b89387bda1877f9604499 undefined
-a8e4f0efaa70a225406b3dbe8f73f7e5123a4e49ac21500b6de06d4fc2d903dd undefined
-8078ec7bcbde5fe6ec5370ec696d7e85ce43eae66f307a2044c4886dd8c5e31f undefined
-86a9a5c1bec3bf574994b04cb613ca80de87c05380659d92c4fc8cff1d61e450 undefined
-aa5f5d2617345b212ccc73a2026985c348b32fa0509b91ff3a411278eb8148e9 undefined
-e2aa66cb754965f43df4aba79a7066b6bb2a954c17f3256bc7af7d986f91a529 undefined
-4444a2e9c6951fdd83046749add9f6615bffe47e051588ad7c8b710f51244cd2 undefined
-8d61a0e436b1210e5a9dd0b6e90c08b3c3788c43d87ebbc95a3cee312bc4f842 undefined
-9b3496cd5d4f712518d40e00f47ffc821d11e9f26d2b8476ef06277b5cb542ad undefined
-2726cf36edfed882096127467cc1a6800fc0e587fc8cbbbdea89b41ee39d06e5 undefined
-58bc731432a0e66bef02eb6170dd9901d282dbd6910e3181674eb33827baf15e undefined
-9c0b279367992868efbdd73a487fe5a64c66427ad07f48584f78cd1853e1391f undefined
-6f301428b2b1644ed899b474e3b790b66df64fa6fdfbb6e8cbb7f06865704deb undefined
-c3f0a973b4a4b5f0a28569b6ffb1087826ea0927ab5cebd1c2d8e707740d0742 undefined
-19e516762b5b7df0c4ea48ec76e98c842b6414af3aaa0dba9d0bee1b0a600e4f undefined
-b7f808a6cbd537cd11a01ed8838dbcd88cc1e92cd0ab7a0e05d0875695595758 undefined
-2bf31fe90092fc6340ccdeed771618e1cbf01ecf66430029af72a8a06aae4251 undefined
-f3ecbd51f881c845c9d9149ae54d01ad49243f87c3558685a4a38f712e4c179a undefined
-bb7a4ab9d9c57b0646710610e663e933706e334811cc2280fa0ff2aec0c70ae2 undefined
-fbfe5a5c6f403ab4947ea427dce24854712939d74a093d4ca93bc51fa54576a8 undefined
-9077e6d850ab7d32a056d36b94b09ddfbba9c853ac459ba96fbbb82823bffff4 undefined
-a52f4db9c55bc6da2062ede3f417de2ba6efd3f3cf66858e838c028694cc7e8f undefined
-c178510c4218367397c4b302131cfc6edb75905e99d32a75a08028e57b7c3851 undefined
-722cf3e67df09878b93b0a0cb3b8f45715b5e87cb41e46f6b887db23862a1be1 undefined
-54b21dd6b51a13ce3e292de17c5d26b83dc9b781ebfd5ffcdade093bb21717ab undefined
-e6e4112078467bd324eba3ddccde1c58e4d5240549f03341087ec8162a1a1e82 undefined
-c4e4b80c783e7b2336bfdcd73e7f2a9b27d8595d14b80c890525c3002983030c undefined
-b31dd9d65230e1b41d2c1dd549ae2f859c4e1c98275a71c6c11684c6e36c592a undefined
-64d26fda2df50a74881bfb050629520de5f3cad643ac7237cb0d6e3bf8aba01f undefined
-62110ce4a4dab1ef664cb7bc2da18167b0d063463b3bbea1aa9bad8d36cb9864 undefined
-26f9784d23cbc673a78dbbb918933f3cb82f056642beff18f4bf95a3654bc8cd undefined
-16c7367b925d05b345cbb3ab3f2d4173794795833a046edcecd1a44cc7f6b302 undefined
-adfca16bbf99372a0c7a07835c62b88ebe0d580247565272e85fe2af706c0a7c undefined
-5c2ea130dbd8862da52049fe2a9a9b2592e23474cb87455b9a70847cb05ba142 undefined
-0375c946f2f1556dc411e9883304ead6cc634273c2756247292a7bbaf4c1e37a undefined
-1cbb522820f55afb2f18d0df90ff59b930b171f1710b695105975a33e9dadf64 undefined
-dd2da040b2dc487613cb4a17ccbc8a827b538ba0ae11deb4eabc74ff8227a45e undefined
-677a1f017beaad4d6fa4653210b0383aa042567032beacdb06ac3e59e0281643 undefined
-4f055e7428f5b2f29f394bedc6ed50c022b0565154a26dfbde934c558d9310cb undefined
-657ed6efc8cad38a4d1949d800c12dafb86f45de682ab586a94e0feb0aa8d885 undefined
-4dd4412c246d63cb6071af8351aab123fea86dd58f8cbcbcb6d593ac6d8ca29d undefined
-66627740368ac9b400cd26bfd37d7199f11c01adbc55253ac80a42286e3639d6 undefined
-b4179537bec41548e043bf6f18a139cd11b49de16626c26e6cc06f168cfca747 undefined
-f552f0bc751f9cd9765f30c6f1ecb264e07d92e8365226d6588fe7c3839a0543 undefined
-1175c3fe781c4b84883af1647a4b190c22252b17f3420c45d4e6d5d36b646add undefined
-95a40dc0450f897fecb9d929bdfe728ffbb1c133cc5af34c09ea821c70cf5e84 undefined
-3152dc4fcf202dba72da601df33e8564f85c0730ec3e2355bd46005a3df96768 undefined
-cb61f64e2d6df25c8d8f80a55536dfb606a974ac9f00a45795c477445e4df6ee undefined
-e36af04e3daddca54fb08f931f87afabcaf77c6c7e55a1dfa4a0b301ece31c8d undefined
-33733ca2b4064a190c2eef4ae29dbf8a07832498d25b4858edf9149f288f9508 undefined
-628ecb7fb3fe555fd24287adf5514b40c0c6a658bb7ec970eac6c76ce2bf8d3d undefined
-2470b167bd014a8ee85e0f9c44903176d682705e37679c7a23e2656abe0adebe undefined
-409ff1b300ba6230b9089ff16d8100e23804dc1af9964e182be37a1f97497c1a undefined
-c1fe513e8f78c891df95829ef2f32340129119c0a529c6267177f5bc8545a179 undefined
-bfb7d323d5ce433b947fbfe9556a499f054f0041fe162c85ee1aa27e9f1c4004 undefined
-792e9a69fd179f30e89253edbf11cdf020d3b9bb677171f6daff639790d15db0 undefined
-52b614b32d031addea84155d727035de69c0b8a727033deb07a9045513d50e72 undefined
-3966c2b7764275f00bbb0f2ce2c8cb19e07689ed82c5a6e4997033c2c1c2b418 undefined
-4f8a18c7b5a917aad9dd86061299d2181573da6faed942e14eb6fdfcc115142e undefined
-374c1d81243611fb7208ed6c7bab21ea3e2135d69cc9e578c458919d448c42cd undefined
-92af99ff35077e0937f4be1883607f069d5b3e2a5fa51ef0692469a5a523c422 undefined
-ce5c8c4e4d210b10698a4ba60655d6281b1be0c4ac909e3fdf63296ab8dbd78c undefined
-96ae84f20c50637c7f804bf31e2edc724b20dcd692b306ca7a7d45b703fef671 undefined
-2377a34ea6ad923f2dcc53438b4a7c04da973e295cc9edb3df992a3125ec8162 undefined
-0bc22b222a148b4019531bc9980ab272e3b612244cf224ced1e0098f28107347 undefined
-786d686a39ed8d2c2c35dac380ff2002e6a322e5a2e5ccead291d133aff56245 undefined
-2ca47eb7aae7d9959a7ac6c73e2e9c06f41a18f72e10467f9d9e735edab1e07a undefined
-9bd0518e29a4aeb1592f26028fe04a996534e5c0845e3ca8615030f84159a03e undefined
-07f04ef2d00a4d011dfe6cd3bba24c0797c444ff67d9ae59983f98702c21c279 undefined
-b6566b4a265bb8cb54ba1ec6f9c7751ae37044350d683824685773fd5b8106a1 undefined
-ed0d3466c76cb67f3e1879fdc4b6d35b61b1dc039a84e93dc6c41cd5dee481ce undefined
-b9fc3fa6a8163347bb4b01a85321cd26a6e3fc89554923c721c969df00b7be84 undefined
-9c68211506b84345e3b6715bdb8bc515595cfdc7ac365711e10de5d11e3b0f04 undefined
-0cc332984251d2bf9b9019b74ea50b31060fac012b662a150e3ae875bc3a66ba undefined
-7c20bb24fb778b168b56c88e08b081ba180b7a30a31163a00f101247a649c6bd undefined
-825fcebb5bc1cf4cdf84be2684944a8258d06a44840d95c90a098958231a648b undefined
-87d6362bef5bac468c9d932f687c340d8f86c4b8aa6f155b518922ab10d99bec undefined
-27fda03d0f28475f36a0f1e4ca7d75e2206b5f7f4193de327ceaa63671217f75 undefined
-98d36c5470623dbcc1c076570fb3708d2f6d97f0146a5cd78f473ca1ccd3f8f0 undefined
-de1bfcc1b452d099e63caee09c24be443b4f5c4b544855c11aec503720898eb8 undefined
-270f98d3583a38402b8cce3153cd8c9de511fd14bf0461d10fb385b8fe0006a3 undefined
-047d7fe1005da3e018f86cd5b548d035c9b7a42287c13d7a72014c26d00fba17 undefined
-8ad68f8055a57537dc155dfd1c77dc503df560a3e22b03afdcf6de0e50392b03 undefined
-58f4ac2cc24d4554b0681d9f8fd07aef1b82c0b8d6a3964e4d6bf609e5b7b2ea undefined
-66c9aca9461f67328e31b2caefa9e86cc00d5f8bff2e16ade65d19b3fd250d73 undefined
-72f8f71d41b7b3f5e046167be20ff4dbdfb77753cef60a2589bb22ba653d7af5 undefined
-7003a2f88437399dfcccf81862b816c0654ef24f64b7ebec26f22ae89c9b5374 undefined
-198dde0bb8c7dcb79d693691720d7a99cb352ed252f67baa9b68e5a12f33837c undefined
-24666612886c15539ea833c92af4994addda24afd388bfc86dca9785ff6bf262 undefined
-8d690014f20fea00d0fbbf0cc6bb9715996d24facdc45a15520ce676a23260c4 undefined
-f525058d390af94a75f1906c74ff870dc0d5a0f2f4d45ba04a38d7f1f731ea2b undefined
-47bbab26cfba7923d0f8a6176d9723201b521fbe2bc0ad5a514287fdafca5608 undefined
-6f021f49fc27ad707b4aedd388f3454d9fe5e52c352b1accc375c79f8b446e08 undefined
-1df4b72f55e1d76aafbb13ddbcdb086a33d2f087362c4bf304ff28e8342f6875 undefined
-bbfcb2cfb291c8c458e91a313bd82da14727f7f8268bf583d4fd7ada9f826c58 undefined
-ccdbe3dbdb920ea76a8a64a5bda6c1172a94211b407039eca237457e2915f34f undefined
-07e1cfcd356e4897f3efcf8ffc404dbec37f27dd38461b62d634b4dce71ffbd7 undefined
-a44dc45e349aba28e5e7d6f552f887e5d7343a480dbde20d931dbaba350654bb undefined
-d85f5349c520f169e5c350c1c6928b687eae9bbb3c679631c3263f8ddd54287c undefined
-e455c88f7c33a466ba412ac2c0cf9b5cbfccd8bb6b7531d3a7bd0ce4c5610b74 undefined
-910d0a0891c78e14aef6af80888b25be29ea6010d1dace8fde610aa912c3a66c undefined
-a48a2528c796254800bae793a7edfb390ca8f06c5b7ba3c477c5327907cf2d5a undefined
-81b0280e85847e359e9fa9157001db852cb0bf906bcd3062d14a23d18886174e undefined
-cdcb83396359d2c7be000b0245abf47d6f075e80943ef39fc71224b4f118b962 undefined
-5acf1981795cc1fedb3e22b4b3b9d388b1be5bf48a3c875df9ad16aa6c152525 undefined
-a39ec68bf3a41e06f6aee699db0a78b0a41ace4ca88190ac814d8a2e8b3caefa undefined
-379f9bf0d90e0cabbd3230dc6d3cc9eabcfe15e56c92a1960ca6afef50cf073e undefined
-c6d276366c9f85493774b0ff226d27cc221518f51f806345a80a3d4afbc8e244 undefined
-56fcd8ba78ccbc7aed6858642d07d1ad015cdb9bee8b6210a0ab73595d5a4843 undefined
-799b66c1e465ca4834edc76b615b8fc70e7a1d3fc055877cd65dec91260a3a33 undefined
-b2482186dfe90e8cfccfb9b9804510594718bf4588f19520efece22bf140e8b9 undefined
-67b6de2e175d6580bd368e1227366a66ff046debc2bd3f59cfeee50b322ba8c7 undefined
-0e38af36eb8e61888d2b5db09c823d38f6234cdfa789fc38e1f5db47e5940e25 undefined
-12f91f008abdd94e21aaa617c567cbc413158c15772d806f8db63f0341c86e45 undefined
-e0b6588fd95f8be1c4b57db2d91cf62102ec864e081855463fc677742f3dfd87 undefined
-ec13b6e123be8dc4558a058c14908610e2019f3e4eea72b43ab6479d5498aefd undefined
-c400c16a55f8e0e651677b3b76e7e99ecda4e7c887a383a78220d5a5089c3924 undefined
-d0112be6afbdc5f1c07180c3e70b92b2cf35f3b93275e2fc49fc5089beca1d4f undefined
-b377ac652a50569051bd200cf52694aca6018391722c805bf261ffc9f8b120e0 undefined
-cf8decd20e947969dd6086cd2d9529ac5466987b085abc37572fe8f3ff2beddf undefined
-bae9d99979ec7d5575c6945bf5124b91275b6d1740332f13c5f627341e9f497d undefined
-4a4c1c43094d152dff46291010814d7855590dcdd4a08efbc60314b5d9299162 undefined
-90bfe8f1fd2d2a3bf71bbb59a000d43ec049f39f9a288ed83c86b6548d22d779 undefined
-781a71817ed486d1e7b9a7fce02e01843f0c4fc22441873e91a01913c7de1ead undefined
-3cb981e19d4b304ad5408edc60e327097c0628328653d9753730c7c1236bcaf4 undefined
-30ea62f0e6c5bb12e7b1d5205de05a456ab4c6f8410ee86cab813917a692e3fc undefined
-49e565fb9977df86092eb9cab4f9cc43e698eb801f1723fa86b7a751454702b8 undefined
-cc69081d38dbefd835b1a9f02f7e4bb576e60b5180a0988b06cb5617c43c13c4 undefined
-f9e2751e13c35a7d1b22e1622c994ecc5b477a2f0841c153d642c18e7348c8e2 undefined
-4bec573fa61573e45a017c5e406c3c5254df7a5a07e74ef734da60b259b74109 undefined
-31a8df90bf1c7620a14ca90be8a2c86512e7d2498ba7b55a2eb8985b14b1923b undefined
-a64e0628960f180403d41ccf0911220653b8973651f6ff0c9484637d4d508ff9 undefined
-ad36ab51d1e97afdfdd0e83d619ca856d8e9cdc0bf5f184b55b0c8a2fb2ee1b8 undefined
-fcd3bc746c8e4b9c577dbaaab891a5aad9c5d8079c9a67790bbb9fa394155ad0 undefined
-d8665674a68ea8c959be686e89548133668d085fbf15a75a1ec3187069bcb3f2 undefined
-cc0e8c9a8a0dccaa0bbe6b1903d161dbce6c38bcebd363dec8945c7cd0749d31 undefined
-137dbd23789ce058c996ea21907afd4c58ae2aeb2d3dedc8b88b5f945faaa0c2 undefined
-260bd1a0ce7be0e77b2f22390420bf0d96c0249090fb3c33136ed8d69fdf8bfa undefined
-99b108bb6a20d98a983c3784ecbb7c9175312f478dab3599b5c39ba6b5a18850 undefined
-d1bd823c740ac0bafa3b9bb0bbc44e9fce6671ec13efc5f0059de03782bd7264 undefined
-ac7f5676560947160a255bdf9850b0513fde7c4c90123795bc74d785cadbccfa undefined
-ed60bb9d8f014a284cba53821937640354571e79c5a005feae494696efcd54e7 undefined
-2a208698cc318dcfd9f831380fb1f37df9630f61b884429aaa1885bff13a4797 undefined
-14463b2782cece3497d507efeefb44c08a66fc4d02173322e1a62bd1e9f5a0af undefined
-2f78ab6c09b8d8ef2e0e3b4264ff9a2f5674621f28256079cbe1a1f63265fdba undefined
-56c470b7a56d7283fb6f6ab6ece3829d910d6b7163717ed324b5ced956c4a268 undefined
-275aed5c3c5a43bb86c6ea6f41a4174f9c18cbcb451ca1c4f8029276a2ae555d undefined
-b0e4e76f5e4fb914d757dafd04763aaf37e5b9046fe762d45813fb8743ffe8b7 undefined
-0d0c60a370d28e774a64bc0cd1df0570d30b336aa14def706c553680ac96beac undefined
-c274f068cc4e7daee8a4fd944325798d5ced54570fd457b9e22aab3458c99b6d undefined
-5c364bfb8570311fa94bbfbae41957408c19dc9985ac76f027f0b0f4225332a0 undefined
-c9556267ea1c5f3c31a9fc87d1811368c5ab1bdb74128a706a9003d3206faf37 undefined
-d0a53296b2387773d34494f83f5faf6289526594d398ef960448e0071761fb92 undefined
-093af03c7ca81d4ec9877d32aab481dc3d3d3442d6baa8153482c7469e927268 undefined
-6592863a510168ed77559fd9d77e9d74cdf810197f1feaeb08dd06a8659623c3 undefined
-5e8267643b2dee564db884dc22f63d52d791b1ab07e279f8eb2cee528955133c undefined
-00a5a9dc2f196df2f7296328932b95770607cd5ba2adc5c76870dac56cac0326 undefined
-b63ca523a263ad66ef33ae231e356df16eb1cac13096dd1826a9214c506948b7 undefined
-245ec774237bbf087562b266cdc712099e7987d079b8879d0ab49dccb090af21 undefined
-9ce3044129ffa951443e5baba0279bf75cdf3b00a5e582d9b4c3440a1fd7975f undefined
-2d0033bb7914f738c149b1547d87953a3614cf67fbf2998bb70ee4771e477611 undefined
-9139237f33a395d9236952a913f768f246397dc4e288a0a5d7430818bfcb2bea undefined
-9033b23ff21c78cc36bfa82dfff7cec176301c1a143d297134475dc867a43e99 undefined
-66b98eb49bfad7d7b4f3eb7ea93dc2a18a0c9891e9ef68a6d18d5e02149c782a undefined
-5f8d82904f27753c12bc7a11fac5f707bf9bc7b62cf04f32400eaa5a6f5d7af5 undefined
-ae61872a1eacf7a100fe00971959b7f36ce43efc78f4d05ad80d4d7107414915 undefined
-245907a53a6390182f78b771a9830511a40f4f1956a8f155ac3681729693b18d undefined
-78770be15e00a452043fcec54bbf4756b53a77513e12365ca436b8a35ef30a52 undefined
-43432fa771ed74fecc8c63e56dc8abefc1c1af4621ebedd20c5c364382ace405 undefined
-4d8dc8637e52f71573ecc9a8938e7fa21e7fda2910b0d4b36d0c97a838fdd7df undefined
-cb47a5debe5abfc8cae5661d1eb20c2c33119be184ea1711977d590632a105c3 undefined
-4b8e71c1576903c08481ba169f8cff05b1e4642f571ee7c8d322a392b883a5b4 undefined
-01d3e96be1163fcd62cd05f501d1caf141961e0afcee9c56e72f575870ad3f72 undefined
-619376037b7d01fdeedee4c3c956212e65f07ddab7f7b55148fea6f2363e4b42 undefined
-a2f31353fec97041f89ce85c8740c3e19b362a9d26f2cbadbb1b1c1f35f9e5ab undefined
-c470cdb0ddc34cd9d4d5eefb9c92ff428690f1d4c7e57156ac83d1deeb2a3045 undefined
-2a44e99917d2525346da3eca4c77746316ad4f97bc1b7040ba033a9dfc45cc84 undefined
-0d35ea96962bd7d8161a0592c2009a1aec821d920f40d6d90036ed8953297ec7 undefined
-192872824d9b288270be345eb0adc7a9f5b92ebba5483c66fae50c1ccbf55afb undefined
-71ef9bb04503f25c96d2d1a6fc2da48b2c7571ba9f094804fa288062f4026d98 undefined
-c7b41c7bd8657bea4741859cae911fa323c7671a672b3ced66ab30c3d5dd9550 undefined
-5ba46187e72452d5f27dd47ec3681f2dcfb7a3d310f15cc4a831fcddaf61f681 undefined
-cd870258750cd38dcdd310ef11c0fb69ecd87289f39bb7e1e5b0882ec62a85f0 undefined
-12853c2139e005c3ead07941c30906ea90bd4d389c8e975fc6e28013fe9c961b undefined
-463009a4fba0ab6d623ed000329a0c14a0a07f90b571b9637f013d589c421498 undefined
-14e4c43cdcc794531ce0978a7d0e11a1c1da9f9d8bdc8d1e916f557f148873e6 undefined
-912900233be19e3747adff5453941f70068a9f0c46c4c28be41aa4961316ed65 undefined
-b5a6f8293ffcb5f9e42c00569463037f88367ae0729abd4c66b00bf3e600d393 undefined
-2e3833c67dc70d166e743c9b8c8dbee8a920e29bfc57b38f67035f57514b285b undefined
-2547c4fd8f0820683d0b39a776f307bb6d4acee418eef1ce5bb327facd8fcc3a undefined
-b7b4bcf9dea5d901bf17617115a0a8ce2b80a0ce6d5a244073358e907f740529 undefined
-53f0a1501c28425fccbfb9eed10cd213c7539e396d0319dd80740d9d25039f60 undefined
-da8fa891c11774e7769fcba702feaa7f66102e92861a7a615c2902b992415149 undefined
-fb5acce9eb4363a31272f5a5364142d25bb32e4acfc79c5ef0cf0dd0921cc94c undefined
-5104bdaa13f296098088165e3e81bbf17742c7e566a3d24c9edba9e9f2e3782d undefined
-ec966aa796363108c47e5c364cafbf143499ce512e862040bac351ceb8e10f81 undefined
-d684c2845d7d3aaa139e6f350189553a442c2296c0ab348566c1dab6864b1c16 undefined
-4d7d969e9d75eaa3b31fde0567163e7b322ebf81fd43332150cd52ceec0b66de undefined
-3e9199ef3c66bb1f19de854e3ae3e952c0737ec44577c6e0793001fd5f96f890 undefined
-0e090346953cf4197514bf2083166bed7b09d94991a29fce88e679630ab45527 undefined
-408c2dd0b5425d1bdbb1a65bb1c01ba7cad4ccac79b4cc21082b2b8b12403299 undefined
-7d55d2b4e5419c21320ff5417124206279f9a257696ff353a87d50e25196e84f undefined
-62e2dd76ca2517c8bf5a411d1186122a238e61bc26d67f32a70c34d3e7061eb7 undefined
-b5c6f4ceee10c9299a13ca8aa213f9ee8e91e380d45cb4ad19b92173f3732bba undefined
-fc72103be5121dbff2de480a0d935f1314f02fc3b722fd80a85d6a6be582b657 undefined
-f94c67d37796194602c3e315a84a3d39def2a6788bc5bc78531af65a5fa44912 undefined
-833b71d1f902d03e9d4b1316df4eba64753f1fbf9273b0715de0682f3dbf0152 undefined
-627d9c465bb4d8990d8c91a62c998be0baafa99f1e02febf8391481888a28aa0 undefined
-d29512ee6afc22012c9feda6886d9e43dcc7b5c98a9c8c1957c6a7c1bbab20c1 undefined
-2e09c1838d2235f4ce86a9613a870f982a5c4214fec6a1e2ddc46c29333c2108 undefined
-9b3a178931261ac7efdd711a944e6cd2c4a31ce6c1f6e6c3edbca14e78864e8c undefined
-abc4e43c2aa42318aaecde88e1ece00ac922c5a10210958c191247640ecb53af undefined
-4cd485e9e776ce295c1f33646a486abe5bb3ae1747a0e424b4de535a704922fe undefined
-916b5cd2c7f6380554151f0c10f8fcf42720a3d986577deb3bfb70c739b87aaf undefined
-f421da57ad08d32809287cfed61ac6fbeb44204501cb82853b3d7dbcc176ee56 undefined
-b464649208c59ab9bc1a42128a2ec2aacfd15a398c67e5763d8fd6f689551aed undefined
-f6e402c694bb175237eb0ad382bafc9f763096205e15957035d246b4aac9e146 undefined
-7355ffd9e0de822abb349894b4a5bfe901b5bfd03df5bce197616eb5440a1766 undefined
-1156232d9837ea8623447d131e7c2392950c632668563e6805d09d462548191b undefined
-646ca19cd655d79013cfbec5e2eff5f7ec8886907bf920dadff3eef38a48356f undefined
-5df0b97a797d41efd0bd58027bbe73445281bdcd83eb3020534040a5c55a7c84 undefined
-33ec84c5e56e81f0b28901a72071e13e9d6a717579092c022923a1156f55434e undefined
-e73962e74abd3f3789445662bf73cd764dbad5700b57d10291ce6dabaaf09eaf undefined
-80ee544cfd1f98ab8aee553bee0e4be5d1fea5efb00cc98fe1fa9c753fc1a28e undefined
-3d066e2557439934162c92e0bce8be18508cf4f72b85f7732eb776d2c60f2633 undefined
-2f040999d144a71ce4156a213e2c8a393f70184f47eacc02688f84073d4f2ddc undefined
-78debe7afc83eb68b456d8c920d47f0171b24162b2917af99fd3cf6336830f2c undefined
-c0de163584166553601e044448b2f5c15e179f6cac8ca1bed812f3f745763f81 undefined
-b1941901d5f77d2e0f6110e360c8ca2b4f7ac0bc7d3332b5b618743c29497b57 undefined
-bde01022549fb8818a316306b5b60d2e5f677e6b64440d0e67ac3cb4fb3224fb undefined
-9b2b06b01729654f6cbfcd53c9507abad666b67af370640971fad02be9704141 undefined
-44ed0e83831c274a03ec139e743a25ba52b1e87c5cd86aed1097906f0b5319de undefined
-849916436996349108ba073bcd50ff5c715e54eba076ec16c6e6ffb8bd7142da undefined
-b3680e9566d079a0fd019cef26cf54e4159eacc5941a12d370c97594a890adec undefined
-7d69b213244f9c8ecec2aab524fced2ae4df51687dfe0f76cf3903f7095cfadb undefined
-8ba601c30ec96085a340739887a133b6ed9dd0c40b82c32216b9a4aed55ae75c undefined
-90ad6983e5b22de24ef7ca7fa69028253b77a14c05da11a9da39bb73e69ca9e6 undefined
-f39964b2572d9366bb69b17532cb4d92dcc87f19d9d2a480541637bf1acda039 undefined
-d87730236321d4221494e51169295aa3b1e0c05ed211bce1ea1644a57531c7e1 undefined
-8203ede15c3bd4c6d1d9ad85b4a56ddf34452afb737a83de0bd922069cf14ad0 undefined
-29f7de27ba2951be7e8dc2457e8449c2d84c038f7150213bac16e0ab657a6944 undefined
-b73269374468f9d90eb83f42d5e42b91b452596fdde4160e7192483d65993738 undefined
-82877bc8029fb957a59a43092ce92dbdee5b6ac2781aade5bb0c3d1f2d859f0b undefined
-ec9b585a098985c4c55cc4e3bb01125d2758311a4a1e912aeef95d7ddc05ee47 undefined
-3db6f281c4ba7d1803980e8cdebad49293818e33937f3c54073ab3fcbeea7391 undefined
-f1b2ce603ae2c821d4a6920795151c71c10781594350b7f2b3e37901647f5bfa undefined
-b3b2bb5ad7ea0034a22a8b1c00d077c54129850746b4d6328727ad665d86dbac undefined
-f454173f62642f3017d5d0e80d938f5b501644472478e538ae3102e5cd369a07 undefined
-7a4243f1a9e20d53dcadaf3f363f1d8d4d55e41b96d219e4b8543b769a0668a2 undefined
-10819c159a18418110ee380acd16910333fb391a770abd1a7e1c7370b53cb906 undefined
-f4a6558da811dd42ba8667db03f669f4b5c309381ec56c9b6c00935182dea012 undefined
-6d20d2afe6cf2ebad99aca5cb3f551db59d3b5c9b419bd6a8b7752a415265860 undefined
-d5c8e80c042ed2095581d4d1f626b734ca8c249816e0ecf0001f98ffc9e0eb18 undefined
-377a7742d66eefd442785ede5fc5118aeb70665fe100258d8a45d883876fed85 undefined
-edfbc02bd8343eb3dd2e64e46a6418304b9ee2bb70992d4b7deb9453b83d4b55 undefined
-d6d41ad57ca7b3b13a4534da5ed5fff0b140348be96db17416409f4e71e840a4 undefined
-93b49ee8eb36ab5f4441c72a0278a5cd6416ebc8981dae59410faf31e5e6d67d undefined
-3a8b92e15be07cb3626baf0aa429a20956f53da66a9755d7e933e6d9d26ec556 undefined
-e9589400a35960df1c1bc0c521bc816ecaa8014c9fb028ae75b98c2a13cd5fda undefined
-6485c1da5e7d6434fe608fcb88d8683dbc73ecb396cb0f1c83df4f81cc7866c9 undefined
-d463f233697595e5544dfbd9d0ec124b3538f78563d0f6cc4adade9d5eac475a undefined
-5b49406a7eb8a790fd4fd0148902ae5ea865eabea2b0ca1aea9022b90e666b34 undefined
-a82c279636fb2f5069f1d350f630d9c6c35fe821dbaebafbf7bd101483b1617e undefined
-4f49be86a82293d022d574e33636164e34b5e2bfac02e928597933bcbd2bcd67 undefined
-089ee86d99bbe6819e303e53530be821fa0d1dea1b88871c28116c6bd2d643ca undefined
-6db0b5365c86526ad6c01b7ac9bf47de8951166f3f38a951396199d86646d2f8 undefined
-662710e2a42708297f0bb4658f4d889e3720b8405f28826458d6de8a73e460ab undefined
-761add8865ca238dfab91dd6f33d980ac5e3a2ebd90652a9afcdf73dfa2a8c50 undefined
-774ed9ce9f57c5d7cf3a86ca64be41daf82e9d9620c356bc7ffcc4bad50c800b undefined
-a4b4b61cf9e9de882cb9b36773f6d9bb6406b9f6460bfb29d8969ae313d0fd4a undefined
-493ceb5549198e8c7302322757997f7be25731ceadbd41be780dc28bb280add0 undefined
-26b669bd6939831782dbf86575e19960935a72a57fb273cf1066890af770749a undefined
-58a38e87ab24ccf6a7b4bb98d21d55c380a47439ab509f95471611dd6e7ba847 undefined
-9701f4a57f1c511012bbda71bec18b5135529987bec7b288c170b614cb67a4f6 undefined
-a513e31ce441d7f1ac4a17fb5659f9776a726caf7b38dcb1e7aec3a67d2d2518 undefined
-1c9c74ece51210ec57d018bc720af75454b3d04e2585e2143831beb3a3b6e22e undefined
-f11ad08f058e3ad88b22925f4942ad1994e2d691371aed40b2c84a6f820b4111 undefined
-08785a383e248989e6bee738819cee17efe73a992910d75e7903e149f89fe27e undefined
-50c25c328663befe7b3d17c5dc616848d1306be2d5c1628b41c86f6fef6996b8 undefined
-5200575e092eecc230522afba8d372cfdddb49713e448b97c75975f4e91fd753 undefined
-aaaed3e95a3653eb0414f1b14c99f4eb09b6f18077513fa0acf7e1a79399983e undefined
-e28c2fd37a1e1660a5279f7ba701ef9bed44cee85dc6d26311c272e11756c42a undefined
-654a9aebe36023f68fe9e6d5759a25f66023681cc47472a8eadf86345f22c6a4 undefined
-e126579572da7182a76803b97f5d0fac6fd65c49ca14524ab1ef0c4b1b211af1 undefined
-b847fb21dfd6657ef3ed6a92b941e810fc73ef418c808486cd17273525920823 undefined
-7fd60bb26867d35731c21e2e699fbb3efc44be86f3471b19e6683166d9841faa undefined
-54be036373fc377d40b1dc183b6afe69231a769e1d5719426ef7e397cdb777f6 undefined
-bb0d17d55803f8a52e186e01f3379615a4a7137126c6c8f98ea7a9a961dafa4d undefined
-cab8b55d17860a7e66a01e99acc5d0321b809a99054f03e6acb51305eec1dda6 undefined
-96456f55add02cbc6353457b947fbe6f64ef4b5cac4b972cfc30e2b1869ea048 undefined
-daa481a0b9a978b09ad099b2e65ee021009dddb328fab35f2618e325bd176bfc undefined
-74d156d213b9a456d6f453e20ab454613b6194fcc979993357690a5d09d1bc42 undefined
-29d3890cf770d6cf79619f3a7db18304c56520a3f92d3a71dcd854c9c40768e7 undefined
-e417240d3989be794427c2ecd215315aab06da52bb1566ca939fe0d4daf0c742 undefined
-db6def52d214515373a5e805ad4600aa66dbea787e0ebfc738f4457b2b9df231 undefined
-746ac6a62022c28a98f17edc12632c52d63d23e56af250134688a66656050a40 undefined
-4b09175922bcfa3394f236b56eb47216821aca8b0532d4b631087fd2b7b9656b undefined
-c66c0faa10e3d00d69a0d0d6ffe480981b44b2123dd6f45da3574c13d9396c38 undefined
-52306355d05fe635b78b9ae8768febdb19e0c384dcc138f1a4ab5e1a8680d683 undefined
-2eb8315f45955a05daa5579f72298457150864c84e376d83be285f181555157c undefined
-448bcd8d2b66325c71867d84ae2887e4d00aad3475b27add66808336238269c1 undefined
-996b99b9910b134a8c509c8e6706216c21e77707c1d28d7e0413bac9e24e9089 undefined
-1db451d59f24f62fc82e4d5f002b05b2439de2fb6962ab32470272f28de8e0d0 undefined
-e6861e90897015f296a4baef07d591a575e394b15831ffe3d8c30de81bdbb3e1 undefined
-09fbbe36c0c754cc833eff6b7eab35b1ab3dd59fba77ba0d9baf6c04a25ba61e undefined
-e40a2aae79ae628aa5e5f1a3750f5d401eb9eacebf94acdfee103ac972628325 undefined
-28ca1cf27bf0b77409a693df566d061108a8c960c5b3891ee07c453743b324b7 undefined
-50b33f82d302dfc0bf13c76b8af23ebad51cf3d7517dd1ca2013b9cac6f9a900 undefined
-e176dbf2919d58205d0ebb629172ba506749068244c1a7606eb9103db320c922 undefined
-1dd7ae346a013777bc640dce18192dabd34517429d570634eea23e741fd40ea3 undefined
-c6b4e19229af864a5e26a271f8b2c0df7cf4106def362cf8d1ebf16ec339c9fa undefined
-0784b3860a57d7e0076f69ab525eff5add9060df461e1be6e9b5ef21eb838068 undefined
-8c2dfd59e2d1610d63aaa88d97876b9e9e9e4ded049372ca2f7b8862942c956d undefined
-9de1da93e12625e09530793646e8d580b9d4431558273ab0ef3251bbdde565f7 undefined
-5cc267bac95a08d21dacfbfb5514e746d92240d30a2d68a6ef79e1809e175778 undefined
-f0d8af3eb85ff520a905d615084b92f5bbe423fcc9b32858171162a78492cb59 undefined
-5b8f297582173959547615154e6361b791c96a1e3bbdc4cf39f394ee1e220159 undefined
-48b0228c4f71f663a44ad507203adb8205a2580bd54adbb70a13c29d6f271097 undefined
-758132cddbdd8f3a1eaa5fc11677edc115279d8333e17aadef826eb947e0de0c undefined
-b87063d065d5f5aa0eeeecec985747709cf3fc66e86c2b6bb54370825b9d505d undefined
-65b5ef11427a066908483d7f94238955c2f2f4a359d2a3f96651f138ebaef2ca undefined
-2e6a572db1113f4077ac4fa9b71204b199a05c24fb20dc7e8f21c06d686d9485 undefined
-edfe45b1e0f41a767323d4fdac1fc1489b5ea1b05af1702df2aba9a59a89225e undefined
-31f710c333325e425abf7f6b907feec884e367e268aa550feefc46a2f48bac8b undefined
-f3aca3447b88a392b4645162b9b1888d83e9002b1917d65f6f17cc8b9d54cb01 undefined
-800a1e475f3463eb03eb70bc6d0db734e4ecfe10658da4f018628906b37b7666 undefined
-4b8d45435ab2b55d1a9477b7236449aab8c63976195098f30095a19cdc66e6b9 undefined
-e56fd7c0037dbca189eda3ebcd441f73ab90c9970c66c4ecd2c21ce3d4ebd64b undefined
-99b67f9e38a29dcce71e9a38da277fc9d69e2365cea645586b34d308e54110a1 undefined
-bd50300e35fff1da63a274a942d95efcbdb48b3eb7b92ebeef1da15975627f90 undefined
-00f85e9521d996d3921af168b164dd955081f5fa4e203766363783b2eecee1c8 undefined
-568a422c54e59287c871c5a752a381a278739891e2c92f7d039f41459a55b729 undefined
-60703a0161992d3c0e121ad3173c2f4db474a902f299d0bce98da6442bdd0d79 undefined
-e05ecc163c69e95f21e237ff72c69ba079d465108174d785ad9df13ce93d30e8 undefined
-da10ed1d1bb87546c3e4d69c1dd705f04d70eae32289114ed99e2dee7425dbe1 undefined
-d8f25809a70a237492ed1d6fddc691a09597da1017c4e552c501d6f39a0b908c undefined
-8fa875dd3c1fc76e074316b21959971e212ae0b31783293a4bd1ed68845c7337 undefined
-ac60e696b0d899662b8e66c8032b19dce491f19b2a8cf48276aea3e3a55f55b6 undefined
-67716e1fedfa3fb655e650615e1fba31da6d3075a7523be111caa67a69f5dd34 undefined
-0067e1d804c900e2a563508e24c296abf8cebe36f5e50e5afc1bcc97f9ee3433 undefined
-7d5889269d7046183280d4548ae75e80a0adc6be7a4a99f969956bbe9b541e9f undefined
-c3be91bf7df6c7b3e8dcb7f5723f624fa5de574faf9cc2a5c7490eb09afd00b8 undefined
-b9c3351d3a86f2824ec462c930b51c6e3ffad71b60d485713b84e590be2d099b undefined
-61c0277263e52c2b108eb40b40679c12a5f7f3f08d26fa12e31809f0c8762e7c undefined
-3e9a28b53e11866cccfba0dfe9b0ae714659e76c0226b70f7259293401801128 undefined
-57017e0edb06fc7740cbb26a9afaa534c201ad82533e0dfda274d1ef590df7a0 undefined
-75ff1a878e5b6201cf24a452d8f7f0d0228fad1ebbee83592d90dce74221f2ae undefined
-96918bf652ce642326fcf3012de7aee3faf1f03cae3d838c76a23afefab9c8e6 undefined
-c3f6d0ae114b90b050011a148440f80a3972c5aaf2e636c50ddc8260e9a31eac undefined
-22d60fbb0c703a6f6dadba8e21ac6b5a029bebb700980ab94ab564604d216249 undefined
-fe00afbfc8341e1657ef864a5277de58d3d63e136f133e6eb0fc99db91a0a88f undefined
-5984a4b9cbf6efd473dbf5cb20336e992304ea89c840171c91bd1823bd724f44 undefined
-e1d6519946c4336c190e7281928b46b19aa40e6feca16384654e273aa4384b63 undefined
-5420221aa9dacb7094007c919158fda53c41bc5506e6becc9de00873923ae7b9 undefined
-9e8bbb211ac0a5c593082175585ee98fe54f5b97594c04cd3b7d4e0995ae7ddd undefined
-3852080996d9507e9925722d6b12cb9796e2c0b4707c3d086d5a11190d1e3d21 undefined
-e9ecfcb839dad543b8f449f0f3127507565409bc547a75848266136d98926735 undefined
-a9717f6f121ee7111e2b6dad79e4ccdedb13bf7a284bf043002fe46871a7a456 undefined
-81361caddfc891a6449176eb42fa5d7498bb9a70fa78c422fecef1c624f719e5 undefined
-90de09c2b8e1ad751cd2d547ed753b2ae3e9dc2860fe0925a7e673d97633543b undefined
-ba9242c9295f26515b95adc94693eec50d27541253e35072fb4874f915ebc987 undefined
-901e583221420c8777b319817f10e8b1c62d100ad649d097c21bc3b3bcf22ea7 undefined
-3d000f0cbe119add0d6c0f1c1eda526302cf995aea232617b060f2ecff1dca41 undefined
-3990e0500a011e3f27b3f96ea327302c31754b847bd22078593efc5d3f53e604 undefined
-c29f5b4df682969fd38c17e2b7886d0b06abbcc69db0d65dafe338fa4a9d6ddf undefined
-939783e574f107c6760679ac380ab035ba69771bba63d80f03e2a12d3d693339 undefined
-d276c3d83ecc7452e917787d87d0f499834ce7ebfa0eba10ff3762a24f99b26f undefined
-a0018cd168c164e6acfa4adf818af71707f859c5bbd4f91b292bac08c1a58dd1 undefined
-61d72489792440076eaf4277c88462e728192578ea0eb012f78491c51345b661 undefined
-49ef816592bd4ade1d093c7c33365cfb542ad2af4b3429acde270e9c393b5da6 undefined
-c3f74cd79ebf04500ff2289aceaab041359401c348095d599045a2348ba93c4c undefined
-b6c94dfd1c2cd52a82168056db24b317ef0aaa43ee67b9fe76447e09a95d9604 undefined
-b512b50de35416bba90dee543aea4593eb3fd2569289c613b382ed4396d1339e undefined
-53ff3933a394f11546d6086dee6a79a66ccb8ee123a22d77c51689b4401b9e66 undefined
-1ee3cb400faa6b32df84f624f72fe5a6253b3a475ed0069bf51ab572750372e2 undefined
-7205aa595567d9e8f37b1a1da0ef4977c5f3262f4ffe94f9e42a0f9ea3d72f96 undefined
-80a5292b1257fa064901450d01286f0e058dde1f60b3d6478aecff058a3cb29a undefined
-38b94d0eaf98c4e0c8f2b35dea068bc8c08088b49715ebca99bf8a9dfef7352e undefined
-08e8139f543457d560ce5a0009e8e6bd23da31c9ceabdeb84fbb31533e2de79e undefined
-ad9362d0d053014315b82f3254b8699160b6aabf41958d371351ad5e381bdf62 undefined
-c16270282b9483f989146c61f5ab5d3df506e83ea64e43267b0308873a77a3bd undefined
-6f695b2fa55378d011fe1993719ae8d69f2b50ea0f90f3da35e8fe3f7b89b0d7 undefined
-9888daaa86c1a2383d588619616086ed96b51dfd5018ce638eeac61ecff65e58 undefined
-fbed56f5baa64b8f2f53fa0e5653bad7b2a3b07b01e3954ec4a8bcb3b0226d6a undefined
-7cd6061c2e3697a12b31f06d50d5a3e295dfe077c6670501cadb6ecd08afcaea undefined
-9e35c8c11be7e022e1f18c1b48dfbc80f0e7fe87ede1f5f65a277bb24561664d undefined
-a3532a28c5f47bead64f397e7e0dbaaa5677ffca3b2eb9547f01d01acc0d28dd undefined
-2bf07e318882fbd142b1fcdfe4ebc94f099a72a3b2f83d94c37e60675d0b284b undefined
-f1f74621bd946830e1194c90e50796701a330c7f8b94c88d3dbc1f27b5808185 undefined
-1772387a0defc0bd3b933fe06599b3fad9c8b69c67e49ab2c1f16cf8827e66a6 undefined
-824c5396e534fc3cc78dc9f583d7a0ed418f40068cc0f6d142f08dd207f38642 undefined
-9fe30e5dfb1eeab137c26b10688d043906f2e8122fb4d77a9e481725ee0306f8 undefined
-8a10e37983a3e146dc1dfc692c2b0b017507d69e05ad69437d8387406f0f3b5b undefined
-9ce7761853e9a3568dee89cf2a95576295023d47ef14a68d438fd6d5bfcc21bc undefined
-28f0869551e455ff386925a7472a69291b62bf92c981b5aee99e747fce9d4d4d undefined
-3c8584c51bb6f121ffa0470068531bdc2c69d19b9c70772f77c638a3e5f6075b undefined
-2eba2958911fcb07c2f7a06fd18316e260daf44e729af6f750b5fdf576acbddb undefined
-ebf9f483843f408dee5d9636abd7e4a564f7ec753a058ef5aeb482a785abd2d0 undefined
-c8f576b21d113f4141d95542eda30283eb042895296c84f55487908e7a986a9e undefined
-e97e701719122e480be7b842162447d3cbd83d1da07d2d467bc484f724e263b8 undefined
-90ae654a7dbeeabadb31dd377b0c14d71b9bd15ac5df8997ddb0cdde22573f13 undefined
-37e8ddf90c20f02a556f49020a08aa325f92ee8fed5abd587178fbe2023c6b8b undefined
-5b990420a5e06f076f1f3ed411089bfc054f01c4266d8d60f6515bdcd286ba17 undefined
-891e23c0b5648b1fc0db2077f9e53917a9311d7a8ae901fb500c788e6461a3aa undefined
-b7a5756a1ba5ecf6ca2b11e14a9bfc7d599fa8d66e9772cc471f320c075fac72 undefined
-20c6dca51d31c5584ae058c4f20a8c075e182908b41328f9bce1c892eec7442e undefined
-38dd685f2e0a59dd2a36bdaceb18d7cf26e67c0d7d590a2ab0a854d9f4c65b7e undefined
-0e50ef4120246b2d0639b6dc83f0259d940cb15d044baa29e8216ab84a8b23c0 undefined
-a056e17b76417b1914ae223034165804277144cdf7a362bd745e7acd26c3cab9 undefined
-1cb4357e11f06034782e3af81e9f214921184b9cf8dc78fd40285cbfc00d4fe3 undefined
+a732e5a8094c52dfde0cbf7bc802383627054b5c7b9b8260117bc4baedecefe4 undefined
+a7441bf34977c48e98ca6eaef666b90a6b90774dca94834c16ecffeee1abee7d undefined
+ca791120df5f865811febabdc7bec8ff5287887e3e6485fa62d81027174d7cc6 undefined
+52d395ed3562a521b4fdaa77989b2762175b7486e4527a3b1f718f01793992e8 undefined
+20dc31ebdd751e53319d595a0fa51e0d26399e49cf9ba2145406486ce9f22873 undefined
+612df0b10318c24c38e4088f3513839143fe4de96d0e5d93a842a3ad18d5ac27 undefined
+7a0b6e7df85e58c5acaefc3df834dc445c882ef18df174b75988e296fd7502d8 undefined
+55d2a545b1b023e7247b8f79a566dd3eda2ee16b4764b3f0b9e3b1bfd1b5b95c undefined
+3358e0965965de5bdb58b846882b94b80a0e26ae0d15cf8b7818401c56c7e495 undefined
+f4edb8c7fe63a16fe26289313c3ce3db7c33e82829d679c454e10ba8383fe83e undefined
+3705c808c17cd597cf02cf71959630b23e996a17f4ff59df7dc9189d55948970 undefined
+d2d218d8672ea83047fb2f76a507f7a3667e5f97fe232024f3037c0b2f556628 undefined
+084559def363a809cec7a29a793e3214369a453a63a9f6da6150382a22444f0d undefined
+127ea8c5335b3b12f99aca3ef608a477966ee21f8d66650f4684f01c8749f0a5 undefined
+31ceafa0ef2a76c9d9e084317862c88c1061a36983757d67fb6020abd8c65ba1 undefined
+1e9fa69e77de70e73ae73368f357d94bbf38e88ffa7464f4600e443b51915acc undefined
+aad14c29d65319907e8e7e35c4ae8e938dd2d7c3786da0132486f25f0a29214a undefined
+4f276eda21818a3bc9ffb4c16d5cf9233b36828449b9970b8674a07b808ec746 undefined
+bb080d0ca88602c349f7f81c459400fb3719139f317380f6d145cdbf21825f7b undefined
+09da07a2215f4b00c0cfc1defa3946acbec5476a30d586e2c157882622c85cdc undefined
+f9eda1391202e1aba3f9b5b438b0337a34c0c846130d3bd5233140158aa08f25 undefined
+efbc4a348300ed13ed8a7f28aaab2d7d646d11e3142456074922b6358b6630b3 undefined
+0a1602a558188feb2bde07c2561246cb4c6eadd9ed062819afdb3f9d2ae3fc13 undefined
+62604004b277c8c402bbcaacd9c8ebf9e3b0507b0f4dbbfb9fb688a50dffc3b9 undefined
+e3c977aced3915167dcc13ffd5dda7d0d144ef27b80ea8e9c29bb5ef18051db0 undefined
+c91e3fcb12a2f8a9142cc7748be391d7355e293bab304f1d2b6812e95e2e47ec undefined
+bd80016ff94b58db49d0c8e536887864b962597f0dba0096d7899d54b66f6f44 undefined
+7e562c7843efda9b59f12425759e4cfb1833978c448d37a9efbdb065ecb31f30 undefined
+41f2cdbc32534d87e9d05d19c404102efc963bac1a23907d95f917775d28a1a7 undefined
+e4e9f7e2f3e8f95f413d0373abeb8b5ee47d967357863232936542b763ff51e8 undefined
+1546be83fa4facdcef6d4a175b135c114657b7fef852ed20a2768871d6f1bece undefined
+cefc7a92441c4c0af03bf3d9db6c9414d79a5a7a1d8440dc65ff4cb4d5034378 undefined
+74b4d511e68e3a00a62f6fe264105c043bbeb132034025f167dc552a02c191e2 undefined
+3d8466133c949a3f4befcecb1400d265e6dd87753fe497d75cf3bfab4733d479 undefined
+da901be5b5154f50d7ac2825d54725325bc82cd2faafccb21cdea67d75b69b68 undefined
+1c2cf252a4f959d0add05ea4e6cc3a7dd5bab6e553fe28d8ec66005b5a965160 undefined
+27f6e91c830f6eeccb0ff37b600f12ff5d16f00c41e8f356519d12bdc52d31a6 undefined
+8d4b291b3dd1d24fcacbad313bff8c8cddb9453cfc3852f9f5fb925545579476 undefined
+9ab72006a1bc4a99f664509f9ba76c869ccd11e0efb1f8c8a6c36bc9e225c6b2 undefined
+f35407265f6e9c51ba99cf995676fa535c0a976a427f2ac988a61126e59e0557 undefined
+038f66856c15fae41d4bfb53e9318bb087203ce41390f66b332599ecba70217e undefined
+dbcbcb6f992b69040d9b06cf9df2d37b89a5ef33d1b675184a2a8a303eb64282 undefined
+342e1bdc504e2e41470c0a51056db6e428313ec788f8e6eda1883a9c36bd2879 undefined
+ef90f0ee0cbe800116ce72e80599cbb1a53309b4a69392775f91a6a5ea31a452 undefined
+c09c71633ea39a0be35387a3834f7ded3a5396c849f9d3efd6377feb245ec865 undefined
+d31f5a3979ab2fb875f5949566dd6283309ccc4ab05d8d1ec4d2bfab7242b06b undefined
+9fa11c66cce08ccf01566dd9f283768bbe45b4da1e25121518cbc1fc7a2cfe8f undefined
+37e5b92ef722bb5068e9ad2ab61ddaa47bf941a55bbc5d25b11135f98fd046df undefined
+52deeff887dfedbbbb559304796e9fd711dcee8649dfbd40640356ef3c116906 undefined
+d924dc124df2d7101760c1788df0a3c720c83208e20ba7789f02c8db75cff775 undefined
+be5e809f50a457e712bbd6d6488835f091e59e2ddbfac688c508e3991aa6ceec undefined
+30b07c33332685dbc34c522e9ab1f057eedfec1fc7302875af92d3848c6ed927 undefined
+cc944eb72f111c716bbf3778895982c71a20d1e73cfc1d0778711e1c10d73e48 undefined
+304259931c100210fa17333badcc54f58f5cdb69c1eb8047899bccf4cb1b9c19 undefined
+ba3443c048484006e9b223e8a955dbb6c3259022a7d7d126ac21ecf468dd0d87 undefined
+f4c1420c1330d5ff161d1bdb1717cbfa59b3843071c4372c41d24216fbbb9bec undefined
+a12b2d81fbe7274fa509641754ed864a4e51b55b332c556be30af88a6e240023 undefined
+1d6d29fbe46afec6e2e5471657e750e6b6fc7a3d417be9d6cf388cc00ca75180 undefined
+f912fefbeef8e045cd87d958ccc33d80a5d6f068a88edfd7a4bad0aecb0a1a9d undefined
+fdaec37c7683b8cddeb8b2928fa35a8ef8ed754bc917738660068b87f11f8cae undefined
+224a14eb8bfdee5df431ec43b7d3d03e2f5ad9f36fd2beb8b3fe8ea759e1baf0 undefined
+71bf70ebc77e1ff430d6a228ea8143e599a9380b9067421bc5a9914f85739ebb undefined
+4a932d9992c6b5c8e52cbbe7d9374406dd9b3563299b2e904af7bf2f578def52 undefined
+107e65cc21d58653287c1bdb60042890cd3d12f0d558f9e30f1eb20e4e8e505b undefined
+1bc6e677d6128e4e863abcfe7812ada14a120cc9c8928f8096fa2bc8c46023f6 undefined
+8435e2ea60a00a2dca9abec30ae3ef88e8b77a5e4f0db841e7002321b6e36f39 undefined
+d88f1d4b8ecb7909c6a24a6946665e02149634557fa6f02f7dd1547dd517218e undefined
+74d0bf169e22055508340052daed029002c4a512ca781f536b087611bd8b621e undefined
+291355e2844b6d427a3fc508578739c42dee1110a6965cdfc4972c474ff0f5d0 undefined
+5525c97cad98eb955280fdcdf33a621fbf396d8f0efbec94de56cd54b7c8d243 undefined
+6d6552cd8c7b537cb6cfa672b94639104c1305284bfb2d828f979919bc6b4c96 undefined
+71aa2c4346330d42464ba8e46c9c1cdf08f0a5e46cf2995c742ee2a20f650baf undefined
+ab94de37e0af1bc23859fe89f303d10165457c27e382d6e0c5aaf0dce8769cdb undefined
+9979c2df5af82d11c461538db867eda194ccdd7b458b459750dc811b77d6cd74 undefined
+f983aa3e80966c62dd8a7bc596bd2d47983bcc22387f8c6245f305e1070a2f8f undefined
+8e3020d08009cb49b11fe27f3fd88e711d7703caa822ed2099a0375d4e1dc0fc undefined
+4edd499347210d25478652d5a89b3d837a744d7f3f17f18d54b4ad941b13a4ff undefined
+6e2c5597617c206e4274e07cc75fad5cc9d7a7fa373a22ef16c49e7e978e769f undefined
+5ad6ec1d57c9d1ca95abd2dde22858e89fbf9854b812742a37a7cf102aa184dc undefined
+c3d7dfd89cbfd42385fc9d3c2343fbb34b467adfec4143d21188214367544bf9 undefined
+fccf4a02358e79f3979bda04bc3a3f9ea2df3ce9f8358fee39e33e3098fa111a undefined
+4c5f7a76fbf86dfb9b92cdb1571977ca10f039dbde6f1d37e5c54bfb96d4f435 undefined
+03071d59b3f1440d30a63331a6cc5465d01fa5ab69d44ecb383ad8977a87b1df undefined
+aa99bc11d27bd9d3b6c2319b7480f37823fc2a7be9204a8938d0f2aded44631b undefined
+d57cd743e80fa82eba65a65b36199bcf84964ca63a77ebee7d561c358f2b88a3 undefined
+5c6ca29a1594251590c58179f4b82f9fc5920596524211cf98fba75f150919fd undefined
+cc189d31055cc3c7b129798d7f964d9c827dd503e75bbc0f0978794ffe3dd574 undefined
+8eb36dfd3421901b694449e96b60a1e140b84b69248a04a50ac0677400e186c0 undefined
+e3a7542182e456c7a22ae0fec09fb104a95d03943fed59267b9b2696ed133169 undefined
+ef6c35b92effaf9c489420ebbdec857acef63f1024a62b85f7fe82383b281d79 undefined
+92cdd04d8eb91f34f3e3a589bec188c3de9c14da08dcc6471039446b91ed7e20 undefined
+2e0f4ab53e22984ad6137544c6bcaf03eb701f36be3a1c9c74e93da19f30513d undefined
+921c23dcf2cd895564e5ba7591e123ae20e1de2285d2d0ecd496b071bff1f800 undefined
+a7700735113041bd42d61aabef0dad7ae2e1af74ab65b3f24f6b4db01be98ff3 undefined
+cb4882138c503acd6f90581de175c9df30f1e82453fc3e1c19495fb42e6b45a4 undefined
+1ea94e1126bc084b7e72de9bfb1b95ee29edba88703f2079e93011906433218b undefined
+d655e206369b32743d1dcfe930c2e82936faea9efed09a5f66728b4b17420886 undefined
+3d8cbe16b72b55b4e017c999ae973f9239286965f432589bb54c278a16040220 undefined
+4263bc26429cec3e9532b96d8f6b9e61c1a6374bd9bdd4323a3c5336823999be undefined
+be3c321eb751d1ad376fd106da9b5d3a5314c11f2ccf22fe4a416fbd5ce43a26 undefined
+ce849f13f0e49e6a5965648fc33c29188cf2f2240b53883ed6890e28de04fca2 undefined
+8e0abe49da245444f6b45221532b5fe99a5d0d65ea4e27bd69a9bdaaaa66f666 undefined
+669849486a5ca7af87071fe4174a285437c9d3122bbf78b92c9e0944f48fab80 undefined
+231b2441afd7af537310c7e00aed47a76bf594bd326d908eff0bee5379ff26bb undefined
+800322ee55eade53397b854ea0c4e8478480376d70e48c1d608d7eec1b0597a4 undefined
+f55bbd13d83a80b232328ad9a860d45d017fc45c6d014e5ecfa38983f2516bb1 undefined
+19eb502dea90ab1f5a244e460ae737d415b66acc984eafae1397ec64f1fefc1d undefined
+09ec54b2583d40742af369dead69b466e917df60f90831557e5daac23dd7f4fe undefined
+7c89c1c0597fb1e097266ca395f668ff1e376744a532dae5aa9eee1a49d30f00 undefined
+7fc53e25824bc21b09a032ddf06950b97c8d3f15684b38a13349b4c6a766e62d undefined
+f9fb3519bb6f7142e35c787d21b768b89c83ad4d9256723b02562512030e0a3e undefined
+d601109ffbf47c9b34e1f68026a7eb6eb315dc6a3fe9b3a358853b8f190a14da undefined
+9551105fef34ca4d852ff9059f515d0d02a88468662f824f285af4fc324af5b2 undefined
+6a5974693b80937bcebdb9e5ad3370da6334a63cee334cd74656a53015f13f0d undefined
+c4b824e1fb8feb07a983c39675e6ad082e8d958bfebf107f84e5eefb19a29501 undefined
+f24a6c642a133ea266718485d6480e73bca7facaae7ad67d9a37e0751f2f6626 undefined
+eb2a47d7b398b7fbfb0b307901935e2fe2aff52feb46fd8dcf9e9f2437cae0ba undefined
+6393606c56c2c17e68a6db1102925886ed368652106706d4a1a1901c7a3eec5c undefined
+36064bd042ffcfaa6374928f641ef9188a710a45b86ba9fd896cbcb9e4f79363 undefined
+216fbea16053483be841de877d960fe31a72583ab747d1d75edf5f43f8e4bd22 undefined
+052a8b64092185c26d7f311a4ce260657ffbac00856feba2d1dff8e7563ca491 undefined
+4422411f785f07944e5066bd0771991f56a66e020dba482d259c29b82b1f4925 undefined
+927f282197160192428f11681d3a5630aaf9bfb354882fc92151775d60fb977c undefined
+f17080b3087cf04aa005700d20009e9cd24cc70aa1b28fb9a147accb40a3fb10 undefined
+7163ebbb1a5c69f246bf86634b37d558a01b757c04844536e7db17983d9a6085 undefined
+16e923a79661897cda8755d81bb9b68156593bebaf185c5f0f28557000582b7a undefined
+797499c94cbfbaf6f8f84500985cd65ebc0ba8c5a654b224ce0166dc3ebf69dc undefined
+1c4db0d62cb9b41963ce4a99f2d25d657965ceafec72c8a02d10cb845360032e undefined
+f03bde17f4cde52b073bafc22f23c77a6a1b4578742db7ebcf070e64f1a7b2e1 undefined
+3a628154e14a7dd9f59adb6b4bb1ee00e44bb1b279b5e0c55ed706d1b388c378 undefined
+5123240bc76a1baecd52d6758418eba5b52c9d98c923fa0c740db3c857a2b565 undefined
+3c725c39dd7ce289b12be16a41c90dae77f920e2526e5051f8434bfe254758a6 undefined
+768a8cf6b3701b934dfe4246029eb7b518c077220feb9dbf744992ed7c0271ff undefined
+4ee97dedc89f7c9420a8e63d9b6d0f150004cee1bf6d752c50a0b54ac26f1733 undefined
+e035e6469bf97fba1f83fff3b4fe5aa0057bedc357427abf496ba7f85dd53923 undefined
+836ee7598cee5875c34087338647c40686d717536b9616f09865049887d20150 undefined
+097d3c14b47ff509c0bc6da92294590f7a379bab71142ccc51847ff7e35cc84e undefined
+9add1f2bbde642873246cd861ab7ddcc59eaf7343ce5688f158b6755ee70ffe1 undefined
+19eadee7c4552dd41badd561a704b613e1d8cf6cdbeb21279978dc61073a7bfe undefined
+1f19caf1d693bd52dd3d933bd7d1cb18e591215af5aed8619e0b5a049048122f undefined
+1b1efe5119dfbd64c828e312180a00f03ebd49fcee5ddf990eff3830687f508d undefined
+404456296327fad8cbf6298c27f4141cabd5c171513e69d8d7e599c881eaab42 undefined
+bb9652a2a202ee8f758855aa232bd409c85c1890c9adf19e2bedce3155a91bc0 undefined
+bf78aee7fd6bb6817072a3875303792a9b4d4f7e27a31c35f27a41736e98f407 undefined
+de12c26939c02ceaa021a0465c148234eb0e42bb6b26db2b9f4c451fd2c5a534 undefined
+c54e10bebe7ee99611f22a308f4907b7322560379815ef7ca6198c3e999d0455 undefined
+a966c5893eded4f0e406e3df1659f15ae3052c7b5738adc7f5bbc7353433179c undefined
+48187ea0893cea6c292090b1af13d749c55dcd44636f25dff329cfbad5b4fbba undefined
+60616190b6130d517113c26dc4ebaf0b05b738a1b80822120ba2bc3456c05476 undefined
+b1cb700b361fa337b0b5e527e04eda193c3a4656ad4047dad714f111e421faea undefined
+ae5dd26d751c433cfff9a47f214423668edeca46a50da2de16626904a7fd987e undefined
+9df4c7ceff0a4be3fbd6712ad30996005d2de75d414036e25fd5fc682af5e592 undefined
+1afab64c8cb828caa266367b8825d2db3e60de2cea3dc37471561edf459ad12e undefined
+6cfde3e103b43ecff6a9bc91445fb56cf581823701c3c2bfd6e786ee5b054fc9 undefined
+253928346bba1a035d339146ff967b16d84b55cbef18991c09addd3ed711588b undefined
+515a1eb62132e7c0f77e0888c13e93c6c037c399d4faf95e30f4ee9df29277a9 undefined
+0c1520a0749f77e88eb4ef47e13d38b7ad55e0d2eddbea7bb3014ffc8e5d95dc undefined
+3aaa5c45417ec916674b78ccf915a70e0aff48b78427c6233dff9d53c1648d8e undefined
+358052ecd403c7de24b8f6f85fecb5c55927d6d0acc07cbc57a270e8ab260f0a undefined
+bdbaa9805ab1f2378b12163bfac029712ed0bdf24a4e81246c2c3706d0b3a52d undefined
+23ef309e81de5730be76f3b38a3c6fe7d040ea91f84f8f156b3936880e9bdee8 undefined
+f7250d70547ca8c16a3ba645c79826ce0a1974a2ff9777f80852b14ee5a95f54 undefined
+68cb95252ca31ab3fcc73c7f3537ed17248c1de041a15b2931e5b24dddf40fcc undefined
+5fa05e3d2cee32a6fee8e975a81e71bd6a29b0d75b0cf559fd455cdf123afb35 undefined
+9c130aa41ee6057e6339abb510ee9525d468aafe4ee3bd91545df19f853c488d undefined
+d3f00542f2e2bccc25485c2eeb8870d85a5be256ac9dc2f35a5771e21d8fd1b5 undefined
+2818d22e4e449e88db661f1abc67cb244aa06dcaf56a6a6480367f1190110e5f undefined
+b7dc4310a5d999869bc283a00ef4bdd61f8ad931955ca9e5c655fdb76989d3f7 undefined
+c47df29efd470e57ab610e7a603ebd296cc26e724e43b35fbc60beeb7c06efff undefined
+9ff024a902a4d9493f1fb46fe03ca8e338a100cd78d9e4d6478e5bab7b5808f7 undefined
+e27e4017fe2feb0187d0ee744b4f6231faffe5aad42ae511a14b26041b315e7d undefined
+29f31f9d442fe52492a2c5f5cd5fe41dab9aa7aee3b60f0cd2f13203c6df2b0c undefined
+582748822dd90d5378b1f23cc016b2d4b61ef80f3323b3d775ad91e1f53da580 undefined
+aa1ef3551c2eeb3277a0004c8b5d562852dc62fd15a99ffda4d2581d29fbc729 undefined
+e6cef79c7f13889b2c639919975e92cf22a6a2cb977795c312e665f427ab27dd undefined
+9a1f5dac986dde4e923b71e8878f519f0e3ff611c5f604f174db0f4a59c6d7aa undefined
+5f6f90b1a4d7c050368956bcf3d74607bfdcc4c89a7a8287cca64e1bfc38e15a undefined
+d484f526f8ab2db674e1ee76a86ec931b9ddbfe5d7531176b72a462499306769 undefined
+e8680be2ed1079683d34c6657553d24beeb59f154850c30287e0b102663b503c undefined
+c602d9aef5fe20082c827c60092d7c5d1c81f762b18dde5c7c56d09afd9ea4e5 undefined
+7bece2f107662a4a0f3af2144ba4bb4fba77b88b686f64e4ac945c73a5c5f01a undefined
+98e3cb229de175b26ac6721c1b76a375411a65f4fb564294d5419a4bcf4ee068 undefined
+0c08c5814cf6c67908e88482c3fdc2d16ac573f8903fa8ca803bba4030aec8d0 undefined
+3381652f55c83a5b42982bd16142be8647810b4df5d72455a4d48134f6a3b3bd undefined
+e817b2c804b286918307e5f5e8bbe7fcf65c3e150ba9d3c222d16aa0f69a4cb5 undefined
+2683740b9316489b217ada410be8f4f2ff9b1a7dcc6b291c1d6aa4c3695e6734 undefined
+e4f6ec31c24d552c17453fde6741bb3933043ec37cb537810f8d5138381b5ce2 undefined
+a28627abff05f4223546e4374e41f70c36fae8a664d8e7d877afdc55899a9e01 undefined
+51eee4f7dec2090ef78e095e085af1a240070f2f871cbc29257b3aff437ab077 undefined
+e7bf0e8e48c36501522f31e29f55dea9cf18021b3e752de8310a24445205bc2f undefined
+ed5fb44ed22b3875b3ccc9db7175f5df0eb1982b08a266ed0f17f1714cc726d9 undefined
+46b7a9c17563282e9f17525b67e6c1b2dd5b6e5756a6911433aefb490ee52e7c undefined
+b73b67ca17a27dc0bc63349710ea144cc528e471047c2386db99fd061f0ff428 undefined
+53020c9e2dbcce414a06a5685f72526870238e87077154fded62d214dcdcd840 undefined
+73c7ba6ff6b99c5118821628e55db62210b219edf525060eda5da7d618a21878 undefined
+a40dabb72512b241470ff799abc8a432b54be2b28c441e4be36ab601b1f8b9b3 undefined
+430d775d16140562d66b6d126c12126a3a65ed9ed51531581acef13270e5dd01 undefined
+fbdc7307839ba9bc612806826a567fba5df0268f4b236813eeccfad04b8873b9 undefined
+2a4b16b895e5aeddb3e4566fbd3369311b94b66135497a25a9b82040057e925e undefined
+21dff0af4194b3c1cf971be80b5b315cb3a0fb03e8b0e9b9f31836193f28d860 undefined
+4ef5f446c6cff67eba7b9733d0a9621e6fc7563be217ee75ffcfa36474874a5d undefined
+01220dc04d0e497a5ccf554c2ebd74aaa5d3b57bec6205d2468c585062039cb4 undefined
+206a1f8738ad70a72b8ee9c37d69153e491c394f0c3eabcb8a6246c2b51ec307 undefined
+84a8af1bbdb9adc7a8613bce2f45e3fd294aa6978d8f5d0f00db44f0e9ead239 undefined
+8dbfb16697e0abb11cd9d9613b7e5a0f1c337e303aa0ced7544c89ddb8295bf5 undefined
+20d6badde2cf4c5f1db1cee9d8bedc6cdc00323b6da5a811e618327c22e9b287 undefined
+94febf76289f1a16eb11e490206eebc64aa43a6829f510cf53fc77c4e313c19c undefined
+b09e9fb5cf091a65e445449cef06f3e9b4e90b3b14a5dd0266f24801a37adfcf undefined
+81e16b8779ea7127a2bef3007996dc9e1c15dd40069f9732b1b36b3fb82d91eb undefined
+33604f16b7633788c14ed926f6ee072950e8ffc93a6d0809e462b7955c8668c6 undefined
+d4bab9560d5fd50ba0ef8833d6a84b7c6ff960017d923fef7337487b96f547bb undefined
+6ebf7213b5fe4b368fa62907e346c9462d9739ae01270d231bb5ccf7e86e23fe undefined
+4697ed23629e6a0521e6ab19afc6dd83609f5936cecea17251fb9022dab2bb57 undefined
+1245528878dcbecef56214e1161d823e74534bca59aec61193067ec0a4dfaf6a undefined
+ef31fd47b92e18157fccfd10ac02a9e5e6bcaad5000cb340ecdcb01e6a388760 undefined
+51009eaf8c8e9f77a69ba19bd912af9851d14bb823263b59f00f1449a69095ac undefined
+2738e8764a71eaa0013df8ff33b5a6c730669aa55ac500f8d7d4aa586d730bb0 undefined
+81e649c87a654b730e8858f7188cbe42ba06a83b98b76d175adda4e44d98086d undefined
+de85b7dbb34779207a22ea1e1e4a9db052cc4e04c066ec3ef7ad0b452f2231d0 undefined
+e85daf9d2991eefee7a2eccab5e571b4bba0a734c5f108fa2d6139afb12db751 undefined
+99d8d610a16e979cc41c1c4e6c4819122436095e8fceeb6cb7520a6e6a24a1a9 undefined
+715109d8e076ef67dae1ff6c12dac7cfb0092123ac13022b3b98c9fe6634d2af undefined
+22795988f34496db21b527ee6c17382f89c7074ad097723e940263cb16e642fa undefined
+67a2af219f791ed9527df1ff7d59abf8a9479152049bc65921df56a73d8e6b72 undefined
+a185b5496f118a0fd5673f254912b549cfd01be55455745c8fc1fb4fdb5ab310 undefined
+1299fceb6023278475ff9b493736aceb55e6500a1bed3f7443ee1e65d9b4672f undefined
+eee4013a3306350063725a7d1f1701fe482aa12d1e72af8f19d8dac73e66c3dd undefined
+8102b232bbdfbea323c7a5eb6deec9b0046263c2e7ebe8c4a983a262396576e4 undefined
+9298e61c4f9db91efe9a464f4a0e604c69b6781972f00f6a56a495a7537e7912 undefined
+1d1a1b7cc05c9fb97337344149fe45a1fcb704b5700900e00c3f4205333a8b3f undefined
+7b5f35734e1df9eee783f45836ce99bafcd93e1bd7b107d083edbb7464ad2c3e undefined
+ce079f35a43dbbaaf0a7f65cf816c22033ec28f1052da822e798eb171fc1f9b5 undefined
+f80117fe273aa7bacebbb8034f83e5cf5c77ac34ecc24c035f42c748ae1ff8aa undefined
+d413085ffa9557aade8c2d1dc1562bc617875853a154020675a56ab0d69f3d3c undefined
+d4bc1d3fc9b656730ddbaf4257e5b988c970f705ee1c85e15cfdf45cda6a3003 undefined
+af1c09c90dd51ac90d075be6e7e587bfeb432fe7663e89736e972a59b0371fde undefined
+187fd982f682014c905172b250b0d791efe5aaaaeee47d01b404a5ae604874c4 undefined
+e32e3bc64759b10a8b6477bf64a8f1262a17b457881135eb9dd1d752615191d3 undefined
+2d2b474d4dda52f254d61fd43b3cec53a261a1037e7b13625394ecfb2ad6a44e undefined
+2e074f3d4262d058e846c2edeaedb3fcf66dcf98d4bac15fb5c797a3e9a1f122 undefined
+e9f92acbcddb551fc533dbd3e3f8c9ce0b497701023eb619e4d48f665cf6e8be undefined
+a841e0d092b77e096c3d5c638970b4761612643980559b29dfc8c7e8dcc7aeb3 undefined
+4b920f965d7101657a9d30709ceec76c5ad3631aa4ad8a8c4e6fa30d26ed20df undefined
+dbc3621145d77fd3b7ddef538a52815248f1ce100d37dbedf022480abe6ade7d undefined
+0bb943136d890c93594851d644a79fc9c91338d8bda15b881a36c458faf1fd84 undefined
+d4d8b4bf6539eac8c27ad905914db745358dc08a49769a4e4578215486705808 undefined
+aa729c85c347aef8263ee1c90e16253d0ff606524fa00ddb29bf126abdfe89a5 undefined
+bec9dde5f0a0abf8880bbd25cf60985f61e7d39d0c7377eb46238705c218007d undefined
+895cd290d118a5dc8739305d4fca42a9e9c999d012cea06f1133fe44f993603c undefined
+42c1f86e444be0f0d1fcfa1c77b7783d09070c15e046fbf63bbd111d710ece13 undefined
+03ab64a0a148629c0821d1042d16d793b7e69efe477ff1cd3388490adf366092 undefined
+95bcd1b1869a422f98643e2cce857ea344fae392312380af3ce64c7c91ea4068 undefined
+e4db027d4fb4f556c22ae7fe07848f2e90c1b12734565db48ceb5616f9c92a35 undefined
+820b29ca63865eea282301a2e29bfb719e0d05350ba46ac22ae3d23bc5c6489f undefined
+82ceea8e6ec26e7444fa919eafc66f2645e6a133d8f0b89ef3b92b6cefd8219c undefined
+020072be9fd39eab719aa10200af8c29d5ed276a33d1cbee0bfbd3730d4f49f3 undefined
+354ee3b82703aaa8d49e8f541af9b7217a3fae999cd56d21034d94dade21efbe undefined
+805c85d3e2630217ffb84281d4ab987eabb89d4dbf1b08fe6d5d48a3ecf896d8 undefined
+6701359f62c89b7bf95592703ef05f7fc8bc2f5156213d22128b8fc89724e4d6 undefined
+f1a598c587f3abe6254cee80106bd1dcb3b406a542cacf269cfbedfdf47bc001 undefined
+b18a3b7da67a906be816329cda621c3cf7ba29ff9b5d819425161feb5b41b982 undefined
+7f3dc86b664f9f57451c23220d25c0ffd58efa94d32b82b00c3a94b2178b382d undefined
+8f0b764ab2c4811c91fb5aea359a3182628377a613124d8b0b6cacee9ab8c003 undefined
+27ef7ff1c51de31a12a8d9c128873a3145c57cb92035b6b1bdb5e65b75c9e2c4 undefined
+22159ed8a3cb9367d9a324d9f08fa029662abfec95faf81b6808d7eb2b470ff7 undefined
+85950a1b7eda1d1aa9f9e8796c47e2a8341a6ef0ded0393df052f73d3a1a84a5 undefined
+53741b495fdce0bfe3cfb3ded644374ee7d06f39e43d2fb89138c95ee815d41d undefined
+cffd3d05f8d14f6ba475d182a147cccc1e7cbcee8a47f28fbae9d77506f713c3 undefined
+b6511a084df22d6e168d6d62a6f7a7e6e8666be47c8d54add3b8357011521566 undefined
+2e424c02400a8cdf53f91b30cbb1a1736971e2480b0329bb9beb85a8610a2d92 undefined
+763a4754b0b496e2c9ee870ac9fa342aecc051ab9487539a40178f0b8befafb7 undefined
+c10cde4e83ea3f12d0ce830163c8464fcc08f58d8f78413af85f3842c9c8a8b9 undefined
+e4378055b1cf0dd99954cf2e4564b050c5eec0b0b866f7521cffe30c887aef71 undefined
+d0f6f45165b51386d3c5499eb75856577963719ef18bd13ebdfee75f61f0d073 undefined
+1898b4de818e081c89584c1e2372c6b853a87757cda681ad0458b7d07910d717 undefined
+ee805399a402dfb3665f1b9ab2d961eee958e17cb79eab1597e1ef3f45834cb8 undefined
+25f9b05158450e97f3bc1f2a7b2f0f341f2bacfcbc40591556f3883c2f2ed0e6 undefined
+4b2de7324bf14eb7a2b405a46c7e243927652bde266324739be29269120e895a undefined
+03b23302cb1c1d679f225f47d85544dcb904fa11014e8aaa8619f3a17fd24a77 undefined
+30e30a9b12a785025037a7ed2610350317bc42d1a426c666e42063acbe5bd3a5 undefined
+e8ce02dafc3cb6ef585010b9c144393ddf0cddb8641dc572db0d732afbd701aa undefined
+2492b486b34c1f405a644d25a01719264d293e4fc0758c0c5cff8b122b49562c undefined
+a1d9a8e2733e71ce66c50798012befc9e0eb09207010b88569b2d3b9dcf49666 undefined
+f29381f8354eba67629af549ec6962c15dc67f4402a41ec3b706cb80237e4ce5 undefined
+be1ca040be632a4bad390be376441ed4d16d030246afcb94c15d9b5536a626f4 undefined
+71b280daade3713cf1eb45974ae5172912476bf5dd61b769739e0f6c6d81bcf5 undefined
+1d4074884a98f2d355a97e279cc3179d244889c5e55e4dabf083e77964b8472c undefined
+13ccb55a0f0345e0b05dd11a71ba8c88ad726c773f5fc039dd74aaf108477e1e undefined
+05518b85917216f66348d9df9432a8e7b1796eef7e10c0fc9f77ba59498441f0 undefined
+176b8e9320dd6298b196772754ea3dfe8f8a45f4f4b982d42d41cb1c8ab6d60c undefined
+eda152b5ca54fa60f7b39f3a7149d45c1484302b4c1795285cd14613646a6957 undefined
+70dab98e79153334346f9621bb084578df8f1a1d7faf5762f54b2f1ccd1e7968 undefined
+93d1c26c588343c3d2fec4acafdf06147148f455c0f6fafbf1c1cc92b7465426 undefined
+d4955bcf8ee5ba35cb278bf5507cfef49acc211e2d7070e5d565ad94b5f84e0f undefined
+f4d998fbeae5dae1833e0c68eab2f237ed31aae6c1a734644c30371a8fbbfaae undefined
+d9d83a827bceac12b94ce77995d1bb450e9d1560d303983c15a43970382020a1 undefined
+c2b856e46e15ccb13757ddc0beb6fb1c1956e4ba37bf93484f81b8154201cea8 undefined
+546e01f0912481781b9799e9e3ef76d7a92d23a6d1765e8ae5061104accbdbc7 undefined
+9778c65a8bfe427dd229fb93b671b3d3f9284da573ec5d34ee52ac79496f7b11 undefined
+1906440c72d9544e1acbd857d0d961cad95f9985297146d2ce9230bed66e9826 undefined
+c49dd35f9f7c24dd676505aa2e82b746546dd6643b8b9afd5fcb871b6eee7c82 undefined
+711d9b6b161d502204ccdad2a949b0ce6a6b5701ba331b56e9f7b2bcafef284f undefined
+4f386c27fb2f291915679dcd936c307e9e192a839015cd4a165e1bed01a29d99 undefined
+4d917ea8f9033fa5ad0d7ac1de2e1bf400920f787f6dcf208012a53ae3034dd0 undefined
+dff893282b8541be4e6dba79a7be24a84b69a18454a8a564a0461b0719b0e5ee undefined
+b1113a42a01d23253cd656f1b6f7216db67a0a30cbfc9834f2ba427a23c4ef04 undefined
+f8a47d90f0dd6c11fce12973ba5951842134a76a32f62792e516d0405ef695f5 undefined
+54747868a915174ea85c0fa38382068120cf5823c2c845e30651330fbc034357 undefined
+8ec89986ed0ffe2867794fd6be128b9ec8c345c787321fac36c53c42dc756133 undefined
+985298a2e346f955b578639ddecaf7cb6ef65e2ef74eef0f31262e8e90a91455 undefined
+0a55f1aadd8ea073a7eb735c7f68b6c4ec8513ffdf8920d9db508b7c904e604f undefined
+cfd5d46f3434d5fd5693eafae7cb13ce2f6f60cee2d20735a8215d6f7d4723e2 undefined
+c54dc220ffeec6121b663e4b228b92d04a09fdafe4e7eacfcf9f832032701439 undefined
+5918321641d6a27ab764dd22f015760ead8ea6421daaf745b481fedcd9cf2600 undefined
+b515c911b8dfd07b4006a05eed96546233ec445c5d2e927248cce5e7f88717ba undefined
+54fd719d53a0f7d9eaad42e47d30f30abc0fc9995915777ace2d606dbaa12175 undefined
+e82bd1afb278098bff21932bc3aab5882d707413b74b2f70930a6ef3870fb66b undefined
+bcfe6283e7854128948774a33758bf49c94e1ec60ee77ce40151024d51b9d949 undefined
+9dcb0aa7e7a497716bf559d6c8c3e9c47ddf430700af4637986077d60449e98f undefined
+a914e9e31161b115781549863f6a8c5ffe38071c9bca48edce1be8bb1b8ddc02 undefined
+b551e5920bd39b14bb9a4a758245bcae6b8b7c6755f0c10f61bd5c041dce06d5 undefined
+06d7f78c19d432ea083d4327b49a653b1316a54a3918d3e461caf59972f693d6 undefined
+3efb48bbc753714ea603c9de9bfefb0330862cd4522e6b2d54ccc63c84115805 undefined
+c831d075c9ab72901a73594c61b22809f530af288c67f5358c84e56bf9e830c4 undefined
+e242893f89d7ddb59d468d6cc4d60b176ce294502c3b73adf60f59408b52caed undefined
+642170c58d7df4eca6eb43efd78848843b37dea2a64dcc1be3c3ca5c8f0e82b7 undefined
+97aaba7e461943ae6d3336fa3fbad1fc4ff226047c53e1e312ac9128dafa3c5b undefined
+8f9bffdb35f9299fef323cbbb5b9f400a02fd9696dec4799e1b212f1cd76ec36 undefined
+c247c83f2d27ea20ecbc7bc09b5e7b01e7316707cd95965fcbe6671010b4c6c0 undefined
+20b6d9841a992341392eae47abbd5af95f449dc834a0753f1bf39d2a9da2f76f undefined
+4eb6fd6b3a06d7feb106edd8675e15a3bc968a110f03168ebb7df655b4ac8824 undefined
+a63656791371b0a507b880a9d619f1c1666d00e3e99ff599a644bc28dad4dced undefined
+78219ca4ecde6b4bce4cb30826c14e531b4495f8656fd21e7244d3522842dff5 undefined
+7d022b2018324cc2dae5788f2b0148a1901a490d3ea058758e329b7152b6407e undefined
+70af55d2ae5e68b6e38279fae23f3054c032fcfb294bb6981fc9b677cab3c205 undefined
+622b8b7e63a98d6c88d3dd2a6bc633372f0e19f5a133fea445c9f2fb1abecd8d undefined
+90249c1d8e618e57efc958a29d6969a9bd4032261c11bbd32d253f6938c55394 undefined
+b09c4b55a3738ba63332850f80e917cffc3792da288d8b018515256bb1930780 undefined
+586faea5a3b5f208032f95e649dfb0dcb0372d13f4bd0b415053522fcfffe15e undefined
+a1ac1cf9fb9793f1e4e942f057273a1a82bbb5d3e48f12d0d670f8438086a7af undefined
+23af59c52cf06285fc076b57f21cc0d060ed525e421e91bf9bae6ddd68ed2ed4 undefined
+97ac9839a9afc76582456d9881d94001b3dee8df56ecd744d46d9d3e799dcf0e undefined
+18d60031bef0da36a6b32042ce9ad5fd2d01c8128a7b9124158ccfad82aa9e63 undefined
+27e1ab20a6c824c8bf36266eca93ef952b98fe95121d5aaeeb646c3135223a63 undefined
+b2f5a1d477b7e44e6de64db2e8ec525435181faf6d677c09432bd59c8680099b undefined
+ba6a4084e782d49b0fc397683271a5820f3b39a846160b6249e29df0fc9c7f23 undefined
+1d06ae9e925a9c4520234783fdee5dce3018277d24186b0d18c47cebb426ba3b undefined
+258f9a38bd36940ca87487692beffae2bc5ac5b4e3b3594fe792a6a091236d5c undefined
+53ee2f3c9c0854f9b63c3b6ee4a894cc7805e229a78b06dc778842365b86b86a undefined
+676e2c0bb7aa9d1647151c9cf58119f3e26fe132bbbf9ee2997b31275dd32a0b undefined
+7a7d8573ea38173bd0746f65b3631efd63b1e13892e437833197be9a1f95733a undefined
+5235d3562dc7a4ea9158e9eee4c357765c452f0c0f6ef6c26d6e7b5d8789f15c undefined
+d814c3410ef8284246a4e63390fd6b03dc077f060e0997a4b17903ca00a1a5f8 undefined
+081b036840650c1183bc347ee6c159fbf46da7cf0b2b551dc60f8def94af7284 undefined
+8e09c785af39853e3569f9caac641368dc240ad783df077ba53dc95ed5e5d669 undefined
+d8154f74a6cb5c3afadb4dedf645494b2015863b2dca6c62b7de36909abd62ee undefined
+4c50c8f652cce77e8662c4381c71fd249bcd71cbbd2767f82db1338f67fd1514 undefined
+7fde26e6cc0196ba900d2a1f789e7c9b9a0505f30f475aa98989288cfe350eb9 undefined
+bf1a977621c24f0747565b62d35e8062495ec72c69a93272a3c464b24016ea2d undefined
+e35bde7ea7ca6d87121d0ad5e9bc460093d2154308f1be5a468688bdd0caf034 undefined
+1a785a85c44bb5eb3871ee0128635f7c65efec78ace4b65d2ff4125a10fef98d undefined
+b405840a6e65d686464eac1e55f50a0b9ff4c8109b4aaab4ed8526fdcc43e2cb undefined
+5a2b60bdc78e837c5cacdade1a0932668c210af6a69058cd6d6e564ec9e43fcf undefined
+a3e1c1087599f55acef67988f0045e653fbfc0af6875f215af76a86988d90e21 undefined
+47115faf7e375e66db3f7267b779c20b3a779ec6141d6204a1558a6445f04c80 undefined
+b5a1f0b312a0dadc9ed806dbca9c24d052fce3893ebab073b8f91dbb1dd496f5 undefined
+65bae4ab44b5d4aacd7616552d0e9288983e2f5717df49fc6a2f845f35682a29 undefined
+85fbbec272dc2831f1566d1e39d3b7da712dc457dfd8ad415a0862ddbd25267d undefined
+6a6f84b81ee62a261c584c14832f5d6dca9b30734eae18dc0ef7eca63515b285 undefined
+00a40dff71b4ca5eb6cb392de77b0d15c9c01fb2b56de8ba205eb9a57d64d99b undefined
+585001f0ada20ac3502f5518413f53a82ac5a0187db67f909b8036f7413ce0b0 undefined
+021b7019b6e1c02d4309bd91a3da114e4d690d8e1c4a15ef40502add079f61ee undefined
+0cc12955e207613c35adcc81166fa81552feff130a8a8458be234985a05d59ef undefined
+a0a00991e9b129c9fe99a918fd32dce0644c8919ef9d4833381bb755c7a96fc0 undefined
+544929b92d80ef6a3e341ef2aa020c4fee3db275e944ad918dbacfb5936481dd undefined
+bf7a94e606decb6250246499ddeada6bc975cd07555d1955d3baa9c3af0a0654 undefined
+4a7167b4a66e36f1761065cc8c7cf1bbd7073c911b62f216e4438f5f655d5807 undefined
+3cac837477e1a9c4700f06a7cc85f8048d39ef0f98b20251a0f6d16073b03d3f undefined
+fbff4b999a29dcac24071d2e4cc6fed5e6c297bfe81ec13d4f074c3c0ace45fe undefined
+f81f6afc05ab806da7afe8a4b0ceaacf24617f94ef62f3116c523b1c1844a3af undefined
+fe6c7989117aa574a3681f33fcdcc8e0f7743ddd8fb8cda2c29d330be181c78d undefined
+ba2383a7d54a4f3177572e8f7c7f37e32df52d16df96fa2c7c00247e0b413674 undefined
+dfc578fab7f4c139cbe2ba557242d02ebc621cbbd83a037f3fc9d1ce2d254c98 undefined
+111c6533983e1ea91829481199b404d3b85b13a750bdc3cfcd76e29748b11a18 undefined
+63483f3f0772f62dd99aef9da7d162e7b2416c9b743ed40db629ba0723da800b undefined
+08ba9c1c082af2889ed884ebd5264f006352227edc504fa04b66fbecd94a7d02 undefined
+b98bc1c25f74d7a69eeba4687a71b496f26583c0824c0b5cb559fd366212ff66 undefined
+99cbcce4aa1bc0f56a0bc2dcc8c2c42ce488e20833e776fbfbac7009d2899f1a undefined
+dded8f3ff9d4d2fd92acc1d7a68ae6ad7ac535ee23fc8804145a0f54344c7cf7 undefined
+ff86387dd4c784e5381056b3c6feb075f1f6c340788ac100acab6311acf29fcc undefined
+6bf77691a1e1d8401f670eadba1e44fe3f5b7abe7fc203ea2dc0503b67f993e9 undefined
+6a83317d02faf9ceaf749ca505696328090187ca8349be507c967909cf4424a6 undefined
+f0364e91a9e5a0836a80d42aa51591a8c2793f9a0445b9bf736865a7e40c62cf undefined
+9b3b066c734ed176191588f33b595168a032121ee4612c183298fcf0be46eb9e undefined
+d98a68edee55e9ee47dcaf0ca0a028fba9f10da105aff28415f18ac31d9fb874 undefined
+52b6aa0900f5f0471947172f2b8866ea6b09ed0d6ac5d8ef1ab24dd24c271390 undefined
+509c18f7d64b0abdc6d1725f4311be5a5e3613913297b7fd76a524b75d436597 undefined
+a2989140063114ae9348d66c32f084f0b112b704ac72072f2407ad99c91c05a6 undefined
+02fe24c760f5f497569fa410f17304175ae4f06414c6d8dafced72f7352a3148 undefined
+dd1002fdc53f5071e9efc214541e95fc20e81a1d514f989df27ae9e7e224efda undefined
+e3fc22bc5a14422055e0a41046dbc827d5b1871777d707af543ee064860438d3 undefined
+a96573a1c7d2127c9b38ff8f25245883cc57d3e56d2a527ffaef5b6032dcd2c4 undefined
+7093fd8252f82f59b830708c1400be47abac4e75ff5da9ee821f6256453d54ff undefined
+cc0c8932886952b90a8d37ee0c7add7638d7534178dbb123faf21a8c5690825c undefined
+55715d6c7ce8d05b087f592b35e9c25e316c2dc2400a114a7f2edc2f8098dd86 undefined
+9a2a8ec805374aa97bfa0a8eb80c2b6a8d933c393cbbccb572bb67efccb5dbfd undefined
+b29c7fa9ee6a6a38fd9888903e184a331f3185a1af188fea51a48dd6df0ba54a undefined
+c80056bf42472a8aaca44677189534a7cbe8b10461cb7949dc02382db56107c6 undefined
+ab7ed32ccd4cb9e9ff4cda80f27a597e2b383e53c42da6156c4cb6e25826b5d6 undefined
+862e9e20b8b642229c06b07ceb986c9f919a34576ce9fc28146179eff7dfa424 undefined
+38de6bf0861766f6498da9397a99332d1eafd4cfaeb24cfdcd9e27d280f29519 undefined
+36dd3e737c6509a64373ce175440ab1169b24fe04bfaaa15ec2ddcd5d88be3d9 undefined
+bdef09e7b2adb314dbc8b8fc2431bc6e27d236ddbe32f957d2452e5a4abcd325 undefined
+37765125fbc82d30f1b738b4f093f7547eb6a00710e490334e7ddadf54ebc46c undefined
+fc4929c353bba27661f08511f5d5e56425c40956b1c5cedc6b5f50b71baa23db undefined
+9b651c95eb5b5096d8d461123a4ff851d1b4729927c4dbb5f5923c49a023ccdc undefined
+1d064acf208f3f64e91f15073e75d60c1ed14c7ce68580757933ae6e16fc75d3 undefined
+818c45d3eaa680c20f230829e5229b978c9495620c56af4b146f89507d7445d3 undefined
+09ada3a6fded4fdd0c60db3b5d75c66af5cfd9a1fd2f18416f386a1753c54623 undefined
+4d6554346ca4dd00da1a4b7f538162f7f3e9cee9c40ab9e36599ef60c201d7b3 undefined
+f73c2284db79dd188cd946518c1bdc708b6a5336b4b14bd502448557b5b1aca7 undefined
+0626069c52761dc47234e1e5f677430b7a8a9287ced6ae8293e100df995ecd27 undefined
+5ca69eee99b37c89de92472789d4737683429500edfe97b726abded3b226788e undefined
+37b759228e226ee095e84fafb5d91650e1eec5d81db9438e0578994d8733ae35 undefined
+3ba2b24de7acff56982e61665d179d25e3a9c4884f65e6be7bc7f6c153e28615 undefined
+fd256f0f6c49c77df049d1274abbc18643fc0a859ff8527c89d60a01ced1bf39 undefined
+55a4e2675526bafbd1ef5fb1470a3b87d7cc41d7de244fa78cb8a972216da5de undefined
+f9149b5b1a30e74c31ec66ec2cf343a60ed50fd69e4c90820744a392c66de349 undefined
+1511b6694b0be1e6c51637f1bc3672e2d23f25d7e7150a36a5a74b0985f0fdd5 undefined
+f45221e883663e7efcecec9e969e27598af0fceefa1e75276ab135739e0984cf undefined
+fea35d79c29de7fb0dd5a3edf6913f9cf02eec5023c548b050e11da54d85358b undefined
+e6156ae11d8004e99d0ddfc15a90b9920e81c9a442a889bc8c9221cc458f1f6a undefined
+ead6de7bef5ec3fdc6bca63fb30670d905782a56693fd8401f570a56365aaedd undefined
+db98f06d2d07fa39b09e7b4a897f6a4d32ba1dd8fb84857d31600d6f2f4e1907 undefined
+6b63ba83d26dc8bf1810be961c9354057fae8b2f12ce1740b4d0a8d728de882c undefined
+9189c4f2f2976b442d7e277b1e1ce422e9a9026cc5371d60c11369cfd7167433 undefined
+9d0f064817d3cd034b895f9cfdd47cc404ec6c6b33d6301a9390e29c57d01ff3 undefined
+5314512a01417337d00313fb3305c6fcf6a3f158bdd743a0136eba0a3fa256a2 undefined
+e10d58a32875adc730207fd8e5daa89005f43ff21e7d2cc4fa56577dfc0ae355 undefined
+510da262206490609446e3a6b0846bde6c217dc20a5a5af8d0bc2eec1bc831eb undefined
+789029808dcfeef70a81f8a7172851aad6f26c5a9ea4bccc85deb8978c3ba62e undefined
+63ddc165f4a223e0052b3483d6c8f1a702f6eb93972d48ddf5e40b3c91bd9496 undefined
+847e835651c8e7f5d41df4eb1063460ca1a35ec18ba2404753c4b02be253532f undefined
+ac1837c09bd8feb39b2b4bcb758468d5a5b441b8ada7d9e1a159a11e2cf31bc8 undefined
+541cd14c6bf2d75638a8e5859cbb435914836ea7803e13a3e6d280e462952646 undefined
+5d0aa15bf457637b1c22bf48aa436388d994662784996b6346b422486efaafc9 undefined
+b08ab89fd5438fc9b0ac55bf91208530f118190aaf2a491ba388ded3af3bc89a undefined
+9e6f5d62c1c6035cc11e93eb1d4beb22e24cff9feec44a05b738d55658c8af9c undefined
+b00128d7543e0ee3dd743a372329a1714ebf38d9fed4e03c7ef02675fb18cbef undefined
+72bc3391fe3abe82edb0ce8e7095172e76766dcdd8040779b0f3a9a40890fbdd undefined
+f9eca978093d4d1d96958a24386f3f20b6e9e7eacac918143d850679d3cc7407 undefined
+53263aeb42da51bacd72ee427f844ce76654d5aec3f1d29fe48f7644a439921b undefined
diff --git a/font-src/gen/otd-conv/glyph-name.mjs b/font-src/gen/otd-conv/glyph-name.mjs
index f125839b26..4b6ac5357a 100644
--- a/font-src/gen/otd-conv/glyph-name.mjs
+++ b/font-src/gen/otd-conv/glyph-name.mjs
@@ -1,4 +1,4 @@
-import { Joining, AnyCv, TieMark, Nwid, Wwid, VS01 } from "../../support/gr.mjs";
+import { Joining, AnyCv, TieMark, Nwid, Wwid, VS01, CvDecompose } from "../../support/gr.mjs";
const ApplePostNames = new Map([
/* spell-checker: disable */
@@ -267,7 +267,7 @@ export function byCode(gSrc, primaryUnicode, conflictSet) {
let preferredName = null;
if (primaryUnicode) {
preferredName =
- ApplePostNames.get(primaryUnicode) || `u${formatCodePointHex(primaryUnicode)}`;
+ ApplePostNames.get(primaryUnicode) || `uni${formatCodePointHex(primaryUnicode)}`;
}
if (preferredName && !conflictSet.has(preferredName)) {
conflictSet.add(preferredName);
@@ -278,30 +278,16 @@ function formatCodePointHex(u) {
return u.toString(16).padStart(4, "0").toUpperCase();
}
-export function bySpacing(gSrcBase, gOtBase, internalNameMap, conflictSet) {
- if (!gOtBase.name) return 0;
- let n = 0;
- n += nameByPairGr(Nwid, Wwid, "NWID", "WWID", gSrcBase, gOtBase, internalNameMap, conflictSet);
- n += nameByPairGr(Wwid, Nwid, "WWID", "NWID", gSrcBase, gOtBase, internalNameMap, conflictSet);
- return n;
-}
+///////////////////////////////////////////////////////////////////////////////////////////////////
-const NamingGr = [TieMark, VS01];
-
-export function byGr(gSrcBase, gOtBase, internalNameMap, conflictSet) {
+export function bySpacing(gSrcBase, gOtBase, internalNameMap, conflictSet) {
if (!gOtBase.name) return 0;
let n = 0;
- for (const cv of AnyCv.query(gSrcBase)) {
- n += nameByGr(cv, gSrcBase, gOtBase, internalNameMap, conflictSet);
- }
- for (const gr of NamingGr) {
- if (gr.get(gSrcBase)) {
- n += nameByGr(gr, gSrcBase, gOtBase, internalNameMap, conflictSet);
- }
- }
+ n += byPairGrImpl(Nwid, "NWID", "WWID", gSrcBase, gOtBase, internalNameMap, conflictSet);
+ n += byPairGrImpl(Wwid, "WWID", "NWID", gSrcBase, gOtBase, internalNameMap, conflictSet);
return n;
}
-function nameByPairGr(grCis, grTrans, tagCis, tagTrans, gSrcBase, gOtBase, nm, conflictSet) {
+function byPairGrImpl(grCis, tagCis, tagTrans, gSrcBase, gOtBase, nm, conflictSet) {
const gnDst = grCis.get(gSrcBase);
if (!gnDst) return 0;
const gOtDst = nm.get(gnDst);
@@ -317,7 +303,48 @@ function nameByPairGr(grCis, grTrans, tagCis, tagTrans, gSrcBase, gOtBase, nm, c
}
return 0;
}
-function nameByGr(gr, gSrcBase, gOtBase, internalNameMap, conflictSet) {
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+export function byDecompose(gSrcBase, gOtBase, internalNameMap, conflictSet) {
+ const parts = CvDecompose.get(gSrcBase);
+
+ if (!parts || !parts.length) return 0;
+
+ let newNamesCount = 0;
+ for (const [index, gnPart] of parts.entries()) {
+ const gComponent = internalNameMap.get(gnPart);
+
+ if (!gComponent || gComponent.name) continue;
+
+ const nameT = CvDecompose.amendOtName(gOtBase.name, index);
+ if (!conflictSet.has(nameT)) {
+ conflictSet.add(nameT);
+ gComponent.name = nameT;
+ newNamesCount++;
+ }
+ }
+
+ return newNamesCount;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+const NamingGr = [TieMark, VS01];
+export function byGr(gSrcBase, gOtBase, internalNameMap, conflictSet) {
+ if (!gOtBase.name) return 0;
+ let n = 0;
+ for (const cv of AnyCv.query(gSrcBase)) {
+ n += nameByGrImpl(cv, gSrcBase, gOtBase, internalNameMap, conflictSet);
+ }
+ for (const gr of NamingGr) {
+ if (gr.get(gSrcBase)) {
+ n += nameByGrImpl(gr, gSrcBase, gOtBase, internalNameMap, conflictSet);
+ }
+ }
+ return n;
+}
+function nameByGrImpl(gr, gSrcBase, gOtBase, internalNameMap, conflictSet) {
const gnDst = gr.get(gSrcBase);
if (!gnDst) return 0;
const gOtDst = internalNameMap.get(gnDst);
@@ -331,6 +358,8 @@ function nameByGr(gr, gSrcBase, gOtBase, internalNameMap, conflictSet) {
return 0;
}
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
export function byBuildOrder(rank, gSrc, gnOrig) {
if (!gnOrig) gnOrig = `.g${rank}`;
gnOrig = Joining.amendOtName(gnOrig, Joining.get(gSrc));
diff --git a/font-src/gen/otd-conv/glyphs.mjs b/font-src/gen/otd-conv/glyphs.mjs
index e3890cf956..b288a2ba7c 100644
--- a/font-src/gen/otd-conv/glyphs.mjs
+++ b/font-src/gen/otd-conv/glyphs.mjs
@@ -3,7 +3,7 @@ import { Ot } from "ot-builder";
import { Point } from "../../support/geometry/point.mjs";
import * as Gr from "../../support/gr.mjs";
-import { byBuildOrder, byCode, byGr, bySpacing } from "./glyph-name.mjs";
+import * as GlyphName from "./glyph-name.mjs";
function byRank([gna, a], [gnb, b]) {
return (
@@ -54,7 +54,6 @@ class MappedGlyphStore {
}
}
fillOtGlyphNames() {
- let gid = 0;
let conflictSet = new Set();
let rev = new Map();
for (const [u, g] of this.m_primaryUnicodeMapping) rev.set(g, u);
@@ -62,29 +61,52 @@ class MappedGlyphStore {
([a], [b]) => a.subRank - b.subRank
);
for (const [gSrc, gOt] of glyphsInBuildOrder) gOt.name = undefined;
+
// Name by Unicode
for (const [gSrc, gOt] of glyphsInBuildOrder) {
- gOt.name = byCode(gSrc, rev.get(gSrc), conflictSet);
+ gOt.name = GlyphName.byCode(gSrc, rev.get(gSrc), conflictSet);
}
+
// Name by NWID/WWID
let nNewNames = 0;
do {
nNewNames = 0;
for (const [gSrcBase, gOtBase] of glyphsInBuildOrder) {
- nNewNames += bySpacing(gSrcBase, gOtBase, this.m_nameMapping, conflictSet);
+ nNewNames += GlyphName.bySpacing(
+ gSrcBase,
+ gOtBase,
+ this.m_nameMapping,
+ conflictSet
+ );
}
} while (nNewNames > 0);
+
+ // Name by decompose
+ do {
+ nNewNames = 0;
+ for (const [gSrcBase, gOtBase] of glyphsInBuildOrder) {
+ nNewNames += GlyphName.byDecompose(
+ gSrcBase,
+ gOtBase,
+ this.m_nameMapping,
+ conflictSet
+ );
+ }
+ } while (nNewNames > 0);
+
// Name by Gr
do {
nNewNames = 0;
for (const [gSrcBase, gOtBase] of glyphsInBuildOrder) {
- nNewNames += byGr(gSrcBase, gOtBase, this.m_nameMapping, conflictSet);
+ nNewNames += GlyphName.byGr(gSrcBase, gOtBase, this.m_nameMapping, conflictSet);
}
} while (nNewNames > 0);
+
// Name rest
for (const [gSrc, gOt] of glyphsInBuildOrder) {
- gOt.name = byBuildOrder(gSrc.subRank, gSrc, gOt.name);
+ gOt.name = GlyphName.byBuildOrder(gSrc.subRank, gSrc, gOt.name);
}
+
// validate
{
let gnSet = new Set();
diff --git a/font-src/glyphs/auto-build/transformed.ptl b/font-src/glyphs/auto-build/transformed.ptl
index 0a7024da89..a7170f802a 100644
--- a/font-src/glyphs/auto-build/transformed.ptl
+++ b/font-src/glyphs/auto-build/transformed.ptl
@@ -115,6 +115,11 @@ glyph-block Autobuild-Transformed : begin
list 0x2077 'seven.lnum'
list 0x2078 'eight.lnum'
list 0x2079 'nine.lnum'
+ list 0x207A 'plus'
+ list 0x207B 'minus'
+ list 0x207C 'equal'
+ list 0x207D 'parenLeft'
+ list 0x207E 'parenRight'
list 0x02B0 'h'
list 0x02B1 'hHookTop'
list 0x02B2 'j'
@@ -179,9 +184,9 @@ glyph-block Autobuild-Transformed : begin
list 0x1DA6 'smcpI'
list 0x1DA7 'smcpIBarOver'
list 0x1DA8 'jCurlyTail'
- list 0x1DAB 'smcpL'
list 0x1DA9 'lRTail'
list 0x1DAA 'lPalatalHook'
+ list 0x1DAB 'smcpL'
list 0x1DAC 'meng'
list 0x1DAD 'turnmLeg'
list 0x1DAE 'nLTail'
@@ -197,11 +202,11 @@ glyph-block Autobuild-Transformed : begin
list 0x1DB8 'smcpU'
list 0x1DB9 'vHookTop'
list 0x1DBA 'turnv'
+ list 0x1DBB 'z'
list 0x1DBC 'zRTailBR'
list 0x1DBD 'zCurlyTail'
list 0x1DBE 'ezh'
list 0x1DBF 'grek/theta'
- list 0x1DBB 'z'
list 0x1D2C 'A'
list 0x1D2E 'B'
list 0x1D2F 'BBar'
@@ -225,11 +230,7 @@ glyph-block Autobuild-Transformed : begin
list 0x1D41 'U'
list 0x1D42 'W'
list 0x2C7D 'V'
- list 0x207A 'plus'
- list 0x207B 'minus'
- list 0x207C 'equal'
- list 0x207D 'parenLeft'
- list 0x207E 'parenRight'
+ list 0x2E0B 'mathBox'
list 0xA69C 'cyrl/yer'
list 0xA69D 'cyrl/yeri'
list 0xA702 'subst'
@@ -249,52 +250,52 @@ glyph-block Autobuild-Transformed : begin
list 0xAB5D 'lInvLazySOver'
list 0xAB5E 'lTildeOver'
list 0xAB69 'turnw'
- list 0x107AF 'tRTail'
+ list 0x10780 'smcpAA'
+ list 0x10781 'triangleColon'
+ list 0x10782 'halfTriangleColon'
+ list 0x10783 'ae'
+ list 0x10784 'smcpB'
+ list 0x10785 'bHookTop'
list 0x1078B 'dHookBottom'
- list 0x107A5 'q'
+ list 0x1078C 'dHookTop'
+ list 0x1078D 'dHookTopBottom'
+ list 0x1078E 'eRev'
+ list 0x1078F 'epsilonRevClosed'
+ list 0x10791 'ramshorn'
list 0x10792 'smcpG'
- list 0x107B3 'glottalStopBar'
+ list 0x10793 'gScriptHookTop'
+ list 0x10794 'smcpGHookTop'
list 0x10795 'hBar'
- list 0x10797 'hengHookTop'
- list 0x107B0 'vHookRight'
- list 0x107A9 'rFlap'
- list 0x107A8 'rRTail'
- list 0x107BA 'sCurlyTail'
- list 0x10784 'smcpB'
- list 0x107AA 'smcpR'
list 0x10796 'smcpH'
- list 0x107B4 'revGlottalStopBar'
+ list 0x10797 'hengHookTop'
+ list 0x10798 'dotlessjBarHookTop'
list 0x1079B 'lBelt'
- list 0x1079E 'lyogh'
+ list 0x1079C 'smcpLBelt'
list 0x1079D 'lBeltRTail'
+ list 0x1079E 'lyogh'
list 0x1079F 'lyoghRTail'
- list 0x107A1 'turnyBelt'
- list 0x1079C 'smcpLBelt'
list 0x107A0 'turny'
+ list 0x107A1 'turnyBelt'
+ list 0x107A2 'oSlash'
+ list 0x107A3 'smcpOE'
+ list 0x107A4 'closeomega'
+ list 0x107A5 'q'
list 0x107A6 'turnrLongLeg'
list 0x107A7 'rTurnLongLetRTail'
- list 0x10780 'smcpAA'
- list 0x10785 'bHookTop'
- list 0x1078C 'dHookTop'
- list 0x1078D 'dHookTopBottom'
- list 0x10798 'dotlessjBarHookTop'
- list 0x10793 'gScriptHookTop'
- list 0x10794 'smcpGHookTop'
+ list 0x107A8 'rRTail'
+ list 0x107A9 'rFlap'
+ list 0x107AA 'smcpR'
+ list 0x107AF 'tRTail'
+ list 0x107B0 'vHookRight'
+ list 0x107B2 'smcpY'
+ list 0x107B3 'glottalStopBar'
+ list 0x107B4 'revGlottalStopBar'
list 0x107B5 'bullEye'
list 0x107B6 'dentalclick'
+ list 0x107B7 'alveolarlateralclick'
list 0x107B8 'palatoalveolarclick'
list 0x107B9 'retroflexClickHook'
- list 0x107B7 'alveolarlateralclick'
- list 0x107B2 'smcpY'
- list 0x107A4 'closeomega'
- list 0x107A2 'oSlash'
- list 0x1078E 'eRev'
- list 0x10791 'ramshorn'
- list 0x1078F 'epsilonRevClosed'
- list 0x10783 'ae'
- list 0x107A3 'smcpOE'
- list 0x10781 'triangleColon'
- list 0x10782 'halfTriangleColon'
+ list 0x107BA 'sCurlyTail'
list 0x1E030 'cyrl/a'
list 0x1E031 'cyrl/be'
list 0x1E032 'cyrl/ve'
@@ -396,6 +397,11 @@ glyph-block Autobuild-Transformed : begin
list 0x2087 'seven.lnum'
list 0x2088 'eight.lnum'
list 0x2089 'nine.lnum'
+ list 0x208A 'plus'
+ list 0x208B 'minus'
+ list 0x208C 'equal'
+ list 0x208D 'parenLeft'
+ list 0x208E 'parenRight'
list 0x2090 'a'
list 0x2091 'e'
list 0x2092 'o'
@@ -419,11 +425,6 @@ glyph-block Autobuild-Transformed : begin
list 0x1D69 'grek/phi'
list 0x1D6A 'grek/chi'
list 0x2C7C 'j'
- list 0x208A 'plus'
- list 0x208B 'minus'
- list 0x208C 'equal'
- list 0x208D 'parenLeft'
- list 0x208E 'parenRight'
list 0xA700 'subst'
list 0xA701 'substBarNoRise'
list 0xA706 'supst'
@@ -509,6 +510,7 @@ glyph-block Autobuild-Transformed : begin
list 0x36C 'r'
list 0x36E 'v'
list 0x36F 'x'
+ list 0x1DD3 'flattenedOpena'
list 0x1DD4 'ae'
list 0x1DD5 'ao'
list 0x1DDB 'smcpG'
@@ -694,7 +696,7 @@ glyph-block Autobuild-Transformed : begin
link-relations relSets
glyph-block Autobuild-Transformed-Texture : begin
- if (!(para.buildTexture && !para.isQuasiProportional)) : return nothing
+ if (!(para.buildTextureFeature && !para.isQuasiProportional)) : return nothing
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
@@ -726,7 +728,8 @@ glyph-block Autobuild-Transformed-Texture : begin
set-width Width
if extL : currentGlyph.applyTransform [Translate (-extL * Width) 0] true
- link-relations relSets
+ # Do NOT need this, as texture variants are applied AFTER cv/ss
+ # link-relations relSets
define ranges : list
list 0x41 0x5A
diff --git a/font-src/glyphs/common/derivatives.ptl b/font-src/glyphs/common/derivatives.ptl
index 37267af79b..ebc6510bfa 100644
--- a/font-src/glyphs/common/derivatives.ptl
+++ b/font-src/glyphs/common/derivatives.ptl
@@ -71,6 +71,7 @@ glyph-block Common-Derivatives : begin
# Build principal
local gndSource : Fn gnSources null null
+ local gSource : query-glyph gndSource
linksGnMap.set [keyOfGnList gnSources] gndSource
local mesh : getGrMesh gnSources Query query-glyph
@@ -82,6 +83,9 @@ glyph-block Common-Derivatives : begin
local gnDerivedTo : Fn to gr from
linksGnMap.set key gnDerivedTo
+ local gDerivedTo : query-glyph gnDerivedTo
+ if (gSource && gDerivedTo) : gSource.dependsOn gDerivedTo
+
# Link related derivatives
foreach { gr from to } [items-of mesh] : begin
local gndFrom : linksGnMap.get [keyOfGnList from]
diff --git a/font-src/glyphs/letter/cyrillic/dzzhe-zhwe.ptl b/font-src/glyphs/letter/cyrillic/dzzhe-zhwe.ptl
index ccbc2a79a9..cfce393f40 100644
--- a/font-src/glyphs/letter/cyrillic/dzzhe-zhwe.ptl
+++ b/font-src/glyphs/letter/cyrillic/dzzhe-zhwe.ptl
@@ -9,24 +9,25 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
glyph-block-import Common-Derivatives
glyph-block-import Letter-Greek-Lower-Epsilon : CyrZe
- define [SubDfDim pShift keeps df _o] : begin
+ glyph-block-export SubDfDimBy4
+ define [SubDfDimBy4 pShift keeps df _o] : begin
local subDf : df.slice 4 keeps _o
local subDfFullShift : (df.rightSB - subDf.rightSB) / (4 - keeps)
local shift : pShift * subDfFullShift
local sw : AdviceStroke 3.3 [df.slice 4 3 _o].div
return : object subDf shift sw
- do "d subglyph"
+ do "de subglyph"
glyph-block-import Mark-Adjustment : ExtendBelowBaseAnchors
glyph-block-import Letter-Cyrillic-De : CyrDeShape CyrDeItalicShapeT
define [CyrDzzheDeShape df top] : glyph-proc
- local [object subDf sw] : SubDfDim 0 2 df OX
+ local [object subDf sw] : SubDfDimBy4 0 2 df OX
local left : if SLAB (subDf.leftSB + 0.5 * SideJut) subDf.leftSB
include : CyrDeShape top left subDf.rightSB sw
define [CyrDzzheDeItalicShape df] : glyph-proc
- local [object subDf sw] : SubDfDim 0 2 df OX
+ local [object subDf sw] : SubDfDimBy4 0 2 df OX
include : CyrDeItalicShapeT dispiro subDf sw
create-glyph "cyrl/Dzzhe/left" : glyph-proc
@@ -62,7 +63,7 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
bilateralInwardSerifed { SLAB-INWARD SLAB-INWARD }
define [CyrZhweZeShape slabTop slabBot df top hook] : glyph-proc
- local [object subDf sw] : SubDfDim 0 2 df OX
+ local [object subDf sw] : SubDfDimBy4 0 2 df OX
local ze : CyrZe slabTop slabBot top 0 subDf.leftSB subDf.rightSB 0.65 hook sw
include : ze.Shape
include : ze.AutoStartSerifL
@@ -84,23 +85,23 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
do "zhe subglyphs"
glyph-block-import Letter-Cyrillic-Zhe : Zhe
define [CyrRightZheShape legShape fSlab fMidSlab df top barLeft] : glyph-proc
- local [object subDf shift sw] : SubDfDim 1 3 df OX
+ local [object subDf shift sw] : SubDfDimBy4 1 3 df OX
include : with-transform [ApparentTranslate shift 0] : Zhe.HalfShape legShape fSlab fMidSlab subDf 0 top top
include : HBar.m barLeft (shift + subDf.middle) (0.5 * top) sw
define [DzzheLeft df] : begin
- local [object subDf sw] : SubDfDim 0 2 df OX
+ local [object subDf sw] : SubDfDimBy4 0 2 df OX
local swInner : sw * [AdviceStroke 2.75] / Stroke
return : [mix subDf.leftSB subDf.rightSB : StrokeWidthBlend 0.95 0.96] - [HSwToV : 0.5 * swInner]
define [ZhweZheShape legShape fSlab fMidSlab df top hook] : glyph-proc
- local [object subDf sw] : SubDfDim 0 2 df OX
+ local [object subDf sw] : SubDfDimBy4 0 2 df OX
local ze : CyrZe 0 0 top 0 subDf.leftSB subDf.rightSB 0.65 hook (0.5 * sw)
include : difference [CyrRightZheShape legShape fSlab fMidSlab df top subDf.middle] [ze.ShapeMask]
glyph-block-import Letter-Cyrillic-De : CyrDeItalicShapeT
define [DzzheZheItalicShape legShape fSlab fMidSlab df top] : glyph-proc
- local [object subDf sw] : SubDfDim 0 2 df OX
+ local [object subDf sw] : SubDfDimBy4 0 2 df OX
include : difference
CyrRightZheShape legShape fSlab fMidSlab df top subDf.middle
CyrDeItalicShapeT spiro-outline subDf sw
diff --git a/font-src/glyphs/letter/cyrillic/el.ptl b/font-src/glyphs/letter/cyrillic/el.ptl
index 43828724d0..a37ed6d922 100644
--- a/font-src/glyphs/letter/cyrillic/el.ptl
+++ b/font-src/glyphs/letter/cyrillic/el.ptl
@@ -11,9 +11,9 @@ glyph-block Letter-Cyrillic-El : begin
glyph-block-import Letter-Shared-Shapes : SerifFrame LegShape RightwardTailedBar
glyph-block-import Letter-Shared-Shapes : CyrDescender CyrTailDescender PalatalHook MidHook UpwardHookShape
- define BODY-STRAIGHT 0
- define BODY-TAILED 1
- define BODY-NONE 2
+ define BODY-NONE 0
+ define BODY-STRAIGHT 1
+ define BODY-TAILED 2
define SLAB-NONE 0
define SLAB-ALL 1
diff --git a/font-src/glyphs/letter/cyrillic/iotified-a.ptl b/font-src/glyphs/letter/cyrillic/iotified-a.ptl
index 7590a0c067..b49268f84b 100644
--- a/font-src/glyphs/letter/cyrillic/iotified-a.ptl
+++ b/font-src/glyphs/letter/cyrillic/iotified-a.ptl
@@ -126,13 +126,13 @@ glyph-block Letter-Cyrillic-Iotified-A : begin
do "iotified a"
glyph-block-import Letter-Latin-Lower-A : DoubleStorey DoubleStoreyConfig SingleStorey SingleStoreyConfig
- foreach { suffix { body xTrailing } } [Object.entries DoubleStoreyConfig] : do
+ foreach { suffix { body xTrailing hookStyle } } [Object.entries DoubleStoreyConfig] : do
create-glyph "cyrl/aIotified.\(suffix)" : glyph-proc
define df : include : DivFrame para.diversityM 3
include : df.markSet.e
local { subDf shift } : SubDfAndShift 1 df
- include : with-transform [ApparentTranslate shift 0] [body subDf df.mvs]
+ include : with-transform [ApparentTranslate shift 0] [body subDf hookStyle df.mvs]
include : difference
Iotified.full df XH [mix df.leftSB df.rightSB (3 / 4)] (XH / 2)
diff --git a/font-src/glyphs/letter/latin-ext/egyptological.ptl b/font-src/glyphs/letter/latin-ext/egyptological.ptl
index 5f6b67070a..cee126aa27 100644
--- a/font-src/glyphs/letter/latin-ext/egyptological.ptl
+++ b/font-src/glyphs/letter/latin-ext/egyptological.ptl
@@ -66,7 +66,7 @@ glyph-block Letter-Latin-Egyptological : begin
glyph-block-import Mark-Shared-Metrics : markMiddle
glyph-block-import Mark-Above : aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack
- create-glyph 'EgyptologicalYodAbove' 0xE010 : glyph-proc
+ create-glyph 'EgyptologicalYodAbove' : glyph-proc
set-width 0
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBraceL' markMiddle aboveMarkMid
diff --git a/font-src/glyphs/letter/latin-ext/flattened-open-a.ptl b/font-src/glyphs/letter/latin-ext/flattened-open-a.ptl
new file mode 100644
index 0000000000..b2a38e06da
--- /dev/null
+++ b/font-src/glyphs/letter/latin-ext/flattened-open-a.ptl
@@ -0,0 +1,27 @@
+$$include '../../../meta/macros.ptl'
+
+import [mix linreg clamp fallback] from"../../../support/utils.mjs"
+
+
+glyph-module
+
+glyph-block Letter-Latin-Flattened-Open-A : begin
+ glyph-block-import CommonShapes
+ glyph-block-import Common-Derivatives
+
+ create-glyph 'flattenedOpena' : glyph-proc
+ local df : include : DivFrame para.diversityM 3
+ include : df.markSet.e
+
+ include : dispiro
+ g4.down.start df.leftSB (0.5 * XH) [widths.center.heading df.mvs Downward]
+ arcvh
+ g4.right.mid [mix df.middle df.leftSB 0.5] (0.5 * df.mvs) [heading Rightward]
+ archv
+ g4.up.end df.middle (0.5 * XH) [heading Upward]
+ include : dispiro
+ g4.down.start df.middle (0.5 * XH) [widths.center.heading df.mvs Downward]
+ arcvh
+ g4.right.mid [mix df.middle df.rightSB 0.5] (0.5 * df.mvs) [heading Rightward]
+ archv
+ g4.up.end df.rightSB (0.5 * XH) [heading Upward]
diff --git a/font-src/glyphs/letter/latin-ext/lower-ae-oe.ptl b/font-src/glyphs/letter/latin-ext/lower-ae-oe.ptl
index 242f8611a7..471cab1cdc 100644
--- a/font-src/glyphs/letter/latin-ext/lower-ae-oe.ptl
+++ b/font-src/glyphs/letter/latin-ext/lower-ae-oe.ptl
@@ -8,6 +8,7 @@ glyph-module
glyph-block Letter-Latin-Lower-AE-OE : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
+ glyph-block-import Mark-Adjustment : LeaningAnchor
glyph-block-import Letter-Shared-Shapes : nShoulder OBarLeft
glyph-block-export SubDfAndShift
@@ -17,33 +18,45 @@ glyph-block Letter-Latin-Lower-AE-OE : begin
local shift : pShift * subDfFullShift
return { subDf shift }
+ glyph-block-export SubDfAndShiftEx
+ define [SubDfAndShiftEx p q pShift df _o] : begin
+ local subDf : df.slice p q _o
+ local subDfFullShift : df.rightSB - subDf.rightSB
+ local shift : pShift * subDfFullShift
+ return { subDf shift }
+
do "a subglyphs"
- define [AAShape pShift df body o] : begin
+ define [AAShape body hookStyle pShift df o] : begin
local { subDf shift } : SubDfAndShift pShift df o
- return : with-transform [ApparentTranslate shift 0] [body subDf df.mvs]
+ return : with-transform [ApparentTranslate shift 0] [body subDf hookStyle df.mvs]
glyph-block-import Letter-Latin-Lower-A : DoubleStorey
define DoubleStoreyConfig : object
- doubleStoreySerifless { DoubleStorey.Serifless }
- doubleStoreySerifed { DoubleStorey.Serifed }
- doubleStoreyTailed { DoubleStorey.Tailed }
- doubleStoreyToothlessCorner { DoubleStorey.ToothlessCorner }
- doubleStoreyToothlessRounded { DoubleStorey.ToothlessRounded }
-
- create-glyph "ae/a" : glyph-proc
- local df : include : DivFrame para.diversityM 3
- include : df.markSet.e
- set-base-anchor 'cvDecompose' 0 0
- include : AAShape 0 df DoubleStorey.ToothlessRounded 0
-
- foreach { suffix { bodyR } } [Object.entries DoubleStoreyConfig] : do
+ doubleStoreySerifless { DoubleStorey.Serifless 1 }
+ doubleStoreySerifed { DoubleStorey.Serifed 1 }
+ doubleStoreyTailed { DoubleStorey.Tailed 1 }
+ doubleStoreyToothlessCorner { DoubleStorey.ToothlessCorner 1 }
+ doubleStoreyToothlessRounded { DoubleStorey.ToothlessRounded 1 }
+ doubleStoreyHookInwardSerifedSerifless { DoubleStorey.Serifless 2 }
+ doubleStoreyHookInwardSerifedSerifed { DoubleStorey.Serifed 2 }
+ doubleStoreyHookInwardSerifedTailed { DoubleStorey.Tailed 2 }
+ doubleStoreyHookInwardSerifedToothlessCorner { DoubleStorey.ToothlessCorner 2 }
+ doubleStoreyHookInwardSerifedToothlessRounded { DoubleStorey.ToothlessRounded 2 }
+
+ foreach { suffix { bodyR hookStyle } } [Object.entries DoubleStoreyConfig] : do
+
+ create-glyph "ae/a.\(suffix)" : glyph-proc
+ local df : include : DivFrame para.diversityM 3
+ include : df.markSet.e
+ set-base-anchor 'cvDecompose' 0 0
+ include : AAShape DoubleStorey.ToothlessRounded hookStyle 0 df 0
create-glyph "aa.\(suffix)" : glyph-proc
local df : include : DivFrame para.diversityM 3
include : df.markSet.e
- local [left] : AAShape 0 df DoubleStorey.ToothlessRounded
- local [right] : AAShape 1 df bodyR
+ local [left] : AAShape DoubleStorey.ToothlessRounded hookStyle 0 df
+ local [right] : AAShape bodyR hookStyle 1 df
include : difference [right] : intersection
MaskAbove (XH * OverlayPos * 1.02)
union
@@ -51,6 +64,7 @@ glyph-block Letter-Latin-Lower-AE-OE : begin
with-transform [ApparentTranslate (-0.50 * df.mvs) 0] [left]
with-transform [ApparentTranslate (-0.75 * df.mvs) 0] [left]
with-transform [ApparentTranslate (-1.00 * df.mvs) 0] [left]
+
include : difference [left] : intersection
MaskBelow (XH * OverlayPos * 1.02)
union
@@ -185,7 +199,100 @@ glyph-block Letter-Latin-Lower-AE-OE : begin
set-base-anchor 'cvDecompose' 0 0
include : EsTeLeftShape df styBot
+ do "P/R subglyphs"
+ glyph-block-import Letter-Latin-Upper-P : PShape PBarPosY
+ glyph-block-import Letter-Latin-Upper-R : RevRShape RConfig RBarPos
+
+ # ya
+ foreach { suffix { legShape fOpen fTailed {slabs revSlabs doLegSlab} } } [Object.entries RConfig] : begin
+ local fSlabBot : slabs && slabs !== PShape.SlabMotion
+
+ if [not fTailed] : begin
+ create-glyph "cyrl/yae/left.\(suffix)" : glyph-proc
+ local df : include : DivFrame para.diversityM 3
+ include : df.markSet.e
+ set-base-anchor 'cvDecompose' 0 0
+
+ local { subDf } : SubDfAndShift 0 df
+ local bp : RBarPos XH fSlabBot
+
+ include : RevRShape legShape XH (df -- subDf) (slab -- revSlabs) (legSlab -- doLegSlab) (bp -- bp) (open -- fOpen) (sw -- df.mvs)
+
+ eject-contour 'strokeR'
+ eject-contour 'serifRB'
+ eject-contour 'serifRT'
+ include : VBar.r subDf.rightSB [PBarPosY XH df.mvs bp] XH df.mvs
+
+ # p
+ glyph-block-import Letter-Latin-Lower-P : PConfig
+ foreach { suffix { Body {Serifs doBS} }} [Object.entries PConfig] : do
+ create-glyph "cyrl/rha/left.\(suffix)" : glyph-proc
+ local df : include : DivFrame para.diversityM 3
+ include : df.markSet.p
+ local { subDf } : SubDfAndShift 0 df
+ set-base-anchor 'cvDecompose' 0 0
+
+ include : Body
+ left -- subDf.leftSB
+ right -- subDf.rightSB + OX
+ sw -- df.mvs
+ include : Serifs subDf XH df.mvs
+ include : LeaningAnchor.Below.VBar.l SB
+
+ do "X subglyphs"
+ glyph-block-import Letter-Shared-Shapes : SerifFrame WithSerifOverflowMask
+ glyph-block-import Letter-Latin-X : XConfig XLetterForm XSerifs
+
+ foreach { suffix {stroke1 stroke2 serifShape fMaskBase} } [Object.entries XConfig] : do
+ define [halfLetterShape df top bot turn tension] : glyph-proc
+ local lf : XLetterForm df top bot stroke1 stroke2 turn tension
+ include : WithSerifOverflowMask fMaskBase top bot df.leftSB df.rightSB : lf.rightHalf fMaskBase
+ if serifShape : begin
+ local sf : SerifFrame.fromDf df top bot
+ include : match serifShape
+ [Just XSerifs.Full] : composite-proc sf.rt.full sf.rb.full
+ [Just XSerifs.BilateralMotion] : composite-proc sf.rb.outer
+ __ : glyph-proc
+
+ define [LhaRightLetterShape df top bot turn tension] : glyph-proc
+ local stroke1f : if (stroke1 == 3) 4 stroke1
+ local lf : XLetterForm df top bot stroke1f stroke2 turn tension
+ sw -- df.mvs
+ swCursiveEnd -- [AdviceStroke 3 df.div]
+ swCursiveCoEnd -- df.mvs
+ swCursiveMid -- df.mvs
+ include : WithSerifOverflowMask fMaskBase top bot df.leftSB df.rightSB : lf.base fMaskBase
+ if serifShape : begin
+ local sf : SerifFrame.fromDf df top bot
+ include : match serifShape
+ [Just XSerifs.Full] : composite-proc sf.rt.full sf.lb.full sf.rb.full
+ [Just XSerifs.BilateralMotion] : composite-proc sf.rb.outer
+ __ : glyph-proc
+
+ create-glyph "cyrl/rha/right.\(suffix)" : glyph-proc
+ local df : DivFrame para.diversityM 3
+ set-width 0
+ set-mark-anchor 'cvDecompose' 0 0
+ include : halfLetterShape df XH 0 0.1 0.20
+
+ create-glyph "cyrl/lha/right.\(suffix)" : glyph-proc
+ local df : DivFrame para.diversityM 3.2
+ set-width 0
+ set-mark-anchor 'cvDecompose' 0 0
+
+ local { subDf shift } : SubDfAndShiftEx 6 4 1 df
+ include : with-transform [ApparentTranslate shift 0] : LhaRightLetterShape subDf XH 0 0.1 0.20
+
+ create-glyph "cyrl/Lha/right.\(suffix)" : glyph-proc
+ local df : DivFrame para.diversityM 3.2
+ set-width 0
+ set-mark-anchor 'cvDecompose' 0 0
+
+ local { subDf shift } : SubDfAndShiftEx 6 4 1 df
+ include : with-transform [ApparentTranslate shift 0] : LhaRightLetterShape subDf CAP 0 0.1 0.28
+
do "other subglyphs"
+ # Te
define [EsTeRightShape df doTopSerifs doBottomSerifs] : new-glyph : glyph-proc
local subDf : df.sliceFine 3 2 (1/3)
# local shift : df.rightSB - subDf.rightSB
@@ -215,6 +322,22 @@ glyph-block Letter-Latin-Lower-AE-OE : begin
set-mark-anchor 'cvDecompose' 0 0
include : EsTeRightShape df doST doSB
+ # El
+ glyph-block-import Letter-Cyrillic-El : CyrElShape
+ create-glyph 'cyrl/Lha/left' : glyph-proc
+ local df : include : DivFrame para.diversityM 3.2
+ include : df.markSet.capital
+ local { subDf } : SubDfAndShiftEx 6 3 0 df
+ set-base-anchor 'cvDecompose' 0 0
+ include : CyrElShape subDf.leftSB (subDf.rightSB - [HSwToV : 0.5 * df.mvs]) CAP 0 [if SLAB 4 0] df.mvs
+
+ create-glyph 'cyrl/lha/left' : glyph-proc
+ local df : include : DivFrame para.diversityM 3.2
+ include : df.markSet.e
+ local { subDf } : SubDfAndShiftEx 6 3 0 df
+ set-base-anchor 'cvDecompose' 0 0
+ include : CyrElShape subDf.leftSB (subDf.rightSB - [HSwToV : 0.5 * df.mvs]) XH 0 [if SLAB 4 0] df.mvs
+
do "subglyph diacritics"
glyph-block-import Mark-Overlay : InnerDot
@@ -251,10 +374,16 @@ glyph-block Letter-Latin-Lower-AE-OE : begin
select-variant "aa" 0xA733 (follow -- 'a/turnABase')
+ select-variant "ae/a"
select-variant "ae/e" (follow -- 'e')
select-variant "aeInvE/right" (follow -- 'e')
select-variant "ue/u"
select-variant "oeOpenO/left" (follow -- 'c')
+ select-variant "cyrl/yae/left"
+ select-variant "cyrl/rha/left" (follow -- 'cyrl/er')
+ select-variant "cyrl/rha/right"
+ select-variant "cyrl/Lha/right" (follow -- 'cyrl/Rha/right')
+ select-variant "cyrl/lha/right" (follow -- 'cyrl/rha/right')
derive-composites 'ae' 0xE6 'ae/a' 'ae/e'
derive-composites 'oe' 0x153 'oe/o' 'ae/e'
@@ -265,6 +394,9 @@ glyph-block Letter-Latin-Lower-AE-OE : begin
derive-composites 'oeOpenO' 0xAB62 'oeOpenO/left' 'ae/e'
derive-composites 'aeInvE' 0xAB31 'ae/a' 'aeInvE/right'
derive-composites 'oeInv' 0xAB40 'oe/o' 'aeInvE/right'
+ derive-composites 'cyrl/lha' 0x515 'cyrl/lha/left' 'cyrl/lha/right'
+ derive-composites 'cyrl/Lha' 0x514 'cyrl/Lha/left' 'cyrl/Lha/right'
+ derive-composites 'cyrl/yae' 0x519 'cyrl/yae/left' 'ae/e'
alias 'cyrl/ae' 0x4D5 'ae'
alias 'cyrl/oo' 0xA699 'oo'
@@ -287,3 +419,20 @@ glyph-block Letter-Latin-Lower-AE-OE : begin
select-variant 'cyrl/este/left' (follow -- 'cBottomSerifOnly')
select-variant 'cyrl/este/right' (follow -- 'T')
derive-composites 'cyrl/este' null 'cyrl/este/left' 'cyrl/este/right'
+
+ glyph-block-export BuildRha
+ define [BuildRha srcs] : glyph-proc
+ local df : include : DivFrame para.diversityM 3
+ include : df.markSet.p
+
+ local {ra ha} srcs
+ include : union
+ refer-glyph ra
+ difference
+ refer-glyph ha
+ with-transform [ApparentTranslate (-0.25 * df.mvs) 0] [refer-glyph ra]
+ with-transform [ApparentTranslate (-0.50 * df.mvs) 0] [refer-glyph ra]
+ with-transform [ApparentTranslate (-0.75 * df.mvs) 0] [refer-glyph ra]
+ with-transform [ApparentTranslate (-1.00 * df.mvs) 0] [refer-glyph ra]
+
+ derive-multi-part-glyphs 'cyrl/rha' 0x517 { 'cyrl/rha/left' 'cyrl/rha/right' } BuildRha
diff --git a/font-src/glyphs/letter/latin-ext/upper-aa-ao.ptl b/font-src/glyphs/letter/latin-ext/upper-aa-ao.ptl
index 19a28a275d..3662802591 100644
--- a/font-src/glyphs/letter/latin-ext/upper-aa-ao.ptl
+++ b/font-src/glyphs/letter/latin-ext/upper-aa-ao.ptl
@@ -1,99 +1,137 @@
$$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from"../../../support/utils.mjs"
-import [bitOr] from"../../../support/util/mask-bit.mjs"
+import [maskOffBits] from"../../../support/util/mask-bit.mjs"
glyph-module
glyph-block Letter-Latin-Upper-AA-AO : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
- glyph-block-import Letter-Latin-Upper-F : EFVJutLength
- glyph-block-import Letter-Latin-Upper-A : AMaskShape ALetterShape
glyph-block-import Letter-Latin-Lower-AE-OE : SubDfAndShift
- define [AHalfShape pShift df top fStraightBar slabKind] : begin
- local { subDf shift } : SubDfAndShift pShift df
- return : with-transform [ApparentTranslate shift 0]
- ALetterShape subDf fStraightBar slabKind top df.mvs
-
- define [AHalfShapeMask pShift df top fStraightBar slabKind] : begin
- local { subDf shift } : SubDfAndShift pShift df
- return : with-transform [ApparentTranslate shift 0]
- AMaskShape subDf fStraightBar top df.mvs
-
- define SLAB-NONE 0
- define SLAB-TOP 1
- define SLAB-LEFT 2
- define SLAB-RIGHT 4
-
- define ALetters : object
- AA { 0xA732 'capital' CAP }
- smcpAA { null 'e' XH }
-
- define AConfig : object
- straightSerifless { true SLAB-NONE SLAB-NONE }
- curlySerifless { false SLAB-NONE SLAB-NONE }
- straightTopSerifed { true SLAB-TOP SLAB-TOP }
- curlyTopSerifed { false SLAB-TOP SLAB-TOP }
- straightBaseSerifed { true SLAB-LEFT SLAB-RIGHT }
- curlyBaseSerifed { false SLAB-LEFT SLAB-RIGHT }
- straightTriSerifed { true [bitOr SLAB-TOP SLAB-LEFT] [bitOr SLAB-TOP SLAB-RIGHT] }
- curlyTriSerifed { false [bitOr SLAB-TOP SLAB-LEFT] [bitOr SLAB-TOP SLAB-RIGHT] }
-
- foreach { prefix { code mk height } } [Object.entries ALetters] : do
- foreach { suffix { fStraightBar skLeft skRight } } [Object.entries AConfig] : do
- create-glyph "\(prefix)/Left.\(suffix)" : glyph-proc
- define df : include : DivFrame para.diversityM 3.5
- include : df.markSet.(mk)
- set-base-anchor 'cvDecompose' 0 0
- include : AHalfShape 0 df height fStraightBar skLeft
-
- create-glyph "\(prefix)/LeftMask.\(suffix)" : glyph-proc
- define df : include : DivFrame para.diversityM 3.5
- include : df.markSet.(mk)
- set-base-anchor 'cvDecompose' 0 0
- include : AHalfShapeMask 0 df height fStraightBar skLeft
-
- create-glyph "\(prefix)/Right.\(suffix)" : glyph-proc
+ do "A glyphs"
+ glyph-block-import Letter-Latin-Upper-A : AConfig AMaskShape ALetterShape
+
+ define [AHalfShape pShift df top fStraightBar slabKind] : begin
+ local { subDf shift } : SubDfAndShift pShift df
+ return : with-transform [ApparentTranslate shift 0]
+ ALetterShape subDf fStraightBar slabKind top df.mvs
+
+ define [AHalfShapeMask pShift df top fStraightBar slabKind] : begin
+ local { subDf shift } : SubDfAndShift pShift df
+ return : with-transform [ApparentTranslate shift 0]
+ AMaskShape subDf fStraightBar top df.mvs
+
+ define SLAB-NONE 0
+ define SLAB-TOP 1
+ define SLAB-LEFT 2
+ define SLAB-RIGHT 4
+
+ define ALetters : object
+ AA { 0xA732 'capital' CAP }
+ smcpAA { null 'e' XH }
+
+ foreach { prefix { code mk height } } [Object.entries ALetters] : do
+ foreach { suffix { fStraightBar slabKind } } [Object.entries AConfig] : do
+ define skLeft : maskOffBits slabKind SLAB-RIGHT
+ define skRight : maskOffBits slabKind SLAB-LEFT
+
+ create-glyph "\(prefix)/Left.\(suffix)" : glyph-proc
+ define df : include : DivFrame para.diversityM 3.5
+ include : df.markSet.(mk)
+ set-base-anchor 'cvDecompose' 0 0
+ include : AHalfShape 0 df height fStraightBar skLeft
+
+ create-glyph "\(prefix)/LeftMask.\(suffix)" : glyph-proc
+ define df : include : DivFrame para.diversityM 3.5
+ include : df.markSet.(mk)
+ set-base-anchor 'cvDecompose' 0 0
+ include : AHalfShapeMask 0 df height fStraightBar skLeft
+
+ create-glyph "\(prefix)/Right.\(suffix)" : glyph-proc
+ define df : DivFrame para.diversityM 3.5
+ set-width 0
+ include : df.markSet.(mk)
+ set-mark-anchor 'cvDecompose' 0 0 0 0
+ include : AHalfShape 1 df height fStraightBar skRight
+
+ create-glyph "\(prefix)/RightMask.\(suffix)" : glyph-proc
+ define df : DivFrame para.diversityM 3.5
+ set-width 0
+ include : df.markSet.(mk)
+ set-mark-anchor 'cvDecompose' 0 0 0 0
+ include : AHalfShapeMask 1 df height fStraightBar skRight
+
+ select-variant "\(prefix)/Left" (follow -- 'A')
+ select-variant "\(prefix)/LeftMask" (follow -- 'A')
+ select-variant "\(prefix)/Right" (follow -- 'A')
+ select-variant "\(prefix)/RightMask" (follow -- 'A')
+
+ derive-multi-part-glyphs prefix code
+ list "\(prefix)/Left" "\(prefix)/LeftMask" "\(prefix)/Right" "\(prefix)/RightMask"
+ function [srcs gr] : glyph-proc
+ define df : DivFrame para.diversityM 3.5
+ define topSerifGap : Math.max (0.1 * (df.rightSB - df.leftSB)) [AdviceStroke 6]
+ define { left leftMask right rightMask } srcs
+
+ include [refer-glyph left] AS_BASE ALSO_METRICS
+ include : difference
+ refer-glyph right
+ refer-glyph leftMask
+ difference
+ intersection
+ MaskAbove (height - Stroke)
+ with-transform [ApparentTranslate topSerifGap 0] [refer-glyph leftMask]
+ with-transform [ApparentTranslate (OX - 0.1) 0] [refer-glyph rightMask]
+
+ do "AO"
+ derive-multi-part-glyphs 'AO' 0xA734 {"AA/Left" "AA/LeftMask" "OO/right"}
+ function [srcs gr] : glyph-proc
define df : DivFrame para.diversityM 3.5
- set-width 0
- include : df.markSet.(mk)
- set-mark-anchor 'cvDecompose' 0 0 0 0
- include : AHalfShape 1 df height fStraightBar skRight
+ define topSerifGap : Math.max (0.1 * (df.rightSB - df.leftSB)) [AdviceStroke 6]
+ define { left leftMask right } srcs
+ include [refer-glyph left] AS_BASE ALSO_METRICS
+ include : difference [refer-glyph right] [refer-glyph leftMask]
- create-glyph "\(prefix)/RightMask.\(suffix)" : glyph-proc
- define df : DivFrame para.diversityM 3.5
- set-width 0
- include : df.markSet.(mk)
- set-mark-anchor 'cvDecompose' 0 0 0 0
- include : AHalfShapeMask 1 df height fStraightBar skRight
+ do "RHA"
+ glyph-block-import Letter-Shared-Shapes : SerifFrame WithSerifOverflowMask
+ glyph-block-import Letter-Latin-Upper-P : PShape PConfig
+ glyph-block-import Letter-Latin-X : XConfig XLetterForm XSerifs
+ glyph-block-import Letter-Latin-Lower-AE-OE : BuildRha
- select-variant "\(prefix)/Left" (follow -- 'A')
- select-variant "\(prefix)/LeftMask" (follow -- 'A')
- select-variant "\(prefix)/Right" (follow -- 'A')
- select-variant "\(prefix)/RightMask" (follow -- 'A')
+ foreach { suffix { fGap slabs revSlabs } } [Object.entries PConfig] : do
+ local fMotion : slabs === PShape.SlabMotion
+ local fSlabBot : slabs && slabs !== PShape.SlabMotion
- derive-multi-part-glyphs prefix code
- list "\(prefix)/Left" "\(prefix)/LeftMask" "\(prefix)/Right" "\(prefix)/RightMask"
- function [srcs gr] : glyph-proc
- define df : DivFrame para.diversityM 3.5
- define topSerifGap : Math.max (0.1 * (df.rightSB - df.leftSB)) [AdviceStroke 6]
- define { left leftMask right rightMask } srcs
+ create-glyph "cyrl/Rha/left.\(suffix)" : glyph-proc
+ local df : include : DivFrame para.diversityM 3
+ include : df.markSet.capital
+ set-base-anchor 'cvDecompose' 0 0
+ local subDf : df.sliceFine 3 2 0.575
- include [refer-glyph left] AS_BASE ALSO_METRICS
include : difference
- refer-glyph right
- refer-glyph leftMask
- difference
- intersection
- MaskAbove (height - Stroke)
- with-transform [ApparentTranslate topSerifGap 0] [refer-glyph leftMask]
- with-transform [ApparentTranslate (OX - 0.1) 0] [refer-glyph rightMask]
-
- derive-multi-part-glyphs 'AO' 0xA734 {"AA/Left" "AA/LeftMask" "OO/right"} : function [srcs gr] : glyph-proc
- define df : DivFrame para.diversityM 3.5
- define topSerifGap : Math.max (0.1 * (df.rightSB - df.leftSB)) [AdviceStroke 6]
- define { left leftMask right } srcs
- include [refer-glyph left] AS_BASE ALSO_METRICS
- include : difference [refer-glyph right] [refer-glyph leftMask]
+ PShape CAP (df -- subDf) (slab -- slabs)
+ if fGap [PShape.OpenGap (df -- subDf) (top -- CAP) (bot -- [if fSlabBot df.mvs 0])] [glyph-proc]
+
+ foreach { suffix {stroke1 stroke2 serifShape fMaskBase} } [Object.entries XConfig] : do
+ define [letterShape df top bot turn tension] : glyph-proc
+ local lf : XLetterForm df top bot stroke1 stroke2 turn tension
+ include : WithSerifOverflowMask fMaskBase top bot df.leftSB df.rightSB : lf.rightHalf fMaskBase
+ if serifShape : begin
+ local sf : SerifFrame.fromDf df top bot
+ include : match serifShape
+ [Just XSerifs.Full] : composite-proc sf.rt.full sf.rb.full
+ [Just XSerifs.BilateralMotion] : composite-proc sf.rb.outer
+ __ : glyph-proc
+
+ create-glyph "cyrl/Rha/right.\(suffix)" : glyph-proc
+ local df : DivFrame para.diversityM 3
+ set-width 0
+ set-mark-anchor 'cvDecompose' 0 0
+ include : letterShape df CAP 0 0.1 0.28
+
+ select-variant "cyrl/Rha/left" (follow -- 'P')
+ select-variant "cyrl/Rha/right"
+
+ derive-multi-part-glyphs "cyrl/Rha" 0x516 {'cyrl/Rha/left' 'cyrl/Rha/right'} BuildRha
diff --git a/font-src/glyphs/letter/latin-ext/upper-ae-oe.ptl b/font-src/glyphs/letter/latin-ext/upper-ae-oe.ptl
index 92617a6572..6d97f185fd 100644
--- a/font-src/glyphs/letter/latin-ext/upper-ae-oe.ptl
+++ b/font-src/glyphs/letter/latin-ext/upper-ae-oe.ptl
@@ -7,6 +7,7 @@ glyph-module
glyph-block Letter-Latin-Upper-AE-OE : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
+ glyph-block-import Mark-Adjustment : LeaningAnchor
glyph-block-import Letter-Latin-Upper-F : EFVJutLength
define SLAB-A-NONE 0
@@ -39,7 +40,7 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
corner df.leftSB 0 [heading Upward]
curl df.leftSB (top * 0.1) [heading Upward]
quadControls 0 0.3 6 unimportant
- corner (eleft - HalfStroke) top [widths.rhs fine]
+ corner (eleft - HalfStroke) top [widths.rhs fine]
corner eleft top
corner eleft 0
HBar.t 0 eleft (XH / 2) sw
@@ -107,6 +108,27 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
include : VSerif.dr df.rightSB top jutTop swVJut
include : VSerif.ur df.rightSB 0 jutBot swVJut
+ do "P/Ya Half"
+ glyph-block-import Letter-Latin-Upper-P : PShape PBarPosY
+ glyph-block-import Letter-Latin-Upper-R : RevRShape RConfig RBarPos
+
+ foreach { suffix { legShape fOpen fTailed {slabs revSlabs doLegSlab} } } [Object.entries RConfig] : begin
+ local fSlabBot : slabs && slabs !== PShape.SlabMotion
+
+ if [not fTailed] : begin
+ create-glyph "cyrl/Yae/left.\(suffix)" : glyph-proc
+ local df : include : DivFrame para.diversityM 3
+ include : df.markSet.capital
+ local sw : AESW df CAP
+ local bp : RBarPos CAP fSlabBot
+ local subDf : df.sliceFine 3 2 0.5 [HSwToV : 0.25 * sw]
+ set-base-anchor 'cvDecompose' 0 0
+
+ include : RevRShape legShape CAP (df -- subDf) (slab -- revSlabs) (legSlab -- doLegSlab) (bp -- bp) (open -- fOpen) (sw -- sw)
+
+ eject-contour 'strokeR'
+ eject-contour 'serifRT'
+
define AConfig : object
straightSerifless { true SLAB-A-NONE }
curlySerifless { false SLAB-A-NONE }
@@ -149,9 +171,11 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
select-variant 'AE/EHalf' (follow -- 'AE/EHalf')
select-variant 'smcpAE/AHalf' (follow -- 'A')
select-variant 'smcpAE/EHalf' (follow -- 'AE/EHalf')
+ select-variant 'cyrl/Yae/left'
derive-composites "AE" 0xC6 'AE/AHalf' 'AE/EHalf'
derive-composites "smcpAE" 0x1D01 'smcpAE/AHalf' 'smcpAE/EHalf'
+ derive-composites "cyrl/Yae" 0x518 'cyrl/Yae/left' 'AE/EHalf'
alias 'cyrl/AE' 0x4D4 'AE'
define [OEShape top df slabKind] : glyph-proc
diff --git a/font-src/glyphs/letter/latin.ptl b/font-src/glyphs/letter/latin.ptl
index 3df10461e2..112e6b91c5 100644
--- a/font-src/glyphs/letter/latin.ptl
+++ b/font-src/glyphs/letter/latin.ptl
@@ -51,6 +51,7 @@ export : define [apply] : begin
run-glyph-module "./latin-ext/eszet.mjs"
run-glyph-module "./latin-ext/eth.mjs"
run-glyph-module "./latin-ext/ezh.mjs"
+ run-glyph-module "./latin-ext/flattened-open-a.mjs"
run-glyph-module "./latin-ext/gha.mjs"
# run-glyph-module "./latin-ext/f-ligatures.mjs"
run-glyph-module "./latin-ext/glottal-stop.mjs"
diff --git a/font-src/glyphs/letter/latin/c.ptl b/font-src/glyphs/letter/latin/c.ptl
index 3359764b1c..fe361033f7 100644
--- a/font-src/glyphs/letter/latin/c.ptl
+++ b/font-src/glyphs/letter/latin/c.ptl
@@ -290,13 +290,6 @@ glyph-block Letter-Latin-C : begin
include : VBar.r RightSB Descender [ArcStartSerifDepth Hook] [ArcStartSerifWidth Stroke]
if styBot : let [sf : SerifFrame.fromDf [DivFrame 1] CAP Descender] : include sf.rb.full
- create-glyph "currency/somSign.\(suffix)" : glyph-proc
- include : MarkSet.capital
- local height : mix XH CAP (2 / 3)
- local lf : CLetterForm [DivFrame 1] sty styBot height (height - XH)
- include : lf.full
- include : HBar.b SB RightSB 0 markStroke
-
select-variant 'C' 'C'
link-reduced-variant 'C/sansSerif' 'C' MathSansSerif
select-variant 'revC' 0x2183 (follow -- 'C')
@@ -346,8 +339,6 @@ glyph-block Letter-Latin-C : begin
CShapeT spiro-outline 0.1 [DivFrame 1] SLAB-NONE SLAB-NONE XH 0 SmallArchDepthA SmallArchDepthB Hook BBS
VBar.l (SB + BBD + OX) 0 CAP BBS
- select-variant 'currency/somSign' 0x20C0 (follow -- 'c')
-
create-glyph 'currency/euroSign/overlay' : union
LetterBarOverlay.l SB (CAP * 0.4)
LetterBarOverlay.l SB (CAP * 0.6)
diff --git a/font-src/glyphs/letter/latin/k.ptl b/font-src/glyphs/letter/latin/k.ptl
index ab58b08a56..a8fc718a67 100644
--- a/font-src/glyphs/letter/latin/k.ptl
+++ b/font-src/glyphs/letter/latin/k.ptl
@@ -13,7 +13,7 @@ glyph-block Letter-Latin-K : begin
glyph-block-import Mark-Above : aboveMarkMid
glyph-block-import Mark-Adjustment : ExtendBelowBaseAnchors LeaningAnchor
- glyph-block-import Letter-Shared-Shapes : DiagonalTailInnerRadius DiagonalTailF CyrDescender
+ glyph-block-import Letter-Shared-Shapes : DiagTail CyrDescender
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay PalatalHook TopHook
local [KBalance slabLT straightBar] : if straightBar (Width / 32) 0
@@ -315,14 +315,14 @@ glyph-block Letter-Latin-K : begin
define xDTStart : dim.arcTerminalX + [HSwToV swDiagTail] + xDTGap
define xDTEnd : dim.kshRight - 0.8 * Hook - [HSwToV : 0.25 * swDiagTail] + xDTGap * 0.625
define tailAngle : Math.min 85 (50 + [Math.atan2 (0.75 * swDiagTail) Hook] / Math.PI * 180)
- define dtInnerRadius : [clamp 0.125 1 : mix 1 (Width / UPM * 2) 3] * [DiagonalTailInnerRadius]
+ define dtInnerRadius : [clamp 0.125 1 : mix 1 (Width / UPM * 2) 3] * [DiagTail.DefaultInnerRadius]
set-base-anchor 'legOverlay' [mix xDTStart xDTEnd : StrokeWidthBlend 0.65 0.75] [mix dim.arcTerminalY 0 : StrokeWidthBlend 0.6 0.65]
include : difference
dispiro
flat xDTStart dim.arcTerminalY [widths.center swDiagTailAdj]
curl (xDTEnd + 0.125 * dtInnerRadius) (0.9 * swDiagTail + 0.5 * dtInnerRadius)
- DiagonalTailF 1 [DivFrame 1] xDTEnd 0 dtInnerRadius tailAngle (Hook + swDiagTail / 4) swDiagTail
+ DiagTail.F 1 xDTEnd 0 dtInnerRadius tailAngle (Hook + swDiagTail / 4) swDiagTail
CursiveLoopT spiro-outline (-O) left right stroke top slabLT slabLegs
define [KHookTopBar slabLegs straightBar] : TopHook.lBarInner
diff --git a/font-src/glyphs/letter/latin/lower-a.ptl b/font-src/glyphs/letter/latin/lower-a.ptl
index ec4956763d..8fc1d10373 100644
--- a/font-src/glyphs/letter/latin/lower-a.ptl
+++ b/font-src/glyphs/letter/latin/lower-a.ptl
@@ -10,7 +10,7 @@ glyph-block Letter-Latin-Lower-A : begin
glyph-block-import Common-Derivatives
glyph-block-import Mark-Shared-Metrics : markHalfStroke
glyph-block-import Letter-Shared : CreateAccentedComposition CreateOgonekComposition
- glyph-block-import Letter-Shared-Shapes : SerifFrame OBarLeft OBarRight
+ glyph-block-import Letter-Shared-Shapes : SerifFrame OBarLeft OBarRight ArcStartSerif
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar InvRightwardTailedBar
glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend RetroflexHook
@@ -24,20 +24,30 @@ glyph-block Letter-Latin-Lower-A : begin
local sw : ADoubleStoreyStroke df
return : df.archDepthB (ArchDepth * [StrokeWidthBlend 0.9 0.81 sw]) sw
- define [ADoubleStoreyHookAndBarT df sink y0 stroke] : begin
+ define [ADoubleStoreyHookAndBarT sink df hookStyle y0 stroke] : begin
local isMask : sink == spiro-outline
return : sink
widths.rhs stroke
- g4 df.leftSB (XH - AHook)
- hookstart (XH - O) (sw -- stroke)
+ match hookStyle
+ 1 : list
+ g4 df.leftSB (XH - AHook)
+ hookstart (XH - O) (sw -- stroke)
+ 2 : list
+ g4 df.leftSB (XH - DToothlessRise)
+ g4 (df.middle - CorrectionOMidX * stroke) (XH - O)
flat df.rightSB (XH - [ADoubleStoreySmoothB df])
[if isMask corner curl] df.rightSB y0 [heading Downward]
if [not isMask] {} {[corner df.leftSB y0]}
- export : define [HookAndBar df y0 _stroke] : ADoubleStoreyHookAndBarT df dispiro y0
- fallback _stroke [ADoubleStoreyStroke df]
- export : define [HookAndBarMask df y0 _stroke] : ADoubleStoreyHookAndBarT df spiro-outline y0
- fallback _stroke [ADoubleStoreyStroke df]
+ export : define [HookAndBar df hookStyle y0 _stroke] : glyph-proc
+ if ((hookStyle != 1) && (hookStyle != 2)) : throw : new Error "Invalid hookStyle"
+ local sw : fallback _stroke [ADoubleStoreyStroke df]
+ include : ADoubleStoreyHookAndBarT dispiro df hookStyle y0 sw
+ if (hookStyle == 2) : include : ArcStartSerif.L df.leftSB (XH - DToothlessRise) sw AHook
+
+ export : define [HookAndBarMask df hookStyle y0 _stroke] : begin
+ local sw : fallback _stroke [ADoubleStoreyStroke df]
+ return : ADoubleStoreyHookAndBarT spiro-outline df hookStyle y0 sw
define [ADoubleStoreyArcT df sink kind rise stroke] : glyph-proc
local isMask : sink == spiro-outline
@@ -76,21 +86,21 @@ glyph-block Letter-Latin-Lower-A : begin
export : define [ArcMask df kind rise _sw] : ADoubleStoreyArcT df spiro-outline kind rise
fallback _sw [ADoubleStoreyStroke df]
- export : define [Serifless df sw] : union
- HookAndBar df 0 sw
+ export : define [Serifless df hookStyle sw] : union
+ HookAndBar df hookStyle 0 sw
Arc df 0 nothing nothing sw
- export : define [Serifed df sw] : union
- Serifless df sw
+ export : define [Serifed df hookStyle sw] : union
+ Serifless df hookStyle sw
begin [SerifFrame.fromDf df XH 0].rb.outer
- export : define [Tailed df sw] : union
- HookAndBar df (XH - [ADoubleStoreySmoothB df] + O) sw
+ export : define [Tailed df hookStyle sw] : union
+ HookAndBar df hookStyle (XH - [ADoubleStoreySmoothB df] + O) sw
Arc df 0 nothing nothing sw
RightwardTailedBar df.rightSB 0 (XH - [ADoubleStoreySmoothB df]) (sw -- [fallback sw : ADoubleStoreyStroke df])
- export : define [ToothlessCorner df sw] : union
- HookAndBar df DToothlessRise sw
+ export : define [ToothlessCorner df hookStyle sw] : union
+ HookAndBar df hookStyle DToothlessRise sw
Arc df 1 DToothlessRise sw
- export : define [ToothlessRounded df sw] : union
- HookAndBar df [ADoubleStoreySmoothA df] sw
+ export : define [ToothlessRounded df hookStyle sw] : union
+ HookAndBar df hookStyle [ADoubleStoreySmoothA df] sw
Arc df 2 [ADoubleStoreySmoothA df] sw
export : define [GetMask shapeFn df sw] : match shapeFn
@@ -99,27 +109,32 @@ glyph-block Letter-Latin-Lower-A : begin
__ : ArcMask df 0 nothing nothing sw
define DoubleStoreyConfig : object
- doubleStoreySerifless { DoubleStorey.Serifless (RightSB ) }
- doubleStoreySerifed { DoubleStorey.Serifed (RightSB + SideJut) }
- doubleStoreyTailed { DoubleStorey.Tailed (RightSB + SideJut) }
- doubleStoreyToothlessCorner { DoubleStorey.ToothlessCorner nothing }
- doubleStoreyToothlessRounded { DoubleStorey.ToothlessRounded nothing }
-
- foreach { suffix { body xTrailing } } [Object.entries DoubleStoreyConfig] : do
+ doubleStoreySerifless { DoubleStorey.Serifless (RightSB ) 1 }
+ doubleStoreySerifed { DoubleStorey.Serifed (RightSB + SideJut) 1 }
+ doubleStoreyTailed { DoubleStorey.Tailed (RightSB + SideJut) 1 }
+ doubleStoreyToothlessCorner { DoubleStorey.ToothlessCorner nothing 1 }
+ doubleStoreyToothlessRounded { DoubleStorey.ToothlessRounded nothing 1 }
+ doubleStoreyHookInwardSerifedSerifless { DoubleStorey.Serifless (RightSB ) 2 }
+ doubleStoreyHookInwardSerifedSerifed { DoubleStorey.Serifed (RightSB + SideJut) 2 }
+ doubleStoreyHookInwardSerifedTailed { DoubleStorey.Tailed (RightSB + SideJut) 2 }
+ doubleStoreyHookInwardSerifedToothlessCorner { DoubleStorey.ToothlessCorner nothing 2 }
+ doubleStoreyHookInwardSerifedToothlessRounded { DoubleStorey.ToothlessRounded nothing 2 }
+
+ foreach { suffix { body xTrailing hookStyle } } [Object.entries DoubleStoreyConfig] : do
create-glyph "a.\(suffix)" : glyph-proc
local df : include : DivFrame 1
include : df.markSet.e
if xTrailing : set-base-anchor 'trailing' xTrailing 0
- include : body df
+ include : body df hookStyle
glyph-block-import Letter-Blackboard : BBS BBD
create-glyph 'mathbb/a' 0x1D552 : glyph-proc
local df : include : DivFrame 1
include : df.markSet.e
- include : DoubleStorey.HookAndBar df 0 BBS
+ include : DoubleStorey.HookAndBar df 1 0 BBS
include : intersection
- DoubleStorey.HookAndBarMask df 0
+ DoubleStorey.HookAndBarMask df 1 0
VBar.r (RightSB - BBD) 0 XH BBS
include : difference
union
diff --git a/font-src/glyphs/letter/latin/lower-b.ptl b/font-src/glyphs/letter/latin/lower-b.ptl
index 24e2f2717b..f12020dc87 100644
--- a/font-src/glyphs/letter/latin/lower-b.ptl
+++ b/font-src/glyphs/letter/latin/lower-b.ptl
@@ -48,7 +48,7 @@ glyph-block Letter-Latin-Lower-B : begin
set-base-anchor 'overlayOnExtension' (SB + [HSwToV : 0.5 * Stroke]) yOverlay
set-base-anchor 'overlay' Middle (XH / 2)
- create-glyph "bBar.\(suffix)" : glyph-proc
+ create-glyph "bStroke.\(suffix)" : glyph-proc
include [refer-glyph "b.\(suffix)"] AS_BASE ALSO_METRICS
include : LetterBarOverlay.l.in SB XH (Ascender - [if doTS Stroke 0])
@@ -72,7 +72,7 @@ glyph-block Letter-Latin-Lower-B : begin
eject-contour 'serifLT'
select-variant 'b' 'b'
- select-variant 'bBar' 0x180 (follow -- 'b')
+ select-variant 'bStroke' 0x180 (follow -- 'b')
select-variant 'bSlash' 0x2422 (follow -- 'b')
select-variant 'latn/be' 0x183 (follow -- 'b')
diff --git a/font-src/glyphs/letter/latin/lower-d.ptl b/font-src/glyphs/letter/latin/lower-d.ptl
index 47fabb013c..b661c4905e 100644
--- a/font-src/glyphs/letter/latin/lower-d.ptl
+++ b/font-src/glyphs/letter/latin/lower-d.ptl
@@ -54,10 +54,6 @@ glyph-block Letter-Latin-Lower-D : begin
ada -- [df.archDepthA SmallArchDepth df.mvs]
adb -- [df.archDepthB SmallArchDepth df.mvs]
- define [ToothlessRoundedHBBBody df yTop] : union
- ToothlessRoundedBody df yTop
- tagged 'rightBar' : VBar.r df.rightSB 0 yTop
-
define [TailedBody df yTop] : union
OBarRight.shape
left -- df.leftSB
@@ -79,7 +75,6 @@ glyph-block Letter-Latin-Lower-D : begin
toothlessCorner ToothlessCornerBody
toothlessCornerHBB ToothlessCornerHBBBody
toothlessRounded ToothlessRoundedBody
- toothlessRoundedHBB ToothlessRoundedHBBBody
tailed TailedBody
function [body] : object # serifs
@@ -102,7 +97,7 @@ glyph-block Letter-Latin-Lower-D : begin
include : LeaningAnchor.Above.VBar.r df.rightSB
set-base-anchor 'overlayOnExtension' (df.rightSB - [HSwToV : 0.5 * Stroke]) yOverlay
- create-glyph "dcroat.\(suffix)" : glyph-proc
+ create-glyph "dStroke.\(suffix)" : glyph-proc
local df : DivFrame 1
include [refer-glyph "d.\(suffix)"] AS_BASE ALSO_METRICS
include : LetterBarOverlay.r.in df.rightSB XH (Ascender - [if topSerif Stroke 0])
@@ -145,7 +140,7 @@ glyph-block Letter-Latin-Lower-D : begin
select-variant 'd' 'd'
select-variant 'dCaronBase' (follow -- 'd')
- select-variant 'dcroat' 0x111 (follow -- 'd')
+ select-variant 'dStroke' 0x111 (follow -- 'd')
select-variant 'latn/de' 0x18C (follow -- 'd')
alias 'cyrl/deKomi' 0x501 'd'
link-reduced-variant 'd/sansSerif' 'd' MathSansSerif
diff --git a/font-src/glyphs/letter/latin/lower-f.ptl b/font-src/glyphs/letter/latin/lower-f.ptl
index af9720b9f9..8cdaf17da8 100644
--- a/font-src/glyphs/letter/latin/lower-f.ptl
+++ b/font-src/glyphs/letter/latin/lower-f.ptl
@@ -9,7 +9,7 @@ glyph-block Letter-Latin-Lower-F : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Mark-Adjustment : LeaningAnchor
- glyph-block-import Letter-Shared-Shapes : FlatHookDepth DiagonalTailL DiagonalTailStdDepth
+ glyph-block-import Letter-Shared-Shapes : FlatHookDepth DiagTail
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay PalatalHook
define [SetPalatalHookPos barLeft] : glyph-proc
@@ -52,7 +52,7 @@ glyph-block Letter-Latin-Lower-F : begin
local xBarMiddle : barLeft + [HSwToV HalfStroke]
return : dispiro
flat xBarMiddle 0.1 [widths.center.heading Stroke Downward]
- DiagonalTailL df xBarMiddle Descender [DiagonalTailStdDepth df Stroke] Stroke
+ DiagTail.L xBarMiddle Descender [DiagTail.StdDepth df Stroke] Stroke
glyph-block-export StdSmallFBarLeftPos
define [StdSmallFBarLeftPos barAtCenter] : [mix SB RightSB : if barAtCenter 0.45 0.35] - Stroke * [if barAtCenter 0.45 0.25] * HVContrast
diff --git a/font-src/glyphs/letter/latin/lower-g.ptl b/font-src/glyphs/letter/latin/lower-g.ptl
index a6293140fc..be1809e7ec 100644
--- a/font-src/glyphs/letter/latin/lower-g.ptl
+++ b/font-src/glyphs/letter/latin/lower-g.ptl
@@ -164,7 +164,6 @@ glyph-block Letter-Latin-Lower-G : begin
earlessCorner { SingleStorey.EarlessCornerBody DToothlessRise }
earlessCornerHTB { SingleStorey.EarlessCornerBody 0 }
earlessRounded { SingleStorey.EarlessRoundedBody (XH - SmallArchDepthA) }
- earlessRoundedHTB { SingleStorey.EarlessRoundedBody 0 }
scriptCut { SingleStorey.ScriptCutBody (Stroke / 2) }
foreach { suffix { hookShape {bodyShape hookStart} } } [Object.entries SingleStoreyConfig] : do
diff --git a/font-src/glyphs/letter/latin/lower-il.ptl b/font-src/glyphs/letter/latin/lower-il.ptl
index 7300e42a5b..fc68d0b311 100644
--- a/font-src/glyphs/letter/latin/lower-il.ptl
+++ b/font-src/glyphs/letter/latin/lower-il.ptl
@@ -11,7 +11,7 @@ glyph-block Letter-Latin-Lower-I : begin
glyph-block-import Mark-Adjustment : ExtendBelowBaseAnchors
glyph-block-import Letter-Shared : CreateAccentedComposition CreateMultiAccentedComposition
glyph-block-import Letter-Shared : CreateCommaCaronComposition CreateOgonekComposition
- glyph-block-import Letter-Shared-Shapes : FlatHookDepth DiagonalTailR DiagonalTailStdDepth
+ glyph-block-import Letter-Shared-Shapes : FlatHookDepth DiagTail
glyph-block-import Letter-Shared-Shapes : CurlyTail BeltOverlay PalatalHook
glyph-block-import Letter-Shared-Shapes : RetroflexHook LetterBarOverlay RightwardTailedBar
@@ -133,7 +133,7 @@ glyph-block Letter-Latin-Lower-I : begin
include : dispiro
widths.center df.mvs
flat xMiddle top [heading Downward]
- DiagonalTailR df xMiddle 0 [DiagonalTailStdDepth df df.mvs] df.mvs
+ DiagTail.R xMiddle 0 [DiagTail.StdDepth df df.mvs] df.mvs
export : define [PhoneticLeft df top xMiddle] : glyph-proc
include : dispiro
diff --git a/font-src/glyphs/letter/latin/lower-j.ptl b/font-src/glyphs/letter/latin/lower-j.ptl
index 036b6af0d2..ea93ef12f7 100644
--- a/font-src/glyphs/letter/latin/lower-j.ptl
+++ b/font-src/glyphs/letter/latin/lower-j.ptl
@@ -11,7 +11,7 @@ glyph-block Letter-Latin-Lower-J : begin
glyph-block-import Mark-Adjustment : ExtendAboveBaseAnchors
glyph-block-import Letter-Shared : CreateAccentedComposition
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth LetterBarOverlay
- glyph-block-import Letter-Shared-Shapes : DiagonalTailL DiagonalTailStdDepth TopHook
+ glyph-block-import Letter-Shared-Shapes : DiagTail TopHook
glyph-block-import Letter-Blackboard : BBS BBD
glyph-block-export FlatHookDotlessJShape
@@ -71,7 +71,7 @@ glyph-block Letter-Latin-Lower-J : begin
include : dispiro
widths.center
flat xMiddle top [heading Downward]
- DiagonalTailL df xMiddle Descender [DiagonalTailStdDepth dfHook Stroke] Stroke
+ DiagTail.L xMiddle Descender [DiagTail.StdDepth dfHook Stroke] Stroke
set-base-anchor "trailing" (xMiddle - [HSwToV HalfStroke]) Descender
define Serifs : namespace
diff --git a/font-src/glyphs/letter/latin/lower-p.ptl b/font-src/glyphs/letter/latin/lower-p.ptl
index 79c78f9144..2fc5506de3 100644
--- a/font-src/glyphs/letter/latin/lower-p.ptl
+++ b/font-src/glyphs/letter/latin/lower-p.ptl
@@ -14,24 +14,41 @@ glyph-block Letter-Latin-Lower-P : begin
glyph-block-import Letter-Shared-Shapes : TopHook PalatalHook SerifFrame
- define [EaredBody top] : glyph-proc
+ define [SmallThornEaredBody] : glyph-proc
include : tagged 'bowl' : OBarLeft.shape
- include : tagged 'stemLeft' : VBar.l SB Descender top
+ include : tagged 'stemLeft' : VBar.l SB Descender Ascender
- define [EarlessCornerBody] : glyph-proc
+ define [EaredBody] : with-params [[left SB] [right RightSB] [sw Stroke]] : glyph-proc
+ include : tagged 'bowl' : OBarLeft.shape
+ left -- left
+ right -- right
+ sw -- sw
+ fine -- (ShoulderFine * sw / Stroke)
+ include : tagged 'stemLeft' : VBar.l left Descender XH sw
+
+ define [EarlessCornerBody] : with-params [[left SB] [right RightSB] [sw Stroke]] : glyph-proc
include : tagged 'bowl' : OBarLeft.toothlessTop (rise -- DToothlessRise) (mBlend -- DMBlend)
- include : tagged 'stemLeft' : VBar.l SB Descender (XH - DToothlessRise)
+ left -- left
+ right -- right
+ sw -- sw
+ fine -- (ShoulderFine * sw / Stroke)
+ include : tagged 'stemLeft' : VBar.l left Descender (XH - DToothlessRise) sw
- define [EarlessRoundedBody] : glyph-proc
+ define [EarlessRoundedBody] : with-params [[left SB] [right RightSB] [sw Stroke]] : glyph-proc
include : tagged 'bowl' : OBarLeft.roundedTop (yTerminal -- Descender)
+ left -- left
+ right -- right
+ sw -- sw
+ fine -- (ShoulderFine * sw / Stroke)
- define [SmallPSerifLT top] : return [SerifFrame.fromDf [DivFrame 1] top Descender].lt.outer
- define [SmallPSerifLB top] : return [SerifFrame.fromDf [DivFrame 1] top Descender].lb.fullSide
+ define [SmallPSerifLT df top _sw] : return [SerifFrame.fromDf df top Descender (swRef -- _sw)].lt.outer
+ define [SmallPSerifLB df top _sw] : return [SerifFrame.fromDf df top Descender (swRef -- _sw)].lb.fullSide
- define [FullSerifs top] : composite-proc [SmallPSerifLT top] [SmallPSerifLB top]
- define [MotionSerif top] : SmallPSerifLT top
- define [BottomSerif top] : SmallPSerifLB top
+ define [FullSerifs df top _sw] : composite-proc [SmallPSerifLT df top _sw] [SmallPSerifLB df top _sw]
+ define [MotionSerif df top _sw] : SmallPSerifLT df top _sw
+ define [BottomSerif df top _sw] : SmallPSerifLB df top _sw
+ glyph-block-export : PConfig
define PConfig : SuffixCfg.weave
object # body
eared EaredBody
@@ -45,18 +62,20 @@ glyph-block Letter-Latin-Lower-P : begin
foreach { suffix { Body {Serifs doBS} }} [Object.entries PConfig] : do
local yOverlay : mix 0 (Descender + [if doBS Stroke 0]) 0.5
+ local df : DivFrame 1
+
create-glyph "p.\(suffix)" : glyph-proc
include : MarkSet.p
- include : Body XH
- include : Serifs XH
+ include : Body
+ include : Serifs df XH
include : LeaningAnchor.Below.VBar.l SB
set-base-anchor 'overlayOnExtension' (SB + [HSwToV : 0.5 * Stroke]) yOverlay
set-base-anchor 'strike' Middle (XH / 2)
create-glyph "thorn.\(suffix)" : glyph-proc
include : MarkSet.bp
- include : Body Ascender
- include : Serifs Ascender
+ include : SmallThornEaredBody
+ include : Serifs df Ascender
include : LeaningAnchor.Above.VBar.l SB
include : LeaningAnchor.Below.VBar.l SB
set-base-anchor 'overlayOnExtension' (SB + [HSwToV : 0.5 * Stroke]) yOverlay
@@ -87,7 +106,7 @@ glyph-block Letter-Latin-Lower-P : begin
CreateAccentedComposition 'pTildeOver' 0x1D71 'p' 'tildeOverOnExension'
- derive-glyphs 'cyrl/rrTick' 0x48F 'cyrl/er' : lambda [src gr] : glyph-proc
+ derive-glyphs 'cyrl/erTick' 0x48F 'cyrl/er' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
include : dispiro
widths.center [AdviceStroke 4]
diff --git a/font-src/glyphs/letter/latin/lower-q.ptl b/font-src/glyphs/letter/latin/lower-q.ptl
index c813bbfbf9..2c6b912165 100644
--- a/font-src/glyphs/letter/latin/lower-q.ptl
+++ b/font-src/glyphs/letter/latin/lower-q.ptl
@@ -11,7 +11,7 @@ glyph-block Letter-Latin-Lower-Q : begin
glyph-block-import Mark-Shared-Metrics : markHalfStroke
glyph-block-import Mark-Adjustment : LeaningAnchor
glyph-block-import Letter-Shared-Shapes : OBarLeft OBarRight RightwardTailedBar DToothlessRise
- glyph-block-import Letter-Shared-Shapes : DMBlend DiagonalTailR DiagonalTailStdDepth
+ glyph-block-import Letter-Shared-Shapes : DMBlend DiagTail
glyph-block-import Letter-Shared-Shapes : TopHook RetroflexHook
define TERMINAL-NORMAL 0
@@ -22,7 +22,7 @@ glyph-block Letter-Latin-Lower-Q : begin
local xMid : x0 - [HSwToV HalfStroke]
return : dispiro
flat xMid yt [widths.center.heading Stroke Downward]
- DiagonalTailR df xMid yb (0.875 * Hook - Stroke * 0.375) Stroke
+ DiagTail.R xMid yb (0.875 * Hook - Stroke * 0.375) Stroke
define [EaredBody terminal top bottom] : glyph-proc
set-base-anchor 'trailing' (RightSB - markHalfStroke) Descender
diff --git a/font-src/glyphs/letter/latin/lower-t.ptl b/font-src/glyphs/letter/latin/lower-t.ptl
index e22043f0dc..b330be8cdf 100644
--- a/font-src/glyphs/letter/latin/lower-t.ptl
+++ b/font-src/glyphs/letter/latin/lower-t.ptl
@@ -11,7 +11,7 @@ glyph-block Letter-Latin-Lower-T : begin
glyph-block-import Mark-Adjustment : LeaningAnchor
glyph-block-import Letter-Shared : CreateCommaCaronComposition
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth ConnectedCedilla SerifedArcEnd
- glyph-block-import Letter-Shared-Shapes : DiagonalTailR DiagonalTailStdDepth DToothlessRise
+ glyph-block-import Letter-Shared-Shapes : DiagTail DToothlessRise
glyph-block-import Letter-Shared-Shapes : TopHook PalatalHook
glyph-block-import Letter-Latin-S : SAutoSlabEnd AdviceSArchDepth
glyph-block-import Letter-Blackboard : BBS BBD
@@ -36,8 +36,8 @@ glyph-block Letter-Latin-Lower-T : begin
([Just SYM-PR-LEFT] || [Just SYM-PR-BALANCED]) : df.middle - [HSwToV HalfStroke]
define [xCrossBarPos df sym] : match sym
- ([Just SYM-LEFT] || [Just SYM-PR-LEFT]) {[BarLeftPos df sym] ([xSmallTCrossRefT df] + LongJut * [Math.sqrt df.div])}
- __ {([xSmallTCrossRefT df] - LongJut * [Math.sqrt df.div]) ([xSmallTCrossRefT df] + LongJut * [Math.sqrt df.div])}
+ ([Just SYM-LEFT] || [Just SYM-PR-LEFT]) {([BarLeftPos df sym] + TanSlope * Stroke) ([xSmallTCrossRefT df] + LongJut * [Math.sqrt df.div])}
+ __ {([xSmallTCrossRefT df] - LongJut * [Math.sqrt df.div]) ([xSmallTCrossRefT df] + LongJut * [Math.sqrt df.div])}
define [XHookTerminal df sym] : match sym
[Just SYM-LEFT] df.rightSB
@@ -79,13 +79,13 @@ glyph-block Letter-Latin-Lower-T : begin
export : define [Retroflex df sym top bot] : Flat.Retroflex df sym top bot
- define DiagTail : namespace
+ define DiagonalTailed : namespace
define [HookShape df sym top bot sw] : begin
local xMid : [BarLeftPos df sym] + [HSwToV HalfStroke]
- local hookDepth : [if (sym === SYM-LEFT) 1.375 1] * [DiagonalTailStdDepth [DivFrame : Math.sqrt df.div] sw] - [HSwToV HalfStroke]
+ local hookDepth : [if (sym === SYM-LEFT) 1.375 1] * [DiagTail.StdDepth [DivFrame : Math.sqrt df.div] sw] - [HSwToV HalfStroke]
return : dispiro
flat xMid top [widths.center.heading sw Downward]
- DiagonalTailR df xMid bot hookDepth sw
+ DiagTail.R xMid bot hookDepth sw
###########################################################################################
@@ -108,7 +108,7 @@ glyph-block Letter-Latin-Lower-T : begin
define Flat : namespace
export : define [xCrossBarPos df sym] : match sym
- ([Just SYM-LEFT] || [Just SYM-PR-LEFT]) {[BarLeftPos df sym] [mix df.width df.rightSB [mix 1 df.div 2]]}
+ ([Just SYM-LEFT] || [Just SYM-PR-LEFT]) {([BarLeftPos df sym] + TanSlope * Stroke) [mix df.width df.rightSB [mix 1 df.div 2]]}
__ {[mix 0 df.leftSB [mix 1 df.div 2]] [mix df.width df.rightSB [mix 1 df.div 2]]}
@@ -180,7 +180,7 @@ glyph-block Letter-Latin-Lower-T : begin
__ : df.middle - [HSwToV HalfStroke]
define [xCrossBarPos df sym] : match sym
- ([Just SYM-LEFT] || [Just SYM-PR-LEFT]) {[BarLeftPos df sym] (df.middle + LongJut * [Math.sqrt df.div])}
+ ([Just SYM-LEFT] || [Just SYM-PR-LEFT]) {([BarLeftPos df sym] + TanSlope * Stroke) (df.middle + LongJut * [Math.sqrt df.div])}
__ {(df.middle - LongJut * [Math.sqrt df.div]) (df.middle + LongJut * [Math.sqrt df.div])}
export : define [Body df sym top bot] : glyph-proc
@@ -207,7 +207,7 @@ glyph-block Letter-Latin-Lower-T : begin
define SmallTConfig : SuffixCfg.weave
object # body
bentHook { [DivFrame 1] BentHook }
- diagonalTailed { dfNarrowT DiagTail }
+ diagonalTailed { dfNarrowT DiagonalTailed }
flatHook { dfNarrowT Flat }
hookless { dfNarrowT Hookless }
object # symmetry
diff --git a/font-src/glyphs/letter/latin/upper-b.ptl b/font-src/glyphs/letter/latin/upper-b.ptl
index 217b3152df..fc6a049a9b 100644
--- a/font-src/glyphs/letter/latin/upper-b.ptl
+++ b/font-src/glyphs/letter/latin/upper-b.ptl
@@ -233,7 +233,7 @@ glyph-block Letter-Latin-Upper-B : begin
include : ItalicCyrveShape XH
create-glyph 'grek/betaSymbol' 0x3D0 : glyph-proc
- include : MarkSet.e
+ include : MarkSet.b
include : ItalicCyrveShape Ascender
alias 'cyrl/ve.BGR' null 'grek/betaSymbol'
diff --git a/font-src/glyphs/letter/latin/upper-d.ptl b/font-src/glyphs/letter/latin/upper-d.ptl
index da86cfc43e..0912c31e70 100644
--- a/font-src/glyphs/letter/latin/upper-d.ptl
+++ b/font-src/glyphs/letter/latin/upper-d.ptl
@@ -99,7 +99,7 @@ glyph-block Letter-Latin-Upper-D : begin
include [refer-glyph src] AS_BASE ALSO_METRICS
include : LetterBarOverlay.l.in SB Stroke (CAP - Stroke)
space -- { 0 (RightSB - [HSwToV Stroke]) }
- alias 'Dcroat' 0x110 'Eth'
+ alias 'DStroke' 0x110 'Eth'
alias 'arficanD' 0x189 'Eth'
select-variant 'Dhookleft' 0x18A
diff --git a/font-src/glyphs/letter/latin/upper-p.ptl b/font-src/glyphs/letter/latin/upper-p.ptl
index 3e4f408022..abfaeafbd4 100644
--- a/font-src/glyphs/letter/latin/upper-p.ptl
+++ b/font-src/glyphs/letter/latin/upper-p.ptl
@@ -13,124 +13,142 @@ glyph-block Letter-Latin-Upper-P : begin
glyph-block-import Letter-Shared-Metrics : BowlXDepth
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay LeftHook
glyph-block-import Letter-Blackboard : BBS BBD
- glyph-block-export PShape PShapeOutline RevPShape PBarPosY PRotundaShape BBPShape
+ glyph-block-export PConfig PShape PShapeOutline RevPShape PBarPosY PRotundaShape BBPShape
define [PBarPosY top sw bp] : (top - sw) * bp - sw * PShape.SwBelowBar
- define [PRotundaOutlineKnots top mul bp overshoot sw offset endX hook] : begin
+ define [PRotundaOutlineKnots top df mul bp overshoot sw offset endX hook] : begin
local bowlTop (top * 1 - offset)
local bowlBottom : [PBarPosY top sw bp] + offset
- local turnRadius : BowlXDepth bowlTop bowlBottom SB RightSB sw
- local ada : ArchDepthAOf (ArchDepth * 0.9) Width
- local adb : ArchDepthBOf (ArchDepth * 0.9) Width
- local right : RightSB - offset
+ local turnRadius : BowlXDepth bowlTop bowlBottom df.leftSB df.rightSB sw
+ local ada : ArchDepthAOf (ArchDepth * 0.9) df.width
+ local adb : ArchDepthBOf (ArchDepth * 0.9) df.width
+ local left : df.leftSB * mul
+ local right : df.rightSB - offset
local turn : YSmoothMidR bowlTop bowlBottom ada adb
return : list
- g4 (SB * mul - O) (bowlTop - hook)
+ g4 (left - O) (bowlTop - hook)
hookstart (bowlTop - O)
g4 (right - overshoot) turn
arcvh
- flat ([Math.max (endX + 0.01 + sw / 2 * TanSlope) Middle] + CorrectionOMidX * sw * 0.5) bowlBottom
+ flat ([Math.max (endX + 0.01 + sw / 2 * TanSlope) df.middle] + CorrectionOMidX * sw * 0.5) bowlBottom
curl endX bowlBottom [heading Leftward]
- define [PShapeOutlineKnots top mul bp overshoot sw offset] : begin
+ define [PShapeOutlineKnots top df mul bp overshoot sw offset] : begin
local bowlTop (top * 1 - offset)
local bowlBottom : [PBarPosY top sw bp] + offset
- local turnRadius : BowlXDepth bowlTop bowlBottom SB RightSB sw
- local ada : ArchDepthAOf (ArchDepth * 0.9) Width
- local adb : ArchDepthBOf (ArchDepth * 0.9) Width
- local right : RightSB - offset
+ local turnRadius : BowlXDepth bowlTop bowlBottom df.leftSB df.rightSB sw
+ local ada : ArchDepthAOf (ArchDepth * 0.9) df.width
+ local adb : ArchDepthBOf (ArchDepth * 0.9) df.width
+ local left : df.leftSB * mul
+ local right : df.rightSB - offset
local turn : YSmoothMidR bowlTop bowlBottom ada adb
return : list
- flat (SB * mul - O) bowlTop [heading Rightward]
+ flat (left - O) bowlTop [heading Rightward]
curl (right - turnRadius - CorrectionOMidX * sw) bowlTop
archv
g4 (right - overshoot) turn
arcvh
flat (right - turnRadius + CorrectionOMidX * sw) bowlBottom
- curl (SB * mul - O) bowlBottom [heading Leftward]
+ curl (left - O) bowlBottom [heading Leftward]
- define [RevPshapeOutlineKnots top mul bp overshoot sw offset] : begin
+ define [RevPshapeOutlineKnots top df mul bp overshoot sw offset] : begin
local bowlTop (top * 1 - offset)
- local bowlBottom ((top - sw) * bp - sw * PShape.SwBelowBar + offset)
- local turnRadius : BowlXDepth bowlTop bowlBottom SB RightSB sw
- local ada : ArchDepthAOf (ArchDepth * 0.9) Width
- local adb : ArchDepthBOf (ArchDepth * 0.9) Width
- local left : SB + offset
+ local bowlBottom : [PBarPosY top sw bp] + offset
+ local turnRadius : BowlXDepth bowlTop bowlBottom df.leftSB df.rightSB sw
+ local ada : ArchDepthAOf (ArchDepth * 0.9) df.width
+ local adb : ArchDepthBOf (ArchDepth * 0.9) df.width
+ local left : df.leftSB + offset
+ local right : df.width - df.leftSB * mul
local turn : YSmoothMidL bowlTop bowlBottom ada adb
return : list
- flat (Width - SB * mul + O) bowlTop [heading Leftward]
+ flat (right + O) bowlTop [heading Leftward]
curl (left + turnRadius - CorrectionOMidX * sw) bowlTop
archv
g4 (left + overshoot) turn
arcvh
flat (left + turnRadius + CorrectionOMidX * sw) bowlBottom
- curl (Width - SB * mul + O) bowlBottom [heading Rightward]
+ curl (right + O) bowlBottom [heading Rightward]
- define [PShapeOutline] : with-params [top [mul PShape.defaultMul] [bp PShape.BarPos] [overshoot PShape.defaultOvershoot] [sw Stroke] [offset 0]] : glyph-proc
+ define [PShapeOutline] : with-params [
+ top [df [DivFrame 1]]
+ [mul PShape.defaultMul] [bp PShape.BarPos] [overshoot PShape.defaultOvershoot] [sw df.mvs]
+ [offset 0]
+ ] : glyph-proc
include : spiro-outline
- PShapeOutlineKnots top mul bp overshoot sw offset
-
- define [PShape] : with-params [top [mul PShape.defaultMul] [bp PShape.BarPos] [overshoot PShape.defaultOvershoot] [sw Stroke] [slab null] [withBar true] [setMark false]] : glyph-proc
- include : dispiro [widths.rhs sw] [PShapeOutlineKnots top mul bp overshoot sw 0]
- if withBar : include : tagged 'strokeL' : VBar.l (SB * mul) 0 top sw
- if slab : include : slab top sw mul
-
- define [PRotundaShape] : with-params [top [mul PShape.defaultMul] [bp PShape.BarPos] [overshoot PShape.defaultOvershoot] [sw Stroke] [slab SLAB] [endX SB] [hook Hook]] : glyph-proc
+ PShapeOutlineKnots top df mul bp overshoot sw offset
+
+ define [PShape] : with-params [
+ top [df [DivFrame 1]]
+ [mul PShape.defaultMul] [bp PShape.BarPos] [overshoot PShape.defaultOvershoot] [sw df.mvs]
+ [slab null] [withBar true] [setMark false]
+ ] : glyph-proc
+ include : dispiro [widths.rhs sw] [PShapeOutlineKnots top df mul bp overshoot sw 0]
+ if withBar : include : tagged 'strokeL' : VBar.l (df.leftSB * mul) 0 top sw
+ if slab : include : slab top df sw mul
+
+ define [PRotundaShape] : with-params [
+ top [df [DivFrame 1]]
+ [mul PShape.defaultMul] [bp PShape.BarPos] [overshoot PShape.defaultOvershoot] [sw df.mvs]
+ [slab null] [endX SB] [hook Hook]
+ ] : glyph-proc
include : dispiro
widths.rhs sw
- PRotundaOutlineKnots top mul bp overshoot sw 0 endX hook
+ PRotundaOutlineKnots top df mul bp overshoot sw 0 endX hook
- define [RevPShape] : with-params [top [mul PShape.defaultMul] [bp PShape.BarPos] [overshoot PShape.defaultOvershoot] [sw Stroke] [slab SLAB]] : glyph-proc
+ define [RevPShape] : with-params [
+ top [df [DivFrame 1]]
+ [mul PShape.defaultMul] [bp PShape.BarPos] [overshoot PShape.defaultOvershoot] [sw df.mvs]
+ [slab null]
+ ] : glyph-proc
include : tagged 'bowl' : dispiro
widths.lhs sw
- RevPshapeOutlineKnots top mul bp overshoot sw 0
- include : tagged 'strokeR' : VBar.r (Width - SB * mul) 0 top sw
-
- if slab : include : slab top sw mul
+ RevPshapeOutlineKnots top df mul bp overshoot sw 0
+ include : tagged 'strokeR' : VBar.r (df.width - df.leftSB * mul) 0 top sw
+ if slab : include : slab top df sw mul
set PShape.defaultMul 1.25
set PShape.defaultOvershoot (OX * 2)
set PShape.BarPos (1 - HBarPos)
set PShape.SwBelowBar 0.25
- set PShape.SlabMotion : function [top sw mul] : glyph-proc
- include : tagged 'serifLT' : HSerif.lt (SB * mul) top SideJut sw
- set PShape.SlabFullSymmetric : function [top sw mul] : glyph-proc
- include : tagged 'serifLT' : HSerif.mt (SB * mul + [HSwToV : 0.5 * sw]) top Jut sw
- include : tagged 'serifLB' : HSerif.mb (SB * mul + [HSwToV : 0.5 * sw]) 0 Jut sw
- set PShape.SlabSymmetric : function [top sw mul] : glyph-proc
- include : PShape.SlabMotion top sw mul
- include : tagged 'serifLB' : HSerif.mb (SB * mul + [HSwToV : 0.5 * sw]) 0 Jut sw
- set PShape.SlabAsymmetric : function [top sw mul] : glyph-proc
- include : PShape.SlabMotion top sw mul
+ set PShape.SlabMotion : function [top df sw mul] : glyph-proc
+ include : tagged 'serifLT' : HSerif.lt (df.leftSB * mul) top SideJut sw
+ set PShape.SlabFullSymmetric : function [top df sw mul] : glyph-proc
+ include : tagged 'serifLT' : HSerif.mt (df.leftSB * mul + [HSwToV : 0.5 * sw]) top Jut sw
+ include : tagged 'serifLB' : HSerif.mb (df.leftSB * mul + [HSwToV : 0.5 * sw]) 0 Jut sw
+ set PShape.SlabSymmetric : function [top df sw mul] : glyph-proc
+ include : PShape.SlabMotion top df sw mul
+ include : tagged 'serifLB' : HSerif.mb (df.leftSB * mul + [HSwToV : 0.5 * sw]) 0 Jut sw
+ set PShape.SlabAsymmetric : function [top df sw mul] : glyph-proc
+ include : PShape.SlabMotion top df sw mul
include : tagged 'serifLB' : union
- HSerif.lb (SB * mul) 0 SideJut sw
- HSerif.rb (SB * mul + [HSwToV : 0.5 * sw]) 0 MidJutSide sw
- set PShape.OpenGap : function [] : with-params [top [bot 0] [mul PShape.defaultMul] [bp PShape.BarPos] [sw Stroke]] : VBar.l
- SB * mul + [HSwToV sw]
+ HSerif.lb (df.leftSB * mul) 0 SideJut sw
+ HSerif.rb (df.leftSB * mul + [HSwToV : 0.5 * sw]) 0 MidJutSide sw
+ set PShape.OpenGap : function [] : with-params [top [df [DivFrame 1]] [bot 0] [mul PShape.defaultMul] [bp PShape.BarPos] [sw df.mvs]] : VBar.l
+ df.leftSB * mul + [HSwToV sw]
Math.min ([PBarPosY top sw bp] - 0.5 * sw - 0.1) bot
Math.max ([PBarPosY top sw bp] + 0.5 * sw + 0.1) [mix top [PBarPosY top sw bp] 0.5]
- 0.2 * (RightSB - SB) * ([AdviceStroke 5] / Stroke)
-
- set RevPShape.SlabMotion : function [top sw mul] : glyph-proc
- include : tagged 'serifRT' : HSerif.rt (Width - SB * mul) top SideJut sw
- set RevPShape.SlabSymmetric : function [top sw mul] : glyph-proc
- include : RevPShape.SlabMotion top sw mul
- include : tagged 'serifRB' : HSerif.mb (Width - SB * mul - [HSwToV HalfStroke]) 0 Jut sw
- set RevPShape.SlabCyrlItalic : function [top sw mul] : glyph-proc
- include : tagged 'serifRB' : HSerif.rb (Width - SB * mul) 0 SideJut sw
- set RevPShape.SlabAsymmetric : function [top sw mul] : glyph-proc
- include : RevPShape.SlabMotion top sw mul
+ 0.2 * (df.rightSB - df.leftSB) * ([AdviceStroke 5] / Stroke)
+
+ set RevPShape.SlabMotion : function [top df sw mul] : glyph-proc
+ include : tagged 'serifRT' : HSerif.rt (df.width - df.leftSB * mul) top SideJut sw
+ set RevPShape.SlabSymmetric : function [top df sw mul] : glyph-proc
+ include : RevPShape.SlabMotion top df sw mul
+ include : tagged 'serifRB' : HSerif.mb (df.width - df.leftSB * mul - [HSwToV HalfStroke]) 0 Jut sw
+ set RevPShape.SlabCyrlItalic : function [top df sw mul] : glyph-proc
+ include : tagged 'serifRB' : HSerif.rb (df.width - df.leftSB * mul) 0 SideJut sw
+ set RevPShape.SlabAsymmetric : function [top df sw mul] : glyph-proc
+ include : RevPShape.SlabMotion top df sw mul
include : tagged 'serifRB' : union
- HSerif.rb (Width - SB * mul) 0 SideJut sw
- HSerif.lb (Width - SB * mul - [HSwToV : 0.5 * sw]) 0 MidJutSide sw
- set RevPShape.OpenGap : function [] : with-params [top [bot 0] [mul PShape.defaultMul] [bp PShape.BarPos] [sw Stroke]] : VBar.r
- Width - SB * mul - [HSwToV sw]
+ HSerif.rb (df.width - df.leftSB * mul) 0 SideJut sw
+ HSerif.lb (df.width - df.leftSB * mul - [HSwToV : 0.5 * sw]) 0 MidJutSide sw
+ set RevPShape.OpenGap : function [] : with-params [top [df [DivFrame 1]] [bot 0] [mul PShape.defaultMul] [bp PShape.BarPos] [sw df.mvs]] : VBar.r
+ df.width - df.leftSB * mul - [HSwToV sw]
Math.min ([PBarPosY top sw bp] - 0.5 * sw - 0.1) bot
Math.max ([PBarPosY top sw bp] + 0.5 * sw + 0.1) [mix top [PBarPosY top sw bp] 0.5]
- 0.2 * (RightSB - SB) * ([AdviceStroke 5] / Stroke)
+ 0.2 * (df.rightSB - df.leftSB) * ([AdviceStroke 5] / Stroke)
define PConfig : object
closedSerifless { false null null }
diff --git a/font-src/glyphs/letter/latin/upper-r.ptl b/font-src/glyphs/letter/latin/upper-r.ptl
index 6c74f9722b..44ebec52c3 100644
--- a/font-src/glyphs/letter/latin/upper-r.ptl
+++ b/font-src/glyphs/letter/latin/upper-r.ptl
@@ -11,6 +11,7 @@ glyph-block Letter-Latin-Upper-R : begin
glyph-block-import Letter-Latin-Upper-P : PShape RevPShape PBarPosY PRotundaShape BBPShape PShapeOutline
glyph-block-import Letter-Blackboard : BBS BBD
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar RetroflexHook
+ glyph-block-export RConfig RevRShape RBarPos
define LEG-SHAPE-CURLY 0
define LEG-SHAPE-STRAIGHT 1
@@ -36,7 +37,7 @@ glyph-block Letter-Latin-Upper-R : begin
corner xRightBottom bottom [widths.rhs sw]
if slab : begin
- include : HSerif.rb xRightBottomSerifStart bottom (SideJut + Jut / 8)
+ include : HSerif.rb xRightBottomSerifStart bottom (SideJut + Jut / 8) sw
define [RLegShape-Curly] : with-params [top bottom left right charTop slab sw extraShift] : glyph-proc
local xRightBottom : RLegTerminalX LEG-SHAPE-CURLY right sw
@@ -48,7 +49,7 @@ glyph-block Letter-Latin-Upper-R : begin
quadControls 0 0.4 8
g4 left top
if slab : begin
- include : HSerif.rb right bottom (SideJut + Jut / 8)
+ include : HSerif.rb right bottom (SideJut + Jut / 8) sw
define [RLegShape-Standing] : with-params [top bottom left right charTop slab sw extraShift] : glyph-proc
local fine : RStandingLegFine sw
@@ -65,7 +66,7 @@ glyph-block Letter-Latin-Upper-R : begin
flat (right + O) [Math.max (yOffset + 1) (ytopRef - bend * charTop / CAP)] [widths.rhs.heading sw Downward]
curl (right + O) yOffset [heading Downward]
curl (right + O - xOverflow) bottom [heading Downward]
- if slab : include : HSerif.rb right bottom SideJut
+ if slab : include : HSerif.rb right bottom SideJut sw
define RLegShapes { RLegShape-Curly RLegShape-Straight RLegShape-Standing }
@@ -83,7 +84,7 @@ glyph-block Letter-Latin-Upper-R : begin
corner xRightTop top [widths.rhs sw]
corner xLeftBottom bottom [widths.lhs sw]
if slab : begin
- include : HSerif.lb xLeftBottomSerifStart bottom (SideJut + Jut / 8)
+ include : HSerif.lb xLeftBottomSerifStart bottom (SideJut + Jut / 8) sw
define [RevRLegShape-Curly] : with-params [top bottom left right charTop slab sw extraShift] : glyph-proc
local xLeftBottom : RevRLegTerminalX LEG-SHAPE-CURLY left sw
@@ -95,7 +96,7 @@ glyph-block Letter-Latin-Upper-R : begin
quadControls 0 0.4 8
g4 right top
if slab : begin
- include : HSerif.lb left bottom (SideJut + Jut / 8)
+ include : HSerif.lb left bottom (SideJut + Jut / 8) sw
define [RevRLegShape-Standing] : with-params [top bottom left right charTop slab sw extraShift] : glyph-proc
local fine : RStandingLegFine sw
@@ -112,7 +113,7 @@ glyph-block Letter-Latin-Upper-R : begin
flat (left - O) [Math.max (yOffset + 1) (ytopRef - bend * charTop / CAP)] [widths.lhs.heading sw Downward]
curl (left - O) yOffset [heading Downward]
curl (left - O + xOverflow) bottom [heading Downward]
- if slab : include : HSerif.lb left bottom SideJut
+ if slab : include : HSerif.lb left bottom SideJut sw
define RevRLegShapes { RevRLegShape-Curly RevRLegShape-Straight RevRLegShape-Standing }
@@ -120,38 +121,38 @@ glyph-block Letter-Latin-Upper-R : begin
define [RBarPos charTop slab] : begin PShape.BarPos
define [RLegTop charTop sw bp] : (sw / 2) + [PBarPosY charTop sw bp]
- define [RShape] : with-params [legShape top bp [mul 1] [slab null] [legSlab false] [open false] [legBottom 0]] : glyph-proc
- local right : RightSB - O - [if slab (Jut / 8) 0]
+ define [RShape] : with-params [legShape top bp [df [DivFrame 1]] [mul 1] [slab null] [legSlab false] [open false] [legBottom 0] [sw Stroke]] : glyph-proc
+ local right : df.rightSB - O - [if slab (Jut / 8) 0]
include : difference
- PShape top (mul -- mul) (overshoot -- O) (slab -- slab) (bp -- bp)
- if open [PShape.OpenGap (mul -- mul) (bp -- bp) (top -- top) (bot -- [if fSlabBot Stroke 0])] [glyph-proc]
+ PShape top (df -- df) (mul -- mul) (overshoot -- O) (slab -- slab) (bp -- bp) (sw -- sw)
+ if open [PShape.OpenGap (df -- df) (mul -- mul) (bp -- bp) (top -- top) (bot -- [if fSlabBot sw 0])] [glyph-proc]
include : difference
- RLegShapes.(legShape) [RLegTop top Stroke bp] legBottom Middle right top legSlab Stroke 0
- if open [PShape.OpenGap (mul -- mul) (bp -- bp) (top -- top) (bot -- 0) ] [glyph-proc]
+ RLegShapes.(legShape) [RLegTop top sw bp] legBottom df.middle right top legSlab sw 0
+ if open [PShape.OpenGap (df -- df) (mul -- mul) (bp -- bp) (top -- top) (bot -- 0) ] [glyph-proc]
- define [RRotundaShape] : with-params [legShape top [mul 1] [pmRotunda 0] [endX Middle] [hook Hook] [pBar 1] [slab null] [legSlab false]] : glyph-proc
+ define [RRotundaShape] : with-params [legShape top [df [DivFrame 1]] [mul 1] [pmRotunda 0] [endX df.middle] [hook Hook] [pBar 1] [slab null] [legSlab false] [sw Stroke]] : glyph-proc
local bp : pBar * [RBarPos top false]
- local legTop : RLegTop top Stroke bp
- local right (RightSB - O - [if slab (Jut / 8) 0])
- local cor : RLegDiagCor legTop 0 endX right 0 Stroke
- local endX1 : endX - [if legShape (HalfStroke * [HSwToV cor]) HalfStroke] + [if legShape [RSlabExtraShift SLAB Stroke] 0]
- include : PRotundaShape top (mul -- mul) (bp -- bp) (overshoot -- O) (slab -- false) (endX -- endX1) (hook -- hook)
+ local legTop : RLegTop top sw bp
+ local right (df.rightSB - O - [if slab (Jut / 8) 0])
+ local cor : RLegDiagCor legTop 0 endX right 0 sw
+ local endX1 : endX - [if legShape (sw / 2 * [HSwToV cor]) (sw / 2)] + [if legShape [RSlabExtraShift SLAB sw] 0]
+ include : PRotundaShape top (df -- df) (mul -- mul) (bp -- bp) (overshoot -- O) (slab -- false) (endX -- endX1) (hook -- hook) (sw -- sw)
include : difference
- RLegShapes.(legShape) legTop 0 endX right top legSlab Stroke 0
+ RLegShapes.(legShape) legTop 0 endX right top legSlab sw 0
MaskLeft endX1
- define [RevRShape] : with-params [legShape top bp [slab null] [legSlab false] [mul 1] [tailedShape false] [open false]] : glyph-proc
- local left : SB + O + [if slab (Jut / 8) 0]
+ define [RevRShape] : with-params [legShape top bp [df [DivFrame 1]] [slab null] [legSlab false] [mul 1] [tailedShape false] [open false] [sw Stroke]] : glyph-proc
+ local left : df.leftSB + O + [if slab (Jut / 8) 0]
include : difference
- RevPShape top (mul -- mul) (overshoot -- O) (slab -- slab) (bp -- bp)
- if open [RevPShape.OpenGap (mul -- mul) (bp -- bp) (top -- top) (bot -- [if fSlabBot Stroke 0]) ] [glyph-proc]
+ RevPShape top (df -- df) (mul -- mul) (overshoot -- O) (slab -- slab) (bp -- bp) (sw -- sw)
+ if open [RevPShape.OpenGap (df -- df) (mul -- mul) (bp -- bp) (top -- top) (bot -- [if fSlabBot sw 0]) ] [glyph-proc]
include : difference
- RevRLegShapes.(legShape) [RLegTop top Stroke bp] 0 left Middle top legSlab Stroke 0
- if open [RevPShape.OpenGap (mul -- mul) (bp -- bp) (top -- top) (bot -- 0) ] [glyph-proc]
+ RevRLegShapes.(legShape) [RLegTop top sw bp] 0 left df.middle top legSlab sw 0
+ if open [RevPShape.OpenGap (df -- df) (mul -- mul) (bp -- bp) (top -- top) (bot -- 0) ] [glyph-proc]
if tailedShape : begin
eject-contour 'strokeR'
eject-contour 'serifRB'
- include : tagged 'strokeR' : RightwardTailedBar (Width - SB * mul) 0 top
+ include : tagged 'strokeR' : RightwardTailedBar (df.width - df.leftSB * mul) 0 top
define [StrikeAnchor] : glyph-proc
set-base-anchor 'strike' Middle [mix [PBarPosY CAP Stroke : RBarPos CAP SLAB] CAP 0.5]
@@ -228,8 +229,8 @@ glyph-block Letter-Latin-Upper-R : begin
include : VBar.l SB (top - 1) CAP
include : RShape legShape top (legSlab -- doLegSlab) (bp -- bp) (open -- fOpen) (legBottom -- Descender)
include : match slabs
- [Just PShape.SlabSymmetric] : PShape.SlabFullSymmetric CAP Stroke 1
- [Just PShape.SlabMotion] : PShape.SlabMotion CAP Stroke 1
+ [Just PShape.SlabSymmetric] : PShape.SlabFullSymmetric CAP [DivFrame 1] Stroke 1
+ [Just PShape.SlabMotion] : PShape.SlabMotion CAP [DivFrame 1] Stroke 1
__ : glyph-proc
create-glyph "smcpRLongRightLeg.\(suffix)" : glyph-proc
diff --git a/font-src/glyphs/letter/latin/v.ptl b/font-src/glyphs/letter/latin/v.ptl
index 50cea33c74..fadf89448f 100644
--- a/font-src/glyphs/letter/latin/v.ptl
+++ b/font-src/glyphs/letter/latin/v.ptl
@@ -9,7 +9,7 @@ glyph-block Letter-Latin-V : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-export VShape VShapeOutline
- glyph-block-import Letter-Shared-Shapes : DiagonalTailInnerRadius SerifFrame PalatalHook
+ glyph-block-import Letter-Shared-Shapes : DiagTail SerifFrame PalatalHook
glyph-block-import Letter-Blackboard : BBS BBD
define VCornerHalfWidth : HSwToV : 1.15 * HalfStroke
@@ -108,7 +108,7 @@ glyph-block Letter-Latin-V : begin
define yArcRight : [mix 0 top 0.6] - sw * 0.2
define xArcEnd : [mix SB RightSB 0.8] + sw * 0.375
define yArcEnd : top - O
- define rInY : DiagonalTailInnerRadius
+ define rInY : DiagTail.DefaultInnerRadius
define xArcMidBottom : xBar + [HSwToV sw] + [HSwToV rInY] + CorrectionOMidX * sw
include : dispiro
diff --git a/font-src/glyphs/letter/latin/w.ptl b/font-src/glyphs/letter/latin/w.ptl
index 2d4240b375..e21b03953e 100644
--- a/font-src/glyphs/letter/latin/w.ptl
+++ b/font-src/glyphs/letter/latin/w.ptl
@@ -8,7 +8,7 @@ glyph-module
glyph-block Letter-Latin-W : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
- glyph-block-import Letter-Shared-Shapes : DiagonalTailInnerRadius SerifFrame VerticalHook
+ glyph-block-import Letter-Shared-Shapes : DiagTail SerifFrame VerticalHook
glyph-block-import Letter-Latin-Upper-M : MShape
define FORM-CURLY 0
@@ -278,7 +278,7 @@ glyph-block Letter-Latin-W : begin
define x1 : df.leftSB + 0 * OX
define y3 : mix fine top 0.375
define y4 : mix y3 top 0.5
- define rInY : 1 * [DiagonalTailInnerRadius]
+ define rInY : 1 * [DiagTail.DefaultInnerRadius]
include : dispiro
widths.lhs fine
diff --git a/font-src/glyphs/letter/latin/x.ptl b/font-src/glyphs/letter/latin/x.ptl
index 870a50de31..4ba14ac77b 100644
--- a/font-src/glyphs/letter/latin/x.ptl
+++ b/font-src/glyphs/letter/latin/x.ptl
@@ -9,18 +9,18 @@ glyph-block Letter-Latin-X : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : ShoulderMidKnotRhs SerifFrame WithSerifOverflowMask
- glyph-block-import Letter-Shared-Shapes : DiagonalTailInnerRadius DiagonalTailF
+ glyph-block-import Letter-Shared-Shapes : DiagTail
glyph-block-import Letter-Shared-Shapes : CyrDescender PalatalHook
glyph-block-export HalfXStrand
- define [HalfXStrand stb fSlab _leftx lefty rightx righty turn pStraight tension _fine] : glyph-proc
+ define [HalfXStrand stb fSlab _leftx lefty rightx righty turn pStraight tension _sw] : glyph-proc
+ local sw : fallback _sw Stroke
local sbCor : if stb ([StrokeWidthBlend 1 6] * OX * ([Math.abs (lefty - righty)] / CAP)) 0
- local leftx : _leftx + ([HSwToV HalfStroke] + [Math.max (-SideJut) sbCor]) * [if (rightx > _leftx) 1 (-1)]
- local fine : (_fine || Stroke) * 0.5
+ local leftx : _leftx + ([HSwToV : 0.5 * sw] + [Math.max (-SideJut) sbCor]) * [if (rightx > _leftx) 1 (-1)]
if stb : begin
- local hst : HalfStroke * [DiagCor (righty - lefty) (rightx - leftx) 0 0]
- local hse : HalfStroke * [Math.min 0.97 ([AdviceStroke 3] / Stroke)]
+ local hst : (0.5 * sw) * [DiagCor (righty - lefty) (rightx - leftx) 0 0]
+ local hse : (0.5 * sw) * [Math.min 0.97 ([AdviceStroke 3] / Stroke)]
local leftx2 : _leftx + ([HSwToV hst] + [Math.max (-SideJut) sbCor]) * [if (rightx > _leftx) 1 (-1)]
include : dispiro
corner leftx2 lefty [widths.heading hst hst [if (lefty < righty) Upward Downward]]
@@ -28,13 +28,13 @@ glyph-block Letter-Latin-X : begin
: else : begin
local height : Math.abs (lefty - righty)
- local slabClearance : if fSlab [AdviceStroke2 2 3 height] 0
+ local slabClearance : if fSlab ((sw / Stroke) * [AdviceStroke2 2 3 height]) 0
local turnyleft : mix lefty righty [if fSlab [Math.max turn (slabClearance / height)] turn]
local cyleft : mix turnyleft righty tension
local straightxleft : mix leftx rightx pStraight
local straightyleft : mix cyleft righty pStraight
include : dispiro
- widths.center
+ widths.center sw
flat leftx lefty [heading [if (lefty < righty) Upward Downward]]
curl leftx turnyleft [heading [if (lefty < righty) Upward Downward]]
quadControls 0 ((cyleft - turnyleft) / (straightyleft - turnyleft)) 24
@@ -42,50 +42,15 @@ glyph-block Letter-Latin-X : begin
curl rightx righty
glyph-block-export XStrand
- define [XStrand stb slab _leftx lefty _rightx righty turn pStraight tension] : glyph-proc
+ define [XStrand stb slab _leftx lefty _rightx righty turn pStraight tension _sw] : glyph-proc
local middlex : mix _leftx _rightx 0.5
local middley : mix lefty righty 0.5
- include : HalfXStrand stb slab _leftx lefty middlex middley turn pStraight tension
- include : HalfXStrand stb slab _rightx righty middlex middley turn pStraight tension
+ include : HalfXStrand stb slab _leftx lefty middlex middley turn pStraight tension _sw
+ include : HalfXStrand stb slab _rightx righty middlex middley turn pStraight tension _sw
- glyph-block-export XCursiveHalfShape
- define [XCursiveHalfShape] : with-params [top bottom left right [swEnd : AdviceStroke 2.75] [swMid : AdviceStroke 3] [kThin 0.55] [setMark false]] : glyph-proc
- local ada : ArchDepthAOf (ArchDepth * 0.8) (Width / 2)
- local adb : ArchDepthBOf (ArchDepth * 0.8) (Width / 2)
-
- define xCenterRight : left + [HSwToV swMid] / 2
- define xCenterLeft : left - [HSwToV swMid] / 2
- define xTurn : mix (right - [HSwToV swEnd]) xCenterRight 0.5
- define hook1Depth : Hook + Stroke * 0.125
- define hook1StraightDepth : Math.min
- hook1Depth - swEnd * 1.125
- Math.max 1 : hook1Depth / 5 - swEnd / 4
-
- define fineMid : swMid * kThin
- define rIn : Math.max (0.4 * (right - left) - [HSwToV : 0.7 * Stroke]) [AdviceStroke 16]
- define flatHookDepth : 1.4 * (right - left) - swEnd - 1.5 * rIn
-
- define upperHalf : include : dispiro
- flat (xCenterRight - [HSwToV fineMid]) ([mix bottom top 0.5] + O) [widths.rhs.heading fineMid Upward]
- curl (xCenterRight - [HSwToV fineMid]) (top - ada)
- arcvh
- ShoulderMidKnotRhs xTurn (top - O) fineMid swEnd (+1) (-1)
- archv
- flat (right - OX) (top - hook1Depth + hook1StraightDepth) [heading Downward]
- curl (right - OX) (top - hook1Depth) [heading Downward]
-
- define lowerHalf : include : dispiro
- flat (xCenterRight - [HSwToV : 0.5 * fineMid]) ([mix bottom top 0.5] - O) [widths.center fineMid]
- curl (xCenterRight - [HSwToV : 0.5 * fineMid]) (bottom + [Math.min adb (swMid + rIn)])
- arcvh 16
- DiagonalTailF 1 [DivFrame 1] (xCenterRight - [HSwToV : 0.5 * Stroke] + TanSlope * rIn) bottom rIn 50 flatHookDepth Stroke
-
- if setMark : begin
- define lowerHalfLastKnot lowerHalf.rhsKnots.(lowerHalf.rhsKnots.length - 1)
- set-base-anchor 'cyrlDescenderAttach' lowerHalfLastKnot.x lowerHalfLastKnot.y
-
- define [XChanceryStrand sign leftX leftY rightX rightY sw] : begin
+ define [XChanceryStrand sign leftX leftY rightX rightY fHalf _sw] : begin
+ local sw : fallback _sw Stroke
local blendK1X : StrokeWidthBlend 0.58 0.65
local blendK1Y 0.2
local blendK2X 0.78
@@ -94,70 +59,158 @@ glyph-block Letter-Latin-X : begin
local pStraightX : StrokeWidthBlend 0.3 0.35
local pStraightY : StrokeWidthBlend 0.2 0.25
- local fine : [AdviceStroke 3] / Stroke * sw
+ local fine : [AdviceStroke 3] * (sw / Stroke)
return : dispiro
- straight.right.start leftX (leftY - sign * sw / 2) [widths.center sw]
- alsoThruThem {{blendK1X blendK1Y} {blendK2X blendK2Y}}
- flat [mix leftX rightX pStraightX] [mix leftY rightY pStraightY] [widths.center : mix sw fine 0.5]
- corner [mix leftX rightX 0.5] [mix leftY rightY 0.5] [widths.center fine]
+ if fHalf
+ flat [mix leftX rightX 0.5] [mix leftY rightY 0.5] [widths.center fine]
+ list
+ straight.right.start leftX (leftY - sign * sw / 2) [widths.center sw]
+ alsoThruThem {{blendK1X blendK1Y} {blendK2X blendK2Y}}
+ flat [mix leftX rightX pStraightX] [mix leftY rightY pStraightY] [widths.center : mix sw fine 0.5]
+ corner [mix leftX rightX 0.5] [mix leftY rightY 0.5] [widths.center fine]
curl [mix leftX rightX (1 - pStraightX)] [mix leftY rightY (1 - pStraightY)] [widths.center : mix sw fine 0.5]
alsoThruThem {{(1 - blendK2X) (1 - blendK2Y)} {(1 - blendK1X) (1 - blendK1Y)}}
straight.right.end rightX (rightY + sign * sw / 2) [widths.center sw]
- define Shape : namespace
- define [XBase fStraight fSlab top bottom turn tension] : composite-proc
- XStrand fStraight fSlab SB bottom RightSB top turn 0.4 tension
- XStrand fStraight fSlab SB top RightSB bottom turn 0.4 tension
-
- export : define [StraightBase fSlab top bottom turn tension]
- XBase true fSlab top bottom turn tension
- export : define [CurlyBase fSlab top bottom turn tension]
- XBase false fSlab top bottom turn tension
-
- export : define [CursiveBase fSerifs top bottom turn tension] : glyph-proc
- include : XCursiveHalfShape top bottom Middle RightSB
- include : FlipAround Middle [mix bottom top 0.5]
- include : XCursiveHalfShape top bottom Middle RightSB (setMark -- true)
-
- export : define [SemiChanceryStr fSlab top bottom turn tension] : union
- XChanceryStrand (+1) SB top RightSB bottom Stroke
- XStrand true fSlab SB bottom RightSB top turn 0.4 tension
- export : define [SemiChanceryCur fSlab top bottom turn tension] : union
- XChanceryStrand (+1) SB top RightSB bottom Stroke
- XStrand false fSlab SB bottom RightSB top turn 0.4 tension
- export : define [ChanceryBase fSlab top bottom turn tension] : union
- XChanceryStrand (+1) SB top RightSB bottom Stroke
- XChanceryStrand (-1) SB bottom RightSB top Stroke
-
- # Serifs
- export : define [FullSerifs top bot] : let [sf : SerifFrame.fromDf [DivFrame 1] top bot]
- composite-proc sf.lt.full sf.rt.full sf.lb.full sf.rb.full
- export : define [MotionSerifs top bot] : glyph-proc
- include : tagged 'serifLT' : HSerif.lt SB top SideJut
- export : define [MotionSerifsBilateral top bot] : glyph-proc
- include : tagged 'serifLT' : HSerif.lt SB top SideJut
- include : tagged 'serifRB' : HSerif.rb RightSB bot SideJut
-
- define Config : object
- straightSerifless { Shape.StraightBase null false }
- curlySerifless { Shape.CurlyBase null false }
- cursive { Shape.CursiveBase null false }
- semiChanceryStraight { Shape.SemiChanceryStr null false }
- semiChanceryCurly { Shape.SemiChanceryCur null false }
- chancery { Shape.ChanceryBase null false }
- straightSerifed { Shape.StraightBase Shape.FullSerifs true }
- curlySerifed { Shape.CurlyBase Shape.FullSerifs true }
- straightMotionSerifed { Shape.StraightBase Shape.MotionSerifs false }
- curlyMotionSerifed { Shape.CurlyBase Shape.MotionSerifs false }
- straightBilateralMotionSerifed { Shape.StraightBase Shape.MotionSerifsBilateral false }
- curlyBilateralMotionSerifed { Shape.CurlyBase Shape.MotionSerifsBilateral false }
-
- foreach { suffix { baseShape serifShape fMaskBase} } [Object.entries Config] : do
- define [letterShape top bottom turn tension] : glyph-proc
- local base : baseShape fMaskBase top bottom turn tension
- include : WithSerifOverflowMask fMaskBase top bottom SB RightSB base
- if serifShape : include : serifShape top bottom
+ glyph-block-export XCursiveHalfShape
+ define [XCursiveHalfShape] : with-params [
+ top bottom left right
+ [swMid : AdviceStroke 2.75]
+ [swEnd : AdviceStroke 3]
+ [swCoEnd : AdviceStroke 2]
+ [setMark false] [flatTail false]
+ ] : glyph-proc
+ local ada : ArchDepthAOf (ArchDepth * 0.8) (Width / 2)
+ local adb : ArchDepthBOf (ArchDepth * 0.8) (Width / 2)
+ local div : (right - left) / (RightSB - Middle)
+ local divHook : Math.min div 1
+
+ local fineMid : 0.55 * swMid
+ local xMidBarRightEdge : left + [HSwToV swMid] / 2
+ local xUpperTurn : mix (right - [HSwToV swEnd]) xMidBarRightEdge 0.5
+ local upperHookDepth : Math.max (swEnd * 2) ([Math.sqrt divHook] * (Hook + swEnd * 0.125))
+ local upperHookStraightDepth : Math.min
+ upperHookDepth - swEnd * 1.125
+ Math.max 1 : upperHookDepth / 5 - swEnd / 4
+ local upperHalf : include : dispiro
+ flat (xMidBarRightEdge - [HSwToV fineMid]) ([mix bottom top 0.5] + O) [widths.rhs.heading fineMid Upward]
+ curl (xMidBarRightEdge - [HSwToV fineMid]) (top - ada)
+ arcvh
+ ShoulderMidKnotRhs xUpperTurn (top - O) fineMid swEnd (+1) (-1)
+ archv
+ flat (right - OX) (top - upperHookDepth + upperHookStraightDepth) [heading Downward]
+ curl (right - OX) (top - upperHookDepth) [heading Downward]
+
+ local rIn : Math.max [AdviceStroke 16] (0.4 * (right - left) - [HSwToV : 0.5 * swMid])
+ local flatHookDepth : 1.3 * (right - left) - (0.5 - TanSlope) * swEnd - 1.5 * (rIn + 0.5 * swMid)
+ local lowerHalf : include : if flatTail
+ dispiro
+ flat (xMidBarRightEdge - [HSwToV fineMid]) ([mix bottom top 0.5] - O) [widths.lhs fineMid]
+ curl (xMidBarRightEdge - [HSwToV fineMid]) (bottom + [Math.min adb (swMid + rIn)])
+ arcvh
+ flat (xMidBarRightEdge + div * (0.5 * swMid + rIn) + 0.25 * TanSlope * (0.5 * swMid + rIn)) bottom [widths.lhs.heading swCoEnd Rightward]
+ curl right bottom
+ dispiro
+ flat (xMidBarRightEdge - [HSwToV : 0.5 * fineMid]) ([mix bottom top 0.5] - O) [widths.center fineMid]
+ curl (xMidBarRightEdge - [HSwToV : 0.5 * fineMid]) (bottom + [Math.min adb (swMid + rIn)])
+ arcvh 16
+ DiagTail.F 1 (xMidBarRightEdge - [HSwToV : 0.5 * swCoEnd] + TanSlope * rIn) bottom rIn 50 flatHookDepth swCoEnd
+
+ if setMark : begin
+ define lowerHalfLastKnot lowerHalf.rhsKnots.(lowerHalf.rhsKnots.length - 1)
+ set-base-anchor 'cyrlDescenderAttach' lowerHalfLastKnot.x lowerHalfLastKnot.y
+
+ define STROKE-STRAIGHT 0
+ define STROKE-CURLY 1
+ define STROKE-CHANCERY 2
+ define STROKE-CURSIVE 3
+ define STROKE-CURSIVE-FLAT 4
+
+ glyph-block-export XLetterForm
+ define [XLetterForm] : with-params [
+ df top bot
+ stroke1 stroke2
+ turn tension
+ [sw df.mvs]
+ [swCursiveMid : (sw / Stroke) * [AdviceStroke 2.75]]
+ [swCursiveEnd : (sw / Stroke) * [AdviceStroke 3]]
+ [swCursiveCoEnd : (sw / Stroke) * [AdviceStroke 2]]
+ ] : namespace
+ local sw df.mvs
+ export : define [base fSlab] : union
+ match stroke1
+ [Just STROKE-STRAIGHT] : XStrand true fSlab df.leftSB bot df.rightSB top turn 0.4 tension sw
+ [Just STROKE-CURLY] : XStrand false fSlab df.leftSB bot df.rightSB top turn 0.4 tension sw
+ [Just STROKE-CHANCERY] : XChanceryStrand (-1) df.leftSB bot df.rightSB top false sw
+ ([Just STROKE-CURSIVE] || [Just STROKE-CURSIVE-FLAT]) : composite-proc
+ XCursiveHalfShape top bot df.middle df.rightSB
+ swCoEnd -- swCursiveCoEnd
+ swEnd -- swCursiveEnd
+ swMid -- swCursiveMid
+ flatTail -- (stroke1 === STROKE-CURSIVE-FLAT)
+ FlipAround df.middle [mix bot top 0.5]
+ __ : glyph-proc
+ match stroke2
+ [Just STROKE-STRAIGHT] : XStrand true fSlab df.leftSB top df.rightSB bot turn 0.4 tension sw
+ [Just STROKE-CURLY] : XStrand false fSlab df.leftSB top df.rightSB bot turn 0.4 tension sw
+ [Just STROKE-CHANCERY] : XChanceryStrand (+1) df.leftSB top df.rightSB bot false sw
+ [Just STROKE-CURSIVE] : XCursiveHalfShape top bot df.middle df.rightSB
+ swCoEnd -- swCursiveCoEnd
+ swEnd -- swCursiveEnd
+ swMid -- swCursiveMid
+ setMark -- true
+ __ : glyph-proc
+
+ export : define [rightHalf fSlab] : glyph-proc
+ local midy : mix top bot 0.5
+
+ include : union
+ match stroke1
+ [Just STROKE-STRAIGHT] : HalfXStrand true fSlab df.rightSB top df.middle midy turn 0.4 tension sw
+ [Just STROKE-CURLY] : HalfXStrand false fSlab df.rightSB top df.middle midy turn 0.4 tension sw
+ [Just STROKE-CHANCERY] : XChanceryStrand (-1) df.leftSB bot df.rightSB top true sw
+ __ : glyph-proc
+ match stroke2
+ [Just STROKE-STRAIGHT] : HalfXStrand true fSlab df.rightSB bot df.middle midy turn 0.4 tension sw
+ [Just STROKE-CURLY] : HalfXStrand false fSlab df.rightSB bot df.middle midy turn 0.4 tension sw
+ [Just STROKE-CHANCERY] : XChanceryStrand (+1) df.leftSB top df.rightSB bot true sw
+ [Just STROKE-CURSIVE] : XCursiveHalfShape top bot df.middle df.rightSB
+ swCoEnd -- swCursiveCoEnd
+ swEnd -- swCursiveEnd
+ swMid -- swCursiveMid
+ setMark -- true
+ __ : glyph-proc
+
+ glyph-block-export XSerifs
+ define XSerifs : namespace
+ export : define [Full sf] : composite-proc sf.lt.full sf.rt.full sf.lb.full sf.rb.full
+ export : define [Motion sf] : composite-proc sf.lt.outer
+ export : define [BilateralMotion sf] : composite-proc sf.lt.outer sf.rb.outer
+
+ glyph-block-export XConfig
+ define XConfig : object
+ straightSerifless { STROKE-STRAIGHT STROKE-STRAIGHT null false }
+ curlySerifless { STROKE-CURLY STROKE-CURLY null false }
+ cursive { STROKE-CURSIVE STROKE-CURSIVE null false }
+ semiChanceryStraight { STROKE-STRAIGHT STROKE-CHANCERY null false }
+ semiChanceryCurly { STROKE-CURLY STROKE-CHANCERY null false }
+ chancery { STROKE-CHANCERY STROKE-CHANCERY null false }
+ straightSerifed { STROKE-STRAIGHT STROKE-STRAIGHT XSerifs.Full true }
+ curlySerifed { STROKE-CURLY STROKE-CURLY XSerifs.Full true }
+ straightMotionSerifed { STROKE-STRAIGHT STROKE-STRAIGHT XSerifs.Motion false }
+ curlyMotionSerifed { STROKE-CURLY STROKE-CURLY XSerifs.Motion false }
+ straightBilateralMotionSerifed { STROKE-STRAIGHT STROKE-STRAIGHT XSerifs.BilateralMotion false }
+ curlyBilateralMotionSerifed { STROKE-CURLY STROKE-CURLY XSerifs.BilateralMotion false }
+
+ foreach { suffix {stroke1 stroke2 serifShape fMaskBase} } [Object.entries XConfig] : do
+ define [letterShape top bot turn tension] : glyph-proc
+ local df : DivFrame 1 2
+ local lf : XLetterForm df top bot stroke1 stroke2 turn tension
+ include : WithSerifOverflowMask fMaskBase top bot df.leftSB df.rightSB : lf.base fMaskBase
+ if serifShape : begin
+ local sf : SerifFrame.fromDf df top bot
+ include : serifShape sf
create-glyph "X.\(suffix)" : glyph-proc
include : MarkSet.capital
diff --git a/font-src/glyphs/letter/shared.ptl b/font-src/glyphs/letter/shared.ptl
index ee87fcaebf..1fe516099c 100644
--- a/font-src/glyphs/letter/shared.ptl
+++ b/font-src/glyphs/letter/shared.ptl
@@ -603,71 +603,75 @@ glyph-block Letter-Shared-Shapes : begin
export : define [InwardR cx cy stroke hook] : begin
return : tagged 'arcEndSerifR' : VBar.r cx (cy + hook + DToothlessRise / 2) (cy + DToothlessRise) [ArcStartSerifWidth stroke]
- define DiagTailDefaultAngle 40
-
- glyph-block-export DiagonalTailStdDepth
- define [DiagonalTailStdDepth df sw] : Math.max (0.5 * sw)
- df.div * para.unitWidthScalar * [Math.hypot HookX Hook] - 0.25 * sw
-
- glyph-block-export DiagonalTailInnerRadius
- define [DiagonalTailInnerRadius] : Math.max (XH / 32) (0.5 * [AdviceStroke2 24 32 XH])
-
- glyph-block-export DiagonalTailF
- define [DiagonalTailF sign df cx cy rIn angle depth sw] : begin
- define tailAngle : angle / 180 * Math.PI
- define sinAngle : Math.sin tailAngle
- define cosAngle : Math.cos tailAngle
-
- define mocFine : [AdviceStroke 3] / Stroke * sw
- define mocSwMid : mix sw mocFine (2 / 3)
- define fine : mocFine / [mix 1 HVContrast 0.375]
- define swMid : mix sw fine 0.7
-
- define dxTurn : [HSwToV : 0.5 * sw] + rIn * df.div
- define dxTurnObl : if (sign > 0) (-0.75 * TanSlope * rIn) (0.75 * TanSlope * rIn)
- define dyTurn : 0.5 * mocSwMid
- define dxTailStart : dxTurn + sinAngle * (rIn + 0.5 * mocFine * [mix 1 HVContrast sinAngle])
- define dyTailStart : dyTurn + (1 - cosAngle + [if (sign > 0) 0 (TanSlope)]) * (rIn + 0.5 * mocFine)
- define dxDepth : (depth - 0.5 * sw) * cosAngle
- define dyDepth : (depth - 0.5 * sw) * sinAngle
- return : list
- g4.[if (sign > 0) "right" "left"].mid
- cx + sign * dxTurn + dxTurnObl
- cy + O + dyTurn
- if (sign > 0)
- widths.center.heading swMid Rightward
- widths.center.heading swMid Leftward
- if (sign <= 0) {} : alsoThruThem
- list
- DiagonalTailFArc2K tailAngle (1 / 4)
- DiagonalTailFArc2K tailAngle (2 / 4)
- DiagonalTailFArc2K tailAngle (3 / 4)
- # if (sign <= 0) {} : alsoThru.g2
- # [Math.sin (tailAngle / 2)] / [Math.sin tailAngle]
- # (1 - [Math.cos (tailAngle / 2)]) / (1 - [Math.cos tailAngle])
- # widths.center : mix swMid fine (1 / 2)
- flat (cx + sign * dxTailStart) (cy + O + dyTailStart) [widths.center fine]
- curl (cx + sign * dxTailStart + sign * dxDepth) (cy + O + dyTailStart + dyDepth)
- define [DiagonalTailFArc2K tailAngle t] : list
- [Math.sin (t * tailAngle)] / [Math.sin tailAngle]
- (1 - [Math.cos (t * tailAngle)]) / (1 - [Math.cos tailAngle])
- begin t
-
- glyph-block-export DiagonalTailR
- define [DiagonalTailR df cx cy depth sw] : begin
- define rInY : DiagonalTailInnerRadius
- return : list
- curl cx (cy + sw + rInY)
- arcvh 8
- DiagonalTailF (+1) df cx cy rInY DiagTailDefaultAngle depth sw
+ glyph-block-export DiagTail
+ define DiagTail : namespace
- glyph-block-export DiagonalTailL
- define [DiagonalTailL df cx cy depth sw] : begin
- define rInY : DiagonalTailInnerRadius
- return : list
- curl cx (cy + sw + rInY)
- arcvh 8
- DiagonalTailF (-1) df cx cy rInY DiagTailDefaultAngle depth sw
+ export : define DefaultAngle 40
+
+ export : define [StdDepth df sw] : Math.max (0.5 * sw)
+ df.div * para.unitWidthScalar * [Math.hypot HookX Hook] - 0.25 * sw
+
+ export : define [DefaultInnerRadius] : Math.max (XH / 32) (0.5 * [AdviceStroke2 24 32 XH])
+
+ define [FineSw sw] : begin
+ define mocFine : [AdviceStroke 3] / Stroke * sw
+ return : mocFine / [mix 1 HVContrast 0.375]
+
+ define DiagTailSuperness DesignParameters.superness
+
+ export : define [F sign cx cy rIn angle depth sw] : begin
+ define tailAngle : angle / 180 * Math.PI
+ define {cosAngle sinAngle} : superEllipse tailAngle
+ define {dCosAngle dSinAngle} : superEllipseDerivative tailAngle
+
+ define fine : FineSw sw
+ define r : rIn + 0.5 * fine
+ define dxTurn : [HSwToV : 0.5 * sw] + rIn + 0.5 * sign * TanSlope * fine
+ define dxTailStart : dxTurn + sinAngle * (r * [mix 1 HVContrast sinAngle])
+ define dyTailStart : (rIn + fine) - cosAngle * r
+ define dxDepth : (depth - 0.25 * sw) * +dSinAngle
+ define dyDepth : (depth - 0.25 * sw) * -dCosAngle
+ return : list
+ g4.[if (sign > 0) "right" "left"].mid
+ cx + sign * dxTurn
+ cy + O + 0.5 * fine
+ widths.center fine
+ alsoThruThem : FArc tailAngle 4
+ flat (cx + sign * dxTailStart) (cy + O + dyTailStart) [widths.center fine]
+ curl (cx + sign * (dxTailStart + dxDepth)) (cy + O + dyTailStart + dyDepth)
+
+ define [superEllipse theta] : list
+ Math.pow [Math.cos theta] (2 / DiagTailSuperness)
+ Math.pow [Math.sin theta] (2 / DiagTailSuperness)
+
+ define [superEllipseDerivative theta] : begin
+ local dc : (-2 / DiagTailSuperness) * [Math.sin theta] * [Math.pow [Math.cos theta] (2 / DiagTailSuperness - 1)]
+ local ds : (+2 / DiagTailSuperness) * [Math.cos theta] * [Math.pow [Math.sin theta] (2 / DiagTailSuperness - 1)]
+ local h : Math.hypot dc ds
+ return : list (dc / h) (ds / h)
+
+ define [FArc tailAngle n] : begin
+ local results {}
+ foreach i [range 1 n] : begin
+ local t : i / n
+ local {tc ts} : superEllipse (t * tailAngle)
+ local {ec es} : superEllipse tailAngle
+ results.push : list (ts / es) ((1 - tc) / (1 - ec))
+ return results
+
+ export : define [R cx cy depth sw] : begin
+ define rInY : DefaultInnerRadius
+ return : list
+ curl cx (cy + [FineSw sw] + rInY)
+ arcvh 8 DiagTailSuperness
+ F (+1) cx cy rInY DefaultAngle depth sw
+
+ export : define [L cx cy depth sw] : begin
+ define rInY : DefaultInnerRadius
+ return : list
+ curl cx (cy + [FineSw sw] + rInY)
+ arcvh 8 DiagTailSuperness
+ F (-1) cx cy rInY DefaultAngle depth sw
define [JutIn left right jut swRef hSplit] : begin
local ink : HSwToV swRef
@@ -788,7 +792,7 @@ glyph-block Letter-Shared-Shapes : begin
widths.lhs fine
flat ztop.x ztop.y [heading Downward]
curl xb [mix (zbot.y + LongJut) ztop.y 0.25]
- alsoThruThem {{0.5 0.94}}
+ alsoThruThem {{0.2 0.76} {0.3 0.85} {0.5 0.94}}
straight.left.end zbot.x (zbot.y + fine) [heading Leftward]
glyph-block-export UpwardHookShape
diff --git a/font-src/glyphs/marks/above.ptl b/font-src/glyphs/marks/above.ptl
index ced85522c5..830d6cfa89 100644
--- a/font-src/glyphs/marks/above.ptl
+++ b/font-src/glyphs/marks/above.ptl
@@ -837,7 +837,7 @@ glyph-block Mark-Above : begin
turned 'greaterAbove' 0x350 'lessAbove' markMiddle aboveMarkMid
- create-glyph 'upArrowHeadAbove' 0xE002 : glyph-proc
+ create-glyph 'upArrowHeadAbove' : glyph-proc
set-width 0
include : StdAnchors.medium
@@ -854,7 +854,7 @@ glyph-block Mark-Above : begin
flat (markMiddle + markExtend) bot
curl markMiddle top [widths.center.heading (markFine * exp) Upward]
- turned 'downArrowHeadAbove' 0xE003 'upArrowHeadAbove' markMiddle aboveMarkMid
+ turned 'downArrowHeadAbove' null 'upArrowHeadAbove' markMiddle aboveMarkMid
define [ArrowheadForArrowMarkAbove-Up] : new-glyph : glyph-proc
local fine : [AdviceStroke 6] / 2
@@ -1061,6 +1061,36 @@ glyph-block Mark-Above : begin
include : FlipAround markMiddle [mix aboveMarkTop aboveMarkBot 0.5]
include : StdAnchors.wide
+ create-glyph 'breveMacronAbove' 0x1DCB : glyph-proc
+ set-width 0
+ include : StdAnchors.wide
+
+ local sw : [AdviceStroke 3.5] / Stroke * markStroke
+ local extend : (aboveMarkTop - aboveMarkBot - 0.5 * markStroke) * 1.25
+
+ include : dispiro
+ g4.down.start (markMiddle - extend) aboveMarkTop [widths.center.heading sw Downward]
+ arcvh
+ g4.right.mid [mix markMiddle (markMiddle - extend) 0.5] (aboveMarkBot + 0.5 * sw) [heading Rightward]
+ archv
+ g4.up.end markMiddle aboveMarkTop [heading Upward]
+ include : HBar.t markMiddle (markMiddle + extend + 0.5 * markStress) aboveMarkTop sw
+
+ create-glyph 'macronBreveAbove' 0x1DCC : glyph-proc
+ set-width 0
+ include : StdAnchors.wide
+
+ local sw : [AdviceStroke 3.5] / Stroke * markStroke
+ local extend : (aboveMarkTop - aboveMarkBot - 0.5 * markStroke) * 1.25
+
+ include : HBar.t (markMiddle - extend - 0.5 * markStress) markMiddle aboveMarkTop sw
+ include : dispiro
+ g4.down.start markMiddle aboveMarkTop [widths.center.heading sw Downward]
+ arcvh
+ g4.right.mid [mix markMiddle (markMiddle + extend) 0.5] (aboveMarkBot + 0.5 * sw) [heading Rightward]
+ archv
+ g4.up.end (markMiddle + extend) aboveMarkTop [heading Upward]
+
create-glyph 'plusAbove' 0x1AC8 : glyph-proc
set-width 0
include : StdAnchors.mediumWide
diff --git a/font-src/glyphs/marks/below.ptl b/font-src/glyphs/marks/below.ptl
index fc2d9d1c56..2ec1caa20d 100644
--- a/font-src/glyphs/marks/below.ptl
+++ b/font-src/glyphs/marks/below.ptl
@@ -214,8 +214,8 @@ glyph-block Mark-Below : begin
TurnAboveMarkToBelow 'elipsisBelow' 0x20E8 'elipsisAbove'
TurnAboveMarkToBelow 'leftArrowBelow' 0x20EE 'rightArrowAbove'
TurnAboveMarkToBelow 'rightArrowBelow' 0x20EF 'leftArrowAbove'
- TurnAboveMarkToBelow 'upArrowHeadBelow' 0xE004 'downArrowHeadAbove'
- TurnAboveMarkToBelow 'downArrowHeadBelow' 0xE005 'upArrowHeadAbove'
+ TurnAboveMarkToBelow 'upArrowHeadBelow' null 'downArrowHeadAbove'
+ TurnAboveMarkToBelow 'downArrowHeadBelow' null 'upArrowHeadAbove'
TurnAboveMarkToBelow 'descenderBarBelow' null 'ascenderBarAbove'
TurnAboveMarkToBelow 'sbRsbUnderlineBelow' null 'sbRsbOverlineAbove'
diff --git a/font-src/glyphs/marks/overlay.ptl b/font-src/glyphs/marks/overlay.ptl
index a43c361d3f..ac6f490ded 100644
--- a/font-src/glyphs/marks/overlay.ptl
+++ b/font-src/glyphs/marks/overlay.ptl
@@ -102,7 +102,7 @@ glyph-block Mark-Overlay : begin
include : HOverlayBar (markMiddle - LongJut * 0.75) (markMiddle + LongJut * 0.75) (XH / 2 + 0.5 * gap)
include : HOverlayBar (markMiddle - LongJut * 0.75) (markMiddle + LongJut * 0.75) (XH / 2 - 0.5 * gap)
- create-glyph 'shortSlashOver' 0xE000 : glyph-proc
+ create-glyph 'shortSlashOver' : glyph-proc
set-width 0
set-mark-anchor 'overlay' markMiddle (XH / 2) markMiddle (XH / 2)
include : FlatSlashShape markMiddle (XH / 2) (0.5 * OverlayStroke)
diff --git a/font-src/glyphs/space/index.ptl b/font-src/glyphs/space/index.ptl
index 3fc15fda73..da1fff0337 100644
--- a/font-src/glyphs/space/index.ptl
+++ b/font-src/glyphs/space/index.ptl
@@ -39,6 +39,8 @@ glyph-block Spaces : begin
set-width 0
alias 'nonmarkingreturn' 0x000D 'zwsp'
+ alias 'lineSeparator' 0x2028 'zwsp'
+ alias 'paragraphSeparator' 0x2029 'zwsp'
alias 'wj' 0x2060 'zwsp'
alias 'funcApp' 0x2061 'zwsp'
alias 'invisibleTimes' 0x2062 'zwsp'
diff --git a/font-src/glyphs/symbol/geometric/stars.ptl b/font-src/glyphs/symbol/geometric/stars.ptl
index 3c1e04d212..b3b47afb61 100644
--- a/font-src/glyphs/symbol/geometric/stars.ptl
+++ b/font-src/glyphs/symbol/geometric/stars.ptl
@@ -100,3 +100,75 @@ glyph-block Symbol-Geometric-Stars : for-width-kinds WideWidth1
Geom.MidX + Geom.Size * mag * [Math.sin (-angle)]
Geom.MidY + Geom.Size * mag * [Math.cos (-angle)]
widths.center sw
+
+ # Dingbat
+ create-glyph [MangleName "crystalFlower"] [MangleUnicode 0xEF10] : glyph-proc
+ set-width Geom.Width
+
+ define [createPetals] : with-params [fnSelect fill kSw rotate expansion sw size] : glyph-proc
+ local sizeIn : size * 0.45
+ local sizeExt : size * 1.0 - O
+ foreach [j : range 0 6] : if [fnSelect j] : begin
+ local anglePre : 2 * Math.PI * ((j - expansion + rotate) / 6)
+ local angle : 2 * Math.PI * ((j + rotate) / 6)
+ local anglePost : 2 * Math.PI * ((j + expansion + rotate) / 6)
+
+ local z1x : sizeIn * [Math.cos anglePre]
+ local z1y : sizeIn * [Math.sin anglePre]
+ local z2x : sizeExt * [Math.cos angle]
+ local z2y : sizeExt * [Math.sin angle]
+ local z3x : sizeIn * [Math.cos anglePost]
+ local z3y : sizeIn * [Math.sin anglePost]
+
+ local outline : spiro-outline
+ corner 0 0
+ corner z3x z3y
+ corner z2x z2y
+ corner z1x z1y
+
+ if fill
+ : then : include outline
+ : else : include : intersection outline : union
+ ExtLineLhs 1 (kSw * sw) 0 0 z1x z1y
+ ExtLineLhs 1 sw z1x z1y z2x z2y
+ ExtLineLhs 1 sw z2x z2y z3x z3y
+ ExtLineLhs 1 (kSw * sw) z3x z3y 0 0
+
+ define [makeOverlay gap shape] : glyph-proc
+ foreach [j : range 0 6] : begin
+ local angle : 2 * Math.PI * (j / 6)
+ local tx : gap * [Math.cos angle]
+ local ty : gap * [Math.sin angle]
+ include : with-transform [ApparentTranslate tx ty] shape
+
+ local swOuter : AdviceStroke 10 [Math.sqrt Geom.Scalar]
+ local swInner : AdviceStroke 16 [Math.sqrt Geom.Scalar]
+ local gap : Math.min [AdviceStroke 12] (Geom.Size / 12)
+ include : union
+ createPetals
+ fnSelect -- [function x : x % 2 == 0]
+ rotate -- (-0.5)
+ expansion -- 0.6
+ fill -- false
+ kSw -- 1
+ sw -- swInner
+ size -- (0.625 * Geom.Size + swInner)
+ difference
+ createPetals
+ fnSelect -- [function x true]
+ rotate -- 0
+ expansion -- 0.5
+ fill -- false
+ kSw -- 0.5
+ sw -- swOuter
+ size -- Geom.Size
+ makeOverlay gap : createPetals
+ fnSelect -- [function x : x % 2 == 0]
+ rotate -- (-0.5)
+ expansion -- 0.6
+ fill -- true
+ kSw -- 1
+ sw -- (swInner + gap)
+ size -- (0.625 * Geom.Size + swInner)
+
+ include : ApparentTranslate Geom.MidX Geom.MidY
diff --git a/font-src/glyphs/symbol/letter.ptl b/font-src/glyphs/symbol/letter.ptl
index fcd7e3d3be..2126b4e9e0 100644
--- a/font-src/glyphs/symbol/letter.ptl
+++ b/font-src/glyphs/symbol/letter.ptl
@@ -72,7 +72,7 @@ glyph-block Symbol-Currency-Letter-Derived : begin
derive-composites 'currency/wonSign' 0x20A9 'W' 'currency/overlay/W'
- derive-composites 'currency/dongSign' 0x20AB 'dcroat' 'sbRsbUnderlineBelow'
+ derive-composites 'currency/dongSign' 0x20AB 'dStroke' 'sbRsbUnderlineBelow'
derive-composites 'currency/kipSign' 0x20AD 'K' 'hStrike'
create-glyph 'currency/tugrikOverride' : glyph-proc
@@ -90,6 +90,8 @@ glyph-block Symbol-Currency-Letter-Derived : begin
derive-composites 'currency/guaraniSign' 0x20B2 'G' 'longVStrokeOver'
derive-composites 'currency/cediSign' 0x20B5 'C' 'longVStrokeOver'
+ derive-composites 'currency/somSign' 0x20C0 'cyrl/es' 'sbRsbUnderlineBelow'
+
glyph-block Symbol-Letter : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
diff --git a/font-src/glyphs/symbol/punctuation/ellipsis.ptl b/font-src/glyphs/symbol/punctuation/ellipsis.ptl
index 18df5d8ad5..af2210586a 100644
--- a/font-src/glyphs/symbol/punctuation/ellipsis.ptl
+++ b/font-src/glyphs/symbol/punctuation/ellipsis.ptl
@@ -9,6 +9,7 @@ glyph-block Symbol-Punctuation-Ellipsis : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
+ glyph-block-export EllipsisDotRadius
define [EllipsisDotRadius nDots space] : begin
return : 0.5 * [AdviceStroke (nDots + 1.5) (space / Width)] * PeriodSize / Stroke
diff --git a/font-src/glyphs/symbol/punctuation/quotes-and-primes.ptl b/font-src/glyphs/symbol/punctuation/quotes-and-primes.ptl
index 95d2aac209..4a261eff5c 100644
--- a/font-src/glyphs/symbol/punctuation/quotes-and-primes.ptl
+++ b/font-src/glyphs/symbol/punctuation/quotes-and-primes.ptl
@@ -232,4 +232,8 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
g4.down.mid (Middle - height / 4 + O) [mix quoteBottom quoteTop 0.5] [widths.lhs.heading [AdviceStroke 3.5] Downward]
arcvh
g4.right.end (Middle + height / 4) (quoteBottom + O) [widths.lhs.heading [AdviceStroke 3] Rightward]
+
turned 'modifierLetterRightHalfRing' 0x2BE 'modifierLetterLeftHalfRing' Middle [mix quoteBottom quoteTop 0.5]
+
+ derive-composites 'hypodiastole' 0x2E12 'modifierLetterRightHalfRing'
+ ApparentTranslate 0 ([mix [mix [mix PeriodSize commaLow 0.5] yCurlyQuotes 0.5] quoteBottom (-1)] - quoteTop)
diff --git a/font-src/glyphs/symbol/punctuation/small.ptl b/font-src/glyphs/symbol/punctuation/small.ptl
index 66d227022e..98e26974a2 100644
--- a/font-src/glyphs/symbol/punctuation/small.ptl
+++ b/font-src/glyphs/symbol/punctuation/small.ptl
@@ -9,6 +9,7 @@ glyph-module
glyph-block Symbol-Punctuation-Small : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
+ glyph-block-import Symbol-Punctuation-Ellipsis EllipsisDotRadius
foreach { suffix { DrawAt kDotRadius overshoot } } [Object.entries DotVariants] : do
create-glyph "period.\(suffix)" : glyph-proc
@@ -206,6 +207,27 @@ glyph-block Symbol-Punctuation-Small : begin
include : with-transform [ApparentTranslate (-multiDotShift) 0] : composite-proc
refer-glyph "halfXhSmallPeriod.\(suffix)"
+ create-glyph "geor/paragraphSeparator.\(suffix)" : glyph-proc
+ include : with-transform [ApparentTranslate (+multiDotShift) 0] : composite-proc
+ refer-glyph "halfXhSmallPeriod.\(suffix)"
+ include : with-transform [ApparentTranslate (-multiDotShift) 0] : composite-proc
+ refer-glyph "smallPeriod.\(suffix)"
+ refer-glyph "xhSmallPeriod.\(suffix)"
+
+ create-glyph "twoDotOverOneDotPunct.\(suffix)" : glyph-proc
+ include [refer-glyph "smallPeriod.\(suffix)"]
+ include : with-transform [ApparentTranslate (+multiDotShiftDense) 0] : composite-proc
+ refer-glyph "xhSmallPeriod.\(suffix)"
+ include : with-transform [ApparentTranslate (-multiDotShiftDense) 0] : composite-proc
+ refer-glyph "xhSmallPeriod.\(suffix)"
+
+ create-glyph "oneDotOverTwoDotPunct.\(suffix)" : glyph-proc
+ include [refer-glyph "xhSmallPeriod.\(suffix)"]
+ include : with-transform [ApparentTranslate (+multiDotShiftDense) 0] : composite-proc
+ refer-glyph "smallPeriod.\(suffix)"
+ include : with-transform [ApparentTranslate (-multiDotShiftDense) 0] : composite-proc
+ refer-glyph "smallPeriod.\(suffix)"
+
create-glyph "fourDotPunct.\(suffix)" : glyph-proc
include [refer-glyph "smallPeriod.\(suffix)"]
include [refer-glyph "xhSmallPeriod.\(suffix)"]
@@ -222,15 +244,29 @@ glyph-block Symbol-Punctuation-Small : begin
include : with-transform [ApparentTranslate (-multiDotShiftDense) 0] : composite-proc
refer-glyph "halfCapSmallPeriod.\(suffix)"
- create-glyph "fiveDotPunct.\(suffix)" : glyph-proc
+ create-glyph "squareFourDotPunct.\(suffix)" : glyph-proc
include : with-transform [ApparentTranslate (-multiDotShiftDense) 0] : composite-proc
refer-glyph "smallPeriod.\(suffix)"
refer-glyph "xhSmallPeriod.\(suffix)"
include : with-transform [ApparentTranslate (+multiDotShiftDense) 0] : composite-proc
refer-glyph "smallPeriod.\(suffix)"
refer-glyph "xhSmallPeriod.\(suffix)"
+
+ create-glyph "fiveDotPunct.\(suffix)" : glyph-proc
+ include : refer-glyph "squareFourDotPunct.\(suffix)"
include : refer-glyph "halfXhSmallPeriod.\(suffix)"
+ create-glyph "fiveDotMark.\(suffix)" : glyph-proc
+ local l : mix SB 0 0.5
+ local r : mix RightSB Width 0.5
+ local radius : EllipsisDotRadius 3 [Math.min XH (r - l)]
+ include : DrawAt Middle radius (kDotRadius * radius - overshoot)
+ include : DrawAt Middle (XH / 2) (kDotRadius * radius - overshoot)
+ include : DrawAt Middle (XH - radius) (kDotRadius * radius - overshoot)
+
+ include : DrawAt (l + radius) (XH / 2) (kDotRadius * radius - overshoot)
+ include : DrawAt (r - radius) (XH / 2) (kDotRadius * radius - overshoot)
+
create-glyph "dottedCross.\(suffix)" : glyph-proc
include : HBar.m [mix 0 SB 0.5] [mix Width RightSB 0.5] (XH / 2) OperatorStroke
include : VBar.m Middle 0 XH OperatorStroke
@@ -246,13 +282,23 @@ glyph-block Symbol-Punctuation-Small : begin
select-variant 'modifierLetterRaisedColon' 0x2F8 (follow -- 'punctuationDot')
select-variant 'semicolon' ';' (follow -- 'punctuationDot')
select-variant 'invertSemicolon' 0x204F (follow -- 'punctuationDot')
+
select-variant 'threeDotPunct' 0x2056 (follow -- 'punctuationDot')
+ select-variant 'geor/paragraphSeparator' 0x10FB (follow -- 'punctuationDot')
+ select-variant 'twoDotOverOneDotPunct' 0x2E2A (follow -- 'punctuationDot')
+ select-variant 'oneDotOverTwoDotPunct' 0x2E2B (follow -- 'punctuationDot')
+
select-variant 'fourDotPunct' 0x2058 (follow -- 'punctuationDot')
+ select-variant 'squareFourDotPunct' 0x2E2C (follow -- 'punctuationDot')
select-variant 'fiveDotPunct' 0x2059 (follow -- 'punctuationDot')
+ select-variant 'fiveDotMark' 0x2E2D (follow -- 'punctuationDot')
+
select-variant 'capColon' 0x205A (follow -- 'punctuationDot')
select-variant 'capFourDotPunct' 0x205B (follow -- 'punctuationDot')
+
select-variant 'dottedCross' 0x205C (follow -- 'punctuationDot')
- alias 'greekquestion' 0x37E 'semicolon'
+
+ alias 'grek/question' 0x37E 'semicolon'
turned 'turnSemiColon' 0x2E35 'semicolon' [DivFrame para.diversityF].middle (XH / 2)
diff --git a/font-src/meta/aesthetics.ptl b/font-src/meta/aesthetics.ptl
index aa6f7ef5e3..726b251c27 100644
--- a/font-src/meta/aesthetics.ptl
+++ b/font-src/meta/aesthetics.ptl
@@ -456,15 +456,16 @@ export : define [GenDivFrame metrics] : begin
local divisions : fallback _divisions this.hPack
local keeps : fallback _keeps 2
- return : this.sliceFine divisions keeps ((keeps - 1) / (divisions - 1)) o
+ return : this.sliceFine divisions keeps ((keeps - 1) / (divisions - 1)) 0 o
- public [sliceFine strokes keeps pGaps _o] : begin
+ public [sliceFine strokes keeps pGap _extraGap _o] : begin
local o : fallback _o 0
+ local extraGap : fallback _extraGap 0
local oneStroke : metrics.HVContrast * this.mvs
local totalGap : this.rightSB - this.leftSB - strokes * oneStroke - 2 * o
- local subDfWidth : 2 * this.leftSB + 2 * o + totalGap * pGaps + oneStroke * keeps
+ local subDfWidth : 2 * this.leftSB + 2 * o + totalGap * pGap + extraGap + oneStroke * keeps
local subDfDiv : subDfWidth / metrics.Width
return : new CDivFrame subDfDiv keeps (this.leftSB / metrics.SB) this.mvs o
diff --git a/font-src/otl/index.ptl b/font-src/otl/index.ptl
index 2ce8866837..155528f9a6 100644
--- a/font-src/otl/index.ptl
+++ b/font-src/otl/index.ptl
@@ -73,7 +73,7 @@ define [buildGSUB para glyphStore markGlyphs] : begin
buildLOCL gsub para glyphStore
# TXTR, "texture" feature
- if (para.buildTexture && !para.isQuasiProportional) : begin
+ if (para.buildTextureFeature && !para.isQuasiProportional) : begin
buildGsubTexture gsub glyphStore markGlyphs cvs
gsub.finalize
diff --git a/font-src/support/geometry/spiro-control.mjs b/font-src/support/geometry/spiro-control.mjs
index ca5ca30814..55e3f79f8e 100644
--- a/font-src/support/geometry/spiro-control.mjs
+++ b/font-src/support/geometry/spiro-control.mjs
@@ -32,7 +32,7 @@ export class BiKnotCollector {
this.controls.push(c);
this.needsUnwrap = true;
} else {
- throw new Error("Invalid spiro control type");
+ throw new Error("Invalid spiro control type " + String(c));
}
}
unwrap() {
diff --git a/font-src/support/gr.mjs b/font-src/support/gr.mjs
index 608916478a..d492bdf52a 100644
--- a/font-src/support/gr.mjs
+++ b/font-src/support/gr.mjs
@@ -78,6 +78,9 @@ function DecompositionProp(key) {
if (!Array.isArray(composition)) throw new Error("Must supply a GID array");
if (!glyph.related) glyph.related = {};
glyph.related[key] = composition;
+ },
+ amendOtName(baseName, index) {
+ return `${baseName}.d${index}`;
}
};
}
diff --git a/font-src/support/parameters.mjs b/font-src/support/parameters.mjs
index be1e7092d7..bfd1c79904 100644
--- a/font-src/support/parameters.mjs
+++ b/font-src/support/parameters.mjs
@@ -11,7 +11,7 @@ export function init(data, argv) {
applyAlternatesParam(argv, para, data, "slope", "slope");
if (argv.featureControl.noCvSs) para.enableCvSs = false;
if (argv.featureControl.noLigation) para.enableLigation = false;
- if (argv.featureControl.buildTexture) para.buildTexture = true;
+ if (argv.featureControl.buildTextureFeature) para.buildTextureFeature = true;
return para;
}
function applyBlendingParam(argv, para, data, key, keyArgv) {
diff --git a/font-src/support/util/mask-bit.mjs b/font-src/support/util/mask-bit.mjs
index ba517c0f08..5d34996855 100644
--- a/font-src/support/util/mask-bit.mjs
+++ b/font-src/support/util/mask-bit.mjs
@@ -4,6 +4,9 @@ export function maskBit(x, y) {
export function maskBits(x, y) {
return x & y;
}
+export function maskOffBits(x, y) {
+ return x & ~y;
+}
export function bitOr(...xs) {
let x = 0;
for (const a of xs) x |= a;
diff --git a/images/button-release.dark.svg b/images/button-release.dark.svg
index ee8d148afc..608de677c9 100644
--- a/images/button-release.dark.svg
+++ b/images/button-release.dark.svg
@@ -1,5 +1,5 @@
-
+
@@ -7,12 +7,15 @@
-
+
-
-
+
+
+
+
+
-
+
@@ -21,12 +24,20 @@
-
+
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/button-release.light.svg b/images/button-release.light.svg
index 3cf0cbd437..4afaeaaf8c 100644
--- a/images/button-release.light.svg
+++ b/images/button-release.light.svg
@@ -1,5 +1,5 @@
-
+
@@ -7,12 +7,15 @@
-
+
-
-
+
+
+
+
+
-
+
@@ -21,12 +24,20 @@
-
+
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cs-block-combining-diacritical-marks-supplement.dark.svg b/images/cs-block-combining-diacritical-marks-supplement.dark.svg
index 4c586c9f8e..fa96aa844f 100644
--- a/images/cs-block-combining-diacritical-marks-supplement.dark.svg
+++ b/images/cs-block-combining-diacritical-marks-supplement.dark.svg
@@ -26,48 +26,51 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -173,11 +176,17 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
+
@@ -186,13 +195,13 @@
-
+
-
+
@@ -211,20 +220,23 @@
-
-
+
+
+
+
+
-
+
-
+
@@ -233,55 +245,55 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -295,97 +307,97 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -399,37 +411,37 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -441,19 +453,19 @@
-
+
-
+
-
+
@@ -462,24 +474,24 @@
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/images/cs-block-combining-diacritical-marks-supplement.light.svg b/images/cs-block-combining-diacritical-marks-supplement.light.svg
index ffa07f4ca0..9705d8c4f0 100644
--- a/images/cs-block-combining-diacritical-marks-supplement.light.svg
+++ b/images/cs-block-combining-diacritical-marks-supplement.light.svg
@@ -26,48 +26,51 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -173,11 +176,17 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
+
@@ -186,13 +195,13 @@
-
+
-
+
@@ -211,20 +220,23 @@
-
-
+
+
+
+
+
-
+
-
+
@@ -233,55 +245,55 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -295,97 +307,97 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -399,37 +411,37 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -441,19 +453,19 @@
-
+
-
+
-
+
@@ -462,24 +474,24 @@
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/images/cs-block-currency-symbols.dark.svg b/images/cs-block-currency-symbols.dark.svg
index 12bf0800ae..2f6822c674 100644
--- a/images/cs-block-currency-symbols.dark.svg
+++ b/images/cs-block-currency-symbols.dark.svg
@@ -42,7 +42,7 @@
-
+
diff --git a/images/cs-block-currency-symbols.light.svg b/images/cs-block-currency-symbols.light.svg
index 3d475b38ab..fb8e404105 100644
--- a/images/cs-block-currency-symbols.light.svg
+++ b/images/cs-block-currency-symbols.light.svg
@@ -42,7 +42,7 @@
-
+
diff --git a/images/cs-block-cyrillic-extended-a.dark.svg b/images/cs-block-cyrillic-extended-a.dark.svg
index 17774fe350..64d7e43781 100644
--- a/images/cs-block-cyrillic-extended-a.dark.svg
+++ b/images/cs-block-cyrillic-extended-a.dark.svg
@@ -27,7 +27,7 @@
-
+
diff --git a/images/cs-block-cyrillic-extended-a.light.svg b/images/cs-block-cyrillic-extended-a.light.svg
index 57a40a81e1..cf0a0b81c0 100644
--- a/images/cs-block-cyrillic-extended-a.light.svg
+++ b/images/cs-block-cyrillic-extended-a.light.svg
@@ -27,7 +27,7 @@
-
+
diff --git a/images/cs-block-cyrillic-extended-b.dark.svg b/images/cs-block-cyrillic-extended-b.dark.svg
index 44740c7fc7..e8e7a42094 100644
--- a/images/cs-block-cyrillic-extended-b.dark.svg
+++ b/images/cs-block-cyrillic-extended-b.dark.svg
@@ -55,8 +55,8 @@
-
-
+
+
diff --git a/images/cs-block-cyrillic-extended-b.light.svg b/images/cs-block-cyrillic-extended-b.light.svg
index 57498f8edb..24ffe78bde 100644
--- a/images/cs-block-cyrillic-extended-b.light.svg
+++ b/images/cs-block-cyrillic-extended-b.light.svg
@@ -55,8 +55,8 @@
-
-
+
+
diff --git a/images/cs-block-cyrillic-extended-d.dark.svg b/images/cs-block-cyrillic-extended-d.dark.svg
index a51ef8b20c..fbe388c4d1 100644
--- a/images/cs-block-cyrillic-extended-d.dark.svg
+++ b/images/cs-block-cyrillic-extended-d.dark.svg
@@ -29,7 +29,7 @@
-
+
@@ -62,13 +62,13 @@
-
+
-
+
diff --git a/images/cs-block-cyrillic-extended-d.light.svg b/images/cs-block-cyrillic-extended-d.light.svg
index e58e2c4f43..45329e92bc 100644
--- a/images/cs-block-cyrillic-extended-d.light.svg
+++ b/images/cs-block-cyrillic-extended-d.light.svg
@@ -29,7 +29,7 @@
-
+
@@ -62,13 +62,13 @@
-
+
-
+
diff --git a/images/cs-block-cyrillic-extendedd.dark.svg b/images/cs-block-cyrillic-extendedd.dark.svg
deleted file mode 100644
index a51ef8b20c..0000000000
--- a/images/cs-block-cyrillic-extendedd.dark.svg
+++ /dev/null
@@ -1,481 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cs-block-cyrillic-extendedd.light.svg b/images/cs-block-cyrillic-extendedd.light.svg
deleted file mode 100644
index e58e2c4f43..0000000000
--- a/images/cs-block-cyrillic-extendedd.light.svg
+++ /dev/null
@@ -1,481 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cs-block-cyrillic-supplement.dark.svg b/images/cs-block-cyrillic-supplement.dark.svg
index 061b19dc21..5b8b96ff40 100644
--- a/images/cs-block-cyrillic-supplement.dark.svg
+++ b/images/cs-block-cyrillic-supplement.dark.svg
@@ -27,8 +27,8 @@
-
-
+
+
@@ -37,31 +37,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -187,41 +192,41 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -232,51 +237,51 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/images/cs-block-cyrillic-supplement.light.svg b/images/cs-block-cyrillic-supplement.light.svg
index 4050f6d6e8..428d2e7b67 100644
--- a/images/cs-block-cyrillic-supplement.light.svg
+++ b/images/cs-block-cyrillic-supplement.light.svg
@@ -27,8 +27,8 @@
-
-
+
+
@@ -37,31 +37,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -187,41 +192,41 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -232,51 +237,51 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/images/cs-block-cyrillic.dark.svg b/images/cs-block-cyrillic.dark.svg
index 13c46a4e5d..f40f3c7368 100644
--- a/images/cs-block-cyrillic.dark.svg
+++ b/images/cs-block-cyrillic.dark.svg
@@ -28,7 +28,7 @@
-
+
@@ -46,7 +46,7 @@
-
+
@@ -78,7 +78,7 @@
-
+
@@ -108,7 +108,7 @@
-
+
@@ -215,8 +215,8 @@
-
-
+
+
diff --git a/images/cs-block-cyrillic.light.svg b/images/cs-block-cyrillic.light.svg
index 91b8775f78..b70cf0131f 100644
--- a/images/cs-block-cyrillic.light.svg
+++ b/images/cs-block-cyrillic.light.svg
@@ -28,7 +28,7 @@
-
+
@@ -46,7 +46,7 @@
-
+
@@ -78,7 +78,7 @@
-
+
@@ -108,7 +108,7 @@
-
+
@@ -215,8 +215,8 @@
-
-
+
+
diff --git a/images/cs-block-enclosed-alphanumeric-supplement.dark.svg b/images/cs-block-enclosed-alphanumeric-supplement.dark.svg
index b973519e61..834fec568b 100644
--- a/images/cs-block-enclosed-alphanumeric-supplement.dark.svg
+++ b/images/cs-block-enclosed-alphanumeric-supplement.dark.svg
@@ -90,7 +90,7 @@
-
+
diff --git a/images/cs-block-enclosed-alphanumeric-supplement.light.svg b/images/cs-block-enclosed-alphanumeric-supplement.light.svg
index ac36304c31..fadcbc1ac7 100644
--- a/images/cs-block-enclosed-alphanumeric-supplement.light.svg
+++ b/images/cs-block-enclosed-alphanumeric-supplement.light.svg
@@ -90,7 +90,7 @@
-
+
diff --git a/images/cs-block-enclosed-alphanumerics.dark.svg b/images/cs-block-enclosed-alphanumerics.dark.svg
index f0cc0c3531..b349f1be87 100644
--- a/images/cs-block-enclosed-alphanumerics.dark.svg
+++ b/images/cs-block-enclosed-alphanumerics.dark.svg
@@ -128,7 +128,7 @@
-
+
diff --git a/images/cs-block-enclosed-alphanumerics.light.svg b/images/cs-block-enclosed-alphanumerics.light.svg
index 11568c6f0e..0cb556953b 100644
--- a/images/cs-block-enclosed-alphanumerics.light.svg
+++ b/images/cs-block-enclosed-alphanumerics.light.svg
@@ -128,7 +128,7 @@
-
+
diff --git a/images/cs-block-general-punctuation.dark.svg b/images/cs-block-general-punctuation.dark.svg
index d98c4095fa..2668a1031f 100644
--- a/images/cs-block-general-punctuation.dark.svg
+++ b/images/cs-block-general-punctuation.dark.svg
@@ -252,12 +252,8 @@
-
-
-
-
-
-
+
+
diff --git a/images/cs-block-general-punctuation.light.svg b/images/cs-block-general-punctuation.light.svg
index f9ef3a8f48..673ef143d2 100644
--- a/images/cs-block-general-punctuation.light.svg
+++ b/images/cs-block-general-punctuation.light.svg
@@ -252,12 +252,8 @@
-
-
-
-
-
-
+
+
diff --git a/images/cs-block-georgian.dark.svg b/images/cs-block-georgian.dark.svg
new file mode 100644
index 0000000000..42da4eaf14
--- /dev/null
+++ b/images/cs-block-georgian.dark.svg
@@ -0,0 +1,409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cs-block-georgian.light.svg b/images/cs-block-georgian.light.svg
new file mode 100644
index 0000000000..9bf1b1225f
--- /dev/null
+++ b/images/cs-block-georgian.light.svg
@@ -0,0 +1,409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cs-block-latin-extendedf.dark.svg b/images/cs-block-latin-extendedf.dark.svg
deleted file mode 100644
index df3857054d..0000000000
--- a/images/cs-block-latin-extendedf.dark.svg
+++ /dev/null
@@ -1,357 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cs-block-latin-extendedf.light.svg b/images/cs-block-latin-extendedf.light.svg
deleted file mode 100644
index 0dc59adc07..0000000000
--- a/images/cs-block-latin-extendedf.light.svg
+++ /dev/null
@@ -1,357 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cs-block-latin-extendedg.dark.svg b/images/cs-block-latin-extendedg.dark.svg
deleted file mode 100644
index e6619ff866..0000000000
--- a/images/cs-block-latin-extendedg.dark.svg
+++ /dev/null
@@ -1,998 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cs-block-latin-extendedg.light.svg b/images/cs-block-latin-extendedg.light.svg
deleted file mode 100644
index 826804221c..0000000000
--- a/images/cs-block-latin-extendedg.light.svg
+++ /dev/null
@@ -1,998 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cs-block-number-forms.dark.svg b/images/cs-block-number-forms.dark.svg
index ae133743a8..56595d999a 100644
--- a/images/cs-block-number-forms.dark.svg
+++ b/images/cs-block-number-forms.dark.svg
@@ -43,10 +43,10 @@
-
+
-
-
+
+
@@ -62,7 +62,7 @@
-
+
diff --git a/images/cs-block-number-forms.light.svg b/images/cs-block-number-forms.light.svg
index b6ad220afd..0faf3ea47a 100644
--- a/images/cs-block-number-forms.light.svg
+++ b/images/cs-block-number-forms.light.svg
@@ -43,10 +43,10 @@
-
+
-
-
+
+
@@ -62,7 +62,7 @@
-
+
diff --git a/images/cs-block-phonetic-extensions.dark.svg b/images/cs-block-phonetic-extensions.dark.svg
index 42c958de69..2141cf75c4 100644
--- a/images/cs-block-phonetic-extensions.dark.svg
+++ b/images/cs-block-phonetic-extensions.dark.svg
@@ -61,7 +61,7 @@
-
+
diff --git a/images/cs-block-phonetic-extensions.light.svg b/images/cs-block-phonetic-extensions.light.svg
index 456abff83b..b17fa9a6c6 100644
--- a/images/cs-block-phonetic-extensions.light.svg
+++ b/images/cs-block-phonetic-extensions.light.svg
@@ -61,7 +61,7 @@
-
+
diff --git a/images/cs-block-private-use-area-iosevka-private-dingbats.dark.svg b/images/cs-block-private-use-area-iosevka-private-dingbats.dark.svg
new file mode 100644
index 0000000000..3c1df06a4e
--- /dev/null
+++ b/images/cs-block-private-use-area-iosevka-private-dingbats.dark.svg
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cs-block-private-use-area-iosevka-private-dingbats.light.svg b/images/cs-block-private-use-area-iosevka-private-dingbats.light.svg
new file mode 100644
index 0000000000..d2e627e729
--- /dev/null
+++ b/images/cs-block-private-use-area-iosevka-private-dingbats.light.svg
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cs-block-private-use-area-progress-bar.dark.svg b/images/cs-block-private-use-area-progress-bar.dark.svg
index 908b9989f4..c77edcb50f 100644
--- a/images/cs-block-private-use-area-progress-bar.dark.svg
+++ b/images/cs-block-private-use-area-progress-bar.dark.svg
@@ -1,5 +1,5 @@
-
+
@@ -137,172 +137,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cs-block-private-use-area-progress-bar.light.svg b/images/cs-block-private-use-area-progress-bar.light.svg
index 665ed86127..98947e6c03 100644
--- a/images/cs-block-private-use-area-progress-bar.light.svg
+++ b/images/cs-block-private-use-area-progress-bar.light.svg
@@ -1,5 +1,5 @@
-
+
@@ -137,172 +137,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cs-block-superscripts-and-subscripts.dark.svg b/images/cs-block-superscripts-and-subscripts.dark.svg
index 016ad31d67..673b8b4f49 100644
--- a/images/cs-block-superscripts-and-subscripts.dark.svg
+++ b/images/cs-block-superscripts-and-subscripts.dark.svg
@@ -52,7 +52,7 @@
-
+
diff --git a/images/cs-block-superscripts-and-subscripts.light.svg b/images/cs-block-superscripts-and-subscripts.light.svg
index 9708edcdba..f9018dd430 100644
--- a/images/cs-block-superscripts-and-subscripts.light.svg
+++ b/images/cs-block-superscripts-and-subscripts.light.svg
@@ -52,7 +52,7 @@
-
+
diff --git a/images/cs-block-supplemental-punctuation.dark.svg b/images/cs-block-supplemental-punctuation.dark.svg
index 8062876638..67c0a0af0c 100644
--- a/images/cs-block-supplemental-punctuation.dark.svg
+++ b/images/cs-block-supplemental-punctuation.dark.svg
@@ -20,35 +20,41 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -139,8 +145,8 @@
-
-
+
+
@@ -168,8 +174,8 @@
-
-
+
+
@@ -187,16 +193,16 @@
-
+
-
+
-
+
@@ -205,10 +211,10 @@
-
+
-
+
@@ -219,22 +225,22 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -243,28 +249,28 @@
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
@@ -275,31 +281,31 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -331,13 +337,13 @@
-
+
-
+
-
+
@@ -364,7 +370,7 @@
-
+
@@ -393,7 +399,7 @@
-
+
diff --git a/images/cs-block-supplemental-punctuation.light.svg b/images/cs-block-supplemental-punctuation.light.svg
index cde6387f4d..f09f290fa5 100644
--- a/images/cs-block-supplemental-punctuation.light.svg
+++ b/images/cs-block-supplemental-punctuation.light.svg
@@ -20,35 +20,41 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -139,8 +145,8 @@
-
-
+
+
@@ -168,8 +174,8 @@
-
-
+
+
@@ -187,16 +193,16 @@
-
+
-
+
-
+
@@ -205,10 +211,10 @@
-
+
-
+
@@ -219,22 +225,22 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -243,28 +249,28 @@
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
@@ -275,31 +281,31 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -331,13 +337,13 @@
-
+
-
+
-
+
@@ -364,7 +370,7 @@
-
+
@@ -393,7 +399,7 @@
-
+
diff --git a/images/cv-a-double-storey-hook-inward-serifed-serifed.dark.svg b/images/cv-a-double-storey-hook-inward-serifed-serifed.dark.svg
new file mode 100644
index 0000000000..4369b5882b
--- /dev/null
+++ b/images/cv-a-double-storey-hook-inward-serifed-serifed.dark.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cv-a-double-storey-hook-inward-serifed-serifed.light.svg b/images/cv-a-double-storey-hook-inward-serifed-serifed.light.svg
new file mode 100644
index 0000000000..f5f446a52f
--- /dev/null
+++ b/images/cv-a-double-storey-hook-inward-serifed-serifed.light.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cv-a-double-storey-hook-inward-serifed-serifless.dark.svg b/images/cv-a-double-storey-hook-inward-serifed-serifless.dark.svg
new file mode 100644
index 0000000000..cacef23879
--- /dev/null
+++ b/images/cv-a-double-storey-hook-inward-serifed-serifless.dark.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cv-a-double-storey-hook-inward-serifed-serifless.light.svg b/images/cv-a-double-storey-hook-inward-serifed-serifless.light.svg
new file mode 100644
index 0000000000..0fc25d6d26
--- /dev/null
+++ b/images/cv-a-double-storey-hook-inward-serifed-serifless.light.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cv-a-double-storey-hook-inward-serifed-tailed.dark.svg b/images/cv-a-double-storey-hook-inward-serifed-tailed.dark.svg
new file mode 100644
index 0000000000..154120fd3e
--- /dev/null
+++ b/images/cv-a-double-storey-hook-inward-serifed-tailed.dark.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cv-a-double-storey-hook-inward-serifed-tailed.light.svg b/images/cv-a-double-storey-hook-inward-serifed-tailed.light.svg
new file mode 100644
index 0000000000..6e311dd20b
--- /dev/null
+++ b/images/cv-a-double-storey-hook-inward-serifed-tailed.light.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cv-a-double-storey-hook-inward-serifed-toothless-corner.dark.svg b/images/cv-a-double-storey-hook-inward-serifed-toothless-corner.dark.svg
new file mode 100644
index 0000000000..0b3b12f21b
--- /dev/null
+++ b/images/cv-a-double-storey-hook-inward-serifed-toothless-corner.dark.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cv-a-double-storey-hook-inward-serifed-toothless-corner.light.svg b/images/cv-a-double-storey-hook-inward-serifed-toothless-corner.light.svg
new file mode 100644
index 0000000000..bc0276ccca
--- /dev/null
+++ b/images/cv-a-double-storey-hook-inward-serifed-toothless-corner.light.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cv-a-double-storey-hook-inward-serifed-toothless-rounded.dark.svg b/images/cv-a-double-storey-hook-inward-serifed-toothless-rounded.dark.svg
new file mode 100644
index 0000000000..c9a777a944
--- /dev/null
+++ b/images/cv-a-double-storey-hook-inward-serifed-toothless-rounded.dark.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cv-a-double-storey-hook-inward-serifed-toothless-rounded.light.svg b/images/cv-a-double-storey-hook-inward-serifed-toothless-rounded.light.svg
new file mode 100644
index 0000000000..f4e6e872c1
--- /dev/null
+++ b/images/cv-a-double-storey-hook-inward-serifed-toothless-rounded.light.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/cv-capital-r-curly-motion-serifed.dark.svg b/images/cv-capital-r-curly-motion-serifed.dark.svg
deleted file mode 100644
index 11a3ffcbb9..0000000000
--- a/images/cv-capital-r-curly-motion-serifed.dark.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-curly-motion-serifed.light.svg b/images/cv-capital-r-curly-motion-serifed.light.svg
deleted file mode 100644
index 13fe35709a..0000000000
--- a/images/cv-capital-r-curly-motion-serifed.light.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-curly-open-motion-serifed.dark.svg b/images/cv-capital-r-curly-open-motion-serifed.dark.svg
deleted file mode 100644
index 1e092186f6..0000000000
--- a/images/cv-capital-r-curly-open-motion-serifed.dark.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-curly-open-motion-serifed.light.svg b/images/cv-capital-r-curly-open-motion-serifed.light.svg
deleted file mode 100644
index 0b28dd6210..0000000000
--- a/images/cv-capital-r-curly-open-motion-serifed.light.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-standing-motion-serifed.dark.svg b/images/cv-capital-r-standing-motion-serifed.dark.svg
deleted file mode 100644
index a8d6e508fc..0000000000
--- a/images/cv-capital-r-standing-motion-serifed.dark.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-standing-motion-serifed.light.svg b/images/cv-capital-r-standing-motion-serifed.light.svg
deleted file mode 100644
index c5ac9501c5..0000000000
--- a/images/cv-capital-r-standing-motion-serifed.light.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-standing-open-motion-serifed.dark.svg b/images/cv-capital-r-standing-open-motion-serifed.dark.svg
deleted file mode 100644
index fdb7ad4933..0000000000
--- a/images/cv-capital-r-standing-open-motion-serifed.dark.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-standing-open-motion-serifed.light.svg b/images/cv-capital-r-standing-open-motion-serifed.light.svg
deleted file mode 100644
index 4e029cf268..0000000000
--- a/images/cv-capital-r-standing-open-motion-serifed.light.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-straight-motion-serifed.dark.svg b/images/cv-capital-r-straight-motion-serifed.dark.svg
deleted file mode 100644
index b1538781f3..0000000000
--- a/images/cv-capital-r-straight-motion-serifed.dark.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-straight-motion-serifed.light.svg b/images/cv-capital-r-straight-motion-serifed.light.svg
deleted file mode 100644
index 641cdd39d4..0000000000
--- a/images/cv-capital-r-straight-motion-serifed.light.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-straight-open-motion-serifed.dark.svg b/images/cv-capital-r-straight-open-motion-serifed.dark.svg
deleted file mode 100644
index 46301f2ff5..0000000000
--- a/images/cv-capital-r-straight-open-motion-serifed.dark.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-capital-r-straight-open-motion-serifed.light.svg b/images/cv-capital-r-straight-open-motion-serifed.light.svg
deleted file mode 100644
index cdf34cec2a..0000000000
--- a/images/cv-capital-r-straight-open-motion-serifed.light.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-cyrl-el-straight.dark.svg b/images/cv-cyrl-el-straight.dark.svg
index 17c9724a70..2689bc349b 100644
--- a/images/cv-cyrl-el-straight.dark.svg
+++ b/images/cv-cyrl-el-straight.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-cyrl-el-straight.light.svg b/images/cv-cyrl-el-straight.light.svg
index 6752134507..0a58a000c4 100644
--- a/images/cv-cyrl-el-straight.light.svg
+++ b/images/cv-cyrl-el-straight.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-cyrl-el-tailed.dark.svg b/images/cv-cyrl-el-tailed.dark.svg
index 8efac9eca7..2620332b01 100644
--- a/images/cv-cyrl-el-tailed.dark.svg
+++ b/images/cv-cyrl-el-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-cyrl-el-tailed.light.svg b/images/cv-cyrl-el-tailed.light.svg
index 901a73beeb..2500a48cd8 100644
--- a/images/cv-cyrl-el-tailed.light.svg
+++ b/images/cv-cyrl-el-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-f-diagonal-tailed-crossbar-at-x-height.dark.svg b/images/cv-f-diagonal-tailed-crossbar-at-x-height.dark.svg
index 8f348574cb..01dcf244eb 100644
--- a/images/cv-f-diagonal-tailed-crossbar-at-x-height.dark.svg
+++ b/images/cv-f-diagonal-tailed-crossbar-at-x-height.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-f-diagonal-tailed-crossbar-at-x-height.light.svg b/images/cv-f-diagonal-tailed-crossbar-at-x-height.light.svg
index e9af2e0f18..80386bbd55 100644
--- a/images/cv-f-diagonal-tailed-crossbar-at-x-height.light.svg
+++ b/images/cv-f-diagonal-tailed-crossbar-at-x-height.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-f-diagonal-tailed.dark.svg b/images/cv-f-diagonal-tailed.dark.svg
index 56e809c868..0c56e23204 100644
--- a/images/cv-f-diagonal-tailed.dark.svg
+++ b/images/cv-f-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-f-diagonal-tailed.light.svg b/images/cv-f-diagonal-tailed.light.svg
index 10d2e9690b..b03bd4a1fd 100644
--- a/images/cv-f-diagonal-tailed.light.svg
+++ b/images/cv-f-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-f-flat-hook-diagonal-tailed-crossbar-at-x-height.dark.svg b/images/cv-f-flat-hook-diagonal-tailed-crossbar-at-x-height.dark.svg
index b39ae2a417..875eb3ec20 100644
--- a/images/cv-f-flat-hook-diagonal-tailed-crossbar-at-x-height.dark.svg
+++ b/images/cv-f-flat-hook-diagonal-tailed-crossbar-at-x-height.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-f-flat-hook-diagonal-tailed-crossbar-at-x-height.light.svg b/images/cv-f-flat-hook-diagonal-tailed-crossbar-at-x-height.light.svg
index dd56f4106c..91903464a5 100644
--- a/images/cv-f-flat-hook-diagonal-tailed-crossbar-at-x-height.light.svg
+++ b/images/cv-f-flat-hook-diagonal-tailed-crossbar-at-x-height.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-f-flat-hook-diagonal-tailed.dark.svg b/images/cv-f-flat-hook-diagonal-tailed.dark.svg
index 44e567b6dc..8523991019 100644
--- a/images/cv-f-flat-hook-diagonal-tailed.dark.svg
+++ b/images/cv-f-flat-hook-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-f-flat-hook-diagonal-tailed.light.svg b/images/cv-f-flat-hook-diagonal-tailed.light.svg
index 1c2892cf4e..dec8daffee 100644
--- a/images/cv-f-flat-hook-diagonal-tailed.light.svg
+++ b/images/cv-f-flat-hook-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-five-oblique-upper-left-bar.dark.svg b/images/cv-five-oblique-upper-left-bar.dark.svg
deleted file mode 100644
index 574ab30614..0000000000
--- a/images/cv-five-oblique-upper-left-bar.dark.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-five-oblique-upper-left-bar.light.svg b/images/cv-five-oblique-upper-left-bar.light.svg
deleted file mode 100644
index 84c3c18a33..0000000000
--- a/images/cv-five-oblique-upper-left-bar.light.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-five-vertical-upper-left-bar.dark.svg b/images/cv-five-vertical-upper-left-bar.dark.svg
deleted file mode 100644
index 666a9d1616..0000000000
--- a/images/cv-five-vertical-upper-left-bar.dark.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-five-vertical-upper-left-bar.light.svg b/images/cv-five-vertical-upper-left-bar.light.svg
deleted file mode 100644
index 9b6eb72bdf..0000000000
--- a/images/cv-five-vertical-upper-left-bar.light.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-i-diagonal-tailed.dark.svg b/images/cv-i-diagonal-tailed.dark.svg
index 1b757b6b87..aa91491248 100644
--- a/images/cv-i-diagonal-tailed.dark.svg
+++ b/images/cv-i-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-i-diagonal-tailed.light.svg b/images/cv-i-diagonal-tailed.light.svg
index e2f76b350c..3bfdf488e3 100644
--- a/images/cv-i-diagonal-tailed.light.svg
+++ b/images/cv-i-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-i-serifed-diagonal-tailed.dark.svg b/images/cv-i-serifed-diagonal-tailed.dark.svg
index a146ae02fb..b821aec0e3 100644
--- a/images/cv-i-serifed-diagonal-tailed.dark.svg
+++ b/images/cv-i-serifed-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-i-serifed-diagonal-tailed.light.svg b/images/cv-i-serifed-diagonal-tailed.light.svg
index 4c47d4e539..523bdaaba3 100644
--- a/images/cv-i-serifed-diagonal-tailed.light.svg
+++ b/images/cv-i-serifed-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-j-diagonal-tailed-serifed.dark.svg b/images/cv-j-diagonal-tailed-serifed.dark.svg
index 37a60e01bc..920498c223 100644
--- a/images/cv-j-diagonal-tailed-serifed.dark.svg
+++ b/images/cv-j-diagonal-tailed-serifed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-j-diagonal-tailed-serifed.light.svg b/images/cv-j-diagonal-tailed-serifed.light.svg
index 75c9d2cbec..aaf3270e40 100644
--- a/images/cv-j-diagonal-tailed-serifed.light.svg
+++ b/images/cv-j-diagonal-tailed-serifed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-j-diagonal-tailed-serifless.dark.svg b/images/cv-j-diagonal-tailed-serifless.dark.svg
index 6f66a24b3b..3239cd402c 100644
--- a/images/cv-j-diagonal-tailed-serifless.dark.svg
+++ b/images/cv-j-diagonal-tailed-serifless.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-j-diagonal-tailed-serifless.light.svg b/images/cv-j-diagonal-tailed-serifless.light.svg
index 1414ff3f93..0d11b40025 100644
--- a/images/cv-j-diagonal-tailed-serifless.light.svg
+++ b/images/cv-j-diagonal-tailed-serifless.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-k-diagonal-tailed-cursive-serifless.dark.svg b/images/cv-k-diagonal-tailed-cursive-serifless.dark.svg
index f7d7a81886..9c8b323f72 100644
--- a/images/cv-k-diagonal-tailed-cursive-serifless.dark.svg
+++ b/images/cv-k-diagonal-tailed-cursive-serifless.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-k-diagonal-tailed-cursive-serifless.light.svg b/images/cv-k-diagonal-tailed-cursive-serifless.light.svg
index 3cad5b32ab..be1105a223 100644
--- a/images/cv-k-diagonal-tailed-cursive-serifless.light.svg
+++ b/images/cv-k-diagonal-tailed-cursive-serifless.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-k-diagonal-tailed-cursive-top-left-serifed.dark.svg b/images/cv-k-diagonal-tailed-cursive-top-left-serifed.dark.svg
index 3c5cfe8655..461e96632a 100644
--- a/images/cv-k-diagonal-tailed-cursive-top-left-serifed.dark.svg
+++ b/images/cv-k-diagonal-tailed-cursive-top-left-serifed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-k-diagonal-tailed-cursive-top-left-serifed.light.svg b/images/cv-k-diagonal-tailed-cursive-top-left-serifed.light.svg
index 77ccef5cd0..934ccbb920 100644
--- a/images/cv-k-diagonal-tailed-cursive-top-left-serifed.light.svg
+++ b/images/cv-k-diagonal-tailed-cursive-top-left-serifed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-l-diagonal-tailed.dark.svg b/images/cv-l-diagonal-tailed.dark.svg
index 97857fa662..9bb42a4d09 100644
--- a/images/cv-l-diagonal-tailed.dark.svg
+++ b/images/cv-l-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-l-diagonal-tailed.light.svg b/images/cv-l-diagonal-tailed.light.svg
index f7370a5a0d..98e8897995 100644
--- a/images/cv-l-diagonal-tailed.light.svg
+++ b/images/cv-l-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-l-serifed-diagonal-tailed.dark.svg b/images/cv-l-serifed-diagonal-tailed.dark.svg
index 8ed97f3318..2d5c6a0d81 100644
--- a/images/cv-l-serifed-diagonal-tailed.dark.svg
+++ b/images/cv-l-serifed-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-l-serifed-diagonal-tailed.light.svg b/images/cv-l-serifed-diagonal-tailed.light.svg
index 53939ed491..794d7d2f0a 100644
--- a/images/cv-l-serifed-diagonal-tailed.light.svg
+++ b/images/cv-l-serifed-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed-xh.dark.svg b/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed-xh.dark.svg
index 2f4d80a5d2..194f31ba89 100644
--- a/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed-xh.dark.svg
+++ b/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed-xh.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed-xh.light.svg b/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed-xh.light.svg
index 3e231b55c1..e0a0abf06f 100644
--- a/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed-xh.light.svg
+++ b/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed-xh.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed.dark.svg b/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed.dark.svg
index a17c1e3b72..31e28abb6f 100644
--- a/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed.dark.svg
+++ b/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed.light.svg b/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed.light.svg
index c8431137a7..ab459a0999 100644
--- a/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed.light.svg
+++ b/images/cv-long-s-bent-hook-diagonal-tailed-middle-serifed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-bent-hook-diagonal-tailed.dark.svg b/images/cv-long-s-bent-hook-diagonal-tailed.dark.svg
index ec43359217..251cec5860 100644
--- a/images/cv-long-s-bent-hook-diagonal-tailed.dark.svg
+++ b/images/cv-long-s-bent-hook-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-bent-hook-diagonal-tailed.light.svg b/images/cv-long-s-bent-hook-diagonal-tailed.light.svg
index 334f5d2f0a..7a684b7bb7 100644
--- a/images/cv-long-s-bent-hook-diagonal-tailed.light.svg
+++ b/images/cv-long-s-bent-hook-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed-xh.dark.svg b/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed-xh.dark.svg
index caf8dd8767..164346800c 100644
--- a/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed-xh.dark.svg
+++ b/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed-xh.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed-xh.light.svg b/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed-xh.light.svg
index 1ce85a27aa..8cfb0bd376 100644
--- a/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed-xh.light.svg
+++ b/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed-xh.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed.dark.svg b/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed.dark.svg
index 6b6033d280..a4cdff2634 100644
--- a/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed.dark.svg
+++ b/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed.light.svg b/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed.light.svg
index 033af50d6a..414fdf3454 100644
--- a/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed.light.svg
+++ b/images/cv-long-s-flat-hook-diagonal-tailed-middle-serifed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-flat-hook-diagonal-tailed.dark.svg b/images/cv-long-s-flat-hook-diagonal-tailed.dark.svg
index 021f2e1ace..188793021c 100644
--- a/images/cv-long-s-flat-hook-diagonal-tailed.dark.svg
+++ b/images/cv-long-s-flat-hook-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-long-s-flat-hook-diagonal-tailed.light.svg b/images/cv-long-s-flat-hook-diagonal-tailed.light.svg
index 9893447c44..b90a68f0ff 100644
--- a/images/cv-long-s-flat-hook-diagonal-tailed.light.svg
+++ b/images/cv-long-s-flat-hook-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-lower-alpha-tailed-barred-earless-corner.dark.svg b/images/cv-lower-alpha-tailed-barred-earless-corner.dark.svg
deleted file mode 100644
index 214fe3f65a..0000000000
--- a/images/cv-lower-alpha-tailed-barred-earless-corner.dark.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-lower-alpha-tailed-barred-earless-corner.light.svg b/images/cv-lower-alpha-tailed-barred-earless-corner.light.svg
deleted file mode 100644
index 936fdd179d..0000000000
--- a/images/cv-lower-alpha-tailed-barred-earless-corner.light.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-lower-alpha-tailed-barred.dark.svg b/images/cv-lower-alpha-tailed-barred.dark.svg
deleted file mode 100644
index 3733d4dcef..0000000000
--- a/images/cv-lower-alpha-tailed-barred.dark.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-lower-alpha-tailed-barred.light.svg b/images/cv-lower-alpha-tailed-barred.light.svg
deleted file mode 100644
index 3679b170e5..0000000000
--- a/images/cv-lower-alpha-tailed-barred.light.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/images/cv-lower-chi-chancery.dark.svg b/images/cv-lower-chi-chancery.dark.svg
index 17bff3d61e..6dfa5facae 100644
--- a/images/cv-lower-chi-chancery.dark.svg
+++ b/images/cv-lower-chi-chancery.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-lower-chi-chancery.light.svg b/images/cv-lower-chi-chancery.light.svg
index 979589c7ba..bfde691f80 100644
--- a/images/cv-lower-chi-chancery.light.svg
+++ b/images/cv-lower-chi-chancery.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-lower-iota-diagonal-tailed.dark.svg b/images/cv-lower-iota-diagonal-tailed.dark.svg
index a47af009be..55911b1ffd 100644
--- a/images/cv-lower-iota-diagonal-tailed.dark.svg
+++ b/images/cv-lower-iota-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-lower-iota-diagonal-tailed.light.svg b/images/cv-lower-iota-diagonal-tailed.light.svg
index c41022c375..bcdf1211b5 100644
--- a/images/cv-lower-iota-diagonal-tailed.light.svg
+++ b/images/cv-lower-iota-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-lower-iota-serifed-diagonal-tailed.dark.svg b/images/cv-lower-iota-serifed-diagonal-tailed.dark.svg
index a7710de44a..a393ff8d5c 100644
--- a/images/cv-lower-iota-serifed-diagonal-tailed.dark.svg
+++ b/images/cv-lower-iota-serifed-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-lower-iota-serifed-diagonal-tailed.light.svg b/images/cv-lower-iota-serifed-diagonal-tailed.light.svg
index a4390faa76..7981389445 100644
--- a/images/cv-lower-iota-serifed-diagonal-tailed.light.svg
+++ b/images/cv-lower-iota-serifed-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-lower-tau-diagonal-tailed.dark.svg b/images/cv-lower-tau-diagonal-tailed.dark.svg
index 2a88b4f0ff..31d1df48c2 100644
--- a/images/cv-lower-tau-diagonal-tailed.dark.svg
+++ b/images/cv-lower-tau-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-lower-tau-diagonal-tailed.light.svg b/images/cv-lower-tau-diagonal-tailed.light.svg
index 01872a72fc..f56ad35a75 100644
--- a/images/cv-lower-tau-diagonal-tailed.light.svg
+++ b/images/cv-lower-tau-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-q-diagonal-tailed-motion-serifed.dark.svg b/images/cv-q-diagonal-tailed-motion-serifed.dark.svg
index 5181b66fbd..8bbdfa30a3 100644
--- a/images/cv-q-diagonal-tailed-motion-serifed.dark.svg
+++ b/images/cv-q-diagonal-tailed-motion-serifed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-q-diagonal-tailed-motion-serifed.light.svg b/images/cv-q-diagonal-tailed-motion-serifed.light.svg
index dda1961aad..9253d6c750 100644
--- a/images/cv-q-diagonal-tailed-motion-serifed.light.svg
+++ b/images/cv-q-diagonal-tailed-motion-serifed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-q-diagonal-tailed-serifless.dark.svg b/images/cv-q-diagonal-tailed-serifless.dark.svg
index 06c33988db..1a87353678 100644
--- a/images/cv-q-diagonal-tailed-serifless.dark.svg
+++ b/images/cv-q-diagonal-tailed-serifless.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-q-diagonal-tailed-serifless.light.svg b/images/cv-q-diagonal-tailed-serifless.light.svg
index 9d8deac37b..53651c9f0c 100644
--- a/images/cv-q-diagonal-tailed-serifless.light.svg
+++ b/images/cv-q-diagonal-tailed-serifless.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-q-earless-corner-diagonal-tailed-serifless.dark.svg b/images/cv-q-earless-corner-diagonal-tailed-serifless.dark.svg
index d7bb98ed6b..4bb5e8b9fa 100644
--- a/images/cv-q-earless-corner-diagonal-tailed-serifless.dark.svg
+++ b/images/cv-q-earless-corner-diagonal-tailed-serifless.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-q-earless-corner-diagonal-tailed-serifless.light.svg b/images/cv-q-earless-corner-diagonal-tailed-serifless.light.svg
index b36b33fbae..66081ae454 100644
--- a/images/cv-q-earless-corner-diagonal-tailed-serifless.light.svg
+++ b/images/cv-q-earless-corner-diagonal-tailed-serifless.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-q-earless-rounded-diagonal-tailed-serifless.dark.svg b/images/cv-q-earless-rounded-diagonal-tailed-serifless.dark.svg
index cabbfaad72..946c3966c8 100644
--- a/images/cv-q-earless-rounded-diagonal-tailed-serifless.dark.svg
+++ b/images/cv-q-earless-rounded-diagonal-tailed-serifless.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-q-earless-rounded-diagonal-tailed-serifless.light.svg b/images/cv-q-earless-rounded-diagonal-tailed-serifless.light.svg
index d638d9c348..87abf25c3d 100644
--- a/images/cv-q-earless-rounded-diagonal-tailed-serifless.light.svg
+++ b/images/cv-q-earless-rounded-diagonal-tailed-serifless.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed-asymmetric-short-neck.dark.svg b/images/cv-t-diagonal-tailed-asymmetric-short-neck.dark.svg
index 0a47b0bda4..e26cb0a8cd 100644
--- a/images/cv-t-diagonal-tailed-asymmetric-short-neck.dark.svg
+++ b/images/cv-t-diagonal-tailed-asymmetric-short-neck.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed-asymmetric-short-neck.light.svg b/images/cv-t-diagonal-tailed-asymmetric-short-neck.light.svg
index 31e73037f6..79f957e5ec 100644
--- a/images/cv-t-diagonal-tailed-asymmetric-short-neck.light.svg
+++ b/images/cv-t-diagonal-tailed-asymmetric-short-neck.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed-asymmetric-short-neck2.dark.svg b/images/cv-t-diagonal-tailed-asymmetric-short-neck2.dark.svg
index 2256203566..038636a58f 100644
--- a/images/cv-t-diagonal-tailed-asymmetric-short-neck2.dark.svg
+++ b/images/cv-t-diagonal-tailed-asymmetric-short-neck2.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed-asymmetric-short-neck2.light.svg b/images/cv-t-diagonal-tailed-asymmetric-short-neck2.light.svg
index 5cddb57e85..de507e7ac7 100644
--- a/images/cv-t-diagonal-tailed-asymmetric-short-neck2.light.svg
+++ b/images/cv-t-diagonal-tailed-asymmetric-short-neck2.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed-asymmetric.dark.svg b/images/cv-t-diagonal-tailed-asymmetric.dark.svg
index 4b679580d3..357d0b3794 100644
--- a/images/cv-t-diagonal-tailed-asymmetric.dark.svg
+++ b/images/cv-t-diagonal-tailed-asymmetric.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed-asymmetric.light.svg b/images/cv-t-diagonal-tailed-asymmetric.light.svg
index 259b9ffcf1..6367a615c2 100644
--- a/images/cv-t-diagonal-tailed-asymmetric.light.svg
+++ b/images/cv-t-diagonal-tailed-asymmetric.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed-short-neck.dark.svg b/images/cv-t-diagonal-tailed-short-neck.dark.svg
index 8194761b12..bcfa3bc673 100644
--- a/images/cv-t-diagonal-tailed-short-neck.dark.svg
+++ b/images/cv-t-diagonal-tailed-short-neck.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed-short-neck.light.svg b/images/cv-t-diagonal-tailed-short-neck.light.svg
index 4f246b17e4..caf3da156b 100644
--- a/images/cv-t-diagonal-tailed-short-neck.light.svg
+++ b/images/cv-t-diagonal-tailed-short-neck.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed-short-neck2.dark.svg b/images/cv-t-diagonal-tailed-short-neck2.dark.svg
index c09873e5f5..444013ba60 100644
--- a/images/cv-t-diagonal-tailed-short-neck2.dark.svg
+++ b/images/cv-t-diagonal-tailed-short-neck2.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed-short-neck2.light.svg b/images/cv-t-diagonal-tailed-short-neck2.light.svg
index 24b46fb509..325ebe6563 100644
--- a/images/cv-t-diagonal-tailed-short-neck2.light.svg
+++ b/images/cv-t-diagonal-tailed-short-neck2.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed.dark.svg b/images/cv-t-diagonal-tailed.dark.svg
index 043f7c33a5..2e93013a8f 100644
--- a/images/cv-t-diagonal-tailed.dark.svg
+++ b/images/cv-t-diagonal-tailed.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-t-diagonal-tailed.light.svg b/images/cv-t-diagonal-tailed.light.svg
index ce314e47db..1cfb7fd467 100644
--- a/images/cv-t-diagonal-tailed.light.svg
+++ b/images/cv-t-diagonal-tailed.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-x-cursive.dark.svg b/images/cv-x-cursive.dark.svg
index a62970602e..c9aaaabe2d 100644
--- a/images/cv-x-cursive.dark.svg
+++ b/images/cv-x-cursive.dark.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/cv-x-cursive.light.svg b/images/cv-x-cursive.light.svg
index b12f1a8e1f..7bebb5c253 100644
--- a/images/cv-x-cursive.light.svg
+++ b/images/cv-x-cursive.light.svg
@@ -1,7 +1,7 @@
-
+
diff --git a/images/languages.dark.svg b/images/languages.dark.svg
index 5ac44eec19..21d4d7f9b7 100644
--- a/images/languages.dark.svg
+++ b/images/languages.dark.svg
@@ -81,7 +81,7 @@
-
+
@@ -259,7 +259,7 @@
-
+
diff --git a/images/languages.light.svg b/images/languages.light.svg
index 718e11ed1f..9b1c563490 100644
--- a/images/languages.light.svg
+++ b/images/languages.light.svg
@@ -81,7 +81,7 @@
-
+
@@ -259,7 +259,7 @@
-
+
diff --git a/images/matrix.dark.svg b/images/matrix.dark.svg
index 413685bfc4..150d8216ef 100644
--- a/images/matrix.dark.svg
+++ b/images/matrix.dark.svg
@@ -1,5 +1,5 @@
-
+
@@ -127,6 +127,7 @@
+
@@ -398,4 +399,7 @@
+
+
+
\ No newline at end of file
diff --git a/images/matrix.light.svg b/images/matrix.light.svg
index 89a080dc6c..64d2aeaec8 100644
--- a/images/matrix.light.svg
+++ b/images/matrix.light.svg
@@ -1,5 +1,5 @@
-
+
@@ -127,6 +127,7 @@
+
@@ -398,4 +399,7 @@
+
+
+
\ No newline at end of file
diff --git a/images/iosevka-term.dark.svg b/images/package-sample-Iosevka.dark.svg
similarity index 99%
rename from images/iosevka-term.dark.svg
rename to images/package-sample-Iosevka.dark.svg
index b5a6f91270..1be8482cbd 100644
--- a/images/iosevka-term.dark.svg
+++ b/images/package-sample-Iosevka.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka.light.svg b/images/package-sample-Iosevka.light.svg
similarity index 99%
rename from images/iosevka.light.svg
rename to images/package-sample-Iosevka.light.svg
index 9d147aa06c..32255b0f4a 100644
--- a/images/iosevka.light.svg
+++ b/images/package-sample-Iosevka.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-aile.dark.svg b/images/package-sample-IosevkaAile.dark.svg
similarity index 99%
rename from images/iosevka-aile.dark.svg
rename to images/package-sample-IosevkaAile.dark.svg
index c3bb856a64..c67defb4a0 100644
--- a/images/iosevka-aile.dark.svg
+++ b/images/package-sample-IosevkaAile.dark.svg
@@ -25,7 +25,7 @@
-
+
@@ -122,7 +122,7 @@
-
+
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-aile.light.svg b/images/package-sample-IosevkaAile.light.svg
similarity index 99%
rename from images/iosevka-aile.light.svg
rename to images/package-sample-IosevkaAile.light.svg
index 6c22ea6071..92d67a92a3 100644
--- a/images/iosevka-aile.light.svg
+++ b/images/package-sample-IosevkaAile.light.svg
@@ -25,7 +25,7 @@
-
+
@@ -122,7 +122,7 @@
-
+
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-curly.dark.svg b/images/package-sample-IosevkaCurly.dark.svg
similarity index 99%
rename from images/iosevka-fixed-curly.dark.svg
rename to images/package-sample-IosevkaCurly.dark.svg
index 581efa847d..4309403eeb 100644
--- a/images/iosevka-fixed-curly.dark.svg
+++ b/images/package-sample-IosevkaCurly.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-curly.light.svg b/images/package-sample-IosevkaCurly.light.svg
similarity index 99%
rename from images/iosevka-term-curly.light.svg
rename to images/package-sample-IosevkaCurly.light.svg
index 0e5349c873..3da68fd63c 100644
--- a/images/iosevka-term-curly.light.svg
+++ b/images/package-sample-IosevkaCurly.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-curly-slab.dark.svg b/images/package-sample-IosevkaCurlySlab.dark.svg
similarity index 98%
rename from images/iosevka-fixed-curly-slab.dark.svg
rename to images/package-sample-IosevkaCurlySlab.dark.svg
index 560a559f70..ca09699ec9 100644
--- a/images/iosevka-fixed-curly-slab.dark.svg
+++ b/images/package-sample-IosevkaCurlySlab.dark.svg
@@ -123,7 +123,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-curly-slab.light.svg b/images/package-sample-IosevkaCurlySlab.light.svg
similarity index 98%
rename from images/iosevka-curly-slab.light.svg
rename to images/package-sample-IosevkaCurlySlab.light.svg
index ff67e90031..1067e873ff 100644
--- a/images/iosevka-curly-slab.light.svg
+++ b/images/package-sample-IosevkaCurlySlab.light.svg
@@ -123,7 +123,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-etoile.dark.svg b/images/package-sample-IosevkaEtoile.dark.svg
similarity index 99%
rename from images/iosevka-etoile.dark.svg
rename to images/package-sample-IosevkaEtoile.dark.svg
index 2c500a7dc6..0b9d84e52c 100644
--- a/images/iosevka-etoile.dark.svg
+++ b/images/package-sample-IosevkaEtoile.dark.svg
@@ -25,7 +25,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-etoile.light.svg b/images/package-sample-IosevkaEtoile.light.svg
similarity index 99%
rename from images/iosevka-etoile.light.svg
rename to images/package-sample-IosevkaEtoile.light.svg
index b0e1fd4db8..0fec9443a6 100644
--- a/images/iosevka-etoile.light.svg
+++ b/images/package-sample-IosevkaEtoile.light.svg
@@ -25,7 +25,7 @@
-
+
@@ -51,7 +51,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed.dark.svg b/images/package-sample-IosevkaFixed.dark.svg
similarity index 99%
rename from images/iosevka-fixed.dark.svg
rename to images/package-sample-IosevkaFixed.dark.svg
index b5a6f91270..1be8482cbd 100644
--- a/images/iosevka-fixed.dark.svg
+++ b/images/package-sample-IosevkaFixed.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term.light.svg b/images/package-sample-IosevkaFixed.light.svg
similarity index 99%
rename from images/iosevka-term.light.svg
rename to images/package-sample-IosevkaFixed.light.svg
index 9d147aa06c..32255b0f4a 100644
--- a/images/iosevka-term.light.svg
+++ b/images/package-sample-IosevkaFixed.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-curly.dark.svg b/images/package-sample-IosevkaFixedCurly.dark.svg
similarity index 99%
rename from images/iosevka-term-curly.dark.svg
rename to images/package-sample-IosevkaFixedCurly.dark.svg
index 581efa847d..4309403eeb 100644
--- a/images/iosevka-term-curly.dark.svg
+++ b/images/package-sample-IosevkaFixedCurly.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-curly.light.svg b/images/package-sample-IosevkaFixedCurly.light.svg
similarity index 99%
rename from images/iosevka-fixed-curly.light.svg
rename to images/package-sample-IosevkaFixedCurly.light.svg
index 0e5349c873..3da68fd63c 100644
--- a/images/iosevka-fixed-curly.light.svg
+++ b/images/package-sample-IosevkaFixedCurly.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-curly-slab.dark.svg b/images/package-sample-IosevkaFixedCurlySlab.dark.svg
similarity index 98%
rename from images/iosevka-term-curly-slab.dark.svg
rename to images/package-sample-IosevkaFixedCurlySlab.dark.svg
index 560a559f70..ca09699ec9 100644
--- a/images/iosevka-term-curly-slab.dark.svg
+++ b/images/package-sample-IosevkaFixedCurlySlab.dark.svg
@@ -123,7 +123,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-curly-slab.light.svg b/images/package-sample-IosevkaFixedCurlySlab.light.svg
similarity index 98%
rename from images/iosevka-fixed-curly-slab.light.svg
rename to images/package-sample-IosevkaFixedCurlySlab.light.svg
index ff67e90031..1067e873ff 100644
--- a/images/iosevka-fixed-curly-slab.light.svg
+++ b/images/package-sample-IosevkaFixedCurlySlab.light.svg
@@ -123,7 +123,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss01.dark.svg b/images/package-sample-IosevkaFixedSS01.dark.svg
similarity index 99%
rename from images/iosevka-ss01.dark.svg
rename to images/package-sample-IosevkaFixedSS01.dark.svg
index bd5c716b0a..d1b83480ea 100644
--- a/images/iosevka-ss01.dark.svg
+++ b/images/package-sample-IosevkaFixedSS01.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss01.light.svg b/images/package-sample-IosevkaFixedSS01.light.svg
similarity index 99%
rename from images/iosevka-term-ss01.light.svg
rename to images/package-sample-IosevkaFixedSS01.light.svg
index 33410d2899..04916b9563 100644
--- a/images/iosevka-term-ss01.light.svg
+++ b/images/package-sample-IosevkaFixedSS01.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss02.dark.svg b/images/package-sample-IosevkaFixedSS02.dark.svg
similarity index 99%
rename from images/iosevka-ss02.dark.svg
rename to images/package-sample-IosevkaFixedSS02.dark.svg
index 6fcfea3638..0df9d47ce9 100644
--- a/images/iosevka-ss02.dark.svg
+++ b/images/package-sample-IosevkaFixedSS02.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-ss02.light.svg b/images/package-sample-IosevkaFixedSS02.light.svg
similarity index 99%
rename from images/iosevka-ss02.light.svg
rename to images/package-sample-IosevkaFixedSS02.light.svg
index 899459a5fd..4a49e7f490 100644
--- a/images/iosevka-ss02.light.svg
+++ b/images/package-sample-IosevkaFixedSS02.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-term-ss03.dark.svg b/images/package-sample-IosevkaFixedSS03.dark.svg
similarity index 99%
rename from images/iosevka-term-ss03.dark.svg
rename to images/package-sample-IosevkaFixedSS03.dark.svg
index d15be9f705..06099775b1 100644
--- a/images/iosevka-term-ss03.dark.svg
+++ b/images/package-sample-IosevkaFixedSS03.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss03.light.svg b/images/package-sample-IosevkaFixedSS03.light.svg
similarity index 99%
rename from images/iosevka-term-ss03.light.svg
rename to images/package-sample-IosevkaFixedSS03.light.svg
index 18a9bae3ef..f9a7accdb8 100644
--- a/images/iosevka-term-ss03.light.svg
+++ b/images/package-sample-IosevkaFixedSS03.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss04.dark.svg b/images/package-sample-IosevkaFixedSS04.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss04.dark.svg
rename to images/package-sample-IosevkaFixedSS04.dark.svg
index b000d42b6e..5003625c06 100644
--- a/images/iosevka-fixed-ss04.dark.svg
+++ b/images/package-sample-IosevkaFixedSS04.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss04.light.svg b/images/package-sample-IosevkaFixedSS04.light.svg
similarity index 99%
rename from images/iosevka-term-ss04.light.svg
rename to images/package-sample-IosevkaFixedSS04.light.svg
index 1814a5a345..5ab0e75e5d 100644
--- a/images/iosevka-term-ss04.light.svg
+++ b/images/package-sample-IosevkaFixedSS04.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss05.dark.svg b/images/package-sample-IosevkaFixedSS05.dark.svg
similarity index 99%
rename from images/iosevka-term-ss05.dark.svg
rename to images/package-sample-IosevkaFixedSS05.dark.svg
index d4b4f120fc..bbae8c3c4a 100644
--- a/images/iosevka-term-ss05.dark.svg
+++ b/images/package-sample-IosevkaFixedSS05.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-term-ss05.light.svg b/images/package-sample-IosevkaFixedSS05.light.svg
similarity index 99%
rename from images/iosevka-term-ss05.light.svg
rename to images/package-sample-IosevkaFixedSS05.light.svg
index 48397af127..25545ac86e 100644
--- a/images/iosevka-term-ss05.light.svg
+++ b/images/package-sample-IosevkaFixedSS05.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-ss06.dark.svg b/images/package-sample-IosevkaFixedSS06.dark.svg
similarity index 99%
rename from images/iosevka-ss06.dark.svg
rename to images/package-sample-IosevkaFixedSS06.dark.svg
index 2a81c2ae29..2be031e02f 100644
--- a/images/iosevka-ss06.dark.svg
+++ b/images/package-sample-IosevkaFixedSS06.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss06.light.svg b/images/package-sample-IosevkaFixedSS06.light.svg
similarity index 99%
rename from images/iosevka-term-ss06.light.svg
rename to images/package-sample-IosevkaFixedSS06.light.svg
index 7679be2d5e..6e5900ab2a 100644
--- a/images/iosevka-term-ss06.light.svg
+++ b/images/package-sample-IosevkaFixedSS06.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss07.dark.svg b/images/package-sample-IosevkaFixedSS07.dark.svg
similarity index 99%
rename from images/iosevka-ss07.dark.svg
rename to images/package-sample-IosevkaFixedSS07.dark.svg
index a0974cdf55..8c5bf58aa2 100644
--- a/images/iosevka-ss07.dark.svg
+++ b/images/package-sample-IosevkaFixedSS07.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss07.light.svg b/images/package-sample-IosevkaFixedSS07.light.svg
similarity index 99%
rename from images/iosevka-term-ss07.light.svg
rename to images/package-sample-IosevkaFixedSS07.light.svg
index 04d3d6cc95..689921c772 100644
--- a/images/iosevka-term-ss07.light.svg
+++ b/images/package-sample-IosevkaFixedSS07.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss08.dark.svg b/images/package-sample-IosevkaFixedSS08.dark.svg
similarity index 99%
rename from images/iosevka-ss08.dark.svg
rename to images/package-sample-IosevkaFixedSS08.dark.svg
index 4487127955..db978d515a 100644
--- a/images/iosevka-ss08.dark.svg
+++ b/images/package-sample-IosevkaFixedSS08.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss08.light.svg b/images/package-sample-IosevkaFixedSS08.light.svg
similarity index 99%
rename from images/iosevka-term-ss08.light.svg
rename to images/package-sample-IosevkaFixedSS08.light.svg
index 1b8c41023b..8aeec2023d 100644
--- a/images/iosevka-term-ss08.light.svg
+++ b/images/package-sample-IosevkaFixedSS08.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss09.dark.svg b/images/package-sample-IosevkaFixedSS09.dark.svg
similarity index 99%
rename from images/iosevka-term-ss09.dark.svg
rename to images/package-sample-IosevkaFixedSS09.dark.svg
index f2331bf667..02186a7bb6 100644
--- a/images/iosevka-term-ss09.dark.svg
+++ b/images/package-sample-IosevkaFixedSS09.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-term-ss09.light.svg b/images/package-sample-IosevkaFixedSS09.light.svg
similarity index 99%
rename from images/iosevka-term-ss09.light.svg
rename to images/package-sample-IosevkaFixedSS09.light.svg
index 2d57adbff2..289b378512 100644
--- a/images/iosevka-term-ss09.light.svg
+++ b/images/package-sample-IosevkaFixedSS09.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-ss10.dark.svg b/images/package-sample-IosevkaFixedSS10.dark.svg
similarity index 99%
rename from images/iosevka-ss10.dark.svg
rename to images/package-sample-IosevkaFixedSS10.dark.svg
index e32062434f..08e9b187fd 100644
--- a/images/iosevka-ss10.dark.svg
+++ b/images/package-sample-IosevkaFixedSS10.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss10.light.svg b/images/package-sample-IosevkaFixedSS10.light.svg
similarity index 99%
rename from images/iosevka-term-ss10.light.svg
rename to images/package-sample-IosevkaFixedSS10.light.svg
index a9606ab892..46d16ed2d1 100644
--- a/images/iosevka-term-ss10.light.svg
+++ b/images/package-sample-IosevkaFixedSS10.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss11.dark.svg b/images/package-sample-IosevkaFixedSS11.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss11.dark.svg
rename to images/package-sample-IosevkaFixedSS11.dark.svg
index 6f2520c2e6..002fc3077a 100644
--- a/images/iosevka-fixed-ss11.dark.svg
+++ b/images/package-sample-IosevkaFixedSS11.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss11.light.svg b/images/package-sample-IosevkaFixedSS11.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss11.light.svg
rename to images/package-sample-IosevkaFixedSS11.light.svg
index 9a95e3c97a..82158f7e10 100644
--- a/images/iosevka-fixed-ss11.light.svg
+++ b/images/package-sample-IosevkaFixedSS11.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss12.dark.svg b/images/package-sample-IosevkaFixedSS12.dark.svg
similarity index 99%
rename from images/iosevka-ss12.dark.svg
rename to images/package-sample-IosevkaFixedSS12.dark.svg
index 55df87aa43..c832051c18 100644
--- a/images/iosevka-ss12.dark.svg
+++ b/images/package-sample-IosevkaFixedSS12.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss12.light.svg b/images/package-sample-IosevkaFixedSS12.light.svg
similarity index 99%
rename from images/iosevka-term-ss12.light.svg
rename to images/package-sample-IosevkaFixedSS12.light.svg
index 1e726b37e9..4d9a8fbdee 100644
--- a/images/iosevka-term-ss12.light.svg
+++ b/images/package-sample-IosevkaFixedSS12.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss13.dark.svg b/images/package-sample-IosevkaFixedSS13.dark.svg
similarity index 99%
rename from images/iosevka-term-ss13.dark.svg
rename to images/package-sample-IosevkaFixedSS13.dark.svg
index 5d81b8ee03..4baf99cc3b 100644
--- a/images/iosevka-term-ss13.dark.svg
+++ b/images/package-sample-IosevkaFixedSS13.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-term-ss13.light.svg b/images/package-sample-IosevkaFixedSS13.light.svg
similarity index 99%
rename from images/iosevka-term-ss13.light.svg
rename to images/package-sample-IosevkaFixedSS13.light.svg
index 648995061c..cce48e1ec9 100644
--- a/images/iosevka-term-ss13.light.svg
+++ b/images/package-sample-IosevkaFixedSS13.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-ss14.dark.svg b/images/package-sample-IosevkaFixedSS14.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss14.dark.svg
rename to images/package-sample-IosevkaFixedSS14.dark.svg
index bb1dbcdd4d..5189fe0445 100644
--- a/images/iosevka-fixed-ss14.dark.svg
+++ b/images/package-sample-IosevkaFixedSS14.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss14.light.svg b/images/package-sample-IosevkaFixedSS14.light.svg
similarity index 99%
rename from images/iosevka-term-ss14.light.svg
rename to images/package-sample-IosevkaFixedSS14.light.svg
index 32043fe50c..c8b18450ae 100644
--- a/images/iosevka-term-ss14.light.svg
+++ b/images/package-sample-IosevkaFixedSS14.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss15.dark.svg b/images/package-sample-IosevkaFixedSS15.dark.svg
similarity index 99%
rename from images/iosevka-term-ss15.dark.svg
rename to images/package-sample-IosevkaFixedSS15.dark.svg
index 81004a184d..3ecadd6870 100644
--- a/images/iosevka-term-ss15.dark.svg
+++ b/images/package-sample-IosevkaFixedSS15.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss15.light.svg b/images/package-sample-IosevkaFixedSS15.light.svg
similarity index 99%
rename from images/iosevka-term-ss15.light.svg
rename to images/package-sample-IosevkaFixedSS15.light.svg
index 88827acdcf..23a0ade32f 100644
--- a/images/iosevka-term-ss15.light.svg
+++ b/images/package-sample-IosevkaFixedSS15.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss16.dark.svg b/images/package-sample-IosevkaFixedSS16.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss16.dark.svg
rename to images/package-sample-IosevkaFixedSS16.dark.svg
index 0cc5bde26f..2473df135d 100644
--- a/images/iosevka-fixed-ss16.dark.svg
+++ b/images/package-sample-IosevkaFixedSS16.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss16.light.svg b/images/package-sample-IosevkaFixedSS16.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss16.light.svg
rename to images/package-sample-IosevkaFixedSS16.light.svg
index 80f2f9c2a1..015b5cdb5a 100644
--- a/images/iosevka-fixed-ss16.light.svg
+++ b/images/package-sample-IosevkaFixedSS16.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss17.dark.svg b/images/package-sample-IosevkaFixedSS17.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss17.dark.svg
rename to images/package-sample-IosevkaFixedSS17.dark.svg
index a4d07aa617..3db38d6246 100644
--- a/images/iosevka-fixed-ss17.dark.svg
+++ b/images/package-sample-IosevkaFixedSS17.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-ss17.light.svg b/images/package-sample-IosevkaFixedSS17.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss17.light.svg
rename to images/package-sample-IosevkaFixedSS17.light.svg
index ec261aae05..b1686eafa3 100644
--- a/images/iosevka-fixed-ss17.light.svg
+++ b/images/package-sample-IosevkaFixedSS17.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-ss18.dark.svg b/images/package-sample-IosevkaFixedSS18.dark.svg
similarity index 99%
rename from images/iosevka-ss18.dark.svg
rename to images/package-sample-IosevkaFixedSS18.dark.svg
index ceeb6b3a54..50d9888bf8 100644
--- a/images/iosevka-ss18.dark.svg
+++ b/images/package-sample-IosevkaFixedSS18.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss18.light.svg b/images/package-sample-IosevkaFixedSS18.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss18.light.svg
rename to images/package-sample-IosevkaFixedSS18.light.svg
index c8bf89339d..aaebb36cea 100644
--- a/images/iosevka-fixed-ss18.light.svg
+++ b/images/package-sample-IosevkaFixedSS18.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-slab.dark.svg b/images/package-sample-IosevkaFixedSlab.dark.svg
similarity index 99%
rename from images/iosevka-slab.dark.svg
rename to images/package-sample-IosevkaFixedSlab.dark.svg
index 8687154d68..e7f8b5420f 100644
--- a/images/iosevka-slab.dark.svg
+++ b/images/package-sample-IosevkaFixedSlab.dark.svg
@@ -25,7 +25,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-slab.light.svg b/images/package-sample-IosevkaFixedSlab.light.svg
similarity index 99%
rename from images/iosevka-term-slab.light.svg
rename to images/package-sample-IosevkaFixedSlab.light.svg
index 5e9340f3ae..aba7617daa 100644
--- a/images/iosevka-term-slab.light.svg
+++ b/images/package-sample-IosevkaFixedSlab.light.svg
@@ -25,7 +25,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss01.dark.svg b/images/package-sample-IosevkaSS01.dark.svg
similarity index 99%
rename from images/iosevka-term-ss01.dark.svg
rename to images/package-sample-IosevkaSS01.dark.svg
index bd5c716b0a..d1b83480ea 100644
--- a/images/iosevka-term-ss01.dark.svg
+++ b/images/package-sample-IosevkaSS01.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss01.light.svg b/images/package-sample-IosevkaSS01.light.svg
similarity index 99%
rename from images/iosevka-ss01.light.svg
rename to images/package-sample-IosevkaSS01.light.svg
index 33410d2899..04916b9563 100644
--- a/images/iosevka-ss01.light.svg
+++ b/images/package-sample-IosevkaSS01.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss02.dark.svg b/images/package-sample-IosevkaSS02.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss02.dark.svg
rename to images/package-sample-IosevkaSS02.dark.svg
index 6fcfea3638..0df9d47ce9 100644
--- a/images/iosevka-fixed-ss02.dark.svg
+++ b/images/package-sample-IosevkaSS02.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-term-ss02.light.svg b/images/package-sample-IosevkaSS02.light.svg
similarity index 99%
rename from images/iosevka-term-ss02.light.svg
rename to images/package-sample-IosevkaSS02.light.svg
index 899459a5fd..4a49e7f490 100644
--- a/images/iosevka-term-ss02.light.svg
+++ b/images/package-sample-IosevkaSS02.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-ss03.dark.svg b/images/package-sample-IosevkaSS03.dark.svg
similarity index 99%
rename from images/iosevka-ss03.dark.svg
rename to images/package-sample-IosevkaSS03.dark.svg
index d15be9f705..06099775b1 100644
--- a/images/iosevka-ss03.dark.svg
+++ b/images/package-sample-IosevkaSS03.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss03.light.svg b/images/package-sample-IosevkaSS03.light.svg
similarity index 99%
rename from images/iosevka-ss03.light.svg
rename to images/package-sample-IosevkaSS03.light.svg
index 18a9bae3ef..f9a7accdb8 100644
--- a/images/iosevka-ss03.light.svg
+++ b/images/package-sample-IosevkaSS03.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss04.dark.svg b/images/package-sample-IosevkaSS04.dark.svg
similarity index 99%
rename from images/iosevka-term-ss04.dark.svg
rename to images/package-sample-IosevkaSS04.dark.svg
index b000d42b6e..5003625c06 100644
--- a/images/iosevka-term-ss04.dark.svg
+++ b/images/package-sample-IosevkaSS04.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss04.light.svg b/images/package-sample-IosevkaSS04.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss04.light.svg
rename to images/package-sample-IosevkaSS04.light.svg
index 1814a5a345..5ab0e75e5d 100644
--- a/images/iosevka-fixed-ss04.light.svg
+++ b/images/package-sample-IosevkaSS04.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss05.dark.svg b/images/package-sample-IosevkaSS05.dark.svg
similarity index 99%
rename from images/iosevka-ss05.dark.svg
rename to images/package-sample-IosevkaSS05.dark.svg
index d4b4f120fc..bbae8c3c4a 100644
--- a/images/iosevka-ss05.dark.svg
+++ b/images/package-sample-IosevkaSS05.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-ss05.light.svg b/images/package-sample-IosevkaSS05.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss05.light.svg
rename to images/package-sample-IosevkaSS05.light.svg
index 48397af127..25545ac86e 100644
--- a/images/iosevka-fixed-ss05.light.svg
+++ b/images/package-sample-IosevkaSS05.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-term-ss06.dark.svg b/images/package-sample-IosevkaSS06.dark.svg
similarity index 99%
rename from images/iosevka-term-ss06.dark.svg
rename to images/package-sample-IosevkaSS06.dark.svg
index 2a81c2ae29..2be031e02f 100644
--- a/images/iosevka-term-ss06.dark.svg
+++ b/images/package-sample-IosevkaSS06.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss06.light.svg b/images/package-sample-IosevkaSS06.light.svg
similarity index 99%
rename from images/iosevka-ss06.light.svg
rename to images/package-sample-IosevkaSS06.light.svg
index 7679be2d5e..6e5900ab2a 100644
--- a/images/iosevka-ss06.light.svg
+++ b/images/package-sample-IosevkaSS06.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss07.dark.svg b/images/package-sample-IosevkaSS07.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss07.dark.svg
rename to images/package-sample-IosevkaSS07.dark.svg
index a0974cdf55..8c5bf58aa2 100644
--- a/images/iosevka-fixed-ss07.dark.svg
+++ b/images/package-sample-IosevkaSS07.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss07.light.svg b/images/package-sample-IosevkaSS07.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss07.light.svg
rename to images/package-sample-IosevkaSS07.light.svg
index 04d3d6cc95..689921c772 100644
--- a/images/iosevka-fixed-ss07.light.svg
+++ b/images/package-sample-IosevkaSS07.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss08.dark.svg b/images/package-sample-IosevkaSS08.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss08.dark.svg
rename to images/package-sample-IosevkaSS08.dark.svg
index 4487127955..db978d515a 100644
--- a/images/iosevka-fixed-ss08.dark.svg
+++ b/images/package-sample-IosevkaSS08.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss08.light.svg b/images/package-sample-IosevkaSS08.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss08.light.svg
rename to images/package-sample-IosevkaSS08.light.svg
index 1b8c41023b..8aeec2023d 100644
--- a/images/iosevka-fixed-ss08.light.svg
+++ b/images/package-sample-IosevkaSS08.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss09.dark.svg b/images/package-sample-IosevkaSS09.dark.svg
similarity index 99%
rename from images/iosevka-ss09.dark.svg
rename to images/package-sample-IosevkaSS09.dark.svg
index f2331bf667..02186a7bb6 100644
--- a/images/iosevka-ss09.dark.svg
+++ b/images/package-sample-IosevkaSS09.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-ss09.light.svg b/images/package-sample-IosevkaSS09.light.svg
similarity index 99%
rename from images/iosevka-ss09.light.svg
rename to images/package-sample-IosevkaSS09.light.svg
index 2d57adbff2..289b378512 100644
--- a/images/iosevka-ss09.light.svg
+++ b/images/package-sample-IosevkaSS09.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-term-ss10.dark.svg b/images/package-sample-IosevkaSS10.dark.svg
similarity index 99%
rename from images/iosevka-term-ss10.dark.svg
rename to images/package-sample-IosevkaSS10.dark.svg
index e32062434f..08e9b187fd 100644
--- a/images/iosevka-term-ss10.dark.svg
+++ b/images/package-sample-IosevkaSS10.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss10.light.svg b/images/package-sample-IosevkaSS10.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss10.light.svg
rename to images/package-sample-IosevkaSS10.light.svg
index a9606ab892..46d16ed2d1 100644
--- a/images/iosevka-fixed-ss10.light.svg
+++ b/images/package-sample-IosevkaSS10.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss11.dark.svg b/images/package-sample-IosevkaSS11.dark.svg
similarity index 99%
rename from images/iosevka-term-ss11.dark.svg
rename to images/package-sample-IosevkaSS11.dark.svg
index 6f2520c2e6..002fc3077a 100644
--- a/images/iosevka-term-ss11.dark.svg
+++ b/images/package-sample-IosevkaSS11.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss11.light.svg b/images/package-sample-IosevkaSS11.light.svg
similarity index 99%
rename from images/iosevka-ss11.light.svg
rename to images/package-sample-IosevkaSS11.light.svg
index 9a95e3c97a..82158f7e10 100644
--- a/images/iosevka-ss11.light.svg
+++ b/images/package-sample-IosevkaSS11.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss12.dark.svg b/images/package-sample-IosevkaSS12.dark.svg
similarity index 99%
rename from images/iosevka-term-ss12.dark.svg
rename to images/package-sample-IosevkaSS12.dark.svg
index 55df87aa43..c832051c18 100644
--- a/images/iosevka-term-ss12.dark.svg
+++ b/images/package-sample-IosevkaSS12.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss12.light.svg b/images/package-sample-IosevkaSS12.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss12.light.svg
rename to images/package-sample-IosevkaSS12.light.svg
index 1e726b37e9..4d9a8fbdee 100644
--- a/images/iosevka-fixed-ss12.light.svg
+++ b/images/package-sample-IosevkaSS12.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss13.dark.svg b/images/package-sample-IosevkaSS13.dark.svg
similarity index 99%
rename from images/iosevka-ss13.dark.svg
rename to images/package-sample-IosevkaSS13.dark.svg
index 5d81b8ee03..4baf99cc3b 100644
--- a/images/iosevka-ss13.dark.svg
+++ b/images/package-sample-IosevkaSS13.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-ss13.light.svg b/images/package-sample-IosevkaSS13.light.svg
similarity index 99%
rename from images/iosevka-ss13.light.svg
rename to images/package-sample-IosevkaSS13.light.svg
index 648995061c..cce48e1ec9 100644
--- a/images/iosevka-ss13.light.svg
+++ b/images/package-sample-IosevkaSS13.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-ss14.dark.svg b/images/package-sample-IosevkaSS14.dark.svg
similarity index 99%
rename from images/iosevka-ss14.dark.svg
rename to images/package-sample-IosevkaSS14.dark.svg
index bb1dbcdd4d..5189fe0445 100644
--- a/images/iosevka-ss14.dark.svg
+++ b/images/package-sample-IosevkaSS14.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss14.light.svg b/images/package-sample-IosevkaSS14.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss14.light.svg
rename to images/package-sample-IosevkaSS14.light.svg
index 32043fe50c..c8b18450ae 100644
--- a/images/iosevka-fixed-ss14.light.svg
+++ b/images/package-sample-IosevkaSS14.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss15.dark.svg b/images/package-sample-IosevkaSS15.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss15.dark.svg
rename to images/package-sample-IosevkaSS15.dark.svg
index 81004a184d..3ecadd6870 100644
--- a/images/iosevka-fixed-ss15.dark.svg
+++ b/images/package-sample-IosevkaSS15.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss15.light.svg b/images/package-sample-IosevkaSS15.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss15.light.svg
rename to images/package-sample-IosevkaSS15.light.svg
index 88827acdcf..23a0ade32f 100644
--- a/images/iosevka-fixed-ss15.light.svg
+++ b/images/package-sample-IosevkaSS15.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss16.dark.svg b/images/package-sample-IosevkaSS16.dark.svg
similarity index 99%
rename from images/iosevka-ss16.dark.svg
rename to images/package-sample-IosevkaSS16.dark.svg
index 0cc5bde26f..2473df135d 100644
--- a/images/iosevka-ss16.dark.svg
+++ b/images/package-sample-IosevkaSS16.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss16.light.svg b/images/package-sample-IosevkaSS16.light.svg
similarity index 99%
rename from images/iosevka-term-ss16.light.svg
rename to images/package-sample-IosevkaSS16.light.svg
index 80f2f9c2a1..015b5cdb5a 100644
--- a/images/iosevka-term-ss16.light.svg
+++ b/images/package-sample-IosevkaSS16.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss17.dark.svg b/images/package-sample-IosevkaSS17.dark.svg
similarity index 99%
rename from images/iosevka-ss17.dark.svg
rename to images/package-sample-IosevkaSS17.dark.svg
index a4d07aa617..3db38d6246 100644
--- a/images/iosevka-ss17.dark.svg
+++ b/images/package-sample-IosevkaSS17.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-term-ss17.light.svg b/images/package-sample-IosevkaSS17.light.svg
similarity index 99%
rename from images/iosevka-term-ss17.light.svg
rename to images/package-sample-IosevkaSS17.light.svg
index ec261aae05..b1686eafa3 100644
--- a/images/iosevka-term-ss17.light.svg
+++ b/images/package-sample-IosevkaSS17.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-term-ss18.dark.svg b/images/package-sample-IosevkaSS18.dark.svg
similarity index 99%
rename from images/iosevka-term-ss18.dark.svg
rename to images/package-sample-IosevkaSS18.dark.svg
index ceeb6b3a54..50d9888bf8 100644
--- a/images/iosevka-term-ss18.dark.svg
+++ b/images/package-sample-IosevkaSS18.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss18.light.svg b/images/package-sample-IosevkaSS18.light.svg
similarity index 99%
rename from images/iosevka-term-ss18.light.svg
rename to images/package-sample-IosevkaSS18.light.svg
index c8bf89339d..aaebb36cea 100644
--- a/images/iosevka-term-ss18.light.svg
+++ b/images/package-sample-IosevkaSS18.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-slab.dark.svg b/images/package-sample-IosevkaSlab.dark.svg
similarity index 99%
rename from images/iosevka-fixed-slab.dark.svg
rename to images/package-sample-IosevkaSlab.dark.svg
index 8687154d68..e7f8b5420f 100644
--- a/images/iosevka-fixed-slab.dark.svg
+++ b/images/package-sample-IosevkaSlab.dark.svg
@@ -25,7 +25,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-slab.light.svg b/images/package-sample-IosevkaSlab.light.svg
similarity index 99%
rename from images/iosevka-slab.light.svg
rename to images/package-sample-IosevkaSlab.light.svg
index 5e9340f3ae..aba7617daa 100644
--- a/images/iosevka-slab.light.svg
+++ b/images/package-sample-IosevkaSlab.light.svg
@@ -25,7 +25,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka.dark.svg b/images/package-sample-IosevkaTerm.dark.svg
similarity index 99%
rename from images/iosevka.dark.svg
rename to images/package-sample-IosevkaTerm.dark.svg
index b5a6f91270..1be8482cbd 100644
--- a/images/iosevka.dark.svg
+++ b/images/package-sample-IosevkaTerm.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed.light.svg b/images/package-sample-IosevkaTerm.light.svg
similarity index 99%
rename from images/iosevka-fixed.light.svg
rename to images/package-sample-IosevkaTerm.light.svg
index 9d147aa06c..32255b0f4a 100644
--- a/images/iosevka-fixed.light.svg
+++ b/images/package-sample-IosevkaTerm.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-curly.dark.svg b/images/package-sample-IosevkaTermCurly.dark.svg
similarity index 99%
rename from images/iosevka-curly.dark.svg
rename to images/package-sample-IosevkaTermCurly.dark.svg
index 581efa847d..4309403eeb 100644
--- a/images/iosevka-curly.dark.svg
+++ b/images/package-sample-IosevkaTermCurly.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-curly.light.svg b/images/package-sample-IosevkaTermCurly.light.svg
similarity index 99%
rename from images/iosevka-curly.light.svg
rename to images/package-sample-IosevkaTermCurly.light.svg
index 0e5349c873..3da68fd63c 100644
--- a/images/iosevka-curly.light.svg
+++ b/images/package-sample-IosevkaTermCurly.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-curly-slab.dark.svg b/images/package-sample-IosevkaTermCurlySlab.dark.svg
similarity index 98%
rename from images/iosevka-curly-slab.dark.svg
rename to images/package-sample-IosevkaTermCurlySlab.dark.svg
index 560a559f70..ca09699ec9 100644
--- a/images/iosevka-curly-slab.dark.svg
+++ b/images/package-sample-IosevkaTermCurlySlab.dark.svg
@@ -123,7 +123,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-curly-slab.light.svg b/images/package-sample-IosevkaTermCurlySlab.light.svg
similarity index 98%
rename from images/iosevka-term-curly-slab.light.svg
rename to images/package-sample-IosevkaTermCurlySlab.light.svg
index ff67e90031..1067e873ff 100644
--- a/images/iosevka-term-curly-slab.light.svg
+++ b/images/package-sample-IosevkaTermCurlySlab.light.svg
@@ -123,7 +123,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss01.dark.svg b/images/package-sample-IosevkaTermSS01.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss01.dark.svg
rename to images/package-sample-IosevkaTermSS01.dark.svg
index bd5c716b0a..d1b83480ea 100644
--- a/images/iosevka-fixed-ss01.dark.svg
+++ b/images/package-sample-IosevkaTermSS01.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss01.light.svg b/images/package-sample-IosevkaTermSS01.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss01.light.svg
rename to images/package-sample-IosevkaTermSS01.light.svg
index 33410d2899..04916b9563 100644
--- a/images/iosevka-fixed-ss01.light.svg
+++ b/images/package-sample-IosevkaTermSS01.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss02.dark.svg b/images/package-sample-IosevkaTermSS02.dark.svg
similarity index 99%
rename from images/iosevka-term-ss02.dark.svg
rename to images/package-sample-IosevkaTermSS02.dark.svg
index 6fcfea3638..0df9d47ce9 100644
--- a/images/iosevka-term-ss02.dark.svg
+++ b/images/package-sample-IosevkaTermSS02.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-ss02.light.svg b/images/package-sample-IosevkaTermSS02.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss02.light.svg
rename to images/package-sample-IosevkaTermSS02.light.svg
index 899459a5fd..4a49e7f490 100644
--- a/images/iosevka-fixed-ss02.light.svg
+++ b/images/package-sample-IosevkaTermSS02.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-ss03.dark.svg b/images/package-sample-IosevkaTermSS03.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss03.dark.svg
rename to images/package-sample-IosevkaTermSS03.dark.svg
index d15be9f705..06099775b1 100644
--- a/images/iosevka-fixed-ss03.dark.svg
+++ b/images/package-sample-IosevkaTermSS03.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss03.light.svg b/images/package-sample-IosevkaTermSS03.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss03.light.svg
rename to images/package-sample-IosevkaTermSS03.light.svg
index 18a9bae3ef..f9a7accdb8 100644
--- a/images/iosevka-fixed-ss03.light.svg
+++ b/images/package-sample-IosevkaTermSS03.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss04.dark.svg b/images/package-sample-IosevkaTermSS04.dark.svg
similarity index 99%
rename from images/iosevka-ss04.dark.svg
rename to images/package-sample-IosevkaTermSS04.dark.svg
index b000d42b6e..5003625c06 100644
--- a/images/iosevka-ss04.dark.svg
+++ b/images/package-sample-IosevkaTermSS04.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss04.light.svg b/images/package-sample-IosevkaTermSS04.light.svg
similarity index 99%
rename from images/iosevka-ss04.light.svg
rename to images/package-sample-IosevkaTermSS04.light.svg
index 1814a5a345..5ab0e75e5d 100644
--- a/images/iosevka-ss04.light.svg
+++ b/images/package-sample-IosevkaTermSS04.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss05.dark.svg b/images/package-sample-IosevkaTermSS05.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss05.dark.svg
rename to images/package-sample-IosevkaTermSS05.dark.svg
index d4b4f120fc..bbae8c3c4a 100644
--- a/images/iosevka-fixed-ss05.dark.svg
+++ b/images/package-sample-IosevkaTermSS05.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-ss05.light.svg b/images/package-sample-IosevkaTermSS05.light.svg
similarity index 99%
rename from images/iosevka-ss05.light.svg
rename to images/package-sample-IosevkaTermSS05.light.svg
index 48397af127..25545ac86e 100644
--- a/images/iosevka-ss05.light.svg
+++ b/images/package-sample-IosevkaTermSS05.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-ss06.dark.svg b/images/package-sample-IosevkaTermSS06.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss06.dark.svg
rename to images/package-sample-IosevkaTermSS06.dark.svg
index 2a81c2ae29..2be031e02f 100644
--- a/images/iosevka-fixed-ss06.dark.svg
+++ b/images/package-sample-IosevkaTermSS06.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss06.light.svg b/images/package-sample-IosevkaTermSS06.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss06.light.svg
rename to images/package-sample-IosevkaTermSS06.light.svg
index 7679be2d5e..6e5900ab2a 100644
--- a/images/iosevka-fixed-ss06.light.svg
+++ b/images/package-sample-IosevkaTermSS06.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss07.dark.svg b/images/package-sample-IosevkaTermSS07.dark.svg
similarity index 99%
rename from images/iosevka-term-ss07.dark.svg
rename to images/package-sample-IosevkaTermSS07.dark.svg
index a0974cdf55..8c5bf58aa2 100644
--- a/images/iosevka-term-ss07.dark.svg
+++ b/images/package-sample-IosevkaTermSS07.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss07.light.svg b/images/package-sample-IosevkaTermSS07.light.svg
similarity index 99%
rename from images/iosevka-ss07.light.svg
rename to images/package-sample-IosevkaTermSS07.light.svg
index 04d3d6cc95..689921c772 100644
--- a/images/iosevka-ss07.light.svg
+++ b/images/package-sample-IosevkaTermSS07.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss08.dark.svg b/images/package-sample-IosevkaTermSS08.dark.svg
similarity index 99%
rename from images/iosevka-term-ss08.dark.svg
rename to images/package-sample-IosevkaTermSS08.dark.svg
index 4487127955..db978d515a 100644
--- a/images/iosevka-term-ss08.dark.svg
+++ b/images/package-sample-IosevkaTermSS08.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss08.light.svg b/images/package-sample-IosevkaTermSS08.light.svg
similarity index 99%
rename from images/iosevka-ss08.light.svg
rename to images/package-sample-IosevkaTermSS08.light.svg
index 1b8c41023b..8aeec2023d 100644
--- a/images/iosevka-ss08.light.svg
+++ b/images/package-sample-IosevkaTermSS08.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss09.dark.svg b/images/package-sample-IosevkaTermSS09.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss09.dark.svg
rename to images/package-sample-IosevkaTermSS09.dark.svg
index f2331bf667..02186a7bb6 100644
--- a/images/iosevka-fixed-ss09.dark.svg
+++ b/images/package-sample-IosevkaTermSS09.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-ss09.light.svg b/images/package-sample-IosevkaTermSS09.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss09.light.svg
rename to images/package-sample-IosevkaTermSS09.light.svg
index 2d57adbff2..289b378512 100644
--- a/images/iosevka-fixed-ss09.light.svg
+++ b/images/package-sample-IosevkaTermSS09.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-ss10.dark.svg b/images/package-sample-IosevkaTermSS10.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss10.dark.svg
rename to images/package-sample-IosevkaTermSS10.dark.svg
index e32062434f..08e9b187fd 100644
--- a/images/iosevka-fixed-ss10.dark.svg
+++ b/images/package-sample-IosevkaTermSS10.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss10.light.svg b/images/package-sample-IosevkaTermSS10.light.svg
similarity index 99%
rename from images/iosevka-ss10.light.svg
rename to images/package-sample-IosevkaTermSS10.light.svg
index a9606ab892..46d16ed2d1 100644
--- a/images/iosevka-ss10.light.svg
+++ b/images/package-sample-IosevkaTermSS10.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss11.dark.svg b/images/package-sample-IosevkaTermSS11.dark.svg
similarity index 99%
rename from images/iosevka-ss11.dark.svg
rename to images/package-sample-IosevkaTermSS11.dark.svg
index 6f2520c2e6..002fc3077a 100644
--- a/images/iosevka-ss11.dark.svg
+++ b/images/package-sample-IosevkaTermSS11.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss11.light.svg b/images/package-sample-IosevkaTermSS11.light.svg
similarity index 99%
rename from images/iosevka-term-ss11.light.svg
rename to images/package-sample-IosevkaTermSS11.light.svg
index 9a95e3c97a..82158f7e10 100644
--- a/images/iosevka-term-ss11.light.svg
+++ b/images/package-sample-IosevkaTermSS11.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-ss12.dark.svg b/images/package-sample-IosevkaTermSS12.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss12.dark.svg
rename to images/package-sample-IosevkaTermSS12.dark.svg
index 55df87aa43..c832051c18 100644
--- a/images/iosevka-fixed-ss12.dark.svg
+++ b/images/package-sample-IosevkaTermSS12.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss12.light.svg b/images/package-sample-IosevkaTermSS12.light.svg
similarity index 99%
rename from images/iosevka-ss12.light.svg
rename to images/package-sample-IosevkaTermSS12.light.svg
index 1e726b37e9..4d9a8fbdee 100644
--- a/images/iosevka-ss12.light.svg
+++ b/images/package-sample-IosevkaTermSS12.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-fixed-ss13.dark.svg b/images/package-sample-IosevkaTermSS13.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss13.dark.svg
rename to images/package-sample-IosevkaTermSS13.dark.svg
index 5d81b8ee03..4baf99cc3b 100644
--- a/images/iosevka-fixed-ss13.dark.svg
+++ b/images/package-sample-IosevkaTermSS13.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-ss13.light.svg b/images/package-sample-IosevkaTermSS13.light.svg
similarity index 99%
rename from images/iosevka-fixed-ss13.light.svg
rename to images/package-sample-IosevkaTermSS13.light.svg
index 648995061c..cce48e1ec9 100644
--- a/images/iosevka-fixed-ss13.light.svg
+++ b/images/package-sample-IosevkaTermSS13.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-term-ss14.dark.svg b/images/package-sample-IosevkaTermSS14.dark.svg
similarity index 99%
rename from images/iosevka-term-ss14.dark.svg
rename to images/package-sample-IosevkaTermSS14.dark.svg
index bb1dbcdd4d..5189fe0445 100644
--- a/images/iosevka-term-ss14.dark.svg
+++ b/images/package-sample-IosevkaTermSS14.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss14.light.svg b/images/package-sample-IosevkaTermSS14.light.svg
similarity index 99%
rename from images/iosevka-ss14.light.svg
rename to images/package-sample-IosevkaTermSS14.light.svg
index 32043fe50c..c8b18450ae 100644
--- a/images/iosevka-ss14.light.svg
+++ b/images/package-sample-IosevkaTermSS14.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss15.dark.svg b/images/package-sample-IosevkaTermSS15.dark.svg
similarity index 99%
rename from images/iosevka-ss15.dark.svg
rename to images/package-sample-IosevkaTermSS15.dark.svg
index 81004a184d..3ecadd6870 100644
--- a/images/iosevka-ss15.dark.svg
+++ b/images/package-sample-IosevkaTermSS15.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-ss15.light.svg b/images/package-sample-IosevkaTermSS15.light.svg
similarity index 99%
rename from images/iosevka-ss15.light.svg
rename to images/package-sample-IosevkaTermSS15.light.svg
index 88827acdcf..23a0ade32f 100644
--- a/images/iosevka-ss15.light.svg
+++ b/images/package-sample-IosevkaTermSS15.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-term-ss16.dark.svg b/images/package-sample-IosevkaTermSS16.dark.svg
similarity index 99%
rename from images/iosevka-term-ss16.dark.svg
rename to images/package-sample-IosevkaTermSS16.dark.svg
index 0cc5bde26f..2473df135d 100644
--- a/images/iosevka-term-ss16.dark.svg
+++ b/images/package-sample-IosevkaTermSS16.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss16.light.svg b/images/package-sample-IosevkaTermSS16.light.svg
similarity index 99%
rename from images/iosevka-ss16.light.svg
rename to images/package-sample-IosevkaTermSS16.light.svg
index 80f2f9c2a1..015b5cdb5a 100644
--- a/images/iosevka-ss16.light.svg
+++ b/images/package-sample-IosevkaTermSS16.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-ss17.dark.svg b/images/package-sample-IosevkaTermSS17.dark.svg
similarity index 99%
rename from images/iosevka-term-ss17.dark.svg
rename to images/package-sample-IosevkaTermSS17.dark.svg
index a4d07aa617..3db38d6246 100644
--- a/images/iosevka-term-ss17.dark.svg
+++ b/images/package-sample-IosevkaTermSS17.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-ss17.light.svg b/images/package-sample-IosevkaTermSS17.light.svg
similarity index 99%
rename from images/iosevka-ss17.light.svg
rename to images/package-sample-IosevkaTermSS17.light.svg
index ec261aae05..b1686eafa3 100644
--- a/images/iosevka-ss17.light.svg
+++ b/images/package-sample-IosevkaTermSS17.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/iosevka-fixed-ss18.dark.svg b/images/package-sample-IosevkaTermSS18.dark.svg
similarity index 99%
rename from images/iosevka-fixed-ss18.dark.svg
rename to images/package-sample-IosevkaTermSS18.dark.svg
index ceeb6b3a54..50d9888bf8 100644
--- a/images/iosevka-fixed-ss18.dark.svg
+++ b/images/package-sample-IosevkaTermSS18.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-ss18.light.svg b/images/package-sample-IosevkaTermSS18.light.svg
similarity index 99%
rename from images/iosevka-ss18.light.svg
rename to images/package-sample-IosevkaTermSS18.light.svg
index c8bf89339d..aaebb36cea 100644
--- a/images/iosevka-ss18.light.svg
+++ b/images/package-sample-IosevkaTermSS18.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/iosevka-term-slab.dark.svg b/images/package-sample-IosevkaTermSlab.dark.svg
similarity index 99%
rename from images/iosevka-term-slab.dark.svg
rename to images/package-sample-IosevkaTermSlab.dark.svg
index 8687154d68..e7f8b5420f 100644
--- a/images/iosevka-term-slab.dark.svg
+++ b/images/package-sample-IosevkaTermSlab.dark.svg
@@ -25,7 +25,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/iosevka-fixed-slab.light.svg b/images/package-sample-IosevkaTermSlab.light.svg
similarity index 99%
rename from images/iosevka-fixed-slab.light.svg
rename to images/package-sample-IosevkaTermSlab.light.svg
index 5e9340f3ae..aba7617daa 100644
--- a/images/iosevka-fixed-slab.light.svg
+++ b/images/package-sample-IosevkaTermSlab.light.svg
@@ -25,7 +25,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-i-off-0.dark.svg b/images/ss-i-off-0.dark.svg
index 76786ef881..a53206c89d 100644
--- a/images/ss-i-off-0.dark.svg
+++ b/images/ss-i-off-0.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-off-0.light.svg b/images/ss-i-off-0.light.svg
index b980016a86..c6d8fa03d9 100644
--- a/images/ss-i-off-0.light.svg
+++ b/images/ss-i-off-0.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss01-1.dark.svg b/images/ss-i-ss01-1.dark.svg
index b1a5aa4685..0e487d8e8c 100644
--- a/images/ss-i-ss01-1.dark.svg
+++ b/images/ss-i-ss01-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss01-1.light.svg b/images/ss-i-ss01-1.light.svg
index 1bac7ada7a..ccf4df9955 100644
--- a/images/ss-i-ss01-1.light.svg
+++ b/images/ss-i-ss01-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss02-1.dark.svg b/images/ss-i-ss02-1.dark.svg
index afc09cb292..b381054071 100644
--- a/images/ss-i-ss02-1.dark.svg
+++ b/images/ss-i-ss02-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss02-1.light.svg b/images/ss-i-ss02-1.light.svg
index 5c29b2917e..bc6e5d183d 100644
--- a/images/ss-i-ss02-1.light.svg
+++ b/images/ss-i-ss02-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss03-1.dark.svg b/images/ss-i-ss03-1.dark.svg
index 9c923d3bdf..8b3b03320f 100644
--- a/images/ss-i-ss03-1.dark.svg
+++ b/images/ss-i-ss03-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss03-1.light.svg b/images/ss-i-ss03-1.light.svg
index 385b266e21..9f2066b3da 100644
--- a/images/ss-i-ss03-1.light.svg
+++ b/images/ss-i-ss03-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss04-1.dark.svg b/images/ss-i-ss04-1.dark.svg
index 7a0a1011b7..250b3612f8 100644
--- a/images/ss-i-ss04-1.dark.svg
+++ b/images/ss-i-ss04-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss04-1.light.svg b/images/ss-i-ss04-1.light.svg
index feb037b27a..fa6a8359de 100644
--- a/images/ss-i-ss04-1.light.svg
+++ b/images/ss-i-ss04-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss05-1.dark.svg b/images/ss-i-ss05-1.dark.svg
index e2f8977d18..fc96fba2bd 100644
--- a/images/ss-i-ss05-1.dark.svg
+++ b/images/ss-i-ss05-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss05-1.light.svg b/images/ss-i-ss05-1.light.svg
index 149824b35d..35ce5fc976 100644
--- a/images/ss-i-ss05-1.light.svg
+++ b/images/ss-i-ss05-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss06-1.dark.svg b/images/ss-i-ss06-1.dark.svg
index 19fd2567c9..12855a1764 100644
--- a/images/ss-i-ss06-1.dark.svg
+++ b/images/ss-i-ss06-1.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-i-ss06-1.light.svg b/images/ss-i-ss06-1.light.svg
index 486d255961..08c0bedc19 100644
--- a/images/ss-i-ss06-1.light.svg
+++ b/images/ss-i-ss06-1.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-i-ss07-1.dark.svg b/images/ss-i-ss07-1.dark.svg
index 537099f606..42bddb35c6 100644
--- a/images/ss-i-ss07-1.dark.svg
+++ b/images/ss-i-ss07-1.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-i-ss07-1.light.svg b/images/ss-i-ss07-1.light.svg
index bf6f21dc25..02848729f3 100644
--- a/images/ss-i-ss07-1.light.svg
+++ b/images/ss-i-ss07-1.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-i-ss08-1.dark.svg b/images/ss-i-ss08-1.dark.svg
index a0eb0c5633..c42c1cb603 100644
--- a/images/ss-i-ss08-1.dark.svg
+++ b/images/ss-i-ss08-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss08-1.light.svg b/images/ss-i-ss08-1.light.svg
index f9d69dcfff..20bef384c2 100644
--- a/images/ss-i-ss08-1.light.svg
+++ b/images/ss-i-ss08-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss09-1.dark.svg b/images/ss-i-ss09-1.dark.svg
index 496a264521..a3b02f4906 100644
--- a/images/ss-i-ss09-1.dark.svg
+++ b/images/ss-i-ss09-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss09-1.light.svg b/images/ss-i-ss09-1.light.svg
index d528196fa2..6bb8c42b86 100644
--- a/images/ss-i-ss09-1.light.svg
+++ b/images/ss-i-ss09-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss10-1.dark.svg b/images/ss-i-ss10-1.dark.svg
index 4b87db058a..02e581738a 100644
--- a/images/ss-i-ss10-1.dark.svg
+++ b/images/ss-i-ss10-1.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-i-ss10-1.light.svg b/images/ss-i-ss10-1.light.svg
index 4a2a57207e..da09ce2c68 100644
--- a/images/ss-i-ss10-1.light.svg
+++ b/images/ss-i-ss10-1.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-i-ss11-1.dark.svg b/images/ss-i-ss11-1.dark.svg
index 1f54a1f3cf..e0bd82a8da 100644
--- a/images/ss-i-ss11-1.dark.svg
+++ b/images/ss-i-ss11-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss11-1.light.svg b/images/ss-i-ss11-1.light.svg
index 399d4fe2b5..25f5a598bb 100644
--- a/images/ss-i-ss11-1.light.svg
+++ b/images/ss-i-ss11-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss12-1.dark.svg b/images/ss-i-ss12-1.dark.svg
index 23c4007d23..26a3c6573f 100644
--- a/images/ss-i-ss12-1.dark.svg
+++ b/images/ss-i-ss12-1.dark.svg
@@ -130,7 +130,7 @@
-
+
diff --git a/images/ss-i-ss12-1.light.svg b/images/ss-i-ss12-1.light.svg
index 49efe2e505..0e45b8d374 100644
--- a/images/ss-i-ss12-1.light.svg
+++ b/images/ss-i-ss12-1.light.svg
@@ -130,7 +130,7 @@
-
+
diff --git a/images/ss-i-ss13-1.dark.svg b/images/ss-i-ss13-1.dark.svg
index 88453ecbc1..ad729c6d79 100644
--- a/images/ss-i-ss13-1.dark.svg
+++ b/images/ss-i-ss13-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss13-1.light.svg b/images/ss-i-ss13-1.light.svg
index dca37e3e27..88be4e7a94 100644
--- a/images/ss-i-ss13-1.light.svg
+++ b/images/ss-i-ss13-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss14-1.dark.svg b/images/ss-i-ss14-1.dark.svg
index b4fae7e166..13887b8ab3 100644
--- a/images/ss-i-ss14-1.dark.svg
+++ b/images/ss-i-ss14-1.dark.svg
@@ -130,7 +130,7 @@
-
+
diff --git a/images/ss-i-ss14-1.light.svg b/images/ss-i-ss14-1.light.svg
index f5f293b28b..2a4904cfbb 100644
--- a/images/ss-i-ss14-1.light.svg
+++ b/images/ss-i-ss14-1.light.svg
@@ -130,7 +130,7 @@
-
+
diff --git a/images/ss-i-ss15-1.dark.svg b/images/ss-i-ss15-1.dark.svg
index 596954746b..19baa5add7 100644
--- a/images/ss-i-ss15-1.dark.svg
+++ b/images/ss-i-ss15-1.dark.svg
@@ -33,13 +33,13 @@
-
+
-
-
-
-
+
+
+
+
@@ -47,11 +47,11 @@
-
+
-
+
@@ -108,7 +108,7 @@
-
+
@@ -117,12 +117,12 @@
-
+
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-i-ss15-1.light.svg b/images/ss-i-ss15-1.light.svg
index 0fd923cb39..0a40b20645 100644
--- a/images/ss-i-ss15-1.light.svg
+++ b/images/ss-i-ss15-1.light.svg
@@ -33,13 +33,13 @@
-
+
-
-
-
-
+
+
+
+
@@ -47,11 +47,11 @@
-
+
-
+
@@ -108,7 +108,7 @@
-
+
@@ -117,12 +117,12 @@
-
+
-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-i-ss16-1.dark.svg b/images/ss-i-ss16-1.dark.svg
index 5469872547..577e571995 100644
--- a/images/ss-i-ss16-1.dark.svg
+++ b/images/ss-i-ss16-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss16-1.light.svg b/images/ss-i-ss16-1.light.svg
index 50e6358222..921010596a 100644
--- a/images/ss-i-ss16-1.light.svg
+++ b/images/ss-i-ss16-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss17-1.dark.svg b/images/ss-i-ss17-1.dark.svg
index c4424ec2c8..1e755cf9fc 100644
--- a/images/ss-i-ss17-1.dark.svg
+++ b/images/ss-i-ss17-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss17-1.light.svg b/images/ss-i-ss17-1.light.svg
index 166b765880..794b706ab8 100644
--- a/images/ss-i-ss17-1.light.svg
+++ b/images/ss-i-ss17-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss18-1.dark.svg b/images/ss-i-ss18-1.dark.svg
index 1b01b49c7e..ac094676c5 100644
--- a/images/ss-i-ss18-1.dark.svg
+++ b/images/ss-i-ss18-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss18-1.light.svg b/images/ss-i-ss18-1.light.svg
index ea4c0ddbbe..2dab75bd51 100644
--- a/images/ss-i-ss18-1.light.svg
+++ b/images/ss-i-ss18-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-i-ss20-1.dark.svg b/images/ss-i-ss20-1.dark.svg
index df48ebc852..1a4a7d3f0c 100644
--- a/images/ss-i-ss20-1.dark.svg
+++ b/images/ss-i-ss20-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-i-ss20-1.light.svg b/images/ss-i-ss20-1.light.svg
index 00de19f9e8..53a4878a32 100644
--- a/images/ss-i-ss20-1.light.svg
+++ b/images/ss-i-ss20-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-off-0.dark.svg b/images/ss-u-off-0.dark.svg
index a1d9de2f8e..53ceebc711 100644
--- a/images/ss-u-off-0.dark.svg
+++ b/images/ss-u-off-0.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-off-0.light.svg b/images/ss-u-off-0.light.svg
index 6127bfd202..dcb5b4ae23 100644
--- a/images/ss-u-off-0.light.svg
+++ b/images/ss-u-off-0.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss01-1.dark.svg b/images/ss-u-ss01-1.dark.svg
index 1833d684f2..1410917c86 100644
--- a/images/ss-u-ss01-1.dark.svg
+++ b/images/ss-u-ss01-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss01-1.light.svg b/images/ss-u-ss01-1.light.svg
index 65e4355087..fec7d67d1c 100644
--- a/images/ss-u-ss01-1.light.svg
+++ b/images/ss-u-ss01-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss02-1.dark.svg b/images/ss-u-ss02-1.dark.svg
index 7d907ea443..e57e245cba 100644
--- a/images/ss-u-ss02-1.dark.svg
+++ b/images/ss-u-ss02-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-ss02-1.light.svg b/images/ss-u-ss02-1.light.svg
index 7d69c4459c..c80642620b 100644
--- a/images/ss-u-ss02-1.light.svg
+++ b/images/ss-u-ss02-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-ss03-1.dark.svg b/images/ss-u-ss03-1.dark.svg
index 7305a890f8..57197f7615 100644
--- a/images/ss-u-ss03-1.dark.svg
+++ b/images/ss-u-ss03-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss03-1.light.svg b/images/ss-u-ss03-1.light.svg
index e4b86a0551..6dda8d1fe2 100644
--- a/images/ss-u-ss03-1.light.svg
+++ b/images/ss-u-ss03-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss04-1.dark.svg b/images/ss-u-ss04-1.dark.svg
index 4a97ac4bbd..b7afd4e6db 100644
--- a/images/ss-u-ss04-1.dark.svg
+++ b/images/ss-u-ss04-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss04-1.light.svg b/images/ss-u-ss04-1.light.svg
index ca84d3dc6b..cba001e760 100644
--- a/images/ss-u-ss04-1.light.svg
+++ b/images/ss-u-ss04-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss05-1.dark.svg b/images/ss-u-ss05-1.dark.svg
index 385c8b77ca..c362a61ec9 100644
--- a/images/ss-u-ss05-1.dark.svg
+++ b/images/ss-u-ss05-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-ss05-1.light.svg b/images/ss-u-ss05-1.light.svg
index 7b092b98b9..6f703c9b8f 100644
--- a/images/ss-u-ss05-1.light.svg
+++ b/images/ss-u-ss05-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-ss06-1.dark.svg b/images/ss-u-ss06-1.dark.svg
index ded318ef4e..b8f4a7be44 100644
--- a/images/ss-u-ss06-1.dark.svg
+++ b/images/ss-u-ss06-1.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss06-1.light.svg b/images/ss-u-ss06-1.light.svg
index 0bb94c629c..4bd72e6873 100644
--- a/images/ss-u-ss06-1.light.svg
+++ b/images/ss-u-ss06-1.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss07-1.dark.svg b/images/ss-u-ss07-1.dark.svg
index a09bdbdd6b..b0b8493f5d 100644
--- a/images/ss-u-ss07-1.dark.svg
+++ b/images/ss-u-ss07-1.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss07-1.light.svg b/images/ss-u-ss07-1.light.svg
index 71eb40b2cd..42390dcb0d 100644
--- a/images/ss-u-ss07-1.light.svg
+++ b/images/ss-u-ss07-1.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss08-1.dark.svg b/images/ss-u-ss08-1.dark.svg
index b49e5bd7cc..7c209e83c8 100644
--- a/images/ss-u-ss08-1.dark.svg
+++ b/images/ss-u-ss08-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss08-1.light.svg b/images/ss-u-ss08-1.light.svg
index d40e2982ea..4f67aa60fb 100644
--- a/images/ss-u-ss08-1.light.svg
+++ b/images/ss-u-ss08-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss09-1.dark.svg b/images/ss-u-ss09-1.dark.svg
index 3e301a1b0d..e016228436 100644
--- a/images/ss-u-ss09-1.dark.svg
+++ b/images/ss-u-ss09-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-ss09-1.light.svg b/images/ss-u-ss09-1.light.svg
index 1e0b6822f4..ffc15b38e4 100644
--- a/images/ss-u-ss09-1.light.svg
+++ b/images/ss-u-ss09-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-ss10-1.dark.svg b/images/ss-u-ss10-1.dark.svg
index bea913a553..680e572abe 100644
--- a/images/ss-u-ss10-1.dark.svg
+++ b/images/ss-u-ss10-1.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss10-1.light.svg b/images/ss-u-ss10-1.light.svg
index 9d0a4dea14..b24f47002b 100644
--- a/images/ss-u-ss10-1.light.svg
+++ b/images/ss-u-ss10-1.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss11-1.dark.svg b/images/ss-u-ss11-1.dark.svg
index 6ae7138856..4cc04c8fa0 100644
--- a/images/ss-u-ss11-1.dark.svg
+++ b/images/ss-u-ss11-1.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss11-1.light.svg b/images/ss-u-ss11-1.light.svg
index 134ea6d4dc..cd9417ea66 100644
--- a/images/ss-u-ss11-1.light.svg
+++ b/images/ss-u-ss11-1.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss12-1.dark.svg b/images/ss-u-ss12-1.dark.svg
index 25c1c7fc04..cafa3fad52 100644
--- a/images/ss-u-ss12-1.dark.svg
+++ b/images/ss-u-ss12-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss12-1.light.svg b/images/ss-u-ss12-1.light.svg
index 7e3e8f868e..8e328d5900 100644
--- a/images/ss-u-ss12-1.light.svg
+++ b/images/ss-u-ss12-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss13-1.dark.svg b/images/ss-u-ss13-1.dark.svg
index c97c797d17..57d034a59c 100644
--- a/images/ss-u-ss13-1.dark.svg
+++ b/images/ss-u-ss13-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-ss13-1.light.svg b/images/ss-u-ss13-1.light.svg
index d0c41dcb2e..9a9d5ddb96 100644
--- a/images/ss-u-ss13-1.light.svg
+++ b/images/ss-u-ss13-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-ss14-1.dark.svg b/images/ss-u-ss14-1.dark.svg
index 8925b402f0..5c64789f81 100644
--- a/images/ss-u-ss14-1.dark.svg
+++ b/images/ss-u-ss14-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss14-1.light.svg b/images/ss-u-ss14-1.light.svg
index 683832fe20..8deb630406 100644
--- a/images/ss-u-ss14-1.light.svg
+++ b/images/ss-u-ss14-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss15-1.dark.svg b/images/ss-u-ss15-1.dark.svg
index 6e4df54543..599010784d 100644
--- a/images/ss-u-ss15-1.dark.svg
+++ b/images/ss-u-ss15-1.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss15-1.light.svg b/images/ss-u-ss15-1.light.svg
index 0673103d64..d9438ab770 100644
--- a/images/ss-u-ss15-1.light.svg
+++ b/images/ss-u-ss15-1.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss16-1.dark.svg b/images/ss-u-ss16-1.dark.svg
index 2cfd46f33a..fdabf971f1 100644
--- a/images/ss-u-ss16-1.dark.svg
+++ b/images/ss-u-ss16-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss16-1.light.svg b/images/ss-u-ss16-1.light.svg
index f8eda6bef0..2f7a168514 100644
--- a/images/ss-u-ss16-1.light.svg
+++ b/images/ss-u-ss16-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss17-1.dark.svg b/images/ss-u-ss17-1.dark.svg
index 4bbc90bd58..3a0ad212b7 100644
--- a/images/ss-u-ss17-1.dark.svg
+++ b/images/ss-u-ss17-1.dark.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-ss17-1.light.svg b/images/ss-u-ss17-1.light.svg
index c650a1466e..18554b5edb 100644
--- a/images/ss-u-ss17-1.light.svg
+++ b/images/ss-u-ss17-1.light.svg
@@ -132,7 +132,7 @@
-
+
diff --git a/images/ss-u-ss18-1.dark.svg b/images/ss-u-ss18-1.dark.svg
index 267640b7d2..eb37f67432 100644
--- a/images/ss-u-ss18-1.dark.svg
+++ b/images/ss-u-ss18-1.dark.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss18-1.light.svg b/images/ss-u-ss18-1.light.svg
index 6edca545c1..cdcb302f22 100644
--- a/images/ss-u-ss18-1.light.svg
+++ b/images/ss-u-ss18-1.light.svg
@@ -131,7 +131,7 @@
-
+
diff --git a/images/ss-u-ss20-1.dark.svg b/images/ss-u-ss20-1.dark.svg
index c34cdeb3ea..7a85907749 100644
--- a/images/ss-u-ss20-1.dark.svg
+++ b/images/ss-u-ss20-1.dark.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/images/ss-u-ss20-1.light.svg b/images/ss-u-ss20-1.light.svg
index e31a2e4584..9e2cd0441e 100644
--- a/images/ss-u-ss20-1.light.svg
+++ b/images/ss-u-ss20-1.light.svg
@@ -133,7 +133,7 @@
-
+
diff --git a/package-lock.json b/package-lock.json
index ce8b3a4803..0bb8a2fbfa 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "iosevka",
- "version": "27.3.5",
+ "version": "28.0.0-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "iosevka",
- "version": "27.3.5",
+ "version": "28.0.0-alpha.1",
"dependencies": {
"@iarna/toml": "^2.2.5",
"@msgpack/msgpack": "^2.8.0",
diff --git a/package.json b/package.json
index d8b6225987..12b9636ac8 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "iosevka",
- "version": "27.3.5",
+ "version": "28.0.0-alpha.1",
"main": "./font-src/index.js",
"scripts": {
"build": "verda -f verdafile.mjs",
diff --git a/params/variants.toml b/params/variants.toml
index 5a13c0584e..eabe56b94f 100644
--- a/params/variants.toml
+++ b/params/variants.toml
@@ -197,6 +197,7 @@ selector.CTopSerifOnly = "unilateralInwardSerifed"
selector.CBottomSerifOnly = "bilateralInwardSerifed"
+
[prime.capital-d]
sampler = "D"
tagKind = "letter"
@@ -658,27 +659,11 @@ sampler = "M"
tagKind = "letter"
[prime.capital-m.variants-buildup]
-entry = "middle"
+entry = "sides"
descriptionLeader = "`M`"
-[prime.capital-m.variants-buildup.stages.middle."*"]
-next = "sides"
-
-[prime.capital-m.variants-buildup.stages.middle.hanging]
-rank = 1
-descriptionAffix = "middle being hanging off baseline"
-selectorAffix.M = "hanging"
-selectorAffix."M/sansSerif" = "hanging"
-
-[prime.capital-m.variants-buildup.stages.middle.flat-bottom]
-rank = 2
-descriptionAffix = "middle aligned to baseline"
-selectorAffix.M = "flatBottom"
-selectorAffix."M/sansSerif" = "flatBottom"
-
[prime.capital-m.variants-buildup.stages.sides."*"]
-next = "serifs"
-mode = "prepend"
+next = "middle"
[prime.capital-m.variants-buildup.stages.sides.straight]
rank = 1
@@ -692,6 +677,21 @@ descriptionAffix = "slanted sides"
selectorAffix.M = "slantedSides"
selectorAffix."M/sansSerif" = "slantedSides"
+[prime.capital-m.variants-buildup.stages.middle."*"]
+next = "serifs"
+
+[prime.capital-m.variants-buildup.stages.middle.hanging]
+rank = 1
+descriptionAffix = "middle being hanging off baseline"
+selectorAffix.M = "hanging"
+selectorAffix."M/sansSerif" = "hanging"
+
+[prime.capital-m.variants-buildup.stages.middle.flat-bottom]
+rank = 2
+descriptionAffix = "middle aligned to baseline"
+selectorAffix.M = "flatBottom"
+selectorAffix."M/sansSerif" = "flatBottom"
+
[prime.capital-m.variants-buildup.stages.serifs.serifless]
rank = 1
descriptionAffix = "serifs"
@@ -882,39 +882,18 @@ sampler = "R"
tagKind = "letter"
[prime.capital-r.variants-buildup]
-entry = "openness"
+entry = "leg"
descriptionLeader = "`R`"
[prime.capital-r.variants-buildup.stages.openness."*"]
-next = "leg"
-
-[prime.capital-r.variants-buildup.stages.openness.closed]
-rank = 1
-groupRank = 10
-keyAffix = ""
-selectorAffix.R = ""
-selectorAffix."R/sansSerif" = ""
-selectorAffix.RBar = ""
-selectorAffix.RRTail = ""
-selectorAffix.RRotunda = ""
-
-[prime.capital-r.variants-buildup.stages.openness.open]
-rank = 2
-groupRank = 20
-descriptionAffix = "open contour"
-selectorAffix.R = "open"
-selectorAffix."R/sansSerif" = "open"
-selectorAffix.RBar = ""
-selectorAffix.RRTail = "open"
-selectorAffix.RRotunda = ""
+next = "serifs"
[prime.capital-r.variants-buildup.stages.leg."*"]
-next = "serifs"
-mode = "prepend"
+next = "openness"
[prime.capital-r.variants-buildup.stages.leg.straight]
rank = 1
-groupRank = 1
+groupRank = 10
descriptionAffix = "straight leg"
selectorAffix.R = "straight"
selectorAffix."R/sansSerif" = "straight"
@@ -924,7 +903,7 @@ selectorAffix.RRotunda = "straight"
[prime.capital-r.variants-buildup.stages.leg.curly]
rank = 2
-groupRank = 2
+groupRank = 20
descriptionAffix = "curly leg"
selectorAffix.R = "curly"
selectorAffix."R/sansSerif" = "curly"
@@ -934,7 +913,7 @@ selectorAffix.RRotunda = "curly"
[prime.capital-r.variants-buildup.stages.leg.standing]
rank = 3
-groupRank = 3
+groupRank = 30
descriptionAffix = "standing leg (like Helvetica)"
selectorAffix.R = "standing"
selectorAffix."R/sansSerif" = "standing"
@@ -942,6 +921,26 @@ selectorAffix.RBar = "standing"
selectorAffix.RRTail = "standing"
selectorAffix.RRotunda = "standing"
+[prime.capital-r.variants-buildup.stages.openness.closed]
+rank = 1
+groupRank = 1
+keyAffix = ""
+selectorAffix.R = ""
+selectorAffix."R/sansSerif" = ""
+selectorAffix.RBar = ""
+selectorAffix.RRTail = ""
+selectorAffix.RRotunda = ""
+
+[prime.capital-r.variants-buildup.stages.openness.open]
+rank = 2
+groupRank = 2
+descriptionAffix = "open contour"
+selectorAffix.R = "open"
+selectorAffix."R/sansSerif" = "open"
+selectorAffix.RBar = ""
+selectorAffix.RRTail = "open"
+selectorAffix.RRotunda = ""
+
[prime.capital-r.variants-buildup.stages.serifs.serifless]
rank = 1
descriptionAffix = "serifs"
@@ -1281,12 +1280,14 @@ rank = 1
descriptionAffix = "straight shape"
selectorAffix.X = "straight"
selectorAffix."X/sansSerif" = "straight"
+selectorAffix."cyrl/Rha/right" = "straight"
[prime.capital-x.variants-buildup.stages.body.curly]
rank = 2
descriptionAffix = "curly shape"
selectorAffix.X = "curly"
selectorAffix."X/sansSerif" = "curly"
+selectorAffix."cyrl/Rha/right" = "curly"
[prime.capital-x.variants-buildup.stages.serifs.serifless]
rank = 1
@@ -1294,18 +1295,21 @@ descriptionAffix = "serifs"
descriptionJoiner = "without"
selectorAffix.X = "serifless"
selectorAffix."X/sansSerif" = "serifless"
+selectorAffix."cyrl/Rha/right" = "serifless"
[prime.capital-x.variants-buildup.stages.serifs.motion-serifed]
rank = 2
descriptionAffix = "motion serifs"
selectorAffix.X = "motionSerifed"
selectorAffix."X/sansSerif" = "serifless"
+selectorAffix."cyrl/Rha/right" = "serifless"
[prime.capital-x.variants-buildup.stages.serifs.serifed]
rank = 3
descriptionAffix = "serifs"
selectorAffix.X = "serifed"
selectorAffix."X/sansSerif" = "serifless"
+selectorAffix."cyrl/Rha/right" = "serifed"
@@ -1505,9 +1509,10 @@ descriptionLeader = "`a`"
[prime.a.variants-buildup.stages.storey.double-storey]
rank = 1
-next = "terminal"
+next = "double-storey-hook"
descriptionAffix = "double-storey body"
selectorAffix.a = "doubleStorey"
+selectorAffix."ae/a" = "doubleStorey"
selectorAffix."a/sansSerif" = "doubleStorey"
selectorAffix."a/rtailBase" = "doubleStorey"
selectorAffix."a/turnABase" = "doubleStorey"
@@ -1519,12 +1524,40 @@ rank = 2
next = "ear"
descriptionAffix = "single-storey body"
selectorAffix.a = "singleStorey"
+selectorAffix."ae/a" = "doubleStorey"
selectorAffix."a/sansSerif" = "singleStorey"
selectorAffix."a/rtailBase" = "singleStorey"
selectorAffix."a/turnABase" = "doubleStorey"
selectorAffix."a/single" = "singleStorey"
selectorAffix.scripta = "singleStorey"
+[prime.a.variants-buildup.stages.double-storey-hook."*"]
+next = "terminal"
+
+[prime.a.variants-buildup.stages.double-storey-hook.hook-serifless]
+rank = 1
+keyAffix = ""
+descriptionAffix = "serifless hook"
+selectorAffix.a = ""
+selectorAffix."ae/a" = ""
+selectorAffix."a/sansSerif" = ""
+selectorAffix."a/rtailBase" = ""
+selectorAffix."a/turnABase" = ""
+selectorAffix."a/single" = ""
+selectorAffix.scripta = ""
+
+[prime.a.variants-buildup.stages.double-storey-hook.hook-serifed]
+rank = 2
+keyAffix = "hook-inward-serifed"
+descriptionAffix = "serifed hook"
+selectorAffix.a = "hookInwardSerifed"
+selectorAffix."ae/a" = "hookInwardSerifed"
+selectorAffix."a/sansSerif" = "hookInwardSerifed"
+selectorAffix."a/rtailBase" = "hookInwardSerifed"
+selectorAffix."a/turnABase" = "hookInwardSerifed"
+selectorAffix."a/single" = ""
+selectorAffix.scripta = ""
+
[prime.a.variants-buildup.stages.ear."*"]
next = "terminal"
@@ -1532,6 +1565,7 @@ next = "terminal"
rank = 1
keyAffix = ""
selectorAffix.a = ""
+selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = ""
selectorAffix."a/rtailBase" = ""
selectorAffix."a/turnABase" = ""
@@ -1542,6 +1576,7 @@ selectorAffix.scripta = ""
rank = 2
descriptionAffix = "earless (cornered top-right)"
selectorAffix.a = "earlessCorner"
+selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = "earlessCorner"
selectorAffix."a/rtailBase" = "earlessCorner"
selectorAffix."a/turnABase" = ""
@@ -1552,6 +1587,7 @@ selectorAffix.scripta = ""
rank = 3
descriptionAffix = "earless (rounded top-right)"
selectorAffix.a = "earlessRounded"
+selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = "earlessRounded"
selectorAffix."a/rtailBase" = "earlessRounded"
selectorAffix."a/turnABase" = ""
@@ -1563,6 +1599,7 @@ rank = 1
descriptionAffix = "serif at terminal"
descriptionJoiner = "without"
selectorAffix.a = "serifless"
+selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "serifless"
selectorAffix."a/rtailBase" = "serifless"
selectorAffix."a/turnABase" = "serifless"
@@ -1573,6 +1610,7 @@ selectorAffix.scripta = "serifless"
rank = 2
descriptionAffix = "curly tail"
selectorAffix.a = "tailed"
+selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "tailed"
selectorAffix."a/rtailBase" = "serifless"
selectorAffix."a/turnABase" = "tailed"
@@ -1584,6 +1622,7 @@ rank = 3
disableIf = [{ storey = "single-storey" }]
descriptionAffix = "toothless (cornered bottom-right)"
selectorAffix.a = "toothlessCorner"
+selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "toothlessCorner"
selectorAffix."a/rtailBase" = "serifless"
selectorAffix."a/turnABase" = "toothlessCorner"
@@ -1595,6 +1634,7 @@ rank = 4
disableIf = [{ storey = "single-storey" }]
descriptionAffix = "toothless (rounded bottom-right)"
selectorAffix.a = "toothlessRounded"
+selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "toothlessRounded"
selectorAffix."a/rtailBase" = "serifless"
selectorAffix."a/turnABase" = "toothlessRounded"
@@ -1605,6 +1645,7 @@ selectorAffix.scripta = "serifless"
rank = 5
descriptionAffix = "serif at terminal"
selectorAffix.a = "serifed"
+selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "serifless"
selectorAffix."a/rtailBase" = "serifless"
selectorAffix."a/turnABase" = "serifed"
@@ -1612,6 +1653,7 @@ selectorAffix."a/single" = "serifed"
selectorAffix.scripta = "serifed"
+
[prime.b]
sampler = "b"
tagKind = "letter"
@@ -1790,10 +1832,10 @@ selectorAffix.d = "toothlessRounded"
selectorAffix."d/sansSerif" = "toothlessRounded"
selectorAffix."d/phoneticLeft" = "toothed"
selectorAffix."d/descBase" = "toothed"
-selectorAffix."d/hookBottomBase" = "toothlessRoundedHBB"
+selectorAffix."d/hookBottomBase" = "toothed"
selectorAffix.dCurlyTail = "toothed"
selectorAffix.dHookTop = "toothlessRounded"
-selectorAffix."dHookTop/hookBottomBase" = "toothlessRoundedHBB"
+selectorAffix."dHookTop/hookBottomBase" = "toothed"
selectorAffix."cyrl/djeKomi" = "toothlessRounded"
[prime.d.variants-buildup.stages.body.tailed]
@@ -1894,12 +1936,11 @@ sampler = "f"
tagKind = "letter"
[prime.f.variants-buildup]
-entry = "tail"
+entry = "hook"
descriptionLeader = "`f`"
[prime.f.variants-buildup.stages.hook."*"]
-next = "crossbar"
-mode = "prepend"
+next = "tail"
[prime.f.variants-buildup.stages.hook.full]
rank = 1
@@ -1928,7 +1969,7 @@ selectorAffix.fLenis = "flatHook"
selectorAffix.fLTail = "flatHook"
[prime.f.variants-buildup.stages.tail."*"]
-next = "hook"
+next = "crossbar"
[prime.f.variants-buildup.stages.tail.serifless]
rank = 1
@@ -2125,7 +2166,7 @@ descriptionAffix = "earless (cornered top-right)"
selectorAffix.g = "earlessCorner"
selectorAffix."g/sansSerif" = "earlessCorner"
selectorAffix."gScript" = "scriptCut"
-selectorAffix."gScript/hookTopBase" = "serifless"
+selectorAffix."gScript/hookTopBase" = "earlessCornerHTB"
selectorAffix."gScriptCrossedTail" = "scriptCut"
selectorAffix."g/single" = "earlessCorner"
@@ -2221,6 +2262,7 @@ selectorAffix.heng = "serifed"
selectorAffix."cyrl/shha" = "serifed"
+
[prime.i]
sampler = "i"
tagKind = "letter"
@@ -2754,6 +2796,7 @@ selector.lCurlyTail = "hooky"
selector.lyogh = "hooky"
+
[prime.m]
sampler = "m"
tagKind = "letter"
@@ -3126,7 +3169,7 @@ rank = 3
descriptionAffix = "earless (rounded) shape"
selectorAffix.p = "earlessRounded"
selectorAffix."p/sansSerif" = "earlessRounded"
-selectorAffix."p/hookTopBase" = "earlessRounded"
+selectorAffix."p/hookTopBase" = "eared"
[prime.p.variants-buildup.stages.serifs.serifless]
rank = 1
@@ -3196,7 +3239,7 @@ rank = 3
descriptionAffix = "earless (rounded) shape"
selectorAffix.q = "earlessRounded"
selectorAffix."q/sansSerif" = "earlessRounded"
-selectorAffix."q/hookTopBase" = "earlessRounded"
+selectorAffix."q/hookTopBase" = ""
selectorAffix.qRTail = "earlessRounded"
[prime.q.variants-buildup.stages.terminal."*"]
@@ -3296,7 +3339,7 @@ selectorAffix.r = "earlessCorner"
selectorAffix."r/sansSerif" = "earlessCorner"
selectorAffix.rRTail = "earlessCorner"
selectorAffix."rTurnRTail" = ""
-selectorAffix."rFlap" = "earlessCorner"
+selectorAffix."rFlap" = "earlessRounded"
selectorAffix."iFishHook" = ""
[prime.r.variants-buildup.stages.body.earless-rounded]
@@ -3451,11 +3494,11 @@ sampler = "t"
tagKind = "letter"
[prime.t.variants-buildup]
-entry = "height"
+entry = "body"
descriptionLeader = "`t`"
[prime.t.variants-buildup.stages.body."*"]
-mode = "prepend"
+next = "symmetry"
[prime.t.variants-buildup.stages.body.bent-hook]
rank = 1
@@ -3515,8 +3558,7 @@ selectorAffix.tCurlyTail = {if = [{symmetry = "asymmetric"}], then = "flatHook",
selectorAffix."tsLig/upperHalf" = "bentHook"
[prime.t.variants-buildup.stages.symmetry."*"]
-next = "body"
-mode = "prepend"
+next = "height"
[prime.t.variants-buildup.stages.symmetry.symmetric]
rank = 1
@@ -3549,7 +3591,6 @@ selectorAffix.tCurlyTail = "asymmetric"
selectorAffix."tsLig/upperHalf" = ""
[prime.t.variants-buildup.stages.height."*"]
-next = "symmetry"
[prime.t.variants-buildup.stages.height.full]
rank = 1
@@ -3940,6 +3981,7 @@ descriptionAffix = "straight shape"
selectorAffix.x = "straight"
selectorAffix."x/sansSerif" = "straight"
selectorAffix."cyrl/ha" = "straight"
+selectorAffix."cyrl/rha/right" = "straight"
[prime.x.variants-buildup.stages.body.curly]
rank = 2
@@ -3947,6 +3989,7 @@ descriptionAffix = "curly shape"
selectorAffix.x = "curly"
selectorAffix."x/sansSerif" = "curly"
selectorAffix."cyrl/ha" = "curly"
+selectorAffix."cyrl/rha/right" = "curly"
[prime.x.variants-buildup.stages.body.cursive]
rank = 3
@@ -3955,33 +3998,34 @@ descriptionAffix = "cursive shape"
selectorAffix.x = "cursive"
selectorAffix."x/sansSerif" = "cursive"
selectorAffix."cyrl/ha" = "cursive"
+selectorAffix."cyrl/rha/right" = "cursive"
[prime.x.variants-buildup.stages.body.semi-chancery-straight]
rank = 4
-nonBreakingVariantAdditionPriority = 100
next = "END"
descriptionAffix = "Semi-chancery shape with straight counter-leg"
selectorAffix.x = "semiChanceryStraight"
selectorAffix."x/sansSerif" = "semiChanceryStraight"
selectorAffix."cyrl/ha" = "semiChanceryStraight"
+selectorAffix."cyrl/rha/right" = "semiChanceryStraight"
[prime.x.variants-buildup.stages.body.semi-chancery-curly]
rank = 5
-nonBreakingVariantAdditionPriority = 100
next = "END"
descriptionAffix = "Semi-chancery shape with curly counter-leg"
selectorAffix.x = "semiChanceryCurly"
selectorAffix."x/sansSerif" = "semiChanceryCurly"
selectorAffix."cyrl/ha" = "semiChanceryCurly"
+selectorAffix."cyrl/rha/right" = "semiChanceryCurly"
[prime.x.variants-buildup.stages.body.chancery]
rank = 6
-nonBreakingVariantAdditionPriority = 200
next = "END"
descriptionAffix = "Chancery shape"
selectorAffix.x = "chancery"
selectorAffix."x/sansSerif" = "chancery"
selectorAffix."cyrl/ha" = "chancery"
+selectorAffix."cyrl/rha/right" = "chancery"
[prime.x.variants-buildup.stages.serifs.serifless]
rank = 1
@@ -3990,6 +4034,7 @@ descriptionJoiner = "without"
selectorAffix.x = "serifless"
selectorAffix."x/sansSerif" = "serifless"
selectorAffix."cyrl/ha" = "serifless"
+selectorAffix."cyrl/rha/right" = "serifless"
[prime.x.variants-buildup.stages.serifs.motion-serifed]
rank = 2
@@ -3997,6 +4042,7 @@ descriptionAffix = "motion serifs"
selectorAffix.x = "motionSerifed"
selectorAffix."x/sansSerif" = "serifless"
selectorAffix."cyrl/ha" = "motionSerifed"
+selectorAffix."cyrl/rha/right" = "serifless"
[prime.x.variants-buildup.stages.serifs.serifed]
rank = 3
@@ -4004,6 +4050,7 @@ descriptionAffix = "serifs"
selectorAffix.x = "serifed"
selectorAffix."x/sansSerif" = "serifless"
selectorAffix."cyrl/ha" = "serifed"
+selectorAffix."cyrl/rha/right" = "serifed"
@@ -4228,14 +4275,34 @@ samplerExplain = "Long-S"
tagKind = "letter"
[prime.long-s.variants-buildup]
-entry = "bottom"
+entry = "top"
descriptionLeader = "Long S (`ſ`)"
+[prime.long-s.variants-buildup.stages.top."*"]
+next = "bottom"
+
+[prime.long-s.variants-buildup.stages.top.bent-hook]
+rank = 1
+groupRank = 10
+descriptionAffix = "bending top hook"
+selectorAffix."longs" = "bentHook"
+selectorAffix."longs/flatExt" = "flatHookExt"
+selectorAffix."longsBar" = "bentHook"
+
+[prime.long-s.variants-buildup.stages.top.flat-hook]
+rank = 2
+groupRank = 20
+descriptionAffix = "flat top hook"
+selectorAffix."longs" = "flatHook"
+selectorAffix."longs/flatExt" = "flatHookExt"
+selectorAffix."longsBar" = "flatHook"
+
[prime.long-s.variants-buildup.stages.bottom."*"]
-next = "top"
+next = "serifs"
[prime.long-s.variants-buildup.stages.bottom.non-descending]
rank = 1
+groupRank = 1
keyAffix = ""
selectorAffix."longs" = ""
selectorAffix."longs/flatExt" = ""
@@ -4243,6 +4310,7 @@ selectorAffix."longsBar" = ""
[prime.long-s.variants-buildup.stages.bottom.descending]
rank = 2
+groupRank = 2
descriptionAffix = "terminal descends baseline"
selectorAffix."longs" = "descending"
selectorAffix."longs/flatExt" = "descending"
@@ -4250,6 +4318,7 @@ selectorAffix."longsBar" = "descending"
[prime.long-s.variants-buildup.stages.bottom.tailed]
rank = 3
+groupRank = 3
descriptionAffix = "terminal has a tail"
selectorAffix."longs" = "tailed"
selectorAffix."longs/flatExt" = "tailed"
@@ -4257,29 +4326,12 @@ selectorAffix."longsBar" = "tailed"
[prime.long-s.variants-buildup.stages.bottom.diagonal-tailed]
rank = 4
+groupRank = 4
descriptionAffix = "terminal has a diagonal tail"
selectorAffix."longs" = "diagonalTailed"
selectorAffix."longs/flatExt" = "diagonalTailed"
selectorAffix."longsBar" = "diagonalTailed"
-[prime.long-s.variants-buildup.stages.top."*"]
-next = "serifs"
-mode = "prepend"
-
-[prime.long-s.variants-buildup.stages.top.bent-hook]
-rank = 1
-descriptionAffix = "bending top hook"
-selectorAffix."longs" = "bentHook"
-selectorAffix."longs/flatExt" = "flatHookExt"
-selectorAffix."longsBar" = "bentHook"
-
-[prime.long-s.variants-buildup.stages.top.flat-hook]
-rank = 2
-descriptionAffix = "flat top hook"
-selectorAffix."longs" = "flatHook"
-selectorAffix."longs/flatExt" = "flatHookExt"
-selectorAffix."longsBar" = "flatHook"
-
[prime.long-s.variants-buildup.stages.serifs.serifless__non-descending]
rank = 1
enableIf = [{ bottom = "non-descending" }]
@@ -4760,21 +4812,21 @@ rank = 2
description = "Greek small Lambda (`λ`) with straight upper and a tail turns leftward"
selector."grek/lambda" = "straightTurnSerifless"
-[prime.lower-lambda.variants.curly]
+[prime.lower-lambda.variants.tailed-turn]
rank = 3
+description = "More curly Greek small Lambda (`λ`), with a tail turns leftward at top and a tail turns right at bottom-right"
+selector."grek/lambda" = "tailedTurnSerifless"
+
+[prime.lower-lambda.variants.curly]
+rank = 4
description = "More curly Greek small Lambda (`λ`), like Iosevka 2.x"
selector."grek/lambda" = "curlySerifless"
[prime.lower-lambda.variants.curly-turn]
-rank = 4
+rank = 5
description = "More curly Greek small Lambda (`λ`), like Iosevka 2.x, with a tail turns leftward"
selector."grek/lambda" = "curlyTurnSerifless"
-[prime.lower-lambda.variants.tailed-turn]
-rank = 5
-description = "More curly Greek small Lambda (`λ`), with a tail turns leftward at top and a tail turns right at bottom-right"
-selector."grek/lambda" = "tailedTurnSerifless"
-
[prime.lower-lambda.variants.curly-tailed-turn]
rank = 6
description = "More curly Greek small Lambda (`λ`), with a tail turns leftward at top, a tail turns right at bottom-right, and curly bottom-left leg"
@@ -4895,31 +4947,31 @@ rank = 1
description = "Greek lower Tau (`τ`) with a tailless shape"
selector."grek/tau" = "tau/tailless"
-[prime.lower-tau.variants.tailed]
+[prime.lower-tau.variants.short-tailed]
rank = 2
+description = "Greek lower Tau (`τ`) with a very short tail"
+selector."grek/tau" = "tau/shortTailed"
+
+[prime.lower-tau.variants.tailed]
+rank = 3
description = "Greek lower Tau (`τ`) with curly tail"
selector."grek/tau" = "tau/tailed"
[prime.lower-tau.variants.flat-tailed]
-rank = 3
+rank = 4
description = "Greek lower Tau (`τ`) with a flat tail"
selector."grek/tau" = "tau/flatTailed"
[prime.lower-tau.variants.diagonal-tailed]
-rank = 4
+rank = 5
description = "Greek lower Tau (`τ`) with a diagonal tail"
selector."grek/tau" = "tau/diagonalTailed"
[prime.lower-tau.variants.semi-tailed]
-rank = 5
+rank = 6
description = "Greek lower Tau (`τ`) with a slightly curly tail"
selector."grek/tau" = "tau/semiTailed"
-[prime.lower-tau.variants.short-tailed]
-rank = 6
-description = "Greek lower Tau (`τ`) with a very short tail"
-selector."grek/tau" = "tau/shortTailed"
-
[prime.lower-chi]
@@ -4948,7 +5000,6 @@ selectorAffix."grek/chi/sansSerif" = "curly"
[prime.lower-chi.variants-buildup.stages.body.semi-chancery-straight]
rank = 3
-nonBreakingVariantAdditionPriority = 100
next = "END"
descriptionAffix = "Semi-chancery shape with straight counter-leg"
selectorAffix."grek/chi" = "semiChanceryStraight"
@@ -4956,7 +5007,6 @@ selectorAffix."grek/chi/sansSerif" = "semiChanceryStraight"
[prime.lower-chi.variants-buildup.stages.body.semi-chancery-curly]
rank = 4
-nonBreakingVariantAdditionPriority = 100
next = "END"
descriptionAffix = "Semi-chancery shape with curly counter-leg"
selectorAffix."grek/chi" = "semiChanceryCurly"
@@ -4964,13 +5014,11 @@ selectorAffix."grek/chi/sansSerif" = "semiChanceryCurly"
[prime.lower-chi.variants-buildup.stages.body.chancery]
rank = 5
-nonBreakingVariantAdditionPriority = 200
next = "END"
descriptionAffix = "Chancery shape"
selectorAffix."grek/chi" = "chancery"
selectorAffix."grek/chi/sansSerif" = "chancery"
-
[prime.lower-chi.variants-buildup.stages.serifs.serifless]
rank = 1
descriptionAffix = "serifs"
@@ -5356,12 +5404,25 @@ sampler = "м"
samplerExplain = "Cyrillic Lower Em"
tagKind = "letter"
+[prime.cyrl-em.variants-buildup.stages.sides."*"]
+next = "middle"
+
+[prime.cyrl-em.variants-buildup.stages.sides.straight]
+rank = 1
+keyAffix = ""
+selectorAffix."cyrl/em" = ""
+
+[prime.cyrl-em.variants-buildup.stages.sides.slanted-sides]
+rank = 2
+descriptionAffix = "slanted sides"
+selectorAffix."cyrl/em" = "slantedSides"
+
[prime.cyrl-em.variants-buildup]
-entry = "middle"
+entry = "sides"
descriptionLeader = "Cyrillic Lower Em (`м`)"
[prime.cyrl-em.variants-buildup.stages.middle."*"]
-next = "sides"
+next = "serifs"
[prime.cyrl-em.variants-buildup.stages.middle.hanging]
rank = 1
@@ -5373,20 +5434,6 @@ rank = 2
descriptionAffix = "middle aligned to baseline"
selectorAffix."cyrl/em" = "flatBottom"
-[prime.cyrl-em.variants-buildup.stages.sides."*"]
-next = "serifs"
-mode = "prepend"
-
-[prime.cyrl-em.variants-buildup.stages.sides.straight]
-rank = 1
-keyAffix = ""
-selectorAffix."cyrl/em" = ""
-
-[prime.cyrl-em.variants-buildup.stages.sides.slanted-sides]
-rank = 2
-descriptionAffix = "slanted sides"
-selectorAffix."cyrl/em" = "slantedSides"
-
[prime.cyrl-em.variants-buildup.stages.serifs.serifless]
rank = 1
descriptionAffix = "serifs"
@@ -5484,7 +5531,6 @@ selectorAffix."cyrl/njeKomi" = "serifedExceptBottomRight"
[prime.cyrl-er]
sampler = "р"
samplerExplain = "Cyrillic Lower Er"
-nonBreakingTagForNewVariantSelector = "VXAA" # REMOVE IN NEXT MAJOR VERSION CHANGE
tagKind = "letter"
[prime.cyrl-er.variants-buildup]
@@ -5605,7 +5651,6 @@ selectorAffix."cyrl/U" = "serifed"
[prime.cyrl-u]
sampler = "у"
samplerExplain = "Cyrillic Lower U"
-nonBreakingTagForNewVariantSelector = "VXAB" # REMOVE IN NEXT MAJOR VERSION CHANGE
tagKind = "letter"
[prime.cyrl-u.variants-buildup]
@@ -5688,7 +5733,6 @@ selectorAffix."cyrl/ef.BGR" = ""
[prime.cyrl-ef.variants-buildup.stages.bowl.split]
rank = 2
-nonBreakingVariantAdditionPriority = 100
descriptionAffix = "split bowl"
selectorAffix."cyrl/ef" = "splitBowl"
selectorAffix."cyrl/ef.BGR" = ""
@@ -5719,14 +5763,12 @@ selectorAffix."cyrl/ef.BGR" = "serifless"
[prime.cyrl-ef.variants-buildup.stages.serifs.top-serifed]
rank = 2
-nonBreakingVariantAdditionPriority = 10
descriptionAffix = "serif at top"
selectorAffix."cyrl/ef" = "topSerifed"
selectorAffix."cyrl/ef.BGR" = "topSerifed"
[prime.cyrl-ef.variants-buildup.stages.serifs.serifed]
rank = 3
-nonBreakingVariantAdditionPriority = 10
descriptionAffix = "serifs at top and bottom"
selectorAffix."cyrl/ef" = "serifed"
selectorAffix."cyrl/ef.BGR" = "serifed"
@@ -5873,56 +5915,63 @@ samplerExplain = "Cyrillic Capital Ya"
tagKind = "letter"
[prime.cyrl-capital-ya.variants-buildup]
-entry = "openness"
+entry = "leg"
descriptionLeader = "Cyrillic Capital Ya (`Я`)"
-[prime.cyrl-capital-ya.variants-buildup.stages.openness."*"]
-next = "leg"
-
-[prime.cyrl-capital-ya.variants-buildup.stages.openness.closed]
-rank = 1
-keyAffix = ""
-selectorAffix."cyrl/Ya" = ""
-
-[prime.cyrl-capital-ya.variants-buildup.stages.openness.open]
-rank = 2
-descriptionAffix = "open contour"
-selectorAffix."cyrl/Ya" = "open"
-
[prime.cyrl-capital-ya.variants-buildup.stages.leg."*"]
-next = "serifs"
-mode = "prepend"
+next = "openness"
[prime.cyrl-capital-ya.variants-buildup.stages.leg.straight]
rank = 1
descriptionAffix = "straight leg"
selectorAffix."cyrl/Ya" = "straight"
+selectorAffix."cyrl/Yae/left" = "straight"
[prime.cyrl-capital-ya.variants-buildup.stages.leg.curly]
rank = 2
descriptionAffix = "curly leg"
selectorAffix."cyrl/Ya" = "curly"
+selectorAffix."cyrl/Yae/left" = "curly"
[prime.cyrl-capital-ya.variants-buildup.stages.leg.standing]
rank = 3
descriptionAffix = "standing leg (like Helvetica)"
selectorAffix."cyrl/Ya" = "standing"
+selectorAffix."cyrl/Yae/left" = "standing"
+
+[prime.cyrl-capital-ya.variants-buildup.stages.openness."*"]
+next = "serifs"
+
+[prime.cyrl-capital-ya.variants-buildup.stages.openness.closed]
+rank = 1
+keyAffix = ""
+selectorAffix."cyrl/Ya" = ""
+selectorAffix."cyrl/Yae/left" = ""
+
+[prime.cyrl-capital-ya.variants-buildup.stages.openness.open]
+rank = 2
+descriptionAffix = "open contour"
+selectorAffix."cyrl/Ya" = "open"
+selectorAffix."cyrl/Yae/left" = "open"
[prime.cyrl-capital-ya.variants-buildup.stages.serifs.serifless]
rank = 1
descriptionAffix = "serifs"
descriptionJoiner = "without"
selectorAffix."cyrl/Ya" = "serifless"
+selectorAffix."cyrl/Yae/left" = "serifless"
[prime.cyrl-capital-ya.variants-buildup.stages.serifs.motion-serifed]
rank = 2
descriptionAffix = "motion serifs at bottom-left"
selectorAffix."cyrl/Ya" = "bottomRightSerifed"
+selectorAffix."cyrl/Yae/left" = "bottomRightSerifed"
[prime.cyrl-capital-ya.variants-buildup.stages.serifs.serifed]
rank = 3
descriptionAffix = "serifs"
selectorAffix."cyrl/Ya" = "serifed"
+selectorAffix."cyrl/Yae/left" = "bottomRightSerifed"
@@ -5932,45 +5981,49 @@ samplerExplain = "Cyrillic Lower Ya"
tagKind = "letter"
[prime.cyrl-ya.variants-buildup]
-entry = "openness"
+entry = "leg"
descriptionLeader = "Cyrillic Lower Ya (`я`)"
-[prime.cyrl-ya.variants-buildup.stages.openness."*"]
-next = "leg"
-
-[prime.cyrl-ya.variants-buildup.stages.openness.closed]
-rank = 1
-groupRrank = 10
-keyAffix = ""
-selectorAffix."cyrl/ya" = ""
-
-[prime.cyrl-ya.variants-buildup.stages.openness.open]
-rank = 2
-groupRrank = 20
-descriptionAffix = "open contour"
-selectorAffix."cyrl/ya" = "open"
-
[prime.cyrl-ya.variants-buildup.stages.leg."*"]
-next = "tails"
-mode = "prepend"
+next = "openness"
[prime.cyrl-ya.variants-buildup.stages.leg.straight]
rank = 1
groupRank = 1
descriptionAffix = "straight leg"
selectorAffix."cyrl/ya" = "straight"
+selectorAffix."cyrl/yae/left" = "straight"
[prime.cyrl-ya.variants-buildup.stages.leg.curly]
rank = 2
groupRank = 2
descriptionAffix = "curly leg"
selectorAffix."cyrl/ya" = "curly"
+selectorAffix."cyrl/yae/left" = "curly"
[prime.cyrl-ya.variants-buildup.stages.leg.standing]
rank = 3
groupRank = 3
descriptionAffix = "standing leg (like Helvetica)"
selectorAffix."cyrl/ya" = "standing"
+selectorAffix."cyrl/yae/left" = "standing"
+
+[prime.cyrl-ya.variants-buildup.stages.openness."*"]
+next = "tails"
+
+[prime.cyrl-ya.variants-buildup.stages.openness.closed]
+rank = 1
+groupRrank = 10
+keyAffix = ""
+selectorAffix."cyrl/ya" = ""
+selectorAffix."cyrl/yae/left" = ""
+
+[prime.cyrl-ya.variants-buildup.stages.openness.open]
+rank = 2
+groupRrank = 20
+descriptionAffix = "open contour"
+selectorAffix."cyrl/ya" = "open"
+selectorAffix."cyrl/yae/left" = "open"
[prime.cyrl-ya.variants-buildup.stages.tails."*"]
next = "serifs"
@@ -5979,27 +6032,32 @@ next = "serifs"
rank = 1
keyAffix = ""
selectorAffix."cyrl/ya" = ""
+selectorAffix."cyrl/yae/left" = ""
[prime.cyrl-ya.variants-buildup.stages.tails.tailed]
rank = 2
descriptionAffix = "tail"
selectorAffix."cyrl/ya" = "tailed"
+selectorAffix."cyrl/yae/left" = ""
[prime.cyrl-ya.variants-buildup.stages.serifs.serifless]
rank = 1
descriptionAffix = "serifs"
descriptionJoiner = "without"
selectorAffix."cyrl/ya" = "serifless"
+selectorAffix."cyrl/yae/left" = "serifless"
[prime.cyrl-ya.variants-buildup.stages.serifs.motion-serifed]
rank = 2
descriptionAffix = "motion serifs at bottom-left"
selectorAffix."cyrl/ya" = "bottomRightSerifed"
+selectorAffix."cyrl/yae/left" = "bottomRightSerifed"
[prime.cyrl-ya.variants-buildup.stages.serifs.serifed]
rank = 3
descriptionAffix = "serifs"
selectorAffix."cyrl/ya" = "smallCyrl"
+selectorAffix."cyrl/yae/left" = "bottomRightSerifed"
@@ -6326,7 +6384,6 @@ selectorAffix.zhuangToneFive = "arched"
[prime.five.variants-buildup.stages.middle.flat]
rank = 2
-nonBreakingVariantAdditionPriority = 100
descriptionAffix = "flat middle part"
selectorAffix.five = "flat"
selectorAffix.zhuangToneFive = "flat"
@@ -6600,7 +6657,7 @@ tagKind = "symbol"
[prime.underscore.variants.above-baseline]
rank = 1
-description = "Extra-high `_`, placed right below baseline"
+description = "Extra-high `_`, placed right above baseline"
selector.underscore = "aboveBaseline"
[prime.underscore.variants.high]
@@ -6636,6 +6693,43 @@ selector.asciiCaret = "low"
+[prime.ascii-grave]
+sampler = "`"
+tagKind = "symbol"
+
+[prime.ascii-grave.variants.straight]
+rank = 1
+description = "Show ASCII grave (`` ` ``) as short diagonal straight bar."
+selector.asciiGrave = "straight"
+
+[prime.ascii-grave.variants.raised-inverse-comma]
+rank = 2
+description = "Show ASCII grave (`` ` ``) as raised comma."
+selector.asciiGrave = "raisedInverseComma"
+
+[prime.ascii-grave.variants.raised-turn-comma]
+rank = 3
+description = "Show ASCII grave (`` ` ``) as raised turned comma, identical to curly open single quote symbols (U+2018)."
+selector.asciiGrave = "raisedTurnComma"
+
+
+
+[prime.ascii-single-quote]
+sampler = "'"
+tagKind = "symbol"
+
+[prime.ascii-single-quote.variants.straight]
+rank = 1
+description = 'Show ASCII quote (`"`) as short vertical straight bar.'
+selector.asciiSingleQuote = "straight"
+
+[prime.ascii-single-quote.variants.raised-comma]
+rank = 2
+description = 'Show ASCII quote (`"`) as raised comma.'
+selector.asciiSingleQuote = "raisedComma"
+
+
+
[prime.paren]
sampler = "( )"
tagKind = "symbol"
@@ -6792,6 +6886,7 @@ description = "Ampersand (`&`) drawn like a ligature of Ɛ and t with tail"
selector.ampersand = "etTailed"
+
[prime.at]
sampler = "@"
tagKind = "symbol"
@@ -6880,6 +6975,42 @@ selector.dollar = "interruptedCap"
+[prime.cent]
+sampler = "¢"
+tagKind = "symbol"
+
+[prime.cent.variants.open]
+rank = 1
+description = "Cent sign (`¢`) with open contour"
+selector.cent = "open"
+
+[prime.cent.variants.through]
+rank = 2
+description = "Cent sign (`¢`) with vertical bar all through the `c` part"
+selector.cent = "through"
+
+[prime.cent.variants.bar-interrupted]
+rank = 3
+description = "Cent sign (`¢`) with vertical bar breaks at center"
+selector.cent = "interrupted"
+
+[prime.cent.variants.open-cap]
+rank = 4
+description = "Cent sign (`¢`) with open contour, sized not exceeding baseline and ascender"
+selector.cent = "openCap"
+
+[prime.cent.variants.through-cap]
+rank = 5
+description = "Cent sign (`¢`) with vertical bar all through the `c` part, sized not exceeding baseline and ascender"
+selector.cent = "throughCap"
+
+[prime.cent.variants.bar-interrupted-cap]
+rank = 6
+description = "Cent sign (`¢`) with vertical bar breaks at center, sized not exceeding baseline and ascender"
+selector.cent = "interruptedCap"
+
+
+
[prime.percent]
sampler = "%"
tagKind = "symbol"
@@ -6931,43 +7062,6 @@ selector."bar.slanted" = "forceUpright"
-[prime.ascii-single-quote]
-sampler = "'"
-tagKind = "symbol"
-
-[prime.ascii-single-quote.variants.straight]
-rank = 1
-description = 'Show ASCII quote (`"`) as short vertical straight bar.'
-selector.asciiSingleQuote = "straight"
-
-[prime.ascii-single-quote.variants.raised-comma]
-rank = 2
-description = 'Show ASCII quote (`"`) as raised comma.'
-selector.asciiSingleQuote = "raisedComma"
-
-
-
-[prime.ascii-grave]
-sampler = "`"
-tagKind = "symbol"
-
-[prime.ascii-grave.variants.straight]
-rank = 1
-description = "Show ASCII grave (`` ` ``) as short diagonal straight bar."
-selector.asciiGrave = "straight"
-
-[prime.ascii-grave.variants.raised-inverse-comma]
-rank = 2
-description = "Show ASCII grave (`` ` ``) as raised comma."
-selector.asciiGrave = "raisedInverseComma"
-
-[prime.ascii-grave.variants.raised-turn-comma]
-rank = 3
-description = "Show ASCII grave (`` ` ``) as raised turned comma, identical to curly open single quote symbols (U+2018)."
-selector.asciiGrave = "raisedTurnComma"
-
-
-
[prime.question]
sampler = "?"
tagKind = "symbol"
@@ -7007,42 +7101,6 @@ selector.revPilcrow = "low"
-[prime.cent]
-sampler = "¢"
-tagKind = "symbol"
-
-[prime.cent.variants.open]
-rank = 1
-description = "Cent sign (`¢`) with open contour"
-selector.cent = "open"
-
-[prime.cent.variants.through]
-rank = 2
-description = "Cent sign (`¢`) with vertical bar all through the `c` part"
-selector.cent = "through"
-
-[prime.cent.variants.bar-interrupted]
-rank = 3
-description = "Cent sign (`¢`) with vertical bar breaks at center"
-selector.cent = "interrupted"
-
-[prime.cent.variants.open-cap]
-rank = 4
-description = "Cent sign (`¢`) with open contour, sized not exceeding baseline and ascender"
-selector.cent = "openCap"
-
-[prime.cent.variants.through-cap]
-rank = 5
-description = "Cent sign (`¢`) with vertical bar all through the `c` part, sized not exceeding baseline and ascender"
-selector.cent = "throughCap"
-
-[prime.cent.variants.bar-interrupted-cap]
-rank = 6
-description = "Cent sign (`¢`) with vertical bar breaks at center, sized not exceeding baseline and ascender"
-selector.cent = "interruptedCap"
-
-
-
[prime.partial-derivative]
sampler = "∂"
samplerExplain = "Partial derivative symbol"
diff --git a/private-build-plans.sample.toml b/private-build-plans.sample.toml
index cc0bfd4a31..03ddd92fb2 100644
--- a/private-build-plans.sample.toml
+++ b/private-build-plans.sample.toml
@@ -1,32 +1,32 @@
-### See https://github.com/be5invis/Iosevka/blob/master/doc/custom-build.md for comprehensive
+### See https://github.com/be5invis/Iosevka/blob/master/doc/custom-build.md for comprehensive
### documentation of the options in this file
-[buildPlans.iosevka-custom] # is your plan name
+[buildPlans.IosevkaCustom] # is your plan name
family = "Iosevka Custom" # Font menu family name
spacing = "normal" # Optional; Values: `normal`, `term`, `fontconfig-mono`, or `fixed`
serifs = "sans" # Optional; Values: `sans` or `slab`
-export-glyph-names = false # Set this to true for ligature support in Kitty (increased file size)
+exportGlyphNames = false # Set this to true for ligature support in Kitty (increased file size)
-webfont-formats = ['ttf', 'woff2']
+webfontFormats = ['ttf', 'woff2']
###################################################################################################
# Configure variants
# Optional; Whether to inherit a `ss##` variant
-[buildPlans.iosevka-custom.variants]
+[buildPlans.IosevkaCustom.variants]
inherits = "ss01"
# Optional; Configure single character's variant
-[buildPlans.iosevka-custom.variants.design]
+[buildPlans.IosevkaCustom.variants.design]
g = 'single-storey-serifless'
# Optional; Configure single character's variant for Upright and Oblique; Overrides [design]
-[buildPlans.iosevka-custom.variants.upright]
+[buildPlans.IosevkaCustom.variants.upright]
i = 'zshaped'
l = 'zshaped'
# Optional; Configure single character's variant for Italic only; Overrides [design]
-[buildPlans.iosevka-custom.variants.italic]
+[buildPlans.IosevkaCustom.variants.italic]
i = 'tailed-serifed'
l = 'tailed-serifed'
@@ -36,7 +36,7 @@ l = 'tailed-serifed'
###################################################################################################
# Configure ligations
-[buildPlans.iosevka-custom.ligations]
+[buildPlans.IosevkaCustom.ligations]
inherits = "default-calt" # Optional; inherits an existing ligation set
disables = [] # Optional; disable specific ligation groups, overrides inherited ligation set
enables = [] # Optional; enable specific ligation groups, overrides inherited ligation set
@@ -53,17 +53,17 @@ enables = [] # Optional; enable specific ligation groups, overrid
# and "shape" properly only supports number between 100 and 900 (inclusive).
# If you decide to use custom weights you have to define all the weights you
# plan to use otherwise they will not be built.
-[buildPlans.iosevka-custom.weights.regular]
+[buildPlans.IosevkaCustom.weights.Regular]
shape = 400 # Weight for glyph shapes.
menu = 400 # Weight for the font's names.
css = 400 # Weight for webfont CSS.
-[buildPlans.iosevka-custom.weights.book]
+[buildPlans.IosevkaCustom.weights.Book]
shape = 450
menu = 450 # Use 450 here to name the font's weight "Book"
css = 450
-[buildPlans.iosevka-custom.weights.bold]
+[buildPlans.IosevkaCustom.weights.Bold]
shape = 700
menu = 700
css = 700
@@ -75,19 +75,19 @@ css = 700
# Override default building slope sets
# When this section is absent, all slopes would be built.
-[buildPlans.iosevka-custom.slopes.upright]
+[buildPlans.IosevkaCustom.slopes.Upright]
angle = 0 # Angle in degrees. Valid range [0, 15]
shape = "upright" # Slope grade used for shape selection. `upright` | `oblique` | `italic`
menu = "upright" # Slope grade used for naming. `upright` | `oblique` | `italic`
css = "normal" # Slope grade used for webfont CSS. `normal` | `oblique` | `italic`
-[buildPlans.iosevka-custom.slopes.oblique]
+[buildPlans.IosevkaCustom.slopes.Oblique]
angle = 9.4
shape = "oblique"
menu = "oblique"
css = "oblique"
-[buildPlans.iosevka-custom.slopes.italic]
+[buildPlans.IosevkaCustom.slopes.Italic]
angle = 9.4
shape = "italic"
menu = "italic"
@@ -106,12 +106,12 @@ css = "italic"
# If you decide to use custom widths you have to define all the widths you plan to use,
# otherwise they will not be built.
-[buildPlans.iosevka-custom.widths.normal]
+[buildPlans.IosevkaCustom.widths.Normal]
shape = 500 # Unit Width, measured in 1/1000 em.
menu = 5 # Width grade for the font's names.
css = "normal" # "font-stretch' property of webfont CSS.
-[buildPlans.iosevka-custom.widths.extended]
+[buildPlans.IosevkaCustom.widths.Extended]
shape = 600
menu = 7
css = "expanded"
@@ -124,7 +124,7 @@ css = "expanded"
# Specify character ranges in the section below to exclude certain characters from the font being
# built. Remove this section when this feature is not needed.
-[buildPlans.iosevka-custom.exclude-chars]
+[buildPlans.IosevkaCustom.excludeChars]
ranges = [[10003, 10008]]
# End character exclusion
@@ -137,7 +137,7 @@ ranges = [[10003, 10008]]
# following section to build PUA characters that are generated from the OpenType ligatures.
# Remove this section when compatibility ligatures are not needed.
-[[buildPlans.iosevka-custom.compatibility-ligatures]]
+[[buildPlans.IosevkaCustom.compatibilityLigatures]]
unicode = 57600 # 0xE100
featureTag = 'calt'
sequence = '<*>'
@@ -150,7 +150,7 @@ sequence = '<*>'
# Certain metrics like line height (leading) could be overridden in your build plan file.
# Edit the values to change the metrics. Remove this section when overriding is not needed.
-[buildPlans.iosevka-custom.metric-override]
+[buildPlans.IosevkaCustom.metricOverride]
leading = 1250
winMetricAscenderPad = 0
winMetricDescenderPad = 0
diff --git a/utility/export-data/coverage-export/block-data.mjs b/utility/export-data/coverage-export/block-data.mjs
index 7434d4ce8d..9eac34df5d 100644
--- a/utility/export-data/coverage-export/block-data.mjs
+++ b/utility/export-data/coverage-export/block-data.mjs
@@ -3,7 +3,8 @@ import UnicodeDataIndex from "@unicode/unicode-15.0.0";
export async function collectBlockData() {
const BlockData = [
[[0xe0a0, 0xe0df], "Private Use Area — Powerline"],
- [[0xee00, 0xee3f], "Private Use Area — Progress Bar"],
+ [[0xee00, 0xee0f], "Private Use Area — Progress Bar"],
+ [[0xef10, 0xef1f], "Private Use Area — Iosevka Private Dingbats"]
];
for (const id of UnicodeDataIndex.Block) {
diff --git a/utility/generate-release-note/package-list.mjs b/utility/generate-release-note/package-list.mjs
index f8a07a4bd4..950affe6e0 100644
--- a/utility/generate-release-note/package-list.mjs
+++ b/utility/generate-release-note/package-list.mjs
@@ -34,19 +34,28 @@ async function GeneratePackageList(argv, out) {
for (let [groupID, gr] of Object.entries(pkgShapesData)) {
const prime = gr.subGroups[groupID];
const familyName = buildName("\u00a0", ...prime.family.split(" "));
- const sTtcName = buildName("-", "super-ttc", groupID, argv.version);
- const ttcName = buildName("-", "ttc", groupID, argv.version);
- const sTtcLink = `${DownloadLinkPrefix}/${sTtcName}.zip`;
- const ttcLink = `${DownloadLinkPrefix}/${ttcName}.zip`;
+ const sTtcName = buildName("-", "SuperTTC", groupID, argv.version);
+ const ttcName = buildName("-", "PkgTTC", groupID, argv.version);
const proportionPrefix = gr.quasiProportional ? "Quasi-proportional" : "Monospace";
const desc = `${proportionPrefix}, ${prime.desc} `;
const img = ImgX(`${imagePrefix}/${groupID}`);
+
+ let ttcCells = [` `];
+ const hasSpacings = Object.entries(gr.subGroups).length > 1;
+ if (hasSpacings) {
+ const sTtcLink = `${DownloadLinkPrefix}/${sTtcName}.zip`;
+ const ttcLink = `${DownloadLinkPrefix}/${ttcName}.zip`;
+ ttcCells = [
+ `Super\u00A0TTC `,
+ `TTC `,
+ ` `
+ ];
+ }
+
out.log(
``,
`📦 ${familyName} — ${desc} `,
- `Super\u00A0TTC `,
- `TTC `,
- ` `,
+ ...ttcCells,
` `
);
out.log(
@@ -69,17 +78,19 @@ async function GeneratePackageList(argv, out) {
return `${label} `;
};
const leader = " " + (subGroupID === lastSubGroupID ? "└" : "├");
+ const superTtcPrefix = hasSpacings ? "SuperTTC-SGr" : "SuperTTC";
+ const ttcPrefix = hasSpacings ? "PkgTTC-SGr" : "PkgTTC";
out.log(
``,
`${leader} ${noBreak(subGr.family)} `,
`${spacingDesc} `,
`${flag(ligation)} `,
- `${createLink("Super\u00A0TTC", "super-ttc-sgr")} `,
- `${createLink("TTC", "ttc-sgr")} `,
- `${createLink("TTF", "ttf")} ` +
- `(${createLink("Unhinted", "ttf-unhinted")}) `,
- `${createLink("WebFont", "webfont")} ` +
- `(${createLink("Unhinted", "webfont-unhinted")}) `,
+ `${createLink("Super\u00A0TTC", superTtcPrefix)} `,
+ `${createLink("TTC", ttcPrefix)} `,
+ `${createLink("TTF", "PkgTTF")} ` +
+ `(${createLink("Unhinted", "PkgTTF-Unhinted")}) `,
+ `${createLink("WebFont", "PkgWebFont")} ` +
+ `(${createLink("Unhinted", "PkgWebFont-Unhinted")}) `,
` `
);
}
diff --git a/utility/generate-samples/index.mjs b/utility/generate-samples/index.mjs
index c493b48ee8..9f72048146 100644
--- a/utility/generate-samples/index.mjs
+++ b/utility/generate-samples/index.mjs
@@ -42,7 +42,7 @@ async function main(argv) {
const ligationData = await parseLigationData();
const tasks = new Generator(
argv.outputDir,
- argv.fontGroups.map(fg => path.resolve(process.cwd(), "dist", fg, "ttf", "*.ttf"))
+ argv.fontGroups.map(fg => path.resolve(process.cwd(), "dist", fg, "TTF", "*.ttf"))
);
// Common
diff --git a/utility/generate-samples/templates/matrix.mjs b/utility/generate-samples/templates/matrix.mjs
index f8ec463add..e3d78a3464 100644
--- a/utility/generate-samples/templates/matrix.mjs
+++ b/utility/generate-samples/templates/matrix.mjs
@@ -7,6 +7,7 @@ export default (function (args) {
const elementHeight = 1.5 * EM;
const canvasWidth = 30 * EM;
const canvasHeight = 12 * EM;
+ const sigilHeight = 2 * EM;
const lineConfig = [
[-(1 / 4), "Iosevka", "normal"],
[+(1 / 4), "Iosevka Slab", "normal"],
@@ -41,5 +42,26 @@ export default (function (args) {
});
}
}
- return { width: canvasWidth, height: canvasHeight, frames };
+
+ // Add the sigil
+ frames.push({
+ left: 0,
+ top: canvasHeight,
+ right: canvasWidth,
+ bottom: canvasHeight + sigilHeight,
+ "horizontal-align": "center",
+ "vertical-align": "center",
+ contents: [
+ {
+ "font-family": "Iosevka",
+ "font-weight": 100,
+ "font-style": "normal",
+ "font-size": 3 * EM,
+ color: theme.sigil
+ },
+ "\uEF10"
+ ]
+ });
+
+ return { width: canvasWidth, height: canvasHeight + sigilHeight, frames };
});
diff --git a/utility/generate-samples/themes/index.mjs b/utility/generate-samples/themes/index.mjs
index 9f2a5ad62c..1118b1f7b2 100644
--- a/utility/generate-samples/themes/index.mjs
+++ b/utility/generate-samples/themes/index.mjs
@@ -2,11 +2,13 @@ export const light = {
body: "#20242E",
dimmed: "#20242E40",
stress: "#048FBF",
+ sigil: "#974caf",
title: "#8757AD"
};
export const dark = {
body: "#DEE4E3",
dimmed: "#DEE4E340",
stress: "#03AEE9",
+ sigil: "#c49ed1",
title: "#B77FDB"
};
diff --git a/utility/make-webfont-css.mjs b/utility/make-webfont-css.mjs
index 1b011282ea..dd498faf45 100644
--- a/utility/make-webfont-css.mjs
+++ b/utility/make-webfont-css.mjs
@@ -1,8 +1,8 @@
import fs from "fs";
const WebfontFormatMap = new Map([
- ["woff2", "woff2"],
- ["ttf", "truetype"]
+ ["WOFF2", "woff2"],
+ ["TTF", "truetype"]
]);
export default (function (output, family, hs, formats, unhinted) {
if (!formats) {
diff --git a/verdafile.mjs b/verdafile.mjs
index daefd1578e..6d0cc03e23 100644
--- a/verdafile.mjs
+++ b/verdafile.mjs
@@ -35,14 +35,14 @@ const MAKE_TTC = ["node", "node_modules/otb-ttc-bundle/bin/otb-ttc-bundle"];
const SEVEN_ZIP = process.env.SEVEN_ZIP_PATH || "7z";
const TTFAUTOHINT = process.env.TTFAUTOHINT_PATH || "ttfautohint";
-const defaultWebFontFormats = ["woff2", "ttf"];
-const webfontFormatsFast = ["ttf"];
-const webfontFormatsPages = ["woff2"];
+const defaultWebFontFormats = ["WOFF2", "TTF"];
+const webfontFormatsFast = ["TTF"];
+const webfontFormatsPages = ["WOFF2"];
-const WIDTH_NORMAL = "normal";
-const WEIGHT_NORMAL = "regular";
-const SLOPE_NORMAL = "upright";
-const DEFAULT_SUBFAMILY = "regular";
+const WIDTH_NORMAL = "Normal";
+const WEIGHT_NORMAL = "Regular";
+const SLOPE_NORMAL = "Upright";
+const DEFAULT_SUBFAMILY = "Regular";
const BUILD_PLANS = "build-plans.toml";
const PRIVATE_BUILD_PLANS = "private-build-plans.toml";
@@ -134,8 +134,8 @@ const BuildPlans = computed("metadata:build-plans", async target => {
const returnBuildPlans = {};
for (const prefix in rawBuildPlans) {
const bp = { ...rawBuildPlans[prefix] };
- if (!bp.family) fail(`Build plan for ${prefix} does not have a family name. Exit.`);
- bp.webfontFormats = bp["webfont-formats"] || defaultWebFontFormats;
+ validateBuildPlan(prefix, bp);
+ bp.webfontFormats = bp.webfontFormats || defaultWebFontFormats;
bp.targets = [];
returnBuildPlans[prefix] = bp;
}
@@ -170,7 +170,7 @@ const BuildPlans = computed("metadata:build-plans", async target => {
function linkSpacingDerivableBuildPlans(bps) {
for (const pfxTo in bps) {
const bpTo = bps[pfxTo];
- if (blockSpacingDerivation(bpTo)) continue;
+ if (blockSpacingDerivationTo(bpTo)) continue;
if (!isDeriveToSpacing(bpTo.spacing)) continue;
for (const pfxFrom in bps) {
const bpFrom = bps[pfxFrom];
@@ -180,8 +180,8 @@ function linkSpacingDerivableBuildPlans(bps) {
}
}
}
-function blockSpacingDerivation(bp) {
- return !!bp["compatibility-ligatures"];
+function blockSpacingDerivationTo(bp) {
+ return !!bp.compatibilityLigatures;
}
function isDeriveToSpacing(spacing) {
return spacing === "term" || spacing === "fontconfig-mono" || spacing === "fixed";
@@ -260,10 +260,10 @@ const FontInfoOf = computed.group("metadata:font-info-of", async (target, fileNa
derivingVariants: bp.derivingVariants,
buildCharMap: bp.buildCharMap,
featureControl: {
- noCvSs: bp["no-cv-ss"] || false,
- noLigation: bp["no-ligation"] || false,
- exportGlyphNames: bp["export-glyph-names"] || false,
- buildTexture: bp["build-texture-feature"] || false
+ noCvSs: bp.noCvSs || false,
+ noLigation: bp.noLigation || false,
+ exportGlyphNames: bp.exportGlyphNames || false,
+ buildTextureFeature: bp.buildTextureFeature || false
},
// Ligations
ligations: bp.ligations || null,
@@ -290,14 +290,17 @@ const FontInfoOf = computed.group("metadata:font-info-of", async (target, fileNa
stretch: sfi.cssStretch,
style: sfi.cssStyle
},
+ // Hinting
hintParams: bp.hintParams || [],
hintReference:
- !bp["metric-override"] && hintReferenceSuffix !== fi0.suffix
+ !bp.metricOverride && hintReferenceSuffix !== fi0.suffix
? makeFileName(fi0.prefix, hintReferenceSuffix)
: null,
- compatibilityLigatures: bp["compatibility-ligatures"] || null,
- metricOverride: bp["metric-override"] || null,
- excludedCharRanges: bp["exclude-chars"]?.ranges,
+
+ // Other parameters
+ compatibilityLigatures: bp.compatibilityLigatures || null,
+ metricOverride: bp.metricOverride || null,
+ excludedCharRanges: bp.excludeChars?.ranges,
// Spacing derivation -- creating faster build for spacing variants
spacingDerive
@@ -389,12 +392,12 @@ function whyBuildPlanIsnNotThere(gid) {
const ageKey = uuid.v4();
const DistUnhintedTTF = file.make(
- (gr, fn) => `${DIST}/${gr}/ttf-unhinted/${fn}.ttf`,
+ (gr, fn) => `${DIST}/${gr}/TTF-Unhinted/${fn}.ttf`,
async (target, out, gr, fn) => {
await target.need(Scripts, Parameters, Dependencies, de(out.dir));
const [fi] = await target.need(FontInfoOf(fn));
- const charMapDir = `${BUILD}/ttf/${gr}`;
+ const charMapDir = `${BUILD}/TTF/${gr}`;
const charMapPath = `${charMapDir}/${fn}.charmap.mpz`;
const ttfaControlsPath = `${charMapDir}/${fn}.ttfa.txt`;
@@ -459,21 +462,21 @@ const DistUnhintedTTF = file.make(
);
const BuildCM = file.make(
- (gr, f) => `${BUILD}/ttf/${gr}/${f}.charmap.mpz`,
+ (gr, f) => `${BUILD}/TTF/${gr}/${f}.charmap.mpz`,
async (target, output, gr, f) => {
await target.need(DistUnhintedTTF(gr, f));
}
);
const BuildTtfaControls = file.make(
- (gr, f) => `${BUILD}/ttf/${gr}/${f}.ttfa.txt`,
+ (gr, f) => `${BUILD}/TTF/${gr}/${f}.ttfa.txt`,
async (target, output, gr, f) => {
await target.need(DistUnhintedTTF(gr, f));
}
);
const DistHintedTTF = file.make(
- (gr, fn) => `${DIST}/${gr}/ttf/${fn}.ttf`,
+ (gr, fn) => `${DIST}/${gr}/TTF/${fn}.ttf`,
async (target, out, gr, fn) => {
const [fi, hint] = await target.need(
FontInfoOf(fn),
@@ -485,7 +488,7 @@ const DistHintedTTF = file.make(
// normally-spaced variant.
const spD = fi.spacingDerive;
- const charMapDir = `${BUILD}/ttf/${gr}`;
+ const charMapDir = `${BUILD}/TTF/${gr}`;
const noGcTtfPath = `${charMapDir}/${fn}.no-gc.hinted.ttf`;
const [deriveFrom] = await target.need(
@@ -512,7 +515,7 @@ const DistHintedTTF = file.make(
);
const BuildNoGcTtfImpl = file.make(
- (gr, f) => `${BUILD}/ttf/${gr}/${f}.no-gc.hinted.ttf`,
+ (gr, f) => `${BUILD}/TTF/${gr}/${f}.no-gc.hinted.ttf`,
async (target, output, gr, f) => {
await target.need(DistHintedTTF(gr, f));
}
@@ -533,10 +536,10 @@ const BuildNoGcTtf = task.make(
);
function formatSuffix(fmt, unhinted) {
- return fmt + (unhinted ? "-unhinted" : "");
+ return fmt + (unhinted ? "-Unhinted" : "");
}
const DistWoff2 = file.make(
- (gr, fn, unhinted) => `${DIST}/${gr}/${formatSuffix("woff2", unhinted)}/${fn}.woff2`,
+ (gr, fn, unhinted) => `${DIST}/${gr}/${formatSuffix("WOFF2", unhinted)}/${fn}.woff2`,
async (target, out, group, f, unhinted) => {
const Ctor = unhinted ? DistUnhintedTTF : DistHintedTTF;
@@ -598,7 +601,7 @@ async function createWebFontCssImpl(target, output, gr, formats, unhinted) {
// Content files
const GroupTtfsImpl = task.make(
- (gr, unhinted) => `group-${formatSuffix("ttf-impl", unhinted)}::${gr}`,
+ (gr, unhinted) => `group-${formatSuffix("TTFImpl", unhinted)}::${gr}`,
async (target, gr, unhinted) => {
const Ctor = unhinted ? DistUnhintedTTF : DistHintedTTF;
const [ts] = await target.need(GroupFontsOf(gr));
@@ -607,7 +610,7 @@ const GroupTtfsImpl = task.make(
}
);
const GroupWoff2Impl = task.make(
- (gr, unhinted) => `group-${formatSuffix("woff2-impl", unhinted)}::${gr}`,
+ (gr, unhinted) => `group-${formatSuffix("WOFF2Impl", unhinted)}::${gr}`,
async (target, gr, unhinted) => {
const [ts] = await target.need(GroupFontsOf(gr));
await target.need(ts.map(tn => DistWoff2(gr, tn, unhinted)));
@@ -615,16 +618,16 @@ const GroupWoff2Impl = task.make(
}
);
const GroupWebFontsImpl = task.make(
- (gr, unhinted) => `group-${formatSuffix("webfont-impl", unhinted)}::${gr}`,
+ (gr, unhinted) => `group-${formatSuffix("WebFontImpl", unhinted)}::${gr}`,
async (target, gr, unhinted) => {
const [bp] = await target.need(BuildPlanOf(gr));
const groupsNeeded = [];
for (const ext of bp.webfontFormats) {
switch (ext) {
- case "ttf":
+ case "TTF":
groupsNeeded.push(GroupTtfsImpl(gr, unhinted));
break;
- case "woff2":
+ case "WOFF2":
groupsNeeded.push(GroupWoff2Impl(gr, unhinted));
break;
}
@@ -643,6 +646,7 @@ const CollectPlans = computed(`metadata:collect-plans`, async target => {
return await getCollectPlans(target, rawPlans.collectPlans);
});
+// eslint-disable-next-line complexity
async function getCollectPlans(target, rawCollectPlans) {
const plans = {};
@@ -654,8 +658,11 @@ async function getCollectPlans(target, rawCollectPlans) {
}
const amendedRawCollectPlans = { ...rawCollectPlans };
- for (const gr of allCollectableGroups) {
- amendedRawCollectPlans[`sgr-` + gr] = { release: true, isAmended: true, from: [gr] };
+ out: for (const gr of allCollectableGroups) {
+ for (const [k, cp] of Object.entries(rawCollectPlans)) {
+ if (cp.from.length === 1 && cp.from[0] === gr) continue out;
+ }
+ amendedRawCollectPlans[`SGr-` + gr] = { release: true, isAmended: true, from: [gr] };
}
for (const collectPrefix in amendedRawCollectPlans) {
@@ -780,7 +787,7 @@ async function buildGlyphSharingTtc(target, parts, out) {
// Collection Archives
const TtcZip = file.make(
- (cgr, version) => `${ARCHIVE_DIR}/ttc-${cgr}-${version}.zip`,
+ (cgr, version) => `${ARCHIVE_DIR}/PkgTTC-${cgr}-${version}.zip`,
async (target, out, cgr) => {
const [cPlan] = await target.need(CollectPlans, de`${out.dir}`);
const ttcFiles = Array.from(Object.keys(cPlan[cgr].ttcComposition));
@@ -789,7 +796,7 @@ const TtcZip = file.make(
}
);
const SuperTtcZip = file.make(
- (cgr, version) => `${ARCHIVE_DIR}/super-ttc-${cgr}-${version}.zip`,
+ (cgr, version) => `${ARCHIVE_DIR}/SuperTTC-${cgr}-${version}.zip`,
async (target, out, cgr) => {
await target.need(de`${out.dir}`, CollectedSuperTtcFile(cgr));
await CreateGroupArchiveFile(DIST_SUPER_TTC, out, `${cgr}.ttc`);
@@ -799,12 +806,12 @@ const SuperTtcZip = file.make(
// Single-group Archives
const GroupTtfZip = file.make(
(gr, version, unhinted) =>
- `${ARCHIVE_DIR}/${formatSuffix("ttf", unhinted)}-${gr}-${version}.zip`,
+ `${ARCHIVE_DIR}/${formatSuffix("PkgTTF", unhinted)}-${gr}-${version}.zip`,
async (target, out, gr, _version_, unhinted) => {
await target.need(de`${out.dir}`);
await target.need(GroupTtfsImpl(gr, unhinted));
await CreateGroupArchiveFile(
- `${DIST}/${gr}/${formatSuffix("ttf", unhinted)}`,
+ `${DIST}/${gr}/${formatSuffix("TTF", unhinted)}`,
out,
"*.ttf"
);
@@ -812,7 +819,7 @@ const GroupTtfZip = file.make(
);
const GroupWebZip = file.make(
(gr, version, unhinted) =>
- `${ARCHIVE_DIR}/${formatSuffix("webfont", unhinted)}-${gr}-${version}.zip`,
+ `${ARCHIVE_DIR}/${formatSuffix("PkgWebFont", unhinted)}-${gr}-${version}.zip`,
async (target, out, gr, _version_, unhinted) => {
const [plan] = await target.need(BuildPlanOf(gr));
await target.need(de`${out.dir}`);
@@ -848,14 +855,14 @@ async function CreateGroupArchiveFile(dir, out, ...files) {
const Pages = task(`pages`, async t => {
await t.need(
PagesDataExport,
- PagesFontExport`iosevka`,
- PagesFontExport`iosevka-slab`,
- PagesFontExport`iosevka-aile`,
- PagesFontExport`iosevka-etoile`,
- PagesFontExport`iosevka-QP`,
- PagesFontExport`iosevka-QP-slab`,
- PagesFontExport`iosevka-QPE`,
- PagesFontExport`iosevka-QPE-slab`
+ PagesFontExport`Iosevka`,
+ PagesFontExport`IosevkaSlab`,
+ PagesFontExport`IosevkaAile`,
+ PagesFontExport`IosevkaEtoile`,
+ PagesFontExport`IosevkaQp`,
+ PagesFontExport`IosevkaQpSlab`,
+ PagesFontExport`IosevkaQpe`,
+ PagesFontExport`IosevkaQpeSlab`
);
});
@@ -868,9 +875,9 @@ const PagesDir = oracle(`pages-dir-path`, async t => {
const PagesDataExport = task(`pages:data-export`, async t => {
const [pagesDir] = await t.need(PagesDir, Version, Parameters, UtilScripts);
const [cm, cmi, cmo] = await t.need(
- BuildCM("iosevka", "iosevka-regular"),
- BuildCM("iosevka", "iosevka-italic"),
- BuildCM("iosevka", "iosevka-oblique")
+ BuildCM("Iosevka", "Iosevka-Regular"),
+ BuildCM("Iosevka", "Iosevka-Italic"),
+ BuildCM("Iosevka", "Iosevka-Oblique")
);
await node(`utility/export-tokenized-sample-code.mjs`, {
output: Path.resolve(pagesDir, "shared/tokenized-sample-code/alphabet.txt.json")
@@ -888,18 +895,18 @@ const PagesFontExport = task.group(`pages:font-export`, async (target, gr) => {
target.is.volatile();
const [pagesDir] = await target.need(PagesDir);
if (!pagesDir) return;
- const outDir = Path.resolve(pagesDir, "shared/fonts", gr);
+ const outDir = Path.resolve(pagesDir, "shared/fonts/imports", gr);
await target.need(GroupWebFontsImpl(gr, false), de(outDir));
- await cp(`${DIST}/${gr}/woff2`, Path.resolve(outDir, "woff2"));
+ await cp(`${DIST}/${gr}/WOFF2`, Path.resolve(outDir, "WOFF2"));
await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsPages);
- await rm(Path.resolve(outDir, "ttf"));
+ await rm(Path.resolve(outDir, "TTF"));
});
const PagesFastFontExport = task.group(`pages:fast-font-export`, async (target, gr) => {
target.is.volatile();
const [pagesDir] = await target.need(PagesDir);
if (!pagesDir) return;
- const outDir = Path.resolve(pagesDir, "shared/fonts", gr);
+ const outDir = Path.resolve(pagesDir, "shared/fonts/imports", gr);
await target.need(GroupTtfsImpl(gr, true), de(outDir));
// Next.js 12 has some problem about refreshing fonts, so write an empty CSS first
@@ -907,9 +914,9 @@ const PagesFastFontExport = task.group(`pages:fast-font-export`, async (target,
await Delay(2000);
// Then do the copy
- await cp(`${DIST}/${gr}/ttf-unhinted`, Path.resolve(outDir, "ttf"));
+ await cp(`${DIST}/${gr}/TTF-Unhinted`, Path.resolve(outDir, "TTF"));
await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsFast);
- await rm(Path.resolve(outDir, "woff2"));
+ await rm(Path.resolve(outDir, "WOFF2"));
});
///////////////////////////////////////////////////////////
@@ -931,9 +938,9 @@ const AmendReadmeFor = task.make(
async (target, f) => {
await target.need(Parameters, UtilScripts);
const [cm, cmi, cmo] = await target.need(
- BuildCM("iosevka", "iosevka-regular"),
- BuildCM("iosevka", "iosevka-italic"),
- BuildCM("iosevka", "iosevka-oblique")
+ BuildCM("Iosevka", "Iosevka-Regular"),
+ BuildCM("Iosevka", "Iosevka-Italic"),
+ BuildCM("Iosevka", "Iosevka-Oblique")
);
return node(`utility/amend-readme/index.mjs`, {
mdFilePath: f,
@@ -962,15 +969,15 @@ const SampleImages = task(`sample-images`, async target => {
const SampleImagesPre = task(`sample-images:pre`, async target => {
const [version] = await target.need(Version, de(IMAGE_TASKS), UtilScripts);
const fontGroups = await target.need(
- GroupTtfsImpl(`iosevka`, false),
- GroupTtfsImpl(`iosevka-slab`, false),
- GroupTtfsImpl(`iosevka-aile`, false),
- GroupTtfsImpl(`iosevka-etoile`, false)
+ GroupTtfsImpl(`Iosevka`, false),
+ GroupTtfsImpl(`IosevkaSlab`, false),
+ GroupTtfsImpl(`IosevkaAile`, false),
+ GroupTtfsImpl(`IosevkaEtoile`, false)
);
const [cm, cmi, cmo] = await target.need(
- BuildCM("iosevka", "iosevka-regular"),
- BuildCM("iosevka", "iosevka-italic"),
- BuildCM("iosevka", "iosevka-oblique")
+ BuildCM("Iosevka", "Iosevka-Regular"),
+ BuildCM("Iosevka", "Iosevka-Italic"),
+ BuildCM("Iosevka", "Iosevka-Oblique")
);
return await node("utility/generate-samples/index.mjs", {
version,
@@ -989,7 +996,7 @@ const PackageSnapshotConfig = async target => {
const p = plan.buildPlans[key];
if (!p || !p.snapshotFamily) continue;
cfg.push({
- name: key,
+ name: "package-sample-" + key,
fontFamily: p.snapshotFamily,
fontFeatures: p.snapshotFeature
});
@@ -1194,6 +1201,26 @@ const Parameters = task(`meta:parameters`, async target => {
// Build plan validation
+function validateBuildPlan(prefix, bp) {
+ if (!bp.family) fail(`Build plan for ${prefix} does not have a family name. Exit.`);
+ failWithLegacyParamName(prefix, bp, `no-cv-ss`, `noCvSs`);
+ failWithLegacyParamName(prefix, bp, `no-ligation`, `noLigation`);
+ failWithLegacyParamName(prefix, bp, `export-glyph-names`, `exportGlyphNames`);
+ failWithLegacyParamName(prefix, bp, `build-texture-feature`, `buildTextureFeature`);
+ failWithLegacyParamName(prefix, bp, `metric-override`, `metricOverride`);
+ failWithLegacyParamName(prefix, bp, `compatibility-ligatures`, `compatibilityLigatures`);
+ failWithLegacyParamName(prefix, bp, `exclude-chars`, `excludeChars`);
+}
+
+function failWithLegacyParamName(prefix, bp, legacy, expected) {
+ if (bp[legacy]) {
+ fail(
+ `Build plan for '${prefix}' contains legacy build parameter '${legacy}'. ` +
+ `Please use '${expected}' instead.`
+ );
+ }
+}
+
function resolveWws(bpName, buildPlans, defaultConfig) {
const bp = buildPlans[bpName];
if (!bp) fail(`Build plan ${bpName} not found.`);