diff --git a/CHANGELOG.md b/CHANGELOG.md index 3206040aa8..f9e249bf27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,325 +1,17 @@ ## Modifications since last major version -### 31.9.1 - -* Optimize glyphs for `round-top-serifless` and `round-top-base-serifed` variants for `A` part (`cv11`) of Capital AE (`U+00C6`) under Quasi-Proportional. -* Fix metrics of `U+27D9` and `U+2A05` under Fixed (#2548). - - -### 31.9.0 - -* Add IJ-acute ligatures (#2483). -* Allowed customizing menu WWS value to name map (#2488). -* Optimize glyphs for `rounded-serifless` and `rounded-serifed` variants for Capital Eszett (`ẞ`). -* Optimize glyph for Capital OE (`U+0152`) under Quasi-Proportional. -* Optimize glyphs for closed epsilon shapes (`U+025E`, `U+029A`). -* Optimize glyphs for cursive variants for Greek Lower Beta (`β`) and Cyrillic Lower Ve (`в`). -* Optimize glyphs for Cyrillic Capital/Lower Broad On (`U+047A`, `U+047B`). -* Optimize glyphs for Roman Numeral CD shapes (`U+2180`, `U+2182`, `U+2188`). -* Optimize glyph for Cyrillic Lower Dzze (`U+A689`) under italics. -* Optimize glyphs for Volapük Ae/Oe/Ue (`U+A79A`..`U+A79F`). -* Optimize glyph for Latin Lower Dezh Digraph with Palatal Hook (`U+1DF12`). -* Fix misalignments of square brackets under certain size caused by rounding errors (#2545). -* Add characters: - - WAVY LINE (`U+2307`). - - SYMMETRY (`U+232F`). - - CONICAL TAPER (`U+2332`). - - SLOPE (`U+2333`). - - LARGE UP TACK (`U+27D8`). - - LARGE DOWN TACK (`U+27D9`). - - LOZENGE DIVIDED BY HORIZONTAL RULE (`U+27E0`). - - VERTICAL ZIGZAG LINE (`U+299A`). - - LEFT WIGGLY FENCE (`U+29D8`) ... RIGHT DOUBLE WIGGLY FENCE (`U+29DB`). - - N-ARY SQUARE INTERSECTION OPERATOR (`U+2A05`). - - N-ARY SQUARE UNION OPERATOR (`U+2A06`). - - VERTICAL SIX DOTS (`U+2E3D`). - - WIGGLY VERTICAL LINE (`U+2E3E`). - - -### 31.8.0 - -* Add characters: - - LATIN EPIGRAPHIC LETTER ARCHAIC M (`U+A7FF`) (#2517). - - MUSICAL SYMBOL RINFORZANDO (`U+1D18C`) ... MUSICAL SYMBOL FORTE (`U+1D191`) (#2522). -* Improve glyph for Cyrillic I (`И`/`и`) under slab (#2489). - - Bulgarian locale (`'BGR '`) uses original style for capital. -* Optimize glyph for Tonos Above (`U+0384`) in accented Greek letters. -* Optimize stroke width of bar for split bowl variants of Cyrillic Lower Ef (`ф`). -* Optimize glyph for Cyrillic Capital Ef (`Ф`) under Bulgarian locale (`'BGR '`) under slab. -* Fix seam in glyphs of Cyrillic Capital/Small Letter Zhwe (`U+A684`..`U+A685`). -* Fix broken shape of certain power and playback symbols under quasi-proportional (#2528). -* Fix alignment of the suit part of Playing Cards glyphs under quasi-Proportional (#2529). - - -### 31.7.1 - -* Fix internal seams of variants of outlined letters U+1CCE6 and U+1CCEF (#2509). - - -### 31.7.0 - -* Fix Macedonian Cyrillic Gje under italics (#2493). -* Improve widths of overline marks of Serbian italic lower Ghe/Pe/Te. -* Remove crossbar variants for `Z`/`z` when under Polish locale (`PLK`) to avoid confusion with the handwritten `Ż`/`ż` allograph, `Ƶ`/`ƶ`. -* Make serif variants for Latin Capital/Small Schwa (`Ə`/`ə`) only appear under Turkic (Turkish/Azerbaijani/etc.) locales (`TRK`, `AZE`, `GAG`, `KAZ`, `TAT`, `CRT`) as other languages that use Latin Schwa (including the IPA) unify its metrics with Open O (`Ɔ`/`ɔ`) or a literal Turned E (`Ǝ`/`ǝ`). -* Make serifs of Latin Letter Small Capital I (`ɪ`) slightly wider under Quasi-Proportional. -* Make Cyrillic Small Letter Komi Dje (`ԃ`) slightly wider under Quasi-Proportional. -* Make serifs of Small Capital and Modifier Letter Reversed N (`ᴎ`/`ᴻ`) more accurately follow the serifs of `N`. -* Make Som Sign (`⃀`) follow variants of capital `C`. -* Make Latin Capital Letter Small Capital I (`Ɪ`) slightly wider under Etoile. -* Add Characters: - - CYRILLIC CAPITAL LETTER TJE (`U+1C89`) ... CYRILLIC SMALL LETTER TJE (`U+1C8A`). - - COMPOSITION SYMBOL (`U+2384`). - - WHITE DIAMOND IN SQUARE (`U+26CB`). - - DRIVE SLOW SIGN (`U+26DA`). - - SQUARED SALTIRE (`U+26DD`) ... FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE (`U+26DE`). - - HEAVY CIRCLED SALTIRE (`U+2B59`). - - TOP HALF LEFT PARENTHESIS (`U+2E59`) ... BOTTOM HALF RIGHT PARENTHESIS (`U+2E5C`). - - LATIN CAPITAL LETTER RAMS HORN (`U+A7CB`) (#2506). - - LATIN CAPITAL LETTER S WITH DIAGONAL STROKE (`U+A7CC`) ... LATIN SMALL LETTER S WITH DIAGONAL STROKE (`U+A7CD`). - - LATIN CAPITAL LETTER LAMBDA (`U+A7DA`) ... LATIN CAPITAL LETTER LAMBDA WITH STROKE (`U+A7DC`). - - COUNTING ROD UNIT DIGIT ONE (`U+1D360`) ... COUNTING ROD TENS DIGIT NINE (`U+1D371`). - - -### 31.6.1 - -- Fix broken accent stacking behavior for partially precomposed characters with leaning anchors (#2492). - - -### 31.6.0 - -* Add Latin localization forms for Polish and Romanian. -* Make Combining Square Below (`U+033B`) slightly narrower. -* Improve glyph visual for Combining Suspension Mark (`U+1DC3`). -* Make Cyrillic Capital/Small Letter Uk (`U+0478`..`U+0479`) slightly narrower under Quasi-Proportional. -* Make Cyrillic Capital/Small Letter Round Omega (`U+047A`..`U+047B`) slightly wider under Quasi-Proportional. - - -### 31.5.0 - -* Add characters: - - KAYAH LI SIGN CWI (`U+A92E`). - - ZERO WIDTH NON-BREAKING SPACE (`U+FEFF`). -* Add APL form (`APLF`) for `U+25E0` and `U+25E1`, for UIUA. -* Add Cyrillic localization forms for Bashkir and Chuvash. - - -### 31.4.0 +### 32.0.0 +* Add Armenian letters: + - ARMENIAN CAPITAL LETTER AYB (`U+0531`) ... ARMENIAN DRAM SIGN (`U+058F`). * Add characters: - - OCR HOOK (`U+2440`) .. OCR BOW TIE (`U+2445`) (#2465). -* Add slanted dollar and cent sign (#2408). -* Add round-top capital A (#2472). -* Fix `cv41` application to `ss01`, `ss02`, `ss04`, `ss06`, and `ss15`. -* Fix `cv54` application to `ss01`, `ss03`, `ss04`, `ss06`, `ss07`, `ss09`, `ss12`, `ss14`, `ss15`, `ss17`, and `ss18`. -* Fix `cv62` application to `ss01`, `ss02`, `ss04`, `ss07`, `ss09`, `ss13`, `ss15`, `ss16`, and `ss18`. - - -### 31.3.0 - -* Add `diagonal-tailed-cursive` variants for Cyrillic Lower Ef (`cv93`). -* Add `rounded-vertical-sides` variants for Capital/Lower W (`cv32`, `cv57`). -* Make Aile and Etoile use `straight` variants for `brace` and `guillemet`. -* Prevent clipping of texture-extended glyphs in Kitty. - - -### 31.2.0 - -* Add variant selectors for Greek lower Phi/Psi (`VXAG`, `VXAH`). -* Optimize cross position for Cyrillic Lower Straight U (`U+04AF`, `U+04B1`). -* Optimize glyph shape for `lower-gamma`.`straight` and `lower-gamma`.`curly`. -* Optimize glyph shape for `U+1DF15`. - - -### 31.1.0 - -* Add characters: - - BLACK-LETTER CAPITAL H (`U+210C`) (#714). - - BLACK-LETTER CAPITAL I (`U+2111`) (#714). - - BLACK-LETTER CAPITAL R (`U+211C`) (#714). - - BLACK-LETTER CAPITAL Z (`U+2128`) (#714). - - BLACK-LETTER CAPITAL C (`U+212D`) (#714). - - LATIN SMALL LETTER BLACKLETTER E (`U+AB32`) (#2443). - - LATIN SMALL LETTER BLACKLETTER O (`U+AB3D`) (#2443). - - LATIN SMALL LETTER BLACKLETTER O WITH STROKE (`U+AB3E`) (#2443). - - LEFT-POINTING ROCKET SHIP (`U+1CC56`) ... DOWN-POINTING ROCKET SHIP (`U+1CC59`) (Proposed for Unicode 16; L2/21-235). - - LEFT-POINTING ATOMIC BOMB (`U+1CC60`) ... DOWN-POINTING ATOMIC BOMB (`U+1CC63`) (Proposed for Unicode 16; L2/21-235). - - LEFT-POINTING RIFLE (`U+1CC65`) ... DOWN-POINTING RIFLE (`U+1CC68`) (Proposed for Unicode 16; L2/21-235). - - MOON LANDER (`U+1CDF5`) (Proposed for Unicode 16; L2/21-235). - - UP-POINTING FROG (`U+1CDFB`) (Proposed for Unicode 16; L2/21-235). - - DOWN-POINTING FROG (`U+1CDFC`) (Proposed for Unicode 16; L2/21-235). - - MATHEMATICAL FRAKTUR CAPITAL A (`U+1D504`) .. MATHEMATICAL FRAKTUR SMALL Z (`U+1D537`) (#444). - - MATHEMATICAL BOLD FRAKTUR CAPITAL A (`U+1D56C`) .. MATHEMATICAL BOLD FRAKTUR SMALL Z (`U+1D59F`) (#444). -* Add separate variant selectors for Cyrillic Capital En/Er (`VXAA`, `VXAB`). -* Add variant selectors for Greek lower Beta/Gamma/Nu/Upsilon (`VXAC`, `VXAD`, `VXAE`, `VXAF`). -* Optimize glyph for VERTICAL LINE WITH MIDDLE DOT (`U+2327`). -* Improve `k` (`cv46`) and `x` (`cv58`) variants used by `ss03`, `ss08`, `ss09`, `ss10`, `ss12`, `ss14`, and `ss18` under slab italic. - - -### 31.0.0 - -* \[**Breaking**] Changed the mapping between variants and OpenType tags: - - Variants for digits (`1` .. `9`) are assigned to tag `cv01` ... `cv09`. - - Variant for `0` is assigned to tag `cv10`. - - Variants for basic Latin are assigned to tag `cv11` ... `cv60` (50 tags; `O` and `o` do not have variants). - - Variants for extended Latin are assigned to tag `cv61` ... `cv66`. - - Variants for Greek letters are assigned to tag `cv67` ... `cv78`. - - Variants for Cyrillic letters are assigned to tag `cv79` ... `cv99` and `VAAA`. - - Variants for dot shapes are assigned to tag `VDAA` ... `VDAD`. - - Variants for symbol shapes are assigned to tag `VSAA` ... `VSAT`. - - Variants for ligature shapes are assigned to tag `VLAA` ... `VLAG`. - - Correspondence table - -
- - | Selector Name | Tag in v30.x | Tag in v31 | - | ------------- | ------------ | ---------- | - | `one` | `cv86` | `cv01` | - | `two` | `cv87` | `cv02` | - | `three` | `cv88` | `cv03` | - | `four` | `cv89` | `cv04` | - | `five` | `cv90` | `cv05` | - | `six` | `cv91` | `cv06` | - | `seven` | `cv92` | `cv07` | - | `eight` | `cv93` | `cv08` | - | `nine` | `cv94` | `cv09` | - | `zero` | `cv85` | `cv10` | - | `capital-a` | `cv01` | `cv11` | - | `capital-b` | `cv02` | `cv12` | - | `capital-c` | `cv03` | `cv13` | - | `capital-d` | `cv04` | `cv14` | - | `capital-e` | `cv05` | `cv15` | - | `capital-f` | `cv06` | `cv16` | - | `capital-g` | `cv07` | `cv17` | - | `capital-h` | `cv08` | `cv18` | - | `capital-i` | `cv09` | `cv19` | - | `capital-j` | `cv10` | `cv20` | - | `capital-k` | `cv11` | `cv21` | - | `capital-l` | `cv12` | `cv22` | - | `capital-m` | `cv13` | `cv23` | - | `capital-n` | `cv14` | `cv24` | - | `capital-p` | `cv15` | `cv25` | - | `capital-q` | `cv16` | `cv26` | - | `capital-r` | `cv17` | `cv27` | - | `capital-s` | `cv18` | `cv28` | - | `capital-t` | `cv19` | `cv29` | - | `capital-u` | `cv20` | `cv30` | - | `capital-v` | `cv21` | `cv31` | - | `capital-w` | `cv22` | `cv32` | - | `capital-x` | `cv23` | `cv33` | - | `capital-y` | `cv24` | `cv34` | - | `capital-z` | `cv25` | `cv35` | - | `a` | `cv26` | `cv36` | - | `b` | `cv27` | `cv37` | - | `c` | `cv28` | `cv38` | - | `d` | `cv29` | `cv39` | - | `e` | `cv30` | `cv40` | - | `f` | `cv31` | `cv41` | - | `g` | `cv32` | `cv42` | - | `h` | `cv33` | `cv43` | - | `i` | `cv34` | `cv44` | - | `j` | `cv35` | `cv45` | - | `k` | `cv36` | `cv46` | - | `l` | `cv37` | `cv47` | - | `m` | `cv38` | `cv48` | - | `n` | `cv39` | `cv49` | - | `p` | `cv40` | `cv50` | - | `q` | `cv41` | `cv51` | - | `r` | `cv42` | `cv52` | - | `s` | `cv43` | `cv53` | - | `t` | `cv44` | `cv54` | - | `u` | `cv45` | `cv55` | - | `v` | `cv46` | `cv56` | - | `w` | `cv47` | `cv57` | - | `x` | `cv48` | `cv58` | - | `y` | `cv49` | `cv59` | - | `z` | `cv50` | `cv60` | - | `capital-eszet` | `VXAC` | `cv61` | - | `long-s` | `cv51` | `cv62` | - | `eszet` | `cv52` | `cv63` | - | `lower-eth` | `cv53` | `cv64` | - | `capital-thorn` | `VXAD` | `cv65` | - | `lower-thorn` | `cv54` | `cv66` | - | `lower-alpha` | `cv55` | `cv67` | - | `capital-gamma` | `cv56` | `cv68` | - | `capital-delta` | `cv57` | `cv69` | - | `lower-delta` | `cv58` | `cv70` | - | `lower-iota` | `cv59` | `cv71` | - | `capital-lambda` | `cv60` | `cv72` | - | `lower-lambda` | `cv61` | `cv73` | - | `lower-mu` | `cv62` | `cv74` | - | `lower-xi` | `cv63` | `cv75` | - | `lower-pi` | `cv64` | `cv76` | - | `lower-tau` | `cv65` | `cv77` | - | `lower-chi` | `cv66` | `cv78` | - | `cyrl-a` | `——` | `cv79` | - | `cyrl-ve` | `——` | `cv80` | - | `cyrl-capital-zhe` | `cv67` | `cv81` | - | `cyrl-zhe` | `cv68` | `cv82` | - | `cyrl-capital-ze` | `cv69` | `cv83` | - | `cyrl-ze` | `cv70` | `cv84` | - | `cyrl-capital-ka` | `cv71` | `cv85` | - | `cyrl-ka` | `cv72` | `cv86` | - | `cyrl-el` | `cv73` | `cv87` | - | `cyrl-em` | `cv74` | `cv88` | - | `cyrl-en` | `cv75` | `cv89` | - | `cyrl-er` | `cv76` | `cv90` | - | `cyrl-capital-u` | `cv77` | `cv91` | - | `cyrl-u` | `cv78` | `cv92` | - | `cyrl-ef` | `cv79` | `cv93` | - | `cyrl-che` | `cv80` | `cv94` | - | `cyrl-yeri` | `cv81` | `cv95` | - | `cyrl-yery` | `cv82` | `cv96` | - | `cyrl-capital-e` | `VXAA` | `cv97` | - | `cyrl-e` | `VXAB` | `cv98` | - | `cyrl-capital-ya` | `cv83` | `cv99` | - | `cyrl-ya` | `cv84` | `VAAA` | - | `tittle` | `cv95` | `VDAA` | - | `diacritic-dot` | `cv96` | `VDAB` | - | `punctuation-dot` | `cv97` | `VDAC` | - | `braille-dot` | `VXAE` | `VDAD` | - | `tilde` | `cv98` | `VSAA` | - | `asterisk` | `cv99` | `VSAB` | - | `underscore` | `VSAA` | `VSAC` | - | `caret` | `VSAB` | `VSAD` | - | `ascii-grave` | `VSAC` | `VSAE` | - | `ascii-single-quote` | `VSAD` | `VSAF` | - | `paren` | `VSAE` | `VSAG` | - | `brace` | `VSAF` | `VSAH` | - | `guillemet` | `VSAG` | `VSAI` | - | `number-sign` | `VSAH` | `VSAJ` | - | `ampersand` | `VSAI` | `VSAK` | - | `at` | `VSAJ` | `VSAL` | - | `dollar` | `VSAK` | `VSAM` | - | `cent` | `VSAL` | `VSAN` | - | `percent` | `VSAM` | `VSAO` | - | `bar` | `VSAN` | `VSAP` | - | `question` | `VSAO` | `VSAQ` | - | `pilcrow` | `VSAP` | `VSAR` | - | `partial-derivative` | `VSAQ` | `VSAS` | - | `micro-sign` | `VSAR` | `VSAT` | - | `lig-ltgteq` | `VLAA` | `VLAA` | - | `lig-neq` | `VLAB` | `VLAB` | - | `lig-equal-chain` | `VLAC` | `VLAC` | - | `lig-hyphen-chain` | `VLAD` | `VLAD` | - | `lig-plus-chain` | `VLAE` | `VLAE` | - | `lig-double-arrow-bar` | `VLAF` | `VLAF` | - | `lig-single-arrow-bar` | `VLAG` | `VLAG` | - -
-* \[**Breaking**] Reordered variants for Cyrillic Capital/Lower Ze. -* \[**Breaking**] Add `bilateral-motion-serifed` variants for Capital/Lower X. Change of variant names: - - `capital-x`.`straight-motion-serifed` → `capital-x`.`straight-unilateral-motion-serifed` - - `capital-x`.`curly-motion-serifed` → `capital-x`.`curly-unilateral-motion-serifed` - - `x`.`straight-motion-serifed` → `x`.`straight-unilateral-motion-serifed` - - `x`.`curly-motion-serifed` → `x`.`curly-unilateral-motion-serifed` - - `lower-chi`.`straight-motion-serifed` → `lower-chi`.`straight-unilateral-motion-serifed` - - `lower-chi`.`curly-motion-serifed` → `lower-chi`.`curly-unilateral-motion-serifed` -* \[**Breaking**] Add `semi-chancery-straight-serifed` and `semi-chancery-curly-serifed` variants for Greek Lower Chi. Change of variant names: - - `lower-chi`.`semi-chancery-straight` → `lower-chi`.`semi-chancery-straight-serifless` - - `lower-chi`.`semi-chancery-curly` → `lower-chi`.`semi-chancery-curly-serifless` - - `lower-chi`.`straight-serifed` → `lower-chi`.`straight-bilateral-motion-serifed` - - `lower-chi`.`curly-serifed` → `lower-chi`.`curly-bilateral-motion-serifed` -* Add separate variant selectors For Cyrillic Lower A/Ve (`cv79`, `cv99`). -* Optimize the shape of rounded `e` (#2424). + - LEFT AND RIGHT DOUBLE TURNSTILE (`U+27DA`). + - LEFT AND RIGHT TACK (`U+27DB`). + - LONG RIGHT TACK (`U+27DD`). + - LONG LEFT TACK (`U+27DE`). + - UP ARROW THROUGH CIRCLE (`U+29BD`). + - UPPER LEFT QUADRANT STANDING KNIGHT (`U+1CCD2`) ... LOWER RIGHT QUADRANT STANDING KNIGHT (`U+1CCD5`). + - HORIZONTAL ZIGZAG LINE (`U+1CEB0`). +* Optimize `semi-chancery-straight-serifed` and `semi-chancery-curly-serifed` variants for `x` (`cv58`). +* Make Dotless J with Stroke and Hook (`U+0284`) have a serif under slab. diff --git a/README.md b/README.md index a8755da97e..682de9602d 100644 --- a/README.md +++ b/README.md @@ -56,9 +56,9 @@ All versions include the same ranges of characters: Latin letters, Greek letters -235 Supported Languages: +236 Supported Languages: -Abkhazian, Afar, Afrikaans, Aghem, Akan, Akoose, Albanian, Anii, Aragonese, Asturian, Asu, Atsam, Azerbaijani, Bafia, Baluchi (bal_latn), Bambara, Basaa, Bashkir, Basque, Belarusian, Bemba, Bena, Betawi, Bosnian, Breton, Bulgarian, Caddo, Catalan, Cebuano, Central Atlas Tamazight, Chechen, Chickasaw, Chiga, Choctaw, Church Slavic, Chuvash, Colognian, Cornish, Corsican, Croatian, Czech, Danish, Duala, Dutch, Embu, English, Erzya, Esperanto, Estonian, Ewe, Ewondo, Faroese, Filipino, Finnish, French, Friulian, Fula, Ga, Galician, Ganda, German, Greek, Guarani, Gusii, Hausa, Hawaiian, Hindi (Latin), Hungarian, Icelandic, Ido, Igbo, Inari Sami, Indonesian, Interlingua, Interlingue, Inuktitut (iu_latn), Irish, Italian, Javanese, Jju, Jola-Fonyi, Kabuverdianu, Kabyle, Kaingang, Kako, Kalaallisut, Kalenjin, Kamba, Kazakh, Kenyang, Kikuyu, Kinyarwanda, Koyra Chiini, Koyraboro Senni, Kpelle, Kurdish, Kuvi, Kwasio, Kyrgyz, Kʼicheʼ, Lakota, Langi, Latin, Latvian, Ligurian, Lingala, Lithuanian, Lojban, Lombard, Low German, Lower Sorbian, Luba-Katanga, Lule Sami, Luo, Luxembourgish, Luyia, Macedonian, Machame, Makhuwa, Makhuwa-Meetto, Makonde, Malagasy, Malay, Maltese, Manx, Mapuche, Masai, Meru, Metaʼ, Mi'kmaw, Mohawk, Moksha, Mongolian, Morisyen, Mundang, Muscogee, Māori, Nama, Navajo, Ngiemboon, Ngomba, Nheengatu, Nigerian Pidgin, North Ndebele, Northern Frisian, Northern Sami, Northern Sotho, Norwegian, Norwegian Bokmål, Norwegian Nynorsk, Nuer, Nyanja, Nyankole, Obolo, Occitan, Oromo, Ossetic, Papiamento, Pijin, Polish, Portuguese, Prussian, Quechua, Riffian, Romanian, Romansh, Rombo, Rundi, Russian, Rwa, Saho, Samburu, Sango, Sangu, Sardinian, Scottish Gaelic, Sena, Serbian, Shambala, Shona, Sicilian, Sidamo, Silesian, Skolt Sami, Slovak, Slovenian, Soga, Somali, South Ndebele, Southern Sami, Southern Sotho, Spanish, Sundanese, Swahili, Swati, Swedish, Swiss German, Tachelhit (shi_latn), Taita, Tajik, Taroko, Tasawaq, Tatar, Teso, Tok Pisin, Toki Pona, Tongan, Tsonga, Tswana, Turkish, Turkmen, Tuvinian, Tyap, Ukrainian, Upper Sorbian, Uzbek, Vai (vai_latn), Venda, Venetian, Vietnamese, Volapük, Vunjo, Walloon, Walser, Warlpiri, Welsh, Western Frisian, Wolof, Xhosa, Yakut, Yangben, Yoruba, Zarma, Zhuang, Zulu +Abkhazian, Afar, Afrikaans, Aghem, Akan, Akoose, Albanian, Anii, Aragonese, Armenian, Asturian, Asu, Atsam, Azerbaijani, Bafia, Baluchi (bal_latn), Bambara, Basaa, Bashkir, Basque, Belarusian, Bemba, Bena, Betawi, Bosnian, Breton, Bulgarian, Caddo, Catalan, Cebuano, Central Atlas Tamazight, Chechen, Chickasaw, Chiga, Choctaw, Church Slavic, Chuvash, Colognian, Cornish, Corsican, Croatian, Czech, Danish, Duala, Dutch, Embu, English, Erzya, Esperanto, Estonian, Ewe, Ewondo, Faroese, Filipino, Finnish, French, Friulian, Fula, Ga, Galician, Ganda, German, Greek, Guarani, Gusii, Hausa, Hawaiian, Hindi (Latin), Hungarian, Icelandic, Ido, Igbo, Inari Sami, Indonesian, Interlingua, Interlingue, Inuktitut (iu_latn), Irish, Italian, Javanese, Jju, Jola-Fonyi, Kabuverdianu, Kabyle, Kaingang, Kako, Kalaallisut, Kalenjin, Kamba, Kazakh, Kenyang, Kikuyu, Kinyarwanda, Koyra Chiini, Koyraboro Senni, Kpelle, Kurdish, Kuvi, Kwasio, Kyrgyz, Kʼicheʼ, Lakota, Langi, Latin, Latvian, Ligurian, Lingala, Lithuanian, Lojban, Lombard, Low German, Lower Sorbian, Luba-Katanga, Lule Sami, Luo, Luxembourgish, Luyia, Macedonian, Machame, Makhuwa, Makhuwa-Meetto, Makonde, Malagasy, Malay, Maltese, Manx, Mapuche, Masai, Meru, Metaʼ, Mi'kmaw, Mohawk, Moksha, Mongolian, Morisyen, Mundang, Muscogee, Māori, Nama, Navajo, Ngiemboon, Ngomba, Nheengatu, Nigerian Pidgin, North Ndebele, Northern Frisian, Northern Sami, Northern Sotho, Norwegian, Norwegian Bokmål, Norwegian Nynorsk, Nuer, Nyanja, Nyankole, Obolo, Occitan, Oromo, Ossetic, Papiamento, Pijin, Polish, Portuguese, Prussian, Quechua, Riffian, Romanian, Romansh, Rombo, Rundi, Russian, Rwa, Saho, Samburu, Sango, Sangu, Sardinian, Scottish Gaelic, Sena, Serbian, Shambala, Shona, Sicilian, Sidamo, Silesian, Skolt Sami, Slovak, Slovenian, Soga, Somali, South Ndebele, Southern Sami, Southern Sotho, Spanish, Sundanese, Swahili, Swati, Swedish, Swiss German, Tachelhit (shi_latn), Taita, Tajik, Taroko, Tasawaq, Tatar, Teso, Tok Pisin, Toki Pona, Tongan, Tsonga, Tswana, Turkish, Turkmen, Tuvinian, Tyap, Ukrainian, Upper Sorbian, Uzbek, Vai (vai_latn), Venda, Venetian, Vietnamese, Volapük, Vunjo, Walloon, Walser, Warlpiri, Welsh, Western Frisian, Wolof, Xhosa, Yakut, Yangben, Yoruba, Zarma, Zhuang, Zulu diff --git a/changes/32.0.0.md b/changes/32.0.0.md new file mode 100644 index 0000000000..009af8c7de --- /dev/null +++ b/changes/32.0.0.md @@ -0,0 +1,12 @@ +* Add Armenian letters: + - ARMENIAN CAPITAL LETTER AYB (`U+0531`) ... ARMENIAN DRAM SIGN (`U+058F`). +* Add characters: + - LEFT AND RIGHT DOUBLE TURNSTILE (`U+27DA`). + - LEFT AND RIGHT TACK (`U+27DB`). + - LONG RIGHT TACK (`U+27DD`). + - LONG LEFT TACK (`U+27DE`). + - UP ARROW THROUGH CIRCLE (`U+29BD`). + - UPPER LEFT QUADRANT STANDING KNIGHT (`U+1CCD2`) ... LOWER RIGHT QUADRANT STANDING KNIGHT (`U+1CCD5`). + - HORIZONTAL ZIGZAG LINE (`U+1CEB0`). +* Optimize `semi-chancery-straight-serifed` and `semi-chancery-curly-serifed` variants for `x` (`cv58`). +* Make Dotless J with Stroke and Hook (`U+0284`) have a serif under slab. diff --git a/changes/31.0.0.md b/changes/archives/31.x/31.0.0.md similarity index 100% rename from changes/31.0.0.md rename to changes/archives/31.x/31.0.0.md diff --git a/changes/31.1.0.md b/changes/archives/31.x/31.1.0.md similarity index 100% rename from changes/31.1.0.md rename to changes/archives/31.x/31.1.0.md diff --git a/changes/31.2.0.md b/changes/archives/31.x/31.2.0.md similarity index 100% rename from changes/31.2.0.md rename to changes/archives/31.x/31.2.0.md diff --git a/changes/31.3.0.md b/changes/archives/31.x/31.3.0.md similarity index 100% rename from changes/31.3.0.md rename to changes/archives/31.x/31.3.0.md diff --git a/changes/31.4.0.md b/changes/archives/31.x/31.4.0.md similarity index 100% rename from changes/31.4.0.md rename to changes/archives/31.x/31.4.0.md diff --git a/changes/31.5.0.md b/changes/archives/31.x/31.5.0.md similarity index 100% rename from changes/31.5.0.md rename to changes/archives/31.x/31.5.0.md diff --git a/changes/31.6.0.md b/changes/archives/31.x/31.6.0.md similarity index 100% rename from changes/31.6.0.md rename to changes/archives/31.x/31.6.0.md diff --git a/changes/31.6.1.md b/changes/archives/31.x/31.6.1.md similarity index 100% rename from changes/31.6.1.md rename to changes/archives/31.x/31.6.1.md diff --git a/changes/31.7.0.md b/changes/archives/31.x/31.7.0.md similarity index 100% rename from changes/31.7.0.md rename to changes/archives/31.x/31.7.0.md diff --git a/changes/31.7.1.md b/changes/archives/31.x/31.7.1.md similarity index 100% rename from changes/31.7.1.md rename to changes/archives/31.x/31.7.1.md diff --git a/changes/31.8.0.md b/changes/archives/31.x/31.8.0.md similarity index 100% rename from changes/31.8.0.md rename to changes/archives/31.x/31.8.0.md diff --git a/changes/31.9.0.md b/changes/archives/31.x/31.9.0.md similarity index 100% rename from changes/31.9.0.md rename to changes/archives/31.x/31.9.0.md diff --git a/changes/31.9.1.md b/changes/archives/31.x/31.9.1.md similarity index 100% rename from changes/31.9.1.md rename to changes/archives/31.x/31.9.1.md diff --git a/doc/PACKAGE-LIST.md b/doc/PACKAGE-LIST.md index a13a5543ce..c8904ab0d8 100644 --- a/doc/PACKAGE-LIST.md +++ b/doc/PACKAGE-LIST.md @@ -1,7 +1,7 @@ -# Package list of Release 31.9.1 +# Package list of Release 32.0.0 ## 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. @@ -22,146 +22,146 @@ Iosevka provides various packaging formats, here is the list of them: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + +
📦 IosevkaMonospace, DefaultSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ IosevkaDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka TermTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka FixedFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SlabMonospace, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka CurlyMonospace, Curly StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka CurlyDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term CurlyTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed CurlyFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka Curly SlabMonospace, Curly Style, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka Curly SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term Curly SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed Curly SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS01Monospace, Andale Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS01DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS01TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS01FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS02Monospace, Anonymous Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS02DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS02TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS02FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS03Monospace, Consolas StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS03DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS03TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS03FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS04Monospace, Menlo StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS04DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS04TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS04FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS05Monospace, Fira Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS05DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS05TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS05FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS06Monospace, Liberation Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS06DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS06TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS06FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS07Monospace, Monaco StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS07DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS07TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS07FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS08Monospace, Pragmata Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS08DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS08TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS08FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS09Monospace, Source Code Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS09DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS09TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS09FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS10Monospace, Envy Code R StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS10DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS10TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS10FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS11Monospace, X Windows Fixed StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS11DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS11TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS11FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS12Monospace, Ubuntu Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS12DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS12TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS12FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS13Monospace, Lucida StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS13DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS13TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS13FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS14Monospace, JetBrains Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS14DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS14TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS14FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS15Monospace, IBM Plex Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS15DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS15TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS15FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS16Monospace, PT Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS16DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS16TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS16FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS17Monospace, Recursive Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS17DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS17TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS17FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS18Monospace, Input Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS18DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS18TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS18FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 IosevkaMonospace, DefaultSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ IosevkaDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka TermTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka FixedFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SlabMonospace, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka CurlyMonospace, Curly StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka CurlyDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term CurlyTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed CurlyFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka Curly SlabMonospace, Curly Style, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka Curly SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term Curly SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed Curly SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS01Monospace, Andale Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS01DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS01TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS01FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS02Monospace, Anonymous Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS02DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS02TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS02FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS03Monospace, Consolas StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS03DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS03TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS03FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS04Monospace, Menlo StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS04DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS04TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS04FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS05Monospace, Fira Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS05DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS05TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS05FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS06Monospace, Liberation Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS06DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS06TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS06FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS07Monospace, Monaco StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS07DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS07TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS07FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS08Monospace, Pragmata Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS08DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS08TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS08FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS09Monospace, Source Code Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS09DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS09TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS09FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS10Monospace, Envy Code R StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS10DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS10TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS10FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS11Monospace, X Windows Fixed StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS11DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS11TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS11FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS12Monospace, Ubuntu Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS12DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS12TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS12FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS13Monospace, Lucida StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS13DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS13TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS13FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS14Monospace, JetBrains Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS14DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS14TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS14FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS15Monospace, IBM Plex Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS15DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS15TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS15FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS16Monospace, PT Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS16DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS16TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS16FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS17Monospace, Recursive Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS17DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS17TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS17FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS18Monospace, Input Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS18DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS18TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS18FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka AileQuasi-proportional, Sans-serif 
  └ Sub-packagesSpacingLigaturesDownloads
    └ Iosevka AileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka AileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka EtoileQuasi-proportional, Slab-serif 
  └ Sub-packagesSpacingLigaturesDownloads
    └ Iosevka EtoileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka EtoileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
diff --git a/doc/custom-build.md b/doc/custom-build.md index 68e0264762..43e3df2136 100644 --- a/doc/custom-build.md +++ b/doc/custom-build.md @@ -58,6 +58,8 @@ Inside the plan, top-level properties include: - `fontconfig-mono`: Apply `term` spacing changes and further apply changes to be compatible with FontConfig's Mono spacing, which recognizes a font as monospace if and only if its every non-combining characters having the same width. The changes include: - Completely remove wide glyphs. All non-combining glyphs will be exactly the same width. - As a consequence, the following characters will be **removed**: + - `U+27DD` LONG RIGHT TACK + - `U+27DE` LONG LEFT TACK - `U+27F5` LONG LEFTWARDS ARROW - `U+27F6` LONG RIGHTWARDS ARROW - `U+27F7` LONG LEFT RIGHT ARROW diff --git a/doc/cv-influences.md b/doc/cv-influences.md index a7967f8bb4..85152e3f61 100644 --- a/doc/cv-influences.md +++ b/doc/cv-influences.md @@ -73,7 +73,7 @@ - `cv18`: - H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), ͱ (`U+0371`), Ή (`U+0389`), Η (`U+0397`), Һ (`U+04BA`), Ԧ (`U+0526`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꚕ (`U+A694`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`), 🇭 (`U+1F1ED`) + H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), Ή (`U+0389`), Η (`U+0397`), Һ (`U+04BA`), Ԧ (`U+0526`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꚕ (`U+A694`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`), 🇭 (`U+1F1ED`) - `cv19`: @@ -141,7 +141,7 @@ - `cv35`: - Z (`U+005A`), Ź (`U+0179`), Ż (`U+017B`), Ž (`U+017D`), Ƶ (`U+01B5`), Ʒ (`U+01B7`), Ƹ (`U+01B8`), DŽ (`U+01C4`), Ǯ (`U+01EE`), DZ (`U+01F1`), Ȥ (`U+0224`), Ζ (`U+0396`), Ӡ (`U+04E0`), ᴢ (`U+1D22`), ᴣ (`U+1D23`), Ẑ (`U+1E90`), Ẓ (`U+1E92`), Ẕ (`U+1E94`), Ⓩ (`U+24CF`), Ⱬ (`U+2C6B`), Ɀ (`U+2C7F`), Ꙁ (`U+A640`), Ꙃ (`U+A642`), Ᶎ (`U+A7C6`), 𜳯 (`U+1CCEF`), 𝐙 (`U+1D419`), 𝑍 (`U+1D44D`), 𝒁 (`U+1D481`), 𝖹 (`U+1D5B9`), 𝗭 (`U+1D5ED`), 𝘡 (`U+1D621`), 𝙕 (`U+1D655`), 𝚉 (`U+1D689`), 𝚭 (`U+1D6AD`), 𝛧 (`U+1D6E7`), 𝜡 (`U+1D721`), 𝝛 (`U+1D75B`), 𝞕 (`U+1D795`), 🄩 (`U+1F129`), 🅉 (`U+1F149`), 🅩 (`U+1F169`), 🆉 (`U+1F189`), 🇿 (`U+1F1FF`) + Z (`U+005A`), Ź (`U+0179`), Ż (`U+017B`), Ž (`U+017D`), Ƶ (`U+01B5`), Ʒ (`U+01B7`), Ƹ (`U+01B8`), DŽ (`U+01C4`), Ǯ (`U+01EE`), DZ (`U+01F1`), Ȥ (`U+0224`), Ζ (`U+0396`), Ӡ (`U+04E0`), ᴢ (`U+1D22`), ᴣ (`U+1D23`), Ẑ (`U+1E90`), Ẓ (`U+1E92`), Ẕ (`U+1E94`), Ⓩ (`U+24CF`), Ⱬ (`U+2C6B`), Ɀ (`U+2C7F`), Ꙁ (`U+A640`), Ꙃ (`U+A642`), Ᶎ (`U+A7C6`), 𜳯 (`U+1CCEF`), 𝐙 (`U+1D419`), 𝑍 (`U+1D44D`), 𝒁 (`U+1D481`), 𝖹 (`U+1D5B9`), 𝗭 (`U+1D5ED`), 𝘡 (`U+1D621`), 𝙕 (`U+1D655`), 𝚉 (`U+1D689`), 𝚭 (`U+1D6AD`), 𝛧 (`U+1D6E7`), 𝜡 (`U+1D721`), 𝝛 (`U+1D75B`), 𝞕 (`U+1D795`), 🄩 (`U+1F129`), 🄮 (`U+1F12E`), 🅉 (`U+1F149`), 🅩 (`U+1F169`), 🆉 (`U+1F189`), 🇿 (`U+1F1FF`) - `cv36`: @@ -169,7 +169,7 @@ - `cv42`: - g (`U+0067`), ĝ (`U+011D`), ğ (`U+011F`), ġ (`U+0121`), ģ (`U+0123`), ǥ (`U+01E5`), ǧ (`U+01E7`), ǵ (`U+01F5`), ɠ (`U+0260`), ɡ (`U+0261`), ᵍ (`U+1D4D`), ᵷ (`U+1D77`), ᶃ (`U+1D83`), ᶢ (`U+1DA2`), ᷚ (`U+1DDA`), ḡ (`U+1E21`), ⒢ (`U+24A2`), ⓖ (`U+24D6`), ꞡ (`U+A7A1`), Ɡ (`U+A7AC`), ꬶ (`U+AB36`), 𐞓 (`U+10793`), 𝐠 (`U+1D420`), 𝑔 (`U+1D454`), 𝒈 (`U+1D488`), 𝗀 (`U+1D5C0`), 𝗴 (`U+1D5F4`), 𝘨 (`U+1D628`), 𝙜 (`U+1D65C`), 𝚐 (`U+1D690`), 𝼁 (`U+1DF01`) + g (`U+0067`), ĝ (`U+011D`), ğ (`U+011F`), ġ (`U+0121`), ģ (`U+0123`), ǥ (`U+01E5`), ǧ (`U+01E7`), ǵ (`U+01F5`), ɠ (`U+0260`), ɡ (`U+0261`), ᵍ (`U+1D4D`), ᵷ (`U+1D77`), ᶃ (`U+1D83`), ᶢ (`U+1DA2`), ᷚ (`U+1DDA`), ḡ (`U+1E21`), ⒢ (`U+24A2`), ⓖ (`U+24D6`), ꞡ (`U+A7A1`), Ɡ (`U+A7AC`), 𐞓 (`U+10793`), 𝐠 (`U+1D420`), 𝑔 (`U+1D454`), 𝒈 (`U+1D488`), 𝗀 (`U+1D5C0`), 𝗴 (`U+1D5F4`), 𝘨 (`U+1D628`), 𝙜 (`U+1D65C`), 𝚐 (`U+1D690`), 𝼁 (`U+1DF01`) - `cv43`: @@ -241,7 +241,7 @@ - `cv60`: - z (`U+007A`), ź (`U+017A`), ż (`U+017C`), ž (`U+017E`), ƶ (`U+01B6`), ƹ (`U+01B9`), ƺ (`U+01BA`), Dž (`U+01C5`), dž (`U+01C6`), ǯ (`U+01EF`), Dz (`U+01F2`), dz (`U+01F3`), ȥ (`U+0225`), ɀ (`U+0240`), ʐ (`U+0290`), ʑ (`U+0291`), ʒ (`U+0292`), ʓ (`U+0293`), ʣ (`U+02A3`), ʤ (`U+02A4`), ʥ (`U+02A5`), ʫ (`U+02AB`), ӡ (`U+04E1`), ᵶ (`U+1D76`), ᶎ (`U+1D8E`), ᶚ (`U+1D9A`), ᶻ (`U+1DBB`), ᶼ (`U+1DBC`), ᶽ (`U+1DBD`), ᶾ (`U+1DBE`), ᷦ (`U+1DE6`), ẑ (`U+1E91`), ẓ (`U+1E93`), ẕ (`U+1E95`), ⒵ (`U+24B5`), ⓩ (`U+24E9`), ⱬ (`U+2C6C`), ꙁ (`U+A641`), ꙃ (`U+A643`), ꭦ (`U+AB66`), 𐞇 (`U+10787`), 𐞈 (`U+10788`), 𐞉 (`U+10789`), 𐞊 (`U+1078A`), 𐞚 (`U+1079A`), 𝆎 (`U+1D18E`), 𝐳 (`U+1D433`), 𝑧 (`U+1D467`), 𝒛 (`U+1D49B`), 𝗓 (`U+1D5D3`), 𝘇 (`U+1D607`), 𝘻 (`U+1D63B`), 𝙯 (`U+1D66F`), 𝚣 (`U+1D6A3`), 𝼒 (`U+1DF12`), 𝼘 (`U+1DF18`), 🄮 (`U+1F12E`) + z (`U+007A`), ź (`U+017A`), ż (`U+017C`), ž (`U+017E`), ƶ (`U+01B6`), ƹ (`U+01B9`), ƺ (`U+01BA`), Dž (`U+01C5`), dž (`U+01C6`), ǯ (`U+01EF`), Dz (`U+01F2`), dz (`U+01F3`), ȥ (`U+0225`), ɀ (`U+0240`), ʐ (`U+0290`), ʑ (`U+0291`), ʒ (`U+0292`), ʓ (`U+0293`), ʣ (`U+02A3`), ʤ (`U+02A4`), ʥ (`U+02A5`), ʫ (`U+02AB`), ӡ (`U+04E1`), ᵶ (`U+1D76`), ᶎ (`U+1D8E`), ᶚ (`U+1D9A`), ᶻ (`U+1DBB`), ᶼ (`U+1DBC`), ᶽ (`U+1DBD`), ᶾ (`U+1DBE`), ᷦ (`U+1DE6`), ẑ (`U+1E91`), ẓ (`U+1E93`), ẕ (`U+1E95`), ⒵ (`U+24B5`), ⓩ (`U+24E9`), ⱬ (`U+2C6C`), ꙁ (`U+A641`), ꙃ (`U+A643`), ꭦ (`U+AB66`), 𐞇 (`U+10787`), 𐞈 (`U+10788`), 𐞉 (`U+10789`), 𐞊 (`U+1078A`), 𐞚 (`U+1079A`), 𝆎 (`U+1D18E`), 𝐳 (`U+1D433`), 𝑧 (`U+1D467`), 𝒛 (`U+1D49B`), 𝗓 (`U+1D5D3`), 𝘇 (`U+1D607`), 𝘻 (`U+1D63B`), 𝙯 (`U+1D66F`), 𝚣 (`U+1D6A3`), 𝼒 (`U+1DF12`), 𝼘 (`U+1DF18`) - `cv61`: @@ -273,7 +273,7 @@ - `cv68`: - Γ (`U+0393`), Ϝ (`U+03DC`), ϝ (`U+03DD`), Ѓ (`U+0403`), Г (`U+0413`), г (`U+0433`), ѓ (`U+0453`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), ғ (`U+0493`), Ҕ (`U+0494`), ҕ (`U+0495`), Ҥ (`U+04A4`), ҥ (`U+04A5`), Ӷ (`U+04F6`), ӷ (`U+04F7`), Ӻ (`U+04FA`), ӻ (`U+04FB`), ᴦ (`U+1D26`), ⷢ (`U+2DE2`), Ꙣ (`U+A662`), ꙣ (`U+A663`), Ꙥ (`U+A664`), ꙥ (`U+A665`), Ꙧ (`U+A666`), ꙧ (`U+A667`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𝟋 (`U+1D7CB`), 𞀳 (`U+1E033`), 𞁔 (`U+1E054`), 𞁧 (`U+1E067`) + Γ (`U+0393`), Ϝ (`U+03DC`), Ѓ (`U+0403`), Г (`U+0413`), г (`U+0433`), ѓ (`U+0453`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), ғ (`U+0493`), Ҕ (`U+0494`), ҕ (`U+0495`), Ҥ (`U+04A4`), ҥ (`U+04A5`), Ӷ (`U+04F6`), ӷ (`U+04F7`), Ӻ (`U+04FA`), ӻ (`U+04FB`), ᴦ (`U+1D26`), ⷢ (`U+2DE2`), Ꙣ (`U+A662`), ꙣ (`U+A663`), Ꙥ (`U+A664`), ꙥ (`U+A665`), Ꙧ (`U+A666`), ꙧ (`U+A667`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𞀳 (`U+1E033`), 𞁔 (`U+1E054`), 𞁧 (`U+1E067`) - `cv69`: @@ -413,7 +413,7 @@ - `VDAC`: - \! (`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+237F`), ␦ (`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+27D3`), ⟔ (`U+27D4`), ⦙ (`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+2ABD`), ⪾ (`U+2ABE`), ⫶ (`U+2AF6`), ⸓ (`U+2E13`), ⸘ (`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+2E3D`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ⹉ (`U+2E49`), ⹊ (`U+2E4A`), ꜝ (`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`) + \! (`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+0589`), ჻ (`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+237F`), ␦ (`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+27D3`), ⟔ (`U+27D4`), ⦙ (`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+2ABD`), ⪾ (`U+2ABE`), ⫶ (`U+2AF6`), ⸓ (`U+2E13`), ⸘ (`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+2E3D`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ⹉ (`U+2E49`), ⹊ (`U+2E4A`), ꜝ (`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`) - `VDAD`: @@ -600,7 +600,7 @@ - `cv18`: - H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), ͱ (`U+0371`), Ή (`U+0389`), Η (`U+0397`), Һ (`U+04BA`), Ԧ (`U+0526`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꚕ (`U+A694`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`), 🇭 (`U+1F1ED`) + H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), Ή (`U+0389`), Η (`U+0397`), Һ (`U+04BA`), Ԧ (`U+0526`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꚕ (`U+A694`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`), 🇭 (`U+1F1ED`) - `cv19`: @@ -668,7 +668,7 @@ - `cv35`: - Z (`U+005A`), Ź (`U+0179`), Ż (`U+017B`), Ž (`U+017D`), Ƶ (`U+01B5`), Ʒ (`U+01B7`), Ƹ (`U+01B8`), DŽ (`U+01C4`), Ǯ (`U+01EE`), DZ (`U+01F1`), Ȥ (`U+0224`), Ζ (`U+0396`), Ӡ (`U+04E0`), ᴢ (`U+1D22`), ᴣ (`U+1D23`), Ẑ (`U+1E90`), Ẓ (`U+1E92`), Ẕ (`U+1E94`), Ⓩ (`U+24CF`), Ⱬ (`U+2C6B`), Ɀ (`U+2C7F`), Ꙁ (`U+A640`), Ꙃ (`U+A642`), Ᶎ (`U+A7C6`), 𜳯 (`U+1CCEF`), 𝐙 (`U+1D419`), 𝑍 (`U+1D44D`), 𝒁 (`U+1D481`), 𝖹 (`U+1D5B9`), 𝗭 (`U+1D5ED`), 𝘡 (`U+1D621`), 𝙕 (`U+1D655`), 𝚉 (`U+1D689`), 𝚭 (`U+1D6AD`), 𝛧 (`U+1D6E7`), 𝜡 (`U+1D721`), 𝝛 (`U+1D75B`), 𝞕 (`U+1D795`), 🄩 (`U+1F129`), 🅉 (`U+1F149`), 🅩 (`U+1F169`), 🆉 (`U+1F189`), 🇿 (`U+1F1FF`) + Z (`U+005A`), Ź (`U+0179`), Ż (`U+017B`), Ž (`U+017D`), Ƶ (`U+01B5`), Ʒ (`U+01B7`), Ƹ (`U+01B8`), DŽ (`U+01C4`), Ǯ (`U+01EE`), DZ (`U+01F1`), Ȥ (`U+0224`), Ζ (`U+0396`), Ӡ (`U+04E0`), ᴢ (`U+1D22`), ᴣ (`U+1D23`), Ẑ (`U+1E90`), Ẓ (`U+1E92`), Ẕ (`U+1E94`), Ⓩ (`U+24CF`), Ⱬ (`U+2C6B`), Ɀ (`U+2C7F`), Ꙁ (`U+A640`), Ꙃ (`U+A642`), Ᶎ (`U+A7C6`), 𜳯 (`U+1CCEF`), 𝐙 (`U+1D419`), 𝑍 (`U+1D44D`), 𝒁 (`U+1D481`), 𝖹 (`U+1D5B9`), 𝗭 (`U+1D5ED`), 𝘡 (`U+1D621`), 𝙕 (`U+1D655`), 𝚉 (`U+1D689`), 𝚭 (`U+1D6AD`), 𝛧 (`U+1D6E7`), 𝜡 (`U+1D721`), 𝝛 (`U+1D75B`), 𝞕 (`U+1D795`), 🄩 (`U+1F129`), 🄮 (`U+1F12E`), 🅉 (`U+1F149`), 🅩 (`U+1F169`), 🆉 (`U+1F189`), 🇿 (`U+1F1FF`) - `cv36`: @@ -696,7 +696,7 @@ - `cv42`: - g (`U+0067`), ĝ (`U+011D`), ğ (`U+011F`), ġ (`U+0121`), ģ (`U+0123`), ǥ (`U+01E5`), ǧ (`U+01E7`), ǵ (`U+01F5`), ɠ (`U+0260`), ɡ (`U+0261`), ᵍ (`U+1D4D`), ᵷ (`U+1D77`), ᶃ (`U+1D83`), ᶢ (`U+1DA2`), ᷚ (`U+1DDA`), ḡ (`U+1E21`), ⒢ (`U+24A2`), ⓖ (`U+24D6`), ꞡ (`U+A7A1`), Ɡ (`U+A7AC`), ꬶ (`U+AB36`), 𐞓 (`U+10793`), 𝐠 (`U+1D420`), 𝑔 (`U+1D454`), 𝒈 (`U+1D488`), 𝗀 (`U+1D5C0`), 𝗴 (`U+1D5F4`), 𝘨 (`U+1D628`), 𝙜 (`U+1D65C`), 𝚐 (`U+1D690`), 𝼁 (`U+1DF01`) + g (`U+0067`), ĝ (`U+011D`), ğ (`U+011F`), ġ (`U+0121`), ģ (`U+0123`), ǥ (`U+01E5`), ǧ (`U+01E7`), ǵ (`U+01F5`), ɠ (`U+0260`), ɡ (`U+0261`), ᵍ (`U+1D4D`), ᵷ (`U+1D77`), ᶃ (`U+1D83`), ᶢ (`U+1DA2`), ᷚ (`U+1DDA`), ḡ (`U+1E21`), ⒢ (`U+24A2`), ⓖ (`U+24D6`), ꞡ (`U+A7A1`), Ɡ (`U+A7AC`), 𐞓 (`U+10793`), 𝐠 (`U+1D420`), 𝑔 (`U+1D454`), 𝒈 (`U+1D488`), 𝗀 (`U+1D5C0`), 𝗴 (`U+1D5F4`), 𝘨 (`U+1D628`), 𝙜 (`U+1D65C`), 𝚐 (`U+1D690`), 𝼁 (`U+1DF01`) - `cv43`: @@ -768,7 +768,7 @@ - `cv60`: - z (`U+007A`), ź (`U+017A`), ż (`U+017C`), ž (`U+017E`), ƶ (`U+01B6`), ƹ (`U+01B9`), ƺ (`U+01BA`), Dž (`U+01C5`), dž (`U+01C6`), ǯ (`U+01EF`), Dz (`U+01F2`), dz (`U+01F3`), ȥ (`U+0225`), ɀ (`U+0240`), ʐ (`U+0290`), ʑ (`U+0291`), ʒ (`U+0292`), ʓ (`U+0293`), ʣ (`U+02A3`), ʤ (`U+02A4`), ʥ (`U+02A5`), ʫ (`U+02AB`), ӡ (`U+04E1`), ᵶ (`U+1D76`), ᶎ (`U+1D8E`), ᶚ (`U+1D9A`), ᶻ (`U+1DBB`), ᶼ (`U+1DBC`), ᶽ (`U+1DBD`), ᶾ (`U+1DBE`), ᷦ (`U+1DE6`), ẑ (`U+1E91`), ẓ (`U+1E93`), ẕ (`U+1E95`), ⒵ (`U+24B5`), ⓩ (`U+24E9`), ⱬ (`U+2C6C`), ꙁ (`U+A641`), ꙃ (`U+A643`), ꭦ (`U+AB66`), 𐞇 (`U+10787`), 𐞈 (`U+10788`), 𐞉 (`U+10789`), 𐞊 (`U+1078A`), 𐞚 (`U+1079A`), 𝆎 (`U+1D18E`), 𝐳 (`U+1D433`), 𝑧 (`U+1D467`), 𝒛 (`U+1D49B`), 𝗓 (`U+1D5D3`), 𝘇 (`U+1D607`), 𝘻 (`U+1D63B`), 𝙯 (`U+1D66F`), 𝚣 (`U+1D6A3`), 𝼒 (`U+1DF12`), 𝼘 (`U+1DF18`), 🄮 (`U+1F12E`) + z (`U+007A`), ź (`U+017A`), ż (`U+017C`), ž (`U+017E`), ƶ (`U+01B6`), ƹ (`U+01B9`), ƺ (`U+01BA`), Dž (`U+01C5`), dž (`U+01C6`), ǯ (`U+01EF`), Dz (`U+01F2`), dz (`U+01F3`), ȥ (`U+0225`), ɀ (`U+0240`), ʐ (`U+0290`), ʑ (`U+0291`), ʒ (`U+0292`), ʓ (`U+0293`), ʣ (`U+02A3`), ʤ (`U+02A4`), ʥ (`U+02A5`), ʫ (`U+02AB`), ӡ (`U+04E1`), ᵶ (`U+1D76`), ᶎ (`U+1D8E`), ᶚ (`U+1D9A`), ᶻ (`U+1DBB`), ᶼ (`U+1DBC`), ᶽ (`U+1DBD`), ᶾ (`U+1DBE`), ᷦ (`U+1DE6`), ẑ (`U+1E91`), ẓ (`U+1E93`), ẕ (`U+1E95`), ⒵ (`U+24B5`), ⓩ (`U+24E9`), ⱬ (`U+2C6C`), ꙁ (`U+A641`), ꙃ (`U+A643`), ꭦ (`U+AB66`), 𐞇 (`U+10787`), 𐞈 (`U+10788`), 𐞉 (`U+10789`), 𐞊 (`U+1078A`), 𐞚 (`U+1079A`), 𝆎 (`U+1D18E`), 𝐳 (`U+1D433`), 𝑧 (`U+1D467`), 𝒛 (`U+1D49B`), 𝗓 (`U+1D5D3`), 𝘇 (`U+1D607`), 𝘻 (`U+1D63B`), 𝙯 (`U+1D66F`), 𝚣 (`U+1D6A3`), 𝼒 (`U+1DF12`), 𝼘 (`U+1DF18`) - `cv61`: @@ -800,7 +800,7 @@ - `cv68`: - Γ (`U+0393`), Ϝ (`U+03DC`), ϝ (`U+03DD`), Ѓ (`U+0403`), Г (`U+0413`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), Ҕ (`U+0494`), ҕ (`U+0495`), Ҥ (`U+04A4`), ҥ (`U+04A5`), Ӷ (`U+04F6`), Ӻ (`U+04FA`), ᴦ (`U+1D26`), Ꙣ (`U+A662`), ꙣ (`U+A663`), Ꙥ (`U+A664`), ꙥ (`U+A665`), Ꙧ (`U+A666`), ꙧ (`U+A667`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𝟋 (`U+1D7CB`), 𞁧 (`U+1E067`) + Γ (`U+0393`), Ϝ (`U+03DC`), Ѓ (`U+0403`), Г (`U+0413`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), Ҕ (`U+0494`), ҕ (`U+0495`), Ҥ (`U+04A4`), ҥ (`U+04A5`), Ӷ (`U+04F6`), Ӻ (`U+04FA`), ᴦ (`U+1D26`), Ꙣ (`U+A662`), ꙣ (`U+A663`), Ꙥ (`U+A664`), ꙥ (`U+A665`), Ꙧ (`U+A666`), ꙧ (`U+A667`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𞁧 (`U+1E067`) - `cv69`: @@ -940,7 +940,7 @@ - `VDAC`: - \! (`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+237F`), ␦ (`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+27D3`), ⟔ (`U+27D4`), ⦙ (`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+2ABD`), ⪾ (`U+2ABE`), ⫶ (`U+2AF6`), ⸓ (`U+2E13`), ⸘ (`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+2E3D`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ⹉ (`U+2E49`), ⹊ (`U+2E4A`), ꜝ (`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`) + \! (`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+0589`), ჻ (`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+237F`), ␦ (`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+27D3`), ⟔ (`U+27D4`), ⦙ (`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+2ABD`), ⪾ (`U+2ABE`), ⫶ (`U+2AF6`), ⸓ (`U+2E13`), ⸘ (`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+2E3D`), ⹁ (`U+2E41`), ⹂ (`U+2E42`), ⹉ (`U+2E49`), ⹊ (`U+2E4A`), ꜝ (`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`) - `VDAD`: diff --git a/images/button-release.dark.svg b/images/button-release.dark.svg index 9f9df33eb8..f0ea9a5e57 100644 --- a/images/button-release.dark.svg +++ b/images/button-release.dark.svg @@ -7,9 +7,9 @@ - + - + @@ -21,13 +21,13 @@ - + - + \ No newline at end of file diff --git a/images/button-release.light.svg b/images/button-release.light.svg index 8d43d6a9d9..3b906cd4a8 100644 --- a/images/button-release.light.svg +++ b/images/button-release.light.svg @@ -7,9 +7,9 @@ - + - + @@ -21,13 +21,13 @@ - + - + \ No newline at end of file diff --git a/images/cs-block-armenian.dark.svg b/images/cs-block-armenian.dark.svg new file mode 100644 index 0000000000..59ab3a838a --- /dev/null +++ b/images/cs-block-armenian.dark.svg @@ -0,0 +1,734 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/cs-block-armenian.light.svg b/images/cs-block-armenian.light.svg new file mode 100644 index 0000000000..194bc9282c --- /dev/null +++ b/images/cs-block-armenian.light.svg @@ -0,0 +1,734 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/cs-block-mathematical-alphanumeric-symbols.dark.svg b/images/cs-block-mathematical-alphanumeric-symbols.dark.svg index 219e35dba7..10cb98f840 100644 --- a/images/cs-block-mathematical-alphanumeric-symbols.dark.svg +++ b/images/cs-block-mathematical-alphanumeric-symbols.dark.svg @@ -504,7 +504,7 @@ - + @@ -518,7 +518,7 @@ - + diff --git a/images/cs-block-mathematical-alphanumeric-symbols.light.svg b/images/cs-block-mathematical-alphanumeric-symbols.light.svg index cbac03789d..27fdb49ac0 100644 --- a/images/cs-block-mathematical-alphanumeric-symbols.light.svg +++ b/images/cs-block-mathematical-alphanumeric-symbols.light.svg @@ -504,7 +504,7 @@ - + @@ -518,7 +518,7 @@ - + diff --git a/images/cs-block-miscellaneous-mathematical-symbols-a.dark.svg b/images/cs-block-miscellaneous-mathematical-symbols-a.dark.svg index 5f1cd36006..7a1fda8b2b 100644 --- a/images/cs-block-miscellaneous-mathematical-symbols-a.dark.svg +++ b/images/cs-block-miscellaneous-mathematical-symbols-a.dark.svg @@ -29,18 +29,22 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -273,33 +277,33 @@ - - + + - - + + - + - - + + - - + + - + @@ -314,12 +318,12 @@ - + - + @@ -344,32 +348,32 @@ - + - + - + - + - + - + @@ -384,12 +388,12 @@ - + - + \ No newline at end of file diff --git a/images/cs-block-miscellaneous-mathematical-symbols-a.light.svg b/images/cs-block-miscellaneous-mathematical-symbols-a.light.svg index 3523e592bb..0819714b28 100644 --- a/images/cs-block-miscellaneous-mathematical-symbols-a.light.svg +++ b/images/cs-block-miscellaneous-mathematical-symbols-a.light.svg @@ -29,18 +29,22 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -273,33 +277,33 @@ - - + + - - + + - + - - + + - - + + - + @@ -314,12 +318,12 @@ - + - + @@ -344,32 +348,32 @@ - + - + - + - + - + - + @@ -384,12 +388,12 @@ - + - + \ No newline at end of file diff --git a/images/cs-block-miscellaneous-mathematical-symbols-b.dark.svg b/images/cs-block-miscellaneous-mathematical-symbols-b.dark.svg index 8a7ede8850..a589e0ebee 100644 --- a/images/cs-block-miscellaneous-mathematical-symbols-b.dark.svg +++ b/images/cs-block-miscellaneous-mathematical-symbols-b.dark.svg @@ -44,43 +44,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -508,18 +509,18 @@ - - + + - + - + @@ -554,32 +555,32 @@ - + - + - + - + - + - + @@ -629,57 +630,57 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -699,7 +700,7 @@ - + @@ -724,42 +725,42 @@ - + - + - + - + - + - + - + - + @@ -769,7 +770,7 @@ - + @@ -824,42 +825,42 @@ - + - + - + - + - + - + - + - + diff --git a/images/cs-block-miscellaneous-mathematical-symbols-b.light.svg b/images/cs-block-miscellaneous-mathematical-symbols-b.light.svg index 97283f4167..077b10fd4b 100644 --- a/images/cs-block-miscellaneous-mathematical-symbols-b.light.svg +++ b/images/cs-block-miscellaneous-mathematical-symbols-b.light.svg @@ -44,43 +44,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -508,18 +509,18 @@ - - + + - + - + @@ -554,32 +555,32 @@ - + - + - + - + - + - + @@ -629,57 +630,57 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -699,7 +700,7 @@ - + @@ -724,42 +725,42 @@ - + - + - + - + - + - + - + - + @@ -769,7 +770,7 @@ - + @@ -824,42 +825,42 @@ - + - + - + - + - + - + - + - + diff --git a/images/cs-block-supplemental-mathematical-operators.dark.svg b/images/cs-block-supplemental-mathematical-operators.dark.svg index 2327f9993b..b408fb9169 100644 --- a/images/cs-block-supplemental-mathematical-operators.dark.svg +++ b/images/cs-block-supplemental-mathematical-operators.dark.svg @@ -144,7 +144,7 @@ - + diff --git a/images/cs-block-supplemental-mathematical-operators.light.svg b/images/cs-block-supplemental-mathematical-operators.light.svg index b2318843d8..7014cc4bc2 100644 --- a/images/cs-block-supplemental-mathematical-operators.light.svg +++ b/images/cs-block-supplemental-mathematical-operators.light.svg @@ -144,7 +144,7 @@ - + diff --git a/images/cs-block-symbols-for-legacy-computing-supplement.dark.svg b/images/cs-block-symbols-for-legacy-computing-supplement.dark.svg index 3a5ffeba08..03bf73a787 100644 --- a/images/cs-block-symbols-for-legacy-computing-supplement.dark.svg +++ b/images/cs-block-symbols-for-legacy-computing-supplement.dark.svg @@ -1,5 +1,5 @@ - + @@ -176,458 +176,463 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1914,73 +1919,73 @@ - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + @@ -1996,82 +2001,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2087,52 +2092,52 @@ - + - + - + - + - + - + - + - + - + - + @@ -2178,82 +2183,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2269,82 +2274,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2360,82 +2365,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2451,82 +2456,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2542,82 +2547,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2633,82 +2638,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2724,82 +2729,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2815,82 +2820,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2906,82 +2911,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2997,82 +3002,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3088,82 +3093,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3179,82 +3184,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3270,82 +3275,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3361,82 +3366,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3452,32 +3457,32 @@ - + - + - + - + - + - + @@ -3543,42 +3548,42 @@ - + - + - + - + - + - + - + - + @@ -3598,12 +3603,12 @@ - + - + @@ -3634,82 +3639,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3725,82 +3730,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3816,82 +3821,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3907,82 +3912,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3998,82 +4003,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4089,82 +4094,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4180,82 +4185,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4271,82 +4276,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4362,82 +4367,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4453,82 +4458,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4544,82 +4549,173 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/cs-block-symbols-for-legacy-computing-supplement.light.svg b/images/cs-block-symbols-for-legacy-computing-supplement.light.svg index b1d43ce6a8..72e3d7812e 100644 --- a/images/cs-block-symbols-for-legacy-computing-supplement.light.svg +++ b/images/cs-block-symbols-for-legacy-computing-supplement.light.svg @@ -1,5 +1,5 @@ - + @@ -176,458 +176,463 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1914,73 +1919,73 @@ - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + @@ -1996,82 +2001,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2087,52 +2092,52 @@ - + - + - + - + - + - + - + - + - + - + @@ -2178,82 +2183,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2269,82 +2274,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2360,82 +2365,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2451,82 +2456,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2542,82 +2547,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2633,82 +2638,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2724,82 +2729,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2815,82 +2820,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2906,82 +2911,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2997,82 +3002,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3088,82 +3093,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3179,82 +3184,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3270,82 +3275,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3361,82 +3366,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3452,32 +3457,32 @@ - + - + - + - + - + - + @@ -3543,42 +3548,42 @@ - + - + - + - + - + - + - + - + @@ -3598,12 +3603,12 @@ - + - + @@ -3634,82 +3639,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3725,82 +3730,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3816,82 +3821,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3907,82 +3912,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3998,82 +4003,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4089,82 +4094,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4180,82 +4185,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4271,82 +4276,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4362,82 +4367,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4453,82 +4458,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4544,82 +4549,173 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 9a9a49829d..dbe2095f90 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 aa2eab06f3..a1422de30c 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-chi-semi-chancery-curly-serifed.dark.svg b/images/cv-lower-chi-semi-chancery-curly-serifed.dark.svg index 97c10c7b54..328afe33d1 100644 --- a/images/cv-lower-chi-semi-chancery-curly-serifed.dark.svg +++ b/images/cv-lower-chi-semi-chancery-curly-serifed.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-lower-chi-semi-chancery-curly-serifed.light.svg b/images/cv-lower-chi-semi-chancery-curly-serifed.light.svg index 244999a116..bc9b9941f8 100644 --- a/images/cv-lower-chi-semi-chancery-curly-serifed.light.svg +++ b/images/cv-lower-chi-semi-chancery-curly-serifed.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-lower-chi-semi-chancery-straight-serifed.dark.svg b/images/cv-lower-chi-semi-chancery-straight-serifed.dark.svg index 5372e9224c..b48cd6a7a8 100644 --- a/images/cv-lower-chi-semi-chancery-straight-serifed.dark.svg +++ b/images/cv-lower-chi-semi-chancery-straight-serifed.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-lower-chi-semi-chancery-straight-serifed.light.svg b/images/cv-lower-chi-semi-chancery-straight-serifed.light.svg index aaa3b28154..06814f84ce 100644 --- a/images/cv-lower-chi-semi-chancery-straight-serifed.light.svg +++ b/images/cv-lower-chi-semi-chancery-straight-serifed.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-chancery.dark.svg b/images/cv-x-chancery.dark.svg index f0de0c0a77..8704641b88 100644 --- a/images/cv-x-chancery.dark.svg +++ b/images/cv-x-chancery.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-chancery.light.svg b/images/cv-x-chancery.light.svg index 1fa4414df0..b7a893cfa4 100644 --- a/images/cv-x-chancery.light.svg +++ b/images/cv-x-chancery.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-semi-chancery-curly-serifed.dark.svg b/images/cv-x-semi-chancery-curly-serifed.dark.svg index 310dcfdcc3..7bf82a8617 100644 --- a/images/cv-x-semi-chancery-curly-serifed.dark.svg +++ b/images/cv-x-semi-chancery-curly-serifed.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-semi-chancery-curly-serifed.light.svg b/images/cv-x-semi-chancery-curly-serifed.light.svg index af105f2bab..a6eb346635 100644 --- a/images/cv-x-semi-chancery-curly-serifed.light.svg +++ b/images/cv-x-semi-chancery-curly-serifed.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-semi-chancery-straight-serifed.dark.svg b/images/cv-x-semi-chancery-straight-serifed.dark.svg index 5d8a74394f..4d4d6066df 100644 --- a/images/cv-x-semi-chancery-straight-serifed.dark.svg +++ b/images/cv-x-semi-chancery-straight-serifed.dark.svg @@ -1,7 +1,7 @@ - + diff --git a/images/cv-x-semi-chancery-straight-serifed.light.svg b/images/cv-x-semi-chancery-straight-serifed.light.svg index d78f2ab5da..b198e29ec0 100644 --- a/images/cv-x-semi-chancery-straight-serifed.light.svg +++ b/images/cv-x-semi-chancery-straight-serifed.light.svg @@ -1,7 +1,7 @@ - + diff --git a/images/package-sample-IosevkaAile.dark.svg b/images/package-sample-IosevkaAile.dark.svg index 53a70954c5..8c0a772080 100644 --- a/images/package-sample-IosevkaAile.dark.svg +++ b/images/package-sample-IosevkaAile.dark.svg @@ -145,7 +145,7 @@ - + diff --git a/images/package-sample-IosevkaAile.light.svg b/images/package-sample-IosevkaAile.light.svg index 6eb4b17f67..4ba7b058d1 100644 --- a/images/package-sample-IosevkaAile.light.svg +++ b/images/package-sample-IosevkaAile.light.svg @@ -145,7 +145,7 @@ - + diff --git a/images/package-sample-IosevkaEtoile.dark.svg b/images/package-sample-IosevkaEtoile.dark.svg index a0fcf0bbd1..6f5fb68f8a 100644 --- a/images/package-sample-IosevkaEtoile.dark.svg +++ b/images/package-sample-IosevkaEtoile.dark.svg @@ -146,7 +146,7 @@ - + diff --git a/images/package-sample-IosevkaEtoile.light.svg b/images/package-sample-IosevkaEtoile.light.svg index f2af2d958e..be1090adde 100644 --- a/images/package-sample-IosevkaEtoile.light.svg +++ b/images/package-sample-IosevkaEtoile.light.svg @@ -146,7 +146,7 @@ - + diff --git a/images/ss-i-ss01-1.dark.svg b/images/ss-i-ss01-1.dark.svg index 03d7435835..ec0ac5ad59 100644 --- a/images/ss-i-ss01-1.dark.svg +++ b/images/ss-i-ss01-1.dark.svg @@ -129,7 +129,7 @@ - + diff --git a/images/ss-i-ss01-1.light.svg b/images/ss-i-ss01-1.light.svg index 558bbc0865..19cb5b0db7 100644 --- a/images/ss-i-ss01-1.light.svg +++ b/images/ss-i-ss01-1.light.svg @@ -129,7 +129,7 @@ - + diff --git a/images/ss-i-ss03-1.dark.svg b/images/ss-i-ss03-1.dark.svg index 52b3b8773b..43b54de395 100644 --- a/images/ss-i-ss03-1.dark.svg +++ b/images/ss-i-ss03-1.dark.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss03-1.light.svg b/images/ss-i-ss03-1.light.svg index 3bf698f380..d0e99c7f2e 100644 --- a/images/ss-i-ss03-1.light.svg +++ b/images/ss-i-ss03-1.light.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss04-1.dark.svg b/images/ss-i-ss04-1.dark.svg index db4b8e3a60..6059dc7ff9 100644 --- a/images/ss-i-ss04-1.dark.svg +++ b/images/ss-i-ss04-1.dark.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss04-1.light.svg b/images/ss-i-ss04-1.light.svg index 8e13432d7d..f74eaba5c6 100644 --- a/images/ss-i-ss04-1.light.svg +++ b/images/ss-i-ss04-1.light.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss08-1.dark.svg b/images/ss-i-ss08-1.dark.svg index 742a5f0ef9..bcfe701e45 100644 --- a/images/ss-i-ss08-1.dark.svg +++ b/images/ss-i-ss08-1.dark.svg @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss08-1.light.svg b/images/ss-i-ss08-1.light.svg index b58515ca8f..93f41a57da 100644 --- a/images/ss-i-ss08-1.light.svg +++ b/images/ss-i-ss08-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 3c632d7e4d..18429c7cd3 100644 --- a/images/ss-i-ss15-1.dark.svg +++ b/images/ss-i-ss15-1.dark.svg @@ -131,7 +131,7 @@ - + diff --git a/images/ss-i-ss15-1.light.svg b/images/ss-i-ss15-1.light.svg index d28c30e7e5..9212ebdc8b 100644 --- a/images/ss-i-ss15-1.light.svg +++ b/images/ss-i-ss15-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 9d5ea18a86..39a4f29e17 100644 --- a/images/ss-i-ss17-1.dark.svg +++ b/images/ss-i-ss17-1.dark.svg @@ -51,7 +51,7 @@ - + @@ -130,7 +130,7 @@ - + diff --git a/images/ss-i-ss17-1.light.svg b/images/ss-i-ss17-1.light.svg index f2304b0772..0495d26f5f 100644 --- a/images/ss-i-ss17-1.light.svg +++ b/images/ss-i-ss17-1.light.svg @@ -51,7 +51,7 @@ - + @@ -130,7 +130,7 @@ - + diff --git a/package-lock.json b/package-lock.json index b637528644..d99bd8b818 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@iosevka/monorepo", - "version": "31.9.1", + "version": "32.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@iosevka/monorepo", - "version": "31.9.1", + "version": "32.0.0", "workspaces": [ "packages/*", "tools/*" @@ -5049,16 +5049,16 @@ }, "packages/font": { "name": "@iosevka/font", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "31.9.1", - "@iosevka/font-otl": "31.9.1", - "@iosevka/geometry": "31.9.1", - "@iosevka/geometry-cache": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/param": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/font-glyphs": "32.0.0", + "@iosevka/font-otl": "32.0.0", + "@iosevka/geometry": "32.0.0", + "@iosevka/geometry-cache": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/param": "32.0.0", + "@iosevka/util": "32.0.0", "@msgpack/msgpack": "^2.8.0", "harfbuzzjs": "^0.4.0", "ot-builder": "^1.7.4", @@ -5067,86 +5067,86 @@ }, "packages/font-glyphs": { "name": "@iosevka/font-glyphs", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/font-kits": "31.9.1", - "@iosevka/geometry": "31.9.1", - "@iosevka/geometry-cache": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/font-kits": "32.0.0", + "@iosevka/geometry": "32.0.0", + "@iosevka/geometry-cache": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/util": "32.0.0", "typo-geom": "^0.16.1" } }, "packages/font-kits": { "name": "@iosevka/font-kits", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/geometry": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/geometry": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/util": "32.0.0", "typo-geom": "^0.16.1" } }, "packages/font-otl": { "name": "@iosevka/font-otl", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/font-glyphs": "31.9.1", - "@iosevka/glyph": "31.9.1", + "@iosevka/font-glyphs": "32.0.0", + "@iosevka/glyph": "32.0.0", "toposort": "^2.0.2" } }, "packages/geometry": { "name": "@iosevka/geometry", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/util": "31.9.1", + "@iosevka/util": "32.0.0", "spiro": "^3.0.1", "typo-geom": "^0.16.1" } }, "packages/geometry-cache": { "name": "@iosevka/geometry-cache", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/geometry": "31.9.1", + "@iosevka/geometry": "32.0.0", "@msgpack/msgpack": "^2.8.0" } }, "packages/glyph": { "name": "@iosevka/glyph", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/geometry": "31.9.1" + "@iosevka/geometry": "32.0.0" } }, "packages/param": { "name": "@iosevka/param", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/util": "31.9.1" + "@iosevka/util": "32.0.0" } }, "packages/util": { "name": "@iosevka/util", - "version": "31.9.1" + "version": "32.0.0" }, "tools/amend-readme": { "name": "@iosevka/amend-readme", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "31.9.1", + "@iosevka/param": "32.0.0", "@unicode/unicode-16.0.0": "^1.6.0", "semver": "^7.6.3" } }, "tools/data-export": { "name": "@iosevka/data-export", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "31.9.1", + "@iosevka/param": "32.0.0", "@msgpack/msgpack": "^2.8.0", "@unicode/unicode-16.0.0": "^1.6.0", "cldr": "^7.5.0" @@ -5154,16 +5154,16 @@ }, "tools/generate-samples": { "name": "@iosevka/generate-samples", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/data-export": "31.9.1" + "@iosevka/data-export": "32.0.0" } }, "tools/misc": { "name": "@iosevka/misc", - "version": "31.9.1", + "version": "32.0.0", "dependencies": { - "@iosevka/util": "31.9.1", + "@iosevka/util": "32.0.0", "@unicode/unicode-16.0.0": "^1.6.0", "semver": "^7.6.3", "wawoff2": "^2.0.1" diff --git a/package.json b/package.json index 06e023b0e4..68a6af01c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/monorepo", - "version": "31.9.1", + "version": "32.0.0", "workspaces": [ "packages/*", "tools/*" diff --git a/packages/font-glyphs/package.json b/packages/font-glyphs/package.json index 30adf22371..5b8c49cf50 100644 --- a/packages/font-glyphs/package.json +++ b/packages/font-glyphs/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font-glyphs", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./lib/index.mjs", @@ -8,11 +8,11 @@ "./unicode-knowledge": "./lib/meta/unicode-knowledge.mjs" }, "dependencies": { - "@iosevka/font-kits": "31.9.1", - "@iosevka/geometry": "31.9.1", - "@iosevka/geometry-cache": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/font-kits": "32.0.0", + "@iosevka/geometry": "32.0.0", + "@iosevka/geometry-cache": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/util": "32.0.0", "typo-geom": "^0.16.1" } } diff --git a/packages/font-glyphs/src/auto-build/composite.ptl b/packages/font-glyphs/src/auto-build/composite.ptl index 327e270322..c7e8c63a8b 100644 --- a/packages/font-glyphs/src/auto-build/composite.ptl +++ b/packages/font-glyphs/src/auto-build/composite.ptl @@ -2,7 +2,7 @@ $$include '../meta/macros.ptl' import [mix linreg clamp fallback] from "@iosevka/util" -import [getGrMesh AnyCvOrCherryPicking CvDecompose Joining hashCv IsCompositeOrLigature NLDAcuteVariant] from "@iosevka/glyph/relation" +import [getGrMesh AnyCvOrCherryPicking CvDecompose Joining hashCv IsCompositeOrLigature NLDAcuteVariant HBSCaronVariant] from "@iosevka/glyph/relation" import [hashGeometry] from "@iosevka/geometry" import [Transform] from "@iosevka/geometry/transform" extern Map @@ -836,7 +836,7 @@ glyph-block AutoBuild-Enclosure : begin list 0x2789 {'one/sansSerif.lnum' 'zero.lnum'} WideWidth1 list 0x1F16D {'C' 'C'} WideWidth2 list 0x1F12D {'C' 'D'} WideWidth1 - list 0x1F12E {'W' 'z'} WideWidth1 + list 0x1F12E {'W' 'smcpZ'} WideWidth1 foreach [j : range 10 till 20] : compositions.push : list (0x2460 + j - 1) [digitGlyphNames j] WideWidth1 foreach [j : range 21 till 35] : compositions.push : list (0x3251 + j - 21) [digitGlyphNames j] WideWidth1 foreach [j : range 36 till 50] : compositions.push : list (0x32B1 + j - 36) [digitGlyphNames j] WideWidth1 @@ -1445,7 +1445,7 @@ glyph-block Autobuild-Ligatures : begin list 0xEF11 { 'IAcute' 'JAcute' } list 0xEF12 { 'iAcute' 'jAcute' } - # Link Gr for acuted variants + # Link Gr for acute variants NLDAcuteVariant.set [glyphStore.queryByUnicodeEnsured 0x132] [glyphStore.queryNameByUnicodeEnsured 0xEF11] NLDAcuteVariant.set [glyphStore.queryByUnicodeEnsured 0x133] [glyphStore.queryNameByUnicodeEnsured 0xEF12] @@ -1471,6 +1471,11 @@ glyph-block Autobuild-Ligatures : begin list 0x2116 { 'N' 'numeroRightHalf' } list 0x1F190 { 'D' 'J' } WideWidth1 + # Link Gr for caron variants + HBSCaronVariant.set [glyphStore.queryByUnicodeEnsured 0x1F1] [glyphStore.queryNameByUnicodeEnsured 0x1C4] + HBSCaronVariant.set [glyphStore.queryByUnicodeEnsured 0x1F2] [glyphStore.queryNameByUnicodeEnsured 0x1C5] + HBSCaronVariant.set [glyphStore.queryByUnicodeEnsured 0x1F3] [glyphStore.queryNameByUnicodeEnsured 0x1C6] + createLigatures 'romanNumerals1' 1 1 1 1 0 : list list 0x2160 { 'I' } list 0x2164 { 'V' } diff --git a/packages/font-glyphs/src/auto-build/recursive-build.ptl b/packages/font-glyphs/src/auto-build/recursive-build.ptl index d4797b6612..a54c5d0c2b 100644 --- a/packages/font-glyphs/src/auto-build/recursive-build.ptl +++ b/packages/font-glyphs/src/auto-build/recursive-build.ptl @@ -16,7 +16,7 @@ glyph-block Recursive-Build : begin define [MiniatureParaT] : with-params [pp crowd scale [sbscale (Width / UPM)] [mono false] [mono2 false] [forceUpright false]] : begin local forkedPara : Object.assign {.} pp - forkedPara.stroke = [AdviceStroke crowd : Math.pow [clamp 0 1 (HalfUPM / Width)] 0.5] / scale + forkedPara.stroke = [AdviceStroke crowd : Math.sqrt : clamp 0 1 (HalfUPM / Width)] / scale forkedPara.dotSize = pp.dotSize * forkedPara.stroke / pp.stroke forkedPara.periodSize = pp.periodSize * forkedPara.stroke / pp.stroke forkedPara.sb = SB * sbscale diff --git a/packages/font-glyphs/src/common/shapes.ptl b/packages/font-glyphs/src/common/shapes.ptl index 21b4550db6..ba14f4a796 100644 --- a/packages/font-glyphs/src/common/shapes.ptl +++ b/packages/font-glyphs/src/common/shapes.ptl @@ -192,34 +192,17 @@ glyph-block CommonShapes : begin local width : fallback _width Stroke local ada : fallback _ada SmallArchDepthA local adb : fallback _adb SmallArchDepthB - if (u - d > ada + adb) : then : begin - return : sink - widths width 0 - arch.lhs.centerAt.rtl.t middle u (sw -- width) - archv - flat (l + OX) (u - ada) - curl (l + OX) (d + adb) - arcvh - arch.lhs.centerAt.ltr.b middle d (sw -- width) - archv - flat (r - OX) (d + ada) - curl (r - OX) (u - adb) - arcvh - close - : else : begin - local ymiddlea : mix d u (adb / (ada + adb)) - local ymiddleb : mix d u (ada / (ada + adb)) - return : sink - widths width 0 - arch.lhs.centerAt.rtl.t middle u (sw -- width) - archv - g4 (l + OX) ymiddlea - arcvh - arch.lhs.centerAt.ltr.b middle d (sw -- width) - archv - g4 (r - OX) ymiddleb - arcvh - close + return : sink + widths width 0 + arch.lhs.centerAt.rtl.t middle u (sw -- width) + archv + flatside.ld l d u ada adb + arcvh + arch.lhs.centerAt.ltr.b middle d (sw -- width) + archv + flatside.ru r d u ada adb + arcvh + close glyph-block-export OShape define [OShape u d l r _width _ada _adb] : OShapeT dispiro u d l r _width _ada _adb @@ -235,39 +218,20 @@ glyph-block CommonShapes : begin local width : fallback _width Stroke local ada : fallback _ada SmallArchDepthA local adb : fallback _adb SmallArchDepthB - if (u - d > ada + adb) : then : begin - include : dispiro - widths.lhs width - arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.rtl.t (middle - gap / 2) u (sw -- width) (knot-ty -- curl) - archv - flat (l + OX) (u - ada) - curl (l + OX) (d + adb) - arcvh - arch.lhs.centerAt.ltr.b (middle - gap / 2) d (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.ltr.b (middle + gap / 2) d (sw -- width) (knot-ty -- curl) - archv - flat (r - OX) (d + ada) - curl (r - OX) (u - adb) - arcvh - arch.lhs.centerAt.rtl.t (middle + gap / 2) u (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- curl) - : else : begin - local ymiddlea : mix d u (adb / (ada + adb)) - local ymiddleb : mix d u (ada / (ada + adb)) - include : dispiro - arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.rtl.t (middle - gap / 2) u (sw -- width) (knot-ty -- curl) - archv - g4 (l + OX) ymiddlea - arcvh - arch.lhs.centerAt.ltr.b (middle - gap / 2) d (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.ltr.b (middle + gap / 2) d (sw -- width) (knot-ty -- curl) - archv - g4 (r - OX) ymiddleb - arcvh - arch.lhs.centerAt.rtl.t (middle + gap / 2) u (sw -- width) (knot-ty -- flat) - arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- curl) + include : dispiro + widths.lhs width + arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- flat) + arch.lhs.centerAt.rtl.t (middle - gap / 2) u (sw -- width) (knot-ty -- curl) + archv + flatside.ld l d u ada adb + arcvh + arch.lhs.centerAt.ltr.b (middle - gap / 2) d (sw -- width) (knot-ty -- flat) + arch.lhs.centerAt.ltr.b (middle + gap / 2) d (sw -- width) (knot-ty -- curl) + archv + flatside.ru r d u ada adb + arcvh + arch.lhs.centerAt.rtl.t (middle + gap / 2) u (sw -- width) (knot-ty -- flat) + arch.lhs.centerAt.rtl.t middle u (sw -- width) (knot-ty -- curl) glyph-block-export HSerif define HSerif : namespace @@ -530,6 +494,68 @@ glyph-block CommonShapes : begin local args : object [yRef y] sw swTerminal isTail noSwash [overshoot o] return : WithKnotProxy [hookProxy args] : new FunctionInterpolator hookEndBlender args + glyph-block-export flatside + define flatside : namespace + export : define flex-params [ld]: begin + local-parameter : x # X-position of the stroke, without overshoot + local-parameter : d # Y-position of the ring's bottom + local-parameter : u # Y-position of the ring's top + local-parameter : ada -- ArchDepthA + local-parameter : adb -- ArchDepthB + local-parameter : overshoot -- OX + local-parameter : af -- nothing # Additional function for the control knots + + return : if (u - d > ada + adb) + list + flat (x + overshoot) (u - ada) af + curl (x + overshoot) (d + adb) + g4 (x + overshoot) [mix d u (adb / (ada + adb))] af + + export : define flex-params [lu]: begin + local-parameter : x # X-position of the stroke, without overshoot + local-parameter : d # Y-position of the ring's bottom + local-parameter : u # Y-position of the ring's top + local-parameter : ada -- ArchDepthA + local-parameter : adb -- ArchDepthB + local-parameter : overshoot -- OX + local-parameter : af -- nothing # Additional function for the control knots + + return : if (u - d > ada + adb) + list + flat (x + overshoot) (d + adb) af + curl (x + overshoot) (u - ada) + g4 (x + overshoot) [mix d u (adb / (ada + adb))] af + + export : define flex-params [rd]: begin + local-parameter : x # X-position of the stroke, without overshoot + local-parameter : d # Y-position of the ring's bottom + local-parameter : u # Y-position of the ring's top + local-parameter : ada -- ArchDepthA + local-parameter : adb -- ArchDepthB + local-parameter : overshoot -- OX + local-parameter : af -- nothing # Additional function for the control knots + + return : if (u - d > ada + adb) + list + flat (x - overshoot) (u - adb) af + curl (x - overshoot) (d + ada) + g4 (x - overshoot) [mix d u (ada / (ada + adb))] af + + export : define flex-params [ru]: begin + local-parameter : x # X-position of the stroke, without overshoot + local-parameter : d # Y-position of the ring's bottom + local-parameter : u # Y-position of the ring's top + local-parameter : ada -- ArchDepthA + local-parameter : adb -- ArchDepthB + local-parameter : overshoot -- OX + local-parameter : af -- nothing # Additional function for the control knots + + return : if (u - d > ada + adb) + list + flat (x - overshoot) (d + ada) af + curl (x - overshoot) (u - adb) + g4 (x - overshoot) [mix d u (ada / (ada + adb))] af + glyph-block-export arch define arch : namespace export : define adjust-x : namespace diff --git a/packages/font-glyphs/src/index.ptl b/packages/font-glyphs/src/index.ptl index a52b08bf47..b8ca712283 100644 --- a/packages/font-glyphs/src/index.ptl +++ b/packages/font-glyphs/src/index.ptl @@ -79,6 +79,7 @@ export : define [buildGlyphs para recursive] : begin run-glyph-module "./letter/latin.mjs" run-glyph-module "./letter/greek.mjs" run-glyph-module "./letter/cyrillic.mjs" + run-glyph-module "./letter/armenian.mjs" # Numbers run-glyph-module "./number/index.mjs" diff --git a/packages/font-glyphs/src/letter/armenian.ptl b/packages/font-glyphs/src/letter/armenian.ptl new file mode 100644 index 0000000000..b6e83b6c8b --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian.ptl @@ -0,0 +1,25 @@ +$$include '../meta/macros.ptl' + +export : define [apply] : begin + define $$Capture$$ this + run-glyph-module "./armenian/shared.mjs" + run-glyph-module "./armenian/upper-u-group.mjs" + run-glyph-module "./armenian/lower-u-group.mjs" + run-glyph-module "./armenian/hook-group.mjs" + run-glyph-module "./armenian/upper-gim-group.mjs" + run-glyph-module "./armenian/lower-q-group.mjs" + run-glyph-module "./armenian/upper-za-group.mjs" + run-glyph-module "./armenian/eh-liun-hiun.mjs" + run-glyph-module "./armenian/to.mjs" + run-glyph-module "./armenian/upper-xeh.mjs" + run-glyph-module "./armenian/ca.mjs" + run-glyph-module "./armenian/upper-ho.mjs" + run-glyph-module "./armenian/upper-dza-group.mjs" + run-glyph-module "./armenian/lower-dza-cheh.mjs" + run-glyph-module "./armenian/upper-cheh.mjs" + run-glyph-module "./armenian/upper-yi.mjs" + run-glyph-module "./armenian/lower-sha-group.mjs" + run-glyph-module "./armenian/upper-co.mjs" + run-glyph-module "./armenian/keh.mjs" + run-glyph-module "./armenian/feh.mjs" + run-glyph-module "./armenian/aliases.mjs" diff --git a/packages/font-glyphs/src/letter/armenian/aliases.ptl b/packages/font-glyphs/src/letter/armenian/aliases.ptl new file mode 100644 index 0000000000..7c4036f556 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/aliases.ptl @@ -0,0 +1,16 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" + +glyph-module + +glyph-block Letter-Armenian-Aliases : begin + glyph-block-import Common-Derivatives + + alias 'armn/Tiun' 0x54F 'S.serifless' + alias 'armn/Piur' 0x553 'grek/Phi' + alias 'armn/Oh' 0x555 'O' + alias 'armn/yi' 0x575 'dotlessj.flatHook' + alias 'armn/co' 0x581 'g.singleStorey' + alias 'armn/oh' 0x585 'o' + alias 'armn/yiBar' 0x588 'dotlessjBar.flatHook' diff --git a/packages/font-glyphs/src/letter/armenian/ca.ptl b/packages/font-glyphs/src/letter/armenian/ca.ptl new file mode 100644 index 0000000000..5f6aef768c --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/ca.ptl @@ -0,0 +1,65 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Ca : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Ca" + create-glyph 'armn/Ca' 0x53E : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : VBar.l df.leftSB (CAP - VJut) CAP df.mvs + local yStart : CAP - VJut + df.mvs + include : dispiro + widths.rhs.heading df.mvs Rightward + flat df.leftSB yStart + curl df.middle yStart + archv + flat df.rightSB (yStart - ArchDepthB) + curl df.rightSB (0 + ArchDepthA) + arch.rhs 0 (sw -- df.mvs) + flat df.leftSB (0 + ArchDepthB) + curl df.leftSB (yStart - ArchDepthA) + arcvh + flat df.rightSB CAP + curl (df.rightSB + jut - [HSwToV : 0.5 * df.mvs]) CAP + + create-glyph 'armn/ca' 0x56E : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + + local x1 : mix df.leftSB df.rightSB 0.45 + local x2 : mix df.leftSB df.rightSB 0.3 + local xOffset : 0.5 * [HSwToV df.mvs] + local y2 : mix Ascender XH 0.5 + include : dispiro + widths.rhs df.mvs + flat (x1 + xOffset) Ascender [heading Downward] + curl (x2 + xOffset) y2 [heading Downward] + + local x3 : mix df.leftSB df.rightSB 0.1 + local x4 : mix df.leftSB df.rightSB 0.6 + + include : intersection [MaskBelowLine (x1 - xOffset) Ascender (x2 - xOffset) y2 100] : dispiro + widths.rhs df.mvs + flat (x3 + xOffset) Ascender + curl (x4 + xOffset) XH + straight.down.end (df.rightSB - OX) (XH - SmallArchDepthB) + curl (df.rightSB - OX) (0 + SmallArchDepthA) + arch.rhs 0 (sw -- df.mvs) + flat (df.leftSB + OX) (0 + SmallArchDepthB) + curl (df.leftSB + OX) (XH - SmallArchDepthA) + arcvh + flat df.middle XH + curl df.rightSB XH diff --git a/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl new file mode 100644 index 0000000000..d4c12c1b9f --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/eh-liun-hiun.ptl @@ -0,0 +1,77 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Eh-Liun-Hiun : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Eh" + create-glyph 'armn/Eh' 0x537 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : VBar.l df.leftSB 0 CAP df.mvs + include : [ArmHBar.short df 1].base + include : [ArmHBar.normal df 1].high + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lt.full sf.lb.outer + + create-glyph 'armn/eh' 0x567 : glyph-proc + local df : include : DivFrame para.diversityF + include : df.markSet.b + include : VBar.l df.leftSB 0 Ascender df.mvs + include : [ArmHBar.short df 0].base + include : [ArmHBar.normal df 0].high + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.lt.outer + if [not para.isItalic] : include sf.lb.outer + + do "Liun" + create-glyph 'armn/Liun' 0x53C : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : VBar.l df.leftSB 0 CAP df.mvs + include : [ArmHBar.normal df 1].base + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lt.full sf.lb.outer + + create-glyph 'armn/liun' 0x56C : glyph-proc + local df : include : DivFrame : if SLAB para.diversityI para.diversityII + include : df.markSet.p + local xMiddle : df.middle - [IBalance2 df] + include : VBar.m xMiddle Descender XH df.mvs + include : HBar.b xMiddle (xMiddle + LongJut * df.div) Descender df.mvs + if SLAB : include : HSerif.lt xMiddle XH Jut df.mvs + + do "Hiun" + create-glyph 'armn/Hiun' 0x552 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : VBar.l df.leftSB 0 CAP df.mvs + include : [ArmHBar.normal df 1].high + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lt.full sf.lb.full + + create-glyph 'armn/hiun' 0x582 : glyph-proc + local df : include : DivFrame para.diversityF + include : VBar.l df.leftSB 0 XH df.mvs + include : [ArmHBar.normal df 1].base + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if [not para.isItalic] : begin + include sf.lb.full diff --git a/packages/font-glyphs/src/letter/armenian/feh.ptl b/packages/font-glyphs/src/letter/armenian/feh.ptl new file mode 100644 index 0000000000..b46cb6d350 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/feh.ptl @@ -0,0 +1,43 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Feh : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + + define [FehBody df top bot ada adb] : glyph-proc + local midy : mix bot top HBarPos + include : dispiro + widths.lhs df.mvs + straight.left.start df.middle top + g4 df.leftSB [YSmoothMidR top (midy - 0.5 * df.mvs) ada adb] + straight.right.end df.middle (midy - 0.5 * df.mvs) [heading Rightward] + include : dispiro + widths.rhs df.mvs + straight.right.start df.middle (midy + 0.5 * df.mvs) [heading Rightward] + flatside.rd df.rightSB 0 (midy + 0.5 * df.mvs) SmallArchDepthA SmallArchDepthB + hookend 0 (sw -- df.mvs) + g4 (df.leftSB + OX) Hook + + create-glyph 'armn/Feh' 0x556 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.capital + include : FehBody df CAP 0 ArchDepthA ArchDepthB + include : VBar.m df.middle 0 CAP df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.mt.right + + create-glyph 'armn/feh' 0x586 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.bp + include : FehBody df Ascender 0 ArchDepthA ArchDepthB + include : VBar.m df.middle Descender Ascender df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender Descender + include sf.mb.full diff --git a/packages/font-glyphs/src/letter/armenian/hook-group.ptl b/packages/font-glyphs/src/letter/armenian/hook-group.ptl new file mode 100644 index 0000000000..40dc765ab0 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/hook-group.ptl @@ -0,0 +1,132 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Hook-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar LeftHook RightHook + + do "Ben" + create-glyph 'armn/Ben' 0x532 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : RightHook df CAP df.mvs SLAB 0 + include : [ArmHBar.normal df 1].mid + + do "Da" + create-glyph 'armn/Da' 0x534 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB 0 + include : [ArmHBar.right df 1 SLAB].mid + + do "Ech" + create-glyph 'armn/Ech' 0x535 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB 0 + include : FlipAround df.middle (CAP / 2) + include : [ArmHBar.normal df 1].high + + do "Et" + create-glyph 'armn/Et' 0x538 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : RightHook df CAP df.mvs + include : [ArmHBar.normal df 1].base + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.lb.outer + + do "Ini" + create-glyph 'armn/Ini' 0x53B : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : RightHook df XH df.mvs + include : VBar.l df.leftSB 0 CAP + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lt.full sf.lb.full + + do "Ken" + create-glyph 'armn/Ken' 0x53F : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local midy : XH / 2 - df.mvs / 2 + include : dispiro + widths.lhs df.mvs + flat df.leftSB CAP [heading Downward] + curl df.leftSB (midy + ArchDepthB) + arch.lhs midy (sw -- df.mvs) + flat df.rightSB (midy + ArchDepthA) + curl df.rightSB XH [heading Upward] + include : VBar.r df.rightSB 0 XH + + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + local sf2 : SerifFrame.fromDf df XH 0 + include : composite-proc sf.lt.full sf2.rt.full sf.rb.full + + do "Ghat" + create-glyph 'armn/Ghat' 0x542 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB 0 + include : [ArmHBar.right df 1 SLAB].base + + do "Nu" + create-glyph 'armn/Nu' 0x546 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB SLAB + include : FlipAround df.middle (CAP / 2) + include : [ArmHBar.left df 1 SLAB].top + + do "Peh" + create-glyph 'armn/Peh' 0x54A : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.capital + local ada : df.archDepthA ArchDepth df.mvs + local adb : df.archDepthB ArchDepth df.mvs + include : LeftHook df CAP df.mvs SLAB 0 nothing nothing ada adb + include : VBar.m df.middle (XH / 2) (CAP - 0.5 * df.mvs) df.mvs + + do "Vew" + create-glyph 'armn/Vew' 0x54E : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local midy : XH / 2 - df.mvs / 2 + include : dispiro + widths.lhs df.mvs + flat df.leftSB XH [heading Downward] + curl df.leftSB (midy + ArchDepthB) + arch.lhs midy (sw -- df.mvs) + flat df.rightSB (midy + ArchDepthA) + curl df.rightSB XH [heading Upward] + include : VBar.r df.rightSB 0 CAP df.mvs + include : [ArmHBar.right df 1 SLAB].base + + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + local sf2 : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lt.full sf2.rt.full sf.rb.full + + do "Reh" + create-glyph 'armn/Reh' 0x550 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : RightHook df CAP df.mvs SLAB 0 + + do "Dram" + glyph-block-import Letter-Shared-Shapes : LetterBarOverlay + create-glyph 'armn/Dram' 0x58F : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : LeftHook df CAP df.mvs SLAB 0 + include : LetterBarOverlay.r df.rightSB (CAP * 0.37) + include : LetterBarOverlay.r df.rightSB (CAP * 0.60 - OverlayStroke * 0.25) diff --git a/packages/font-glyphs/src/letter/armenian/keh.ptl b/packages/font-glyphs/src/letter/armenian/keh.ptl new file mode 100644 index 0000000000..04bcac24f6 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/keh.ptl @@ -0,0 +1,50 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Keh : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : OBarLeft SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "K'eh" + create-glyph 'armn/Keh' 0x554 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local bot : Math.max (XH - (CAP - XH)) (2.2 * df.mvs) + include : OBarLeft.roundedTop + top -- CAP + bot -- bot + left -- df.leftSB + right -- df.rightSB + yTerminal -- 0 + sw -- df.mvs + include : HBar.m (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) (df.rightSB) [mix [if SLAB df.mvs 0] bot 0.5] df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.lb.full + + create-glyph 'armn/keh' 0x584 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + local ostroke : df.adviceStroke 3.75 + local bot : Math.max (0.1 * XH) (1 * ostroke) + include : OBarLeft.shape + left -- df.leftSB + right -- df.rightSB + bot -- bot + sw -- df.mvs + fine -- (df.mvs * ShoulderFine / Stroke) + include : VBar.l df.leftSB Descender XH df.mvs + include : HCrossBar (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) df.rightSB 0 ostroke + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include : composite-proc sf.lt.outer sf.lb.fullSide diff --git a/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl b/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl new file mode 100644 index 0000000000..76cd01d3d7 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/lower-dza-cheh.ptl @@ -0,0 +1,82 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Lower-Dza-Cheh : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : OBarRight SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Dz'a" + create-glyph 'armn/dza' 0x571 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + local x1 : mix df.leftSB df.rightSB 0.25 + local x2 : mix df.leftSB df.rightSB 0.75 + local y2 : Math.min [mix Ascender XH 0.5] (XH + 0.5 * SmallArchDepthA) + include : dispiro + widths.center df.mvs + straight.down.start x1 Ascender [heading Downward] + arcvh + flat df.middle y2 + curl x2 y2 [heading Rightward] + + local stemFine : ShoulderFine * (df.mvs / Stroke) + define [knots] : list + straight.left.start x2 (y2 + 0.5 * df.mvs) + archv + flat df.leftSB (XH - SmallArchDepthA) + curl df.leftSB (0 + SmallArchDepthB) [heading Downward] + include : dispiro + widths.lhs df.mvs + knots + OBarRight.arcEnd 0 df.leftSB df.rightSB df.mvs stemFine SmallArchDepthA SmallArchDepthB + include : intersection + spiro-outline + knots + corner df.leftSB 0 + corner VERY-FAR 0 + corner VERY-FAR Ascender + dispiro + widths.rhs df.mvs + flat df.leftSB XH + curl df.middle XH [heading Rightward] + archv + flat df.rightSB (XH - SmallArchDepthB) + curl df.rightSB 0 [heading Downward] + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + include sf.rb.outer + + do "Cheh" + create-glyph 'armn/cheh' 0x573 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + local x1 : mix df.leftSB df.rightSB 0.75 + local stemFine : ShoulderFine * (df.mvs / Stroke) + include : dispiro + widths.lhs df.mvs + flat x1 Ascender + curl df.middle Ascender [heading Leftward] + archv + flat df.leftSB (Ascender - SmallArchDepthA) + curl df.leftSB (0 + SmallArchDepthB) [heading Downward] + OBarRight.arcEnd 0 df.leftSB df.rightSB df.mvs stemFine SmallArchDepthA SmallArchDepthB + include : dispiro + widths.rhs df.mvs + flat (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) highBarPos + curl df.middle highBarPos [heading Rightward] + archv + flat df.rightSB (highBarPos - SmallArchDepthB) + curl df.rightSB 0 [heading Downward] + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + include sf.rb.outer diff --git a/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl new file mode 100644 index 0000000000..3b7947206b --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/lower-q-group.ptl @@ -0,0 +1,36 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Lower-Q-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : OBarRight SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + do "Gim" + create-glyph 'armn/gim' 0x563 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : OBarRight.shape (top -- XH) + include : VBar.r df.rightSB Descender XH + include : [ArmHBar.right df 0 SLAB].base + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include sf.rb.fullSide + if [not para.isItalic] : begin + include sf.rt.outer + + do "Za" + create-glyph 'armn/za' 0x566 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : OBarRight.shape (top -- XH) + include : VBar.r df.rightSB Descender XH + include : [ArmHBar.right df 0 SLAB].desc + if (SLAB && [not para.isItalic]) : begin + local sf : SerifFrame.fromDf df XH Descender + include sf.rt.outer diff --git a/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl new file mode 100644 index 0000000000..c7a41b5f1c --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl @@ -0,0 +1,78 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback strokeOffset] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Lower-Sha-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar TwoNeck + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Sha" + create-glyph 'armn/sha' 0x577 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : dispiro + widths.rhs df.mvs + g4 df.leftSB (XH - SHook) + hookstart XH (sw -- df.mvs) + TwoNeck df XH Descender + include : [ArmHBar.normal df 0].desc + + do "Ch'a" + create-glyph 'armn/cha' 0x579 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + local x1 : mix df.leftSB df.rightSB 0.1 + local x2 : mix df.leftSB df.rightSB 0.9 + local y2 : XH / 2 + include : dispiro + widths.center df.mvs + straight.down.start (x1 + [HSwToV : 0.5 * df.mvs]) XH [heading Downward] + arcvh + flat (df.middle + [HSwToV : 0.5 * df.mvs]) y2 + curl x2 y2 [heading Rightward] + include : dispiro + widths.rhs df.mvs + flat x2 (y2 - df.mvs / 2) + curl df.leftSB (Descender + df.mvs) [widths.lhs df.mvs] + include : [ArmHBar.normal df 0].desc + + do "Jheh" + create-glyph 'armn/jheh' 0x57B : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + local refY : XH - SmallArchDepthB * 1.5 - df.mvs / 2 * (1 - TanSlope) + local x1 : df.middle + [HSwToV : [StrokeWidthBlend 0 0.4] * df.mvs] + local y1 : mix (Descender + df.mvs) refY [StrokeWidthBlend 0.65 0.7] + + include : dispiro + widths.lhs df.mvs + straight.up.start x1 y1 [heading Upward] + g4 [pre@mix@post 0.5] [pre@mix@post 0.5] [widths.center df.mvs] + flat df.leftSB (XH - 1.1 * SmallArchDepthA) [widths.rhs df.mvs] + curl df.leftSB (XH - SmallArchDepthA) + arch.rhs XH (sw -- df.mvs) + TwoNeck df XH Descender + + local dx : df.leftSB - df.rightSB + local dy : (Descender + df.mvs) - refY + local rhs : strokeOffset df.rightSB refY dx dy df.mvs HVContrast + local joinX : mix df.leftSB rhs.x 0.2 + local joinY : mix (Descender + df.mvs) rhs.y 0.2 + local fine : df.mvs * (ShoulderFine / Stroke) + + include : dispiro + widths.lhs df.mvs + straight.down.start (x1 - [HSwToV df.mvs]) y1 [heading Downward] + flat joinX joinY [widths.lhs fine] + curl df.leftSB (Descender + df.mvs) + include : [ArmHBar.normal df 0].desc diff --git a/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl new file mode 100644 index 0000000000..b76d3b5aee --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/lower-u-group.ptl @@ -0,0 +1,441 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Lower-U-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : nShoulder nShoulderKnots SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar TwoNeck + glyph-block-import Letter-Latin-U : USerifs + glyph-block-import Letter-Latin-Lower-M : SmallMArches + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Turned Ayb" + create-glyph 'armn/aybTurned' 0x560 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.e + include : SmallMArches df XH 0 0 0 + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include : if para.isItalic + composite-proc sf.lt.outer sf.rb.outer + if sf.enoughSpaceForFullSerifs + composite-proc sf.lt.outer sf.lb.full sf.mb.full sf.rb.full + composite-proc sf.lt.outer sf.lb.outer sf.rb.outer + + do "Ayb" + create-glyph 'armn/ayb' 0x561 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.e + include : SmallMArches df XH 0 0 0 + include : FlipAround df.middle (XH / 2) + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include : if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + composite-proc sf.lt.outer sf.mt.left sf.rt.inner sf.rb.outer + composite-proc sf.lt.outer sf.rb.outer + + do "Ben" + create-glyph 'armn/ben' 0x562 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : VBar.l df.leftSB Descender XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- (XH / 2) + stroke -- df.mvs + include : [ArmHBar.normal df 0].base + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include : composite-proc sf.lt.outer sf.lb.fullSide + if [not para.isItalic] : begin + local sf2 : SerifFrame.fromDf df XH (XH / 2) + include sf2.rb.full + + do "Da" + create-glyph 'armn/da' 0x564 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : VBar.l df.leftSB 0 XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- Descender + stroke -- df.mvs + include : [ArmHBar.right df 0 SLAB].base + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + local sf2 : SerifFrame.fromDf df XH Descender + if para.isItalic + include sf.lt.outer + include : composite-proc sf.lt.outer sf.lb.full + include sf2.rb.fullSide + + do "Ech" + create-glyph 'armn/ech' 0x565 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : nShoulder + top -- 0 + bottom -- (-Ascender) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB 0 [mix 0 XH 0.6] df.mvs + include : [ArmHBar.normal df 0].high + if SLAB : include : USerifs.Toothed df Ascender df.mvs + eject-contour 'serifRT' + + do "Et" + create-glyph 'armn/et' 0x568 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : VBar.l df.leftSB Descender XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- 0 + stroke -- df.mvs + include : [ArmHBar.normal df 0].desc + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + local sf2 : SerifFrame.fromDf df XH 0 + include sf.lt.outer + include : if para.isItalic sf2.rb.outer sf2.rb.full + + do "Ini" + create-glyph 'armn/ini' 0x56B : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.bp + include : VBar.l df.leftSB Descender Ascender df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- 0 + stroke -- df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender Descender + local sf2 : SerifFrame.fromDf df XH 0 + include : composite-proc sf.lt.outer sf.lb.fullSide + include : if para.isItalic sf2.rb.outer sf2.rb.full + + do "Xeh" + create-glyph 'armn/xeh' 0x56D : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.bp + include : nShoulder + top -- XH + bottom -- (XH / 2) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- (df.middle + [HSwToV : df.mvs / 2]) + stroke -- df.mvs + include : FlipAround df.middle (XH / 2) + include : nShoulder + top -- XH + bottom -- (XH / 2) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- (df.middle + [HSwToV : df.mvs / 2]) + stroke -- df.mvs + include : VBar.l df.leftSB Descender Ascender df.mvs + include : VBar.r df.rightSB 0 XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender Descender + local sf2 : SerifFrame.fromDf df XH 0 + include : composite-proc sf.lt.outer sf.lb.fullSide + if ([not para.isItalic] && sf2.enoughSpaceForFullSerifs) + include : composite-proc sf2.rt.inner sf2.rb.outer + include sf2.rb.outer + + do "Ken" + create-glyph 'armn/ken' 0x56F : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.bp + include : nShoulder + top -- 0 + bottom -- (-Ascender) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB Descender XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + local sf2 : SerifFrame.fromDf df XH Descender + include sf.lt.outer + if para.isItalic + include sf2.rb.fullSide + include : composite-proc sf2.rt.inner sf2.rb.fullSide + + do "Ho" + create-glyph 'armn/ho' 0x570 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : VBar.l df.leftSB 0 Ascender df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- 0 + stroke -- df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + include : if para.isItalic + composite-proc sf.lt.outer sf.rb.outer + composite-proc sf.lt.outer sf.lb.full sf.rb.full + + do "Ghat" + create-glyph 'armn/ghat' 0x572 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.p + include : VBar.l df.leftSB 0 XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- Descender + stroke -- df.mvs + include : [ArmHBar.right df 0 SLAB].desc + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if [not para.isItalic] : include sf.lb.full + + do "Men" + create-glyph 'armn/men' 0x574 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : nShoulder + top -- 0 + bottom -- (-XH) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB 0 Ascender df.mvs + include : [ArmHBar.right df 0 SLAB].top + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + local sf2 : SerifFrame.fromDf df Ascender 0 + include : composite-proc sf.lt.outer sf2.rb.outer + + do "Nu" + create-glyph 'armn/nu' 0x576 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : nShoulder + top -- 0 + bottom -- (-Ascender) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB 0 XH df.mvs + include : [ArmHBar.left df 0 SLAB].top + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include sf.rb.outer + if [not para.isItalic] : include sf.rt.inner + + do "Vo" + create-glyph 'armn/vo' 0x578 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.e + include : VBar.l df.leftSB 0 XH df.mvs + include : nShoulder + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- 0 + stroke -- df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include : if para.isItalic + composite-proc sf.lt.outer sf.rb.outer + composite-proc sf.lt.outer sf.lb.full sf.rb.full + + do "Peh" + create-glyph 'armn/peh' 0x57A : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.p + include : SmallMArches df XH 0 0 0 + include : FlipAround df.middle (XH / 2) + include : VBar.r df.rightSB Descender XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include : if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + composite-proc sf.lt.outer sf.mt.left sf.rt.inner sf.rb.fullSide + composite-proc sf.lt.outer sf.rb.fullSide + + do "Rra" + create-glyph 'armn/rra' 0x57C : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.e + include : VBar.l df.leftSB 0 XH df.mvs + + # Combination of nShoulderKnots and the straight 2 shape + local fine : df.mvs * (ShoulderFine / Stroke) + local left : Math.max (df.rightSB - [HSwToV df.mvs] - jut) df.middle + include : dispiro + widths.rhs fine + flat (df.leftSB + [HSwToV : df.mvs - fine]) (XH - SmallArchDepthA - TINY) + curl (df.leftSB + [HSwToV : df.mvs - fine]) (XH - SmallArchDepthA) + arch.rhs XH (sw -- df.mvs) (swBefore -- fine) + TwoNeck df XH 0 left + include : HBar.b left (left + [HSwToV df.mvs] + jut) 0 df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if [not para.isItalic] : begin + include : composite-proc sf.lb.outer + + # Alternate straight 'n' form + # include : nShoulder + # left -- (df.leftSB + [HSwToV df.mvs]) + # right -- df.rightSB + # top -- XH + # bottom -- 0 + # stroke -- df.mvs + # include : [ArmHBar.right df 0 SLAB].base + # if SLAB : begin + # local sf : SerifFrame.fromDf df XH 0 + # include sf.lt.outer + # if [not para.isItalic] : begin + # include : composite-proc sf.lb.full + + do "Seh" + create-glyph 'armn/seh' 0x57D : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.e + include : nShoulder + top -- 0 + bottom -- (-XH) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB 0 XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include : if para.isItalic + composite-proc sf.lt.outer sf.rb.outer + composite-proc sf.lt.outer sf.rt.inner sf.rb.outer + + do "Vew" + create-glyph 'armn/vew' 0x57E : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.bp + include : nShoulder + top -- 0 + bottom -- (-XH) + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.r df.rightSB Descender Ascender df.mvs + include : [ArmHBar.right df 0 SLAB].desc + + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + local sf2 : SerifFrame.fromDf df Ascender Descender + include : composite-proc sf.lt.outer sf2.rt.inner + + do "Tiun" + create-glyph 'armn/tiun' 0x57F : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.e + include : nShoulder + top -- XH + bottom -- 0 + left -- (df.middle + [HSwToV : df.mvs / 2]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle (XH / 2) + include : nShoulder + top -- XH + bottom -- 0 + left -- (df.middle + [HSwToV : df.mvs / 2]) + right -- df.rightSB + stroke -- df.mvs + include : VBar.m df.middle 0 XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + include : if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + composite-proc sf.lt.outer sf.mt.left sf.mb.right sf.rb.full + composite-proc sf.lt.outer sf.rb.outer + + do "Reh" + create-glyph 'armn/reh' 0x580 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : nShoulder + top -- XH + bottom -- 0 + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + stroke -- df.mvs + include : VBar.l df.leftSB Descender XH df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + local sf2 : SerifFrame.fromDf df XH 0 + include : composite-proc sf.lt.outer sf.lb.fullSide + include : if para.isItalic sf2.rb.outer sf2.rb.full + + do "P'iur" + create-glyph 'armn/piur' 0x583 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.bp + include : nShoulder + top -- XH + bottom -- 0 + left -- (df.middle + [HSwToV : df.mvs / 2]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle (XH / 2) + include : nShoulder + top -- XH + bottom -- 0 + left -- (df.middle + [HSwToV : df.mvs / 2]) + right -- df.rightSB + stroke -- df.mvs + include : VBar.m df.middle Descender Ascender df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df XH 0 + local sf2 : SerifFrame.fromDf df Ascender Descender + include : if ([not para.isItalic] && sf.enoughSpaceForFullSerifs) + composite-proc sf.lt.outer sf.rb.full + composite-proc sf.lt.outer sf.rb.outer + include : composite-proc sf2.mt.left sf2.mb.full + + do "Ew" + create-glyph 'armn/ew' 0x587 : glyph-proc + local df : include : DivFrame para.diversityM 3 + include : df.markSet.b + include : nShoulder + top -- 0 + bottom -- (-Ascender) + left -- (df.middle + [HSwToV : df.mvs / 2]) + right -- df.rightSB + stroke -- df.mvs + include : FlipAround df.middle 0 + include : VBar.m df.middle 0 XH df.mvs + include : HBar.b df.middle df.rightSB 0 df.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + local sf2 : SerifFrame.fromDf df XH 0 + include sf.lt.outer + if ([not para.isItalic] && sf2.enoughSpaceForFullSerifs) : begin + include sf2.mt.left diff --git a/packages/font-glyphs/src/letter/armenian/shared.ptl b/packages/font-glyphs/src/letter/armenian/shared.ptl new file mode 100644 index 0000000000..ca9c025146 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/shared.ptl @@ -0,0 +1,102 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Shared-Shapes : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + define JUT-NORMAL 0 + define JUT-SHORT 1 + define JUT-RIGHT 2 + define JUT-LEFT 3 + + glyph-block-export ArmHBar + define [ArmHBar hPos df fCapital fOverslab] : namespace + define left : match hPos + [Just JUT-RIGHT] df.rightSB + [Just JUT-LEFT] (df.leftSB - (jut * [if fOverslab 1.5 1]) + [HSwToV : 0.5 * df.mvs]) + -- df.leftSB + define right : match hPos + [Just JUT-RIGHT] (df.rightSB + (jut * [if fOverslab 1.5 1]) - [HSwToV : 0.5 * df.mvs]) + [Just JUT-SHORT] (df.rightSB - (jut - [HSwToV : 0.5 * df.mvs]) * df.div) + [Just JUT-LEFT] df.leftSB + -- df.rightSB + + export : define [top] : glyph-proc + include : HBar.t left right [if fCapital CAP Ascender] df.mvs + export : define [high] : glyph-proc + include : HBar.t left right highBarPos df.mvs + export : define [mid] : glyph-proc + include : HBar.m left right barPos df.mvs + export : define [base] : glyph-proc + include : HBar.b left right 0 df.mvs + export : define [desc] : glyph-proc + include : HBar.b left right Descender df.mvs + export : define [at y] : glyph-proc + include : HBar.m left right y df.mvs + + set [ArmHBar.normal df fCapital fOverslab] : ArmHBar JUT-NORMAL df fCapital fOverslab + set [ArmHBar.short df fCapital fOverslab] : ArmHBar JUT-SHORT df fCapital fOverslab + set [ArmHBar.right df fCapital fOverslab] : ArmHBar JUT-RIGHT df fCapital fOverslab + set [ArmHBar.left df fCapital fOverslab] : ArmHBar JUT-LEFT df fCapital fOverslab + + glyph-block-export RightHook + define [RightHook df top sw baseSerif hookSerif _base _hookY _ada _adb] : glyph-proc + local base : fallback _base 0 + local hookY : fallback _hookY (top - Hook) + local ada : fallback _ada ArchDepthA + local adb : fallback _adb ArchDepthB + local yMidDepth : if (top - base > ada + adb) ada ((top - base) * (ada / (ada + adb))) + include : dispiro + widths.lhs df.mvs + g4 df.rightSB hookY + hookstart top (sw -- sw) + flat df.leftSB (top - yMidDepth) + curl df.leftSB base [heading Downward] + if baseSerif : begin + local sf : SerifFrame.fromDf df top base + include sf.lb.full + if hookSerif : begin + local sf : SerifFrame.fromDf df top hookY + include sf.rb.full + + glyph-block-export LeftHook + define [LeftHook df top sw baseSerif hookSerif _base _hookY _ada _adb] : glyph-proc + local base : fallback _base 0 + local hookY : fallback _hookY (top - Hook) + local ada : fallback _ada ArchDepthA + local adb : fallback _adb ArchDepthB + local yMidDepth : if (top - base > ada + adb) adb ((top - base) * (adb / (ada + adb))) + include : dispiro + widths.rhs df.mvs + g4 df.leftSB hookY + hookstart top (sw -- sw) + flat df.rightSB (top - yMidDepth) + curl df.rightSB base [heading Downward] + if baseSerif : begin + local sf : SerifFrame.fromDf df top base + include sf.rb.full + if hookSerif : begin + local sf : SerifFrame.fromDf df top hookY + include sf.lb.full + + glyph-block-export TwoNeck + define [TwoNeck df top bot _left _right _adb _flatp] : begin + local adb : fallback _adb SmallArchDepthB + local flatp : fallback _flatp 0.75 + local left : fallback _left df.leftSB + local right : fallback _right df.rightSB + local refY : top - adb * 1.5 - df.mvs / 2 * (1 - TanSlope) + return : list + g4.down.mid right (top - adb) + flat [mix left right flatp] [mix (bot + df.mvs) refY flatp] + curl left (bot + df.mvs) [widths.lhs df.mvs] diff --git a/packages/font-glyphs/src/letter/armenian/to.ptl b/packages/font-glyphs/src/letter/armenian/to.ptl new file mode 100644 index 0000000000..c31c50fcf8 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/to.ptl @@ -0,0 +1,61 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-To : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : nShoulderKnots SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "T'o" + create-glyph 'armn/To' 0x539 : glyph-proc + local df : include : DivFrame 1 + local fine : df.adviceStroke2 6 3 CAP + local barPosT : barPos + df.mvs / 2 + include : dispiro + widths.rhs df.mvs + flat df.leftSB 0 [heading Upward] + curl df.leftSB (CAP - ArchDepthA) + arch.rhs CAP (sw -- df.mvs) + flat df.rightSB (CAP - ArchDepthB) + curl df.rightSB (0 + ArchDepthA) + arch.rhs 0 (sw -- df.mvs) (swAfter -- fine) + g4 (df.middle - [HSwToV : fine / 2]) [mix 0 barPosT 0.5] [widths.rhs fine] + arcvh + flat [mix df.leftSB df.rightSB 0.7] barPosT [widths.rhs df.mvs] + curl df.rightSB barPosT + include : [ArmHBar.right df 1].mid + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.lb.full + + create-glyph 'armn/to' 0x569 : glyph-proc + local df : include : DivFrame 1 + local fine : df.adviceStroke2 6 3 XH + include : df.markSet.p + include : VBar.l df.leftSB Descender XH df.mvs + local barPosT : XH / 2 + df.mvs / 2 + include : dispiro + nShoulderKnots + left -- (df.leftSB + [HSwToV df.mvs]) + right -- df.rightSB + top -- XH + bottom -- (0 + ArchDepthA) + stroke -- df.mvs + arch.rhs 0 (sw -- df.mvs) (swAfter -- fine) + g4 (df.middle - [HSwToV : fine / 2]) [mix 0 barPosT 0.5] [widths.rhs fine] + arcvh + flat [mix df.leftSB df.rightSB 0.7] barPosT [widths.rhs df.mvs] + curl (df.rightSB + jut - [HSwToV : 0.5 * df.mvs]) barPosT + if SLAB : begin + local sf : SerifFrame.fromDf df XH Descender + include : composite-proc sf.lt.outer sf.lb.fullSide diff --git a/packages/font-glyphs/src/letter/armenian/upper-cheh.ptl b/packages/font-glyphs/src/letter/armenian/upper-cheh.ptl new file mode 100644 index 0000000000..f353fbb0c5 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-cheh.ptl @@ -0,0 +1,38 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Cheh : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Cheh" + create-glyph 'armn/Cheh' 0x543 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local x1 : mix df.leftSB df.rightSB 0.75 + include : dispiro + widths.lhs df.mvs + flat x1 CAP + curl df.middle CAP + archv + flat df.leftSB (CAP - ArchDepthA) + curl df.leftSB (0 + ArchDepthB) + arcvh + flat df.middle 0 + curl df.rightSB 0 + include : dispiro + widths.rhs df.mvs + flat (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) XH + curl df.middle XH + archv + flat df.rightSB (XH - ArchDepthA) + curl df.rightSB 0 [heading Downward] diff --git a/packages/font-glyphs/src/letter/armenian/upper-co.ptl b/packages/font-glyphs/src/letter/armenian/upper-co.ptl new file mode 100644 index 0000000000..151388f56e --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-co.ptl @@ -0,0 +1,37 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Co : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + do "C'o" + create-glyph 'armn/Co' 0x551 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local midy : CAP * HBarPos + local midyTop : midy + 0.5 * df.mvs + local midyBot : midy - 0.5 * df.mvs + include : [ArmHBar.left df 1].at midy + include : dispiro + widths.lhs df.mvs + flat df.leftSB midyBot + curl df.middle midyBot + archv + flatside.ru df.rightSB midyBot CAP ArchDepthA ArchDepthB 0 + arch.lhs CAP (sw -- df.mvs) + flatside.ld df.leftSB midyBot CAP ArchDepthA ArchDepthB 0 + arcvh + straight.right.end df.middle midyBot [heading Rightward] + include : dispiro + widths.rhs df.mvs + straight.right.start df.middle midyTop [heading Rightward] + flatside.rd df.rightSB 0 midyTop SmallArchDepthA SmallArchDepthB + hookend 0 (sw -- df.mvs) + g4 (df.leftSB + OX) Hook diff --git a/packages/font-glyphs/src/letter/armenian/upper-dza-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-dza-group.ptl new file mode 100644 index 0000000000..84c5308a6e --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-dza-group.ptl @@ -0,0 +1,66 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Dza : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : CurlyTail + glyph-block-import Letter-Shared-Shapes : SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Dz'a" + create-glyph 'armn/Dza' 0x541 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : dispiro + widths.rhs df.mvs + g4 df.leftSB (CAP - Hook) + hookstart CAP (sw -- df.mvs) + flat (df.rightSB - OX) (CAP - ArchDepthB) + curl (df.rightSB - OX) (CAP / 2) + CurlyTail.n df.mvs 0 df.leftSB df.rightSB 0 (yLoopTop -- (CAP - Hook) * 0.5) + + do "Sha" + create-glyph 'armn/Sha' 0x547 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local fine : df.mvs * (ShoulderFine / Stroke) + include : dispiro + widths.rhs df.mvs + curl df.leftSB CAP [heading Rightward] + flat df.middle ([mix XH CAP 0.5] + df.mvs - fine) [heading Rightward] + curl df.rightSB (XH + df.mvs) [heading Rightward] + include : dispiro + widths.rhs df.mvs + g4 df.rightSB Hook + hookstart 0 (sw -- df.mvs) + flat df.leftSB ArchDepthB + curl df.leftSB ([mix XH CAP 0.5] - ArchDepthA) + arcvh + flat df.middle [mix XH CAP 0.5] [widths.rhs fine] + + do "Cha" + create-glyph 'armn/Cha' 0x549 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local fine : df.mvs * (ShoulderFine / Stroke) + include : dispiro + widths.rhs df.mvs + g4 df.leftSB (CAP - Hook) + hookstart CAP (sw -- df.mvs) + flat df.rightSB (CAP - ArchDepthB) + curl df.rightSB ([mix (0.5 * XH) df.mvs 0.5] - fine + ArchDepthA) + arcvh + flat df.middle ([mix (0.5 * XH) df.mvs 0.5] - fine) [widths.rhs fine] + include : dispiro + widths.rhs df.mvs + flat [mix df.leftSB df.rightSB 0.1] (0.5 * XH) [heading Rightward] + curl [mix df.leftSB df.rightSB 0.9] df.mvs [heading Rightward] diff --git a/packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl new file mode 100644 index 0000000000..a1283cf532 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-gim-group.ptl @@ -0,0 +1,69 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Gim-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Gim" + create-glyph 'armn/Gim' 0x533 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local barPosB : barPos - df.mvs / 2 + include : dispiro + widths.lhs df.mvs + flat df.rightSB 0 [heading Upward] + curl df.rightSB (CAP - ArchDepthB) + arch.lhs CAP (sw -- df.mvs) + flat df.leftSB (CAP - ArchDepthA) + curl df.leftSB (barPosB + ArchDepthB) + arcvh + flat df.middle barPosB + curl (df.rightSB + jut * [if SLAB 1.5 1] - [HSwToV : 0.5 * df.mvs]) barPosB + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.rb.full + + do "Zhe" + create-glyph 'armn/Zhe' 0x53A : glyph-proc + local df : include : DivFrame 1 + include : dispiro + widths.rhs df.mvs + flat df.rightSB CAP [heading Downward] + curl df.rightSB (0 + ArchDepthA) + arch.rhs 0 (sw -- df.mvs) + flat (df.leftSB + OX) (0 + ArchDepthB) + curl (df.leftSB + OX) (highBarPos - ArchDepthA) + arcvh + flat df.middle highBarPos + curl (df.rightSB + jut * [if SLAB 1.5 1] - [HSwToV : 0.5 * df.mvs]) highBarPos + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.rt.full + + create-glyph 'armn/zhe' 0x56A : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.b + include : dispiro + widths.rhs df.mvs + flat df.rightSB Ascender [heading Downward] + curl df.rightSB (0 + SmallArchDepthA) + arch.rhs 0 (sw -- df.mvs) + flat (df.leftSB + OX) (0 + SmallArchDepthB) + curl (df.leftSB + OX) (highBarPos - SmallArchDepthA) + arcvh + flat df.middle highBarPos + curl (df.rightSB + jut * [if SLAB 1.5 1] - [HSwToV : 0.5 * df.mvs]) highBarPos + if SLAB : begin + local sf : SerifFrame.fromDf df Ascender 0 + include sf.rt.inner diff --git a/packages/font-glyphs/src/letter/armenian/upper-ho.ptl b/packages/font-glyphs/src/letter/armenian/upper-ho.ptl new file mode 100644 index 0000000000..1750549249 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-ho.ptl @@ -0,0 +1,43 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Ho : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + + # Common Params + define barPos : XH / 2 + define highBarPos XH + define jut Jut + + do "Ho" + create-glyph 'armn/Ho' 0x540 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + + local x1 : mix df.leftSB df.rightSB 0.1 + local midy : CAP * HBarPos + include : dispiro + widths.rhs df.mvs + flat x1 CAP + curl df.middle CAP + archv + g4 df.rightSB [YSmoothMidR CAP (midy - df.mvs / 2) ArchDepthA ArchDepthB] + flat df.middle (midy - df.mvs / 2) [heading Downward] + + include : dispiro + widths.rhs df.mvs + flat (df.leftSB - jut + [HSwToV : 0.5 * df.mvs]) (midy + df.mvs / 2) + curl df.middle (midy + df.mvs / 2) + archv + flat (df.rightSB - O * 2) [YSmoothMidR (midy + df.mvs / 2) 0 ArchDepthA ArchDepthB] + curl (df.rightSB - O * 2) 0 + + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include sf.rb.full diff --git a/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl new file mode 100644 index 0000000000..74768b2382 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-u-group.ptl @@ -0,0 +1,60 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-U-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Latin-U : UShape USerifs + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + do "Ayb" + glyph-block-import Letter-Latin-Upper-Q : QCrossing QInnerDiagSw + create-glyph 'armn/Ayb' 0x531 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : UShape df CAP 1 df.mvs + include : QCrossing df CAP QInnerDiagSw + if SLAB : include : USerifs.Toothless df CAP df.mvs + + do "Men" + create-glyph 'armn/Men' 0x544 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : UShape df CAP 0 df.mvs + include : [ArmHBar.right df 1 SLAB].top + if SLAB : begin + include : USerifs.Toothless df CAP df.mvs + + do "Vo" + create-glyph 'armn/Vo' 0x548 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : UShape df CAP 1 df.mvs + include : FlipAround Middle (CAP / 2) + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lb.full sf.rb.full + + do "Rra" + create-glyph 'armn/Rra' 0x54C : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : UShape df CAP 1 df.mvs + include : FlipAround Middle (CAP / 2) + include : [ArmHBar.right df 1 SLAB].mid + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + include : composite-proc sf.lb.full sf.rb.full + + do "Seh" + create-glyph 'armn/Seh' 0x54D : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + include : UShape df CAP 1 df.mvs + if SLAB : begin + include : USerifs.Toothless df CAP df.mvs diff --git a/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl b/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl new file mode 100644 index 0000000000..f8d1720655 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-xeh.ptl @@ -0,0 +1,29 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Xeh : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Latin-Lower-AE-OE : SubDfAndShift + glyph-block-import Letter-Latin-U : UShape + + do "Xeh" + create-glyph 'armn/Xeh' 0x53D : glyph-proc + local df : include : DivFrame para.diversityM 3 + local { subDf shift } : SubDfAndShift 1 df + include : df.markSet.capital + include : VBar.l df.leftSB 0 CAP df.mvs + include : HBar.t df.leftSB df.middle XH df.mvs + include : with-transform [ApparentTranslate shift 0] : UShape subDf XH 0 subDf.mvs + if SLAB : begin + local sf : SerifFrame.fromDf df CAP 0 + local sf2 : SerifFrame.fromDf df XH 0 + include : composite-proc sf.lt.full sf.lb.full + if sf2.enoughSpaceForFullSerifs + include : composite-proc sf2.mt.full sf2.rt.full + include sf2.rt.outer diff --git a/packages/font-glyphs/src/letter/armenian/upper-yi.ptl b/packages/font-glyphs/src/letter/armenian/upper-yi.ptl new file mode 100644 index 0000000000..2e92866534 --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-yi.ptl @@ -0,0 +1,27 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Yi : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Greek-Lower-Epsilon : CyrZe + + do "Yi" + create-glyph 'armn/Yi' 0x545 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local ze : CyrZe 0 0 CAP 0 + left -- df.leftSB + right -- df.rightSB + blend -- (1 + 2 * O / (df.rightSB - df.leftSB)) + hook -- Hook + include : ze.Shape + if SLAB : begin + local midy : mix 0 CAP OverlayPos + local vJut : Math.min VJut : CAP - 2 * Hook - df.mvs + include : VBar.l (df.leftSB - 2 * O) (midy - 0.5 * vJut) (midy + 0.5 * vJut) df.mvs diff --git a/packages/font-glyphs/src/letter/armenian/upper-za-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-za-group.ptl new file mode 100644 index 0000000000..6f38482eaa --- /dev/null +++ b/packages/font-glyphs/src/letter/armenian/upper-za-group.ptl @@ -0,0 +1,63 @@ +$$include '../../meta/macros.ptl' + +import [mix linreg clamp fallback] from "@iosevka/util" +import [DependentSelector] from "@iosevka/glyph/relation" + +glyph-module + +glyph-block Letter-Armenian-Upper-Za-Group : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Letter-Armenian-Shared-Shapes : ArmHBar + + do "Za" + create-glyph 'armn/Za' 0x536 : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local fine : df.mvs * (ShoulderFine / Stroke) + local fine2 : df.adviceStroke 4 + include : dispiro + widths.rhs df.mvs + straight.up.start df.leftSB (CAP - ArchDepthA) + arch.rhs CAP (sw -- df.mvs) + flat df.rightSB (CAP - ArchDepthB) + curl df.rightSB (df.mvs - fine + ArchDepthA) + arcvh + flat df.leftSB (df.mvs - fine) [widths.rhs fine] + include : VBar.l df.leftSB 0 VJut fine2 + include : [ArmHBar.normal df 1].base + + do "Jheh" + create-glyph 'armn/Jheh' 0x54B : glyph-proc + local df : include : DivFrame 1 + include : df.markSet.capital + local fine : df.mvs * (ShoulderFine / Stroke) + local fine2 : df.adviceStroke 4 + local x1 : df.middle + [HSwToV : [StrokeWidthBlend 0 0.5] * fine2] + include : dispiro + widths.rhs df.mvs + straight.up.start df.leftSB (CAP - ArchDepthA) + arch.rhs CAP (sw -- df.mvs) + flat df.rightSB (CAP - ArchDepthB) + curl df.rightSB (df.mvs - fine + ArchDepthA) + arcvh + flat df.leftSB (df.mvs - fine) [widths.rhs fine] + include : intersection + spiro-outline + flat df.rightSB CAP + curl df.rightSB (df.mvs - fine + ArchDepthA) + arcvh + corner df.leftSB (df.mvs - fine) [widths.rhs fine] + corner df.leftSB CAP + dispiro + widths.lhs df.mvs + flat df.leftSB (CAP - ArchDepthA) + curl df.leftSB (CAP - 1.1 * ArchDepthA) + g4 [pre@mix@post 0.5] [pre@mix@post 0.5] [widths.center df.mvs] + flat x1 (0.55 * ArchDepthB) [widths.rhs fine2] + curl x1 (0.5 * ArchDepthB) [widths.rhs fine2] + arcvh + flat df.leftSB (df.mvs - fine) [widths.rhs fine] + include : VBar.l df.leftSB 0 VJut fine2 + include : [ArmHBar.normal df 1].base diff --git a/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl b/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl index f5d9f5c692..b03df37e33 100644 --- a/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl +++ b/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl @@ -516,8 +516,8 @@ glyph-block Letter-Greek-Lower-Epsilon : begin include : Base df XH Slabs SHook SmallArchDepthA SmallArchDepthB - select-variant 'AeVolapuk' 0xA79A (follow -- 'a/single') - select-variant 'aeVolapuk' 0xA79B (follow -- 'a/single') + select-variant 'AeVolapuk' 0xA79A (follow -- [conditional-follow SLAB 'a/single/autoSerifed/slab' 'a/single/autoSerifed/sans']) + select-variant 'aeVolapuk' 0xA79B (follow -- [conditional-follow SLAB 'a/single/autoSerifed/slab' 'a/single/autoSerifed/sans']) select-variant 'UeVolapuk' 0xA79E (follow -- 'u') select-variant 'ueVolapuk' 0xA79F (follow -- 'u') diff --git a/packages/font-glyphs/src/letter/greek/upper-gamma.ptl b/packages/font-glyphs/src/letter/greek/upper-gamma.ptl index 6745b0aeb0..10b57add8b 100644 --- a/packages/font-glyphs/src/letter/greek/upper-gamma.ptl +++ b/packages/font-glyphs/src/letter/greek/upper-gamma.ptl @@ -43,7 +43,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin bottomSerifed { SLAB-BOTTOM false } serifed { SLAB-ALL true } - foreach { suffix { slabType doSM } } [Object.entries GammaConfig] : do + foreach { suffix { slabType doST } } [Object.entries GammaConfig] : do create-glyph "grek/Gamma.\(suffix)" : glyph-proc include : MarkSet.capital include : GammaShape CAP 0 slabType @@ -51,11 +51,10 @@ glyph-block Letter-Greek-Upper-Gamma: begin create-glyph "grek/Digamma.\(suffix)" : glyph-proc include : MarkSet.capital include : GammaShape CAP 0 slabType - local yBar : CAP * DesignParameters.upperEBarPos - include : HBar.m GammaBarLeft (RightSB - [xMidBarShrink doSM]) yBar - if doSM : include : tagged 'serifRM' - VSerif.dr (RightSB - [xMidBarShrink doSM]) (yBar + HalfStroke) [mix Stroke VJut 0.5] + include : HBar.m GammaBarLeft (RightSB - [xMidBarShrink doST]) yBar + if doST : include : tagged 'serifRM' + VSerif.dr (RightSB - [xMidBarShrink doST]) (yBar + HalfStroke) [mix Stroke VJut 0.5] create-glyph "cyrl/GheDescender.\(suffix)" : glyph-proc include [refer-glyph "grek/Gamma.\(suffix)"] AS_BASE ALSO_METRICS @@ -140,18 +139,15 @@ glyph-block Letter-Greek-Upper-Gamma: begin select-variant 'cyrl/ge' 0x491 select-variant 'cyrl/gheMidHook' 0x495 (follow -- 'cyrl/ghe.upright') - create-glyph "grek/digamma.serifless" : glyph-proc + select-variant 'grek/Digamma' 0x3DC (follow -- 'grek/Gamma') + + create-glyph 'grek/digamma' 0x3DD : glyph-proc include : MarkSet.p include : GammaShape XH Descender SLAB-NONE - include : HBar.m GammaBarLeft (RightSB - [xMidBarShrink SLAB]) [mix 0 XH DesignParameters.upperEBarPos] - - create-glyph "grek/digamma.topRightSerifed" : glyph-proc - include [refer-glyph "grek/digamma.serifless"] AS_BASE ALSO_METRICS - include : tagged 'serifRM' - VSerif.dr (RightSB - [xMidBarShrink SLAB]) ([mix 0 XH DesignParameters.upperEBarPos] + HalfStroke) [mix Stroke VJut 0.5] - - select-variant 'grek/Digamma' 0x3DC - select-variant 'grek/digamma' 0x3DD + local yBar : mix 0 XH DesignParameters.upperEBarPos + include : HBar.m GammaBarLeft (RightSB - [xMidBarShrink SLAB]) yBar + if SLAB : include : tagged 'serifRM' + VSerif.dr (RightSB - [xMidBarShrink SLAB]) (yBar + HalfStroke) [mix Stroke VJut 0.5] define [GhaynOverlayBar top] : LetterBarOverlay.l GammaBarLeft (top * (1 - OverlayPos)) diff --git a/packages/font-glyphs/src/letter/latin/lower-a.ptl b/packages/font-glyphs/src/letter/latin/lower-a.ptl index 22029c3171..7ee90c87ac 100644 --- a/packages/font-glyphs/src/letter/latin/lower-a.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-a.ptl @@ -275,10 +275,11 @@ glyph-block Letter-Latin-Lower-A : begin derive-composites 'aRetroflexHook' 0x1D8F 'a/rtailBase' RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke) - select-variant 'scripta' 0x0251 - select-variant 'largescripta' 0x2C6D (follow -- 'scripta') - select-variant 'invscripta' 0xAB64 (follow -- 'scripta') - derive-composites 'alphaRetroflexHook' 0x1D90 'scripta.singleStoreySerifless' + select-variant 'scripta' 0x251 (follow -- [conditional-follow SLAB 'scripta/autoSerifed/slab' 'scripta/autoSerifed/sans']) + select-variant 'largescripta' 0x2C6D (follow -- [conditional-follow SLAB 'scripta/autoSerifed/slab' 'scripta/autoSerifed/sans']) + select-variant 'invscripta' 0xAB64 (follow -- [conditional-follow SLAB 'scripta/autoSerifed/slab' 'scripta/autoSerifed/sans']) + + derive-composites 'scriptaRetroflexHook' 0x1D90 'scripta.singleStoreySerifless' RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke) CreateTurnedLetter 'turnscripta' 0x252 'scripta' HalfAdvance (XH / 2) diff --git a/packages/font-glyphs/src/letter/latin/lower-g.ptl b/packages/font-glyphs/src/letter/latin/lower-g.ptl index 8b5c1a90a6..e0d003fa90 100644 --- a/packages/font-glyphs/src/letter/latin/lower-g.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-g.ptl @@ -116,8 +116,8 @@ glyph-block Letter-Latin-Lower-G : begin include : SeriflessBody df top include : spiro-outline corner df.rightSB top - corner df.rightSB (top - Stroke / 2) - corner (df.rightSB - [HSwToV Stroke]) (top - Stroke / 2) + corner df.rightSB (top - HalfStroke) + corner (df.rightSB - [HSwToV Stroke]) (top - HalfStroke) export : define [SeriflessBody df top] : glyph-proc include : OBarRight.shape (top -- top) (left -- df.leftSB) (right -- df.rightSB) (sw -- df.mvs) @@ -128,7 +128,7 @@ glyph-block Letter-Latin-Lower-G : begin export : define [AutoSerifedBody df top] : glyph-proc include : SeriflessBody df top - if SLAB : include : tagged 'serifRT' : HSerif.rt df.rightSB top SideJut + if (SLAB && [not para.isItalic]) : include : tagged 'serifRT' : HSerif.rt df.rightSB top SideJut export : define [EarlessCornerBody df top] : glyph-proc include : OBarLeft.toothless @@ -160,7 +160,7 @@ glyph-block Letter-Latin-Lower-G : begin earlessCorner { SingleStorey.EarlessCornerBody DToothlessRise } earlessCornerHTB { SingleStorey.EarlessCornerBody 0 } earlessRounded { SingleStorey.EarlessRoundedBody (XH - SmallArchDepthA) } - scriptCut { SingleStorey.ScriptCutBody (Stroke / 2) } + scriptCut { SingleStorey.ScriptCutBody HalfStroke } foreach { suffix { hookShape {bodyShape hookStart} } } [Object.entries SingleStoreyConfig] : do create-glyph "g.\(suffix)" : glyph-proc @@ -196,34 +196,31 @@ glyph-block Letter-Latin-Lower-G : begin include [refer-glyph "g.\(suffix)"] AS_BASE ALSO_METRICS include : OverlayW [AdviceStroke2 2 4 XH] - create-glyph "gScriptCrossedTail.\(suffix)" : glyph-proc - include : MarkSet.p - set-base-anchor 'overlay' Middle (XH / 2) - define df : DivFrame 1 - include : bodyShape df XH - include : SingleStorey.CrossedHook df (XH - hookStart) - select-variant 'g' 'g' link-reduced-variant 'g/sansSerif' 'g' MathSansSerif CreateTurnedLetter 'turng' 0x1D77 'g' HalfAdvance [mix Descender XH 0.5] select-variant "gBar" 0x1E5 (follow -- 'g') - select-variant 'g/single' null (shapeFrom -- 'g') - - select-variant 'g/hookTopBase' null (shapeFrom -- 'g') select-variant 'gScript' 0x261 (shapeFrom -- 'g') (follow -- 'gScript') select-variant 'GScript' 0xA7AC (follow -- 'gScript') select-variant 'gScriptPalatalHook' 0x1D83 (follow -- 'gScript') - select-variant 'gScriptCrossedTail' 0xAB36 - alias 'cyrl/de.BGR' null 'g/single' - alias 'cyrl/de.SRB' null 'g/single' + select-variant 'cyrl/de.BGR' (shapeFrom -- 'g') (follow -- [conditional-follow SLAB 'g/single/autoSerifed/slab' 'g/single/autoSerifed/sans']) + alias 'cyrl/de.SRB' null 'cyrl/de.BGR' + select-variant 'g/hookTopBase' (shapeFrom -- 'g') derive-glyphs 'gHookTop' 0x260 "g/hookTopBase" : function [src gr] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : TopHook.rBarOuter RightSB 0 XH include : LeaningAnchor.Above.VBar.r RightSB + create-glyph 'gScriptCrossedTail' 0xAB36 : glyph-proc + include : MarkSet.p + set-base-anchor 'overlay' Middle (XH / 2) + define df : DivFrame 1 + include : SingleStorey.ScriptCutBody df XH + include : SingleStorey.CrossedHook df (XH - HalfStroke) + glyph-block-import Letter-Blackboard : BBS BBD BBBarRight create-glyph 'mathbb/g' 0x1D558 : glyph-proc include : MarkSet.p diff --git a/packages/font-glyphs/src/letter/latin/lower-j.ptl b/packages/font-glyphs/src/letter/latin/lower-j.ptl index a3500e154d..e324252c4a 100644 --- a/packages/font-glyphs/src/letter/latin/lower-j.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-j.ptl @@ -35,14 +35,16 @@ glyph-block Letter-Latin-Lower-J : begin set-base-anchor 'overlay' barCenter (top / 2) define XMiddle : namespace - export : define [Straight df] : begin df.middle - export : define [Hooky df] : df.middle + [IBalance2 df] - export : define [Regular df] : df.middle + JBalance + export : define [StraightSerifless df] : begin df.middle + export : define [StraightSerifed df] : df.middle + [IBalance2 df] + export : define [BentHook df] : df.middle + JBalance export : define [FlatHookSerifless df] : df.middle + 0.25 * JBalance * df.div * [mix 1 df.div 2] - export : define [FlatHookSerifed df] : df.middle + JBalance * df.div + export : define [FlatHookSerifed df] : df.middle + JBalance * df.div + export : define [StraightAutoSerifed df] : if SLAB [StraightSerifed df] [StraightSerifless df] + export : define [FlatHookAutoSerifed df] : if SLAB [FlatHookSerifed df] [FlatHookSerifless df] define Body : namespace - export : define [Regular df top xMiddle] : glyph-proc + export : define [BentHook df top xMiddle] : glyph-proc local hookx : Math.min (xMiddle - (Width * 0.5) - [HSwToV HalfStroke] + OXHook) (xMiddle - 1.5 * [HSwToV Stroke] + OXHook) set-base-anchor "below" [mix hookx xMiddle 0.5] Descender include : dispiro @@ -74,28 +76,48 @@ glyph-block Letter-Latin-Lower-J : begin set-base-anchor "trailing" (xMiddle - [HSwToV HalfStroke]) Descender define Serifs : namespace + export : define [None df top xMiddle] : no-shape export : define [Long df top xMiddle] : HSerif.lt xMiddle top (LongJut * df.div) + export : define [Auto df top xMiddle] : if SLAB [Long df top xMiddle] [no-shape] define Marks : namespace + export : define [Serifless df top xMiddle] : glyph-proc + set-base-anchor 'above' xMiddle top + set-base-anchor 'overlay' xMiddle (top / 2) + export : define [Serifed df top xMiddle] : glyph-proc include : Serifless df top xMiddle include : LeaningAnchor.Above.At [mix df.middle xMiddle (7/8)] - export : define [Serifless df top xMiddle] : glyph-proc - set-base-anchor 'above' xMiddle top - set-base-anchor 'overlay' xMiddle (top / 2) + export : define [AutoSerifed df top xMiddle] : glyph-proc + include : if SLAB + Serifed df top xMiddle + Serifless df top xMiddle + + define Div : namespace + export : define BentHook 1 + export : define StraightSerifless para.diversityII + export : define StraightSerifed para.diversityI + export : define FlatHookSerifless para.diversityII + export : define FlatHookSerifed para.diversityI + export : define StraightAutoSerifed : if SLAB para.diversityI para.diversityII + export : define FlatHookAutoSerifed : if SLAB para.diversityI para.diversityII define JConfig : object - 'serifless' { "Regular" null XMiddle.Regular Marks.Serifless 1 } - 'serifed' { "Regular" Serifs.Long XMiddle.Regular Marks.Serifed 1 } - 'straightLine' { "Straight" null XMiddle.Straight Marks.Serifless para.diversityII } - 'hooky' { "Straight" Serifs.Long XMiddle.Hooky Marks.Serifed para.diversityI } - 'flatHookSerifless' { "FlatHook" null XMiddle.FlatHookSerifless Marks.Serifless para.diversityII } - 'flatHookSerifed' { "FlatHook" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed para.diversityI } - 'diagonalTailedSerifless' { "DiagonalTailed" null XMiddle.FlatHookSerifless Marks.Serifless para.diversityII } - 'diagonalTailedSerifed' { "DiagonalTailed" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed para.diversityI } - - foreach {suffix { shapeId Serif xMiddleT Marks div } } [Object.entries JConfig] : do + 'bentHook' { "BentHook" Serifs.Auto XMiddle.BentHook Marks.AutoSerifed Div.BentHook } + 'bentHookSerifless' { "BentHook" Serifs.None XMiddle.BentHook Marks.Serifless Div.BentHook } + 'bentHookSerifed' { "BentHook" Serifs.Long XMiddle.BentHook Marks.Serifed Div.BentHook } + 'straight' { "Straight" Serifs.Auto XMiddle.StraightAutoSerifed Marks.AutoSerifed Div.StraightAutoSerifed } + 'straightSerifless' { "Straight" Serifs.None XMiddle.StraightSerifless Marks.Serifless Div.StraightSerifless } + 'straightSerifed' { "Straight" Serifs.Long XMiddle.StraightSerifed Marks.Serifed Div.StraightSerifed } + 'flatHook' { "FlatHook" Serifs.Auto XMiddle.FlatHookAutoSerifed Marks.AutoSerifed Div.FlatHookAutoSerifed } + 'flatHookSerifless' { "FlatHook" Serifs.None XMiddle.FlatHookSerifless Marks.Serifless Div.FlatHookSerifless } + 'flatHookSerifed' { "FlatHook" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } + 'diagonalTailed' { "DiagonalTailed" Serifs.Auto XMiddle.FlatHookAutoSerifed Marks.AutoSerifed Div.FlatHookAutoSerifed } + 'diagonalTailedSerifless' { "DiagonalTailed" Serifs.None XMiddle.FlatHookSerifless Marks.Serifless Div.FlatHookSerifless } + 'diagonalTailedSerifed' { "DiagonalTailed" Serifs.Long XMiddle.FlatHookSerifed Marks.Serifed Div.FlatHookSerifed } + + foreach { suffix { shapeId Serif xMiddleT Marks div } } [Object.entries JConfig] : do local df : DivFrame div local xMiddle : xMiddleT df @@ -103,7 +125,7 @@ glyph-block Letter-Latin-Lower-J : begin set-width df.width include : df.markSet.p include : Body.(shapeId) df XH xMiddle - if Serif : include : tagged 'serifLT' : Serif df XH xMiddle + include : tagged 'serifLT' : Serif df XH xMiddle include : Marks df XH xMiddle create-glyph "dotlessjBar.\(suffix)" : glyph-proc @@ -122,7 +144,7 @@ glyph-block Letter-Latin-Lower-J : begin link-reduced-variant 'j/sansSerif' 'j' MathSansSerif select-variant 'dotlessjBar' 0x25F (follow -- 'dotlessj') - select-variant 'dotlessjBarHookTop' 0x284 (follow -- 'dotlessj/sansSerif') + select-variant 'dotlessjBarHookTop' 0x284 (follow -- 'dotlessjHookTop') CreateAccentedComposition 'jBar' 0x249 'dotlessjBar' 'tittleAbove' alias 'grek/yot' 0x3F3 'j' diff --git a/packages/font-glyphs/src/letter/latin/lower-m.ptl b/packages/font-glyphs/src/letter/latin/lower-m.ptl index 82132fbf97..6a57ea4f56 100644 --- a/packages/font-glyphs/src/letter/latin/lower-m.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-m.ptl @@ -89,8 +89,12 @@ glyph-block Letter-Latin-Lower-M : begin local sf : SerifFrame.fromDf df top rbot return sf.rb.outer + glyph-block-export dfM + define [dfM] : DivFrame para.diversityM 3 + glyph-block-export MEnoughSpaceForFullSerifs - define [MEnoughSpaceForFullSerifs df _mid] : begin + define [MEnoughSpaceForFullSerifs _df _mid] : begin + local df : fallback _df : dfM local mid : fallback _mid df.middle local ink : HSwToV df.mvs local gap : [Math.min (mid - df.leftSB) (df.rightSB - mid)] - 1.5 * ink @@ -127,8 +131,7 @@ glyph-block Letter-Latin-Lower-M : begin local fFull : MEnoughSpaceForFullSerifs df : fallback _mid df.middle include : SmallMBottomMotionRightSerif df top rbot fFull - glyph-block-export dfM - define [dfM] : DivFrame para.diversityM 3 + glyph-block-export SmallMArches define [SmallMArches df top lbot mbot rbot _mid] : glyph-proc local mid : fallback _mid df.middle include : SmallMShoulderSpiro diff --git a/packages/font-glyphs/src/letter/latin/lower-q.ptl b/packages/font-glyphs/src/letter/latin/lower-q.ptl index 5645edc206..964359830e 100644 --- a/packages/font-glyphs/src/letter/latin/lower-q.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-q.ptl @@ -20,7 +20,6 @@ glyph-block Letter-Latin-Lower-Q : begin glyph-block-export RDiagTailedBar define [RDiagTailedBar x0 yb yt _sw] : begin - local df : DivFrame 1 local sw : fallback _sw Stroke local xMid : x0 - [HSwToV : 0.5 * sw] return : dispiro @@ -31,7 +30,7 @@ glyph-block Letter-Latin-Lower-Q : begin set-base-anchor 'trailing' (RightSB - markHalfStroke) Descender include : OBarRight.shape (top -- top) include : match terminal - [Just TERMINAL-NORMAL] : VBar.r RightSB bottom top + [Just TERMINAL-NORMAL] : VBar.r RightSB bottom top [Just TERMINAL-TAILED] : RightwardTailedBar RightSB bottom top [Just TERMINAL-DIAG] : RDiagTailedBar RightSB bottom top @@ -40,7 +39,7 @@ glyph-block Letter-Latin-Lower-Q : begin include : OBarLeft.toothless (top -- top) (rise -- DToothlessRise) (mBlend -- DMBlend) include : FlipAround Middle (top / 2) include : match terminal - [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - DToothlessRise) + [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - DToothlessRise) [Just TERMINAL-TAILED] : RightwardTailedBar RightSB bottom (top - DToothlessRise) [Just TERMINAL-DIAG] : RDiagTailedBar RightSB bottom (top - DToothlessRise) @@ -49,7 +48,7 @@ glyph-block Letter-Latin-Lower-Q : begin include : OBarLeft.rounded (top -- top) (yTerminal -- (SmallArchDepthB - O)) include : FlipAround Middle (top / 2) include : match terminal - [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - SmallArchDepthB) + [Just TERMINAL-NORMAL] : VBar.r RightSB bottom (top - SmallArchDepthB) [Just TERMINAL-TAILED] : RightwardTailedBar RightSB bottom (top - SmallArchDepthB) [Just TERMINAL-DIAG] : RDiagTailedBar RightSB bottom (top - SmallArchDepthB) @@ -66,16 +65,16 @@ glyph-block Letter-Latin-Lower-Q : begin earlessCorner EarlessCornerBody earlessRounded EarlessRoundedBody object # tail - straight TERMINAL-NORMAL - tailed TERMINAL-TAILED - diagonalTailed TERMINAL-DIAG + straight { TERMINAL-NORMAL false } + tailed { TERMINAL-TAILED true } + diagonalTailed { TERMINAL-DIAG true } object # serifs serifless { nothing nothing } motionSerifed { RtSerif nothing } bottomSerifed { nothing RbSerif } serifed { RtSerif RbSerif } - foreach { suffix { Body terminal {sRT sRB} } } [Object.entries QConfig] : do + foreach { suffix { Body {terminal fTail} {sRT sRB} } } [Object.entries QConfig] : do create-glyph "q.\(suffix)" : glyph-proc include : MarkSet.p include : Body terminal XH Descender @@ -83,19 +82,20 @@ glyph-block Letter-Latin-Lower-Q : begin if sRB : include : sRB Descender include : LeaningAnchor.Below.VBar.r RightSB - create-glyph "QRTail.\(suffix)" : glyph-proc - include : MarkSet.capDesc - include : Body terminal CAP 0 - include : RetroflexHook.rExt RightSB 0 - if sRT : include : sRT CAP - include : LeaningAnchor.Below.VBar.r RightSB - - create-glyph "qRTail.\(suffix)" : glyph-proc - include : MarkSet.p - include : Body terminal XH 0 - include : RetroflexHook.rExt RightSB 0 - if sRT : include : sRT XH - include : LeaningAnchor.Below.VBar.r RightSB + if (!fTail && !sRB) : begin + create-glyph "QRTail.\(suffix)" : glyph-proc + include : MarkSet.capDesc + include : Body terminal CAP 0 + include : RetroflexHook.rExt RightSB 0 + if sRT : include : sRT CAP + include : LeaningAnchor.Below.VBar.r RightSB + + create-glyph "qRTail.\(suffix)" : glyph-proc + include : MarkSet.p + include : Body terminal XH 0 + include : RetroflexHook.rExt RightSB 0 + if sRT : include : sRT XH + include : LeaningAnchor.Below.VBar.r RightSB select-variant 'q' 'q' link-reduced-variant 'q/sansSerif' 'q' MathSansSerif diff --git a/packages/font-glyphs/src/letter/latin/upper-h.ptl b/packages/font-glyphs/src/letter/latin/upper-h.ptl index 3126efead7..66fccc93e0 100644 --- a/packages/font-glyphs/src/letter/latin/upper-h.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-h.ptl @@ -25,6 +25,7 @@ glyph-block Letter-Latin-Upper-H : begin define SLAB-ALL 4 define SLAB-ALL-BGR 5 define SLAB-TAILED-CYRILLIC-BGR 6 + define SLAB-SMALL-HETA 7 define [HSerifs slabType t b l r sw] : begin local sf : SerifFrame t b l r (swRef -- [fallback sw Stroke]) @@ -36,6 +37,7 @@ glyph-block Letter-Latin-Upper-H : begin [Just SLAB-ALL] : composite-proc sf.lt.full sf.rt.full sf.lb.full sf.rb.full [Just SLAB-ALL-BGR] : composite-proc sf.lt.outer sf.rt.inner sf.lb.full sf.rb.full [Just SLAB-TAILED-CYRILLIC-BGR] : composite-proc sf.lt.outer sf.rt.inner sf.lb.full + [Just SLAB-SMALL-HETA] : NeedSlab SLAB : begin sf.lt.outer define [HShape l r top _sw] : glyph-proc local sw : fallback _sw Stroke @@ -45,10 +47,25 @@ glyph-block Letter-Latin-Upper-H : begin define [HTurned l r top _sw] : glyph-proc local sw : fallback _sw Stroke + include : LeaningAnchor.Below.VBar.r r include : tagged 'strokeL' : VBar.l l (top * HBarPos - sw / 2) top sw include : tagged 'strokeR' : VBar.r r 0 top sw include : HBar.m (l - O) (r + O) (top * HBarPos) sw + define [HLeftHalf l r top _sw] : glyph-proc + local sw : fallback _sw Stroke + include : LeaningAnchor.Above.VBar.l l + include : LeaningAnchor.Below.VBar.l l + include : tagged 'strokeL' : VBar.l l 0 top sw + include : HBar.m (l - O) (r + O) (top * HBarPos) sw + + define [HRightHalf l r top _sw] : glyph-proc + local sw : fallback _sw Stroke + include : LeaningAnchor.Above.VBar.r r + include : LeaningAnchor.Below.VBar.r r + include : tagged 'strokeR' : VBar.r r 0 top sw + include : HBar.m (l - O) (r + O) (top * HBarPos) sw + define [TailedHShape l r top _sw] : glyph-proc local sw : fallback _sw Stroke include : tagged 'strokeL' : VBar.l l 0 top sw @@ -94,22 +111,22 @@ glyph-block Letter-Latin-Upper-H : begin Math.min OverlayStroke (0.625 * (yt - yb)) define HConfig : object - serifless { HShape HTurned SLAB-NONE } - tailedSerifless { TailedHShape HTurned SLAB-NONE } - topLeftSerifed { HShape HTurned SLAB-TOP-LEFT } - tailedTopLeftSerifed { TailedHShape HTurned SLAB-TOP-LEFT } - topLeftBottomRightSerifed { HShape HTurned SLAB-TOP-LEFT-BOTTOM-RIGHT } - serifed { HShape HTurned SLAB-ALL } - tailedSerifed { TailedHShape HTurned SLAB-TAILED-CYRILLIC } - serifedExceptBottomRight { HShape HTurned SLAB-TAILED-CYRILLIC } - serifedBGR { HShape HTurned SLAB-ALL-BGR } - tailedSerifedBGR { TailedHShape HTurned SLAB-TAILED-CYRILLIC-BGR } + serifless { HShape HTurned HLeftHalf HRightHalf SLAB-NONE } + tailedSerifless { TailedHShape HTurned HLeftHalf HRightHalf SLAB-NONE } + topLeftSerifed { HShape HTurned HLeftHalf HRightHalf SLAB-TOP-LEFT } + tailedTopLeftSerifed { TailedHShape HTurned HLeftHalf HRightHalf SLAB-TOP-LEFT } + topLeftBottomRightSerifed { HShape HTurned HLeftHalf HRightHalf SLAB-TOP-LEFT-BOTTOM-RIGHT } + serifed { HShape HTurned HLeftHalf HRightHalf SLAB-ALL } + tailedSerifed { TailedHShape HTurned HLeftHalf HRightHalf SLAB-TAILED-CYRILLIC } + serifedExceptBottomRight { HShape HTurned HLeftHalf HRightHalf SLAB-TAILED-CYRILLIC } + serifedBGR { HShape HTurned HLeftHalf HRightHalf SLAB-ALL-BGR } + tailedSerifedBGR { TailedHShape HTurned HLeftHalf HRightHalf SLAB-TAILED-CYRILLIC-BGR } define EnGheGheConfig : object serifless false topRightSerifed true - foreach { suffix { Body TurnedBody slabType } } [Object.entries HConfig] : do + foreach { suffix { Body TurnedBody LeftHalfBody RightHalfBody slabType } } [Object.entries HConfig] : do create-glyph "H.\(suffix)" : glyph-proc include : MarkSet.capital include : Body SB RightSB CAP @@ -121,7 +138,6 @@ glyph-block Letter-Latin-Upper-H : begin create-glyph "HTurned.\(suffix)" : glyph-proc include : MarkSet.capital - include : LeaningAnchor.Below.VBar.r RightSB include : TurnedBody SB RightSB CAP include : HSerifs slabType CAP 0 SB RightSB eject-contour 'serifLB' @@ -133,40 +149,28 @@ glyph-block Letter-Latin-Upper-H : begin create-glyph "leftHalfH.\(suffix)" : glyph-proc include : MarkSet.capital - include : LeaningAnchor.Above.VBar.l SB - include : LeaningAnchor.Below.VBar.l SB - include : Body SB RightSB CAP - eject-contour 'strokeR' + include : LeftHalfBody SB RightSB CAP include : HSerifs slabType CAP 0 SB RightSB eject-contour 'serifRT' eject-contour 'serifRB' create-glyph "rightHalfH.\(suffix)" : glyph-proc include : MarkSet.capital - include : LeaningAnchor.Above.VBar.r RightSB - include : LeaningAnchor.Below.VBar.r RightSB - include : Body SB RightSB CAP - eject-contour 'strokeL' + include : RightHalfBody SB RightSB CAP include : HSerifs slabType CAP 0 SB RightSB eject-contour 'serifLT' eject-contour 'serifLB' create-glyph "leftHalfSmcpH.\(suffix)" : glyph-proc include : MarkSet.e - include : LeaningAnchor.Above.VBar.l SB - include : LeaningAnchor.Below.VBar.l SB - include : Body SB RightSB XH - eject-contour 'strokeR' + include : LeftHalfBody SB RightSB XH include : HSerifs slabType XH 0 SB RightSB eject-contour 'serifRT' eject-contour 'serifRB' create-glyph "rightHalfSmcpH.\(suffix)" : glyph-proc include : MarkSet.e - include : LeaningAnchor.Above.VBar.r RightSB - include : LeaningAnchor.Below.VBar.r RightSB - include : Body SB RightSB XH - eject-contour 'strokeL' + include : RightHalfBody SB RightSB XH include : HSerifs slabType XH 0 SB RightSB eject-contour 'serifLT' eject-contour 'serifLB' @@ -236,7 +240,6 @@ glyph-block Letter-Latin-Upper-H : begin include : HSerifs slabType XH 0 df.leftSB xm df.mvs include : MidHook.m df XH - select-variant 'H' 'H' link-reduced-variant 'H/sansSerif' 'H' MathSansSerif select-variant 'H/descBase' (shapeFrom -- 'H') @@ -247,7 +250,6 @@ glyph-block Letter-Latin-Upper-H : begin select-variant 'cyrl/En/descBase' (shapeFrom -- 'H') select-variant 'leftHalfH' 0x2C75 select-variant 'rightHalfH' 0xA7F5 - select-variant 'grek/Heta' 0x370 (shapeFrom -- 'leftHalfH') select-variant 'smcpH' 0x29C (follow -- 'H') select-variant 'leftHalfSmcpH' 0x2C76 (follow -- 'leftHalfH') @@ -255,7 +257,13 @@ glyph-block Letter-Latin-Upper-H : begin select-variant 'cyrl/en' 0x43D (shapeFrom -- 'smcpH') select-variant 'cyrl/en/descBase' (shapeFrom -- 'smcpH') select-variant 'cyrl/en.BGR' (shapeFrom -- 'smcpH') - select-variant 'grek/heta' 0x371 (shapeFrom -- 'leftHalfSmcpH') + + alias 'grek/Heta' 0x370 'leftHalfH' + + create-glyph 'grek/heta' 0x371 : glyph-proc + include : MarkSet.e + include : LeftHalfBody SB RightSB XH + include : HSerifs SLAB-SMALL-HETA XH 0 SB RightSB derive-composites 'HDescender' 0x2C67 'H/descBase' [CyrDescender.rSideJut RightSB 0] @@ -280,18 +288,6 @@ glyph-block Letter-Latin-Upper-H : begin select-variant 'cyrl/NjeKomi' 0x050A select-variant 'cyrl/njeKomi' 0x050B - create-glyph 'mathbb/H' 0x210D : glyph-proc - include : MarkSet.capital - include : VBar.l SB 0 CAP BBS - include : VBar.r RightSB 0 CAP BBS - include : VBar.l (SB + BBD) 0 CAP BBS - include : VBar.r (RightSB - BBD) 0 CAP BBS - include : HBar.m (SB + BBD) (RightSB - BBD) (CAP * HBarPos) BBS - include : HBar.t SB (SB + BBD) CAP BBS - include : HBar.t (RightSB - BBD) RightSB CAP BBS - include : HBar.b SB (SB + BBD) 0 BBS - include : HBar.b (RightSB - BBD) RightSB 0 BBS - derive-glyphs 'HCedilla' 0x1E28 'H' : lambda [src gr] : glyph-proc local shift : Width + SB - Middle + [HSwToV HalfStroke] include [refer-glyph 'cedillaBelow'] @@ -317,12 +313,24 @@ glyph-block Letter-Latin-Upper-H : begin derive-glyphs 'cyrl/EnHook' 0x4C7 'cyrl/En/descBase' DProcCapitalHeng derive-glyphs 'cyrl/enHook' 0x4C8 'cyrl/en/descBase' DProcSmallHeng - derive-glyphs 'cyrl/EnLHook' 0x528 'cyrl/En' : lambda [src srl] : glyph-proc + derive-glyphs 'cyrl/EnHookLeft' 0x528 'cyrl/En' : lambda [src srl] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS eject-contour 'serifLB' include : PalatalHook.lExt SB 0 - derive-glyphs 'cyrl/enLHook' 0x529 'cyrl/en' : lambda [src srl] : glyph-proc + derive-glyphs 'cyrl/enHookLeft' 0x529 'cyrl/en' : lambda [src srl] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS eject-contour 'serifLB' include : PalatalHook.lExt SB 0 + + create-glyph 'mathbb/H' 0x210D : glyph-proc + include : MarkSet.capital + include : VBar.l SB 0 CAP BBS + include : VBar.r RightSB 0 CAP BBS + include : VBar.l (SB + BBD) 0 CAP BBS + include : VBar.r (RightSB - BBD) 0 CAP BBS + include : HBar.m (SB + BBD) (RightSB - BBD) (CAP * HBarPos) BBS + include : HBar.t SB (SB + BBD) CAP BBS + include : HBar.t (RightSB - BBD) RightSB CAP BBS + include : HBar.b SB (SB + BBD) 0 BBS + include : HBar.b (RightSB - BBD) RightSB 0 BBS diff --git a/packages/font-glyphs/src/letter/latin/upper-j.ptl b/packages/font-glyphs/src/letter/latin/upper-j.ptl index b11a46d05e..f39711bcf1 100644 --- a/packages/font-glyphs/src/letter/latin/upper-j.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-j.ptl @@ -13,7 +13,7 @@ glyph-block Letter-Latin-Upper-J : begin glyph-block-import Letter-Blackboard : BBS BBD glyph-block-import Letter-Latin-Lower-J : FlatHookDotlessJShape - define [JFullHookBase df dfHook top] : glyph-proc + define [JBentHookBase df dfHook top] : glyph-proc set-width df.width include : df.markSet.[if (top > XH) 'capital' 'e'] @@ -51,7 +51,7 @@ glyph-block Letter-Latin-Upper-J : begin flat (df.rightSB - JBalance2 - [Math.min (0.625 * (df.rightSB - df.leftSB)) (1.375 * hd.x)]) 0 [widths.rhs Stroke] curl df.leftSB 0 - define [JDescendingBase df dfHook top] : glyph-proc + define [JDescendingBentHookBase df dfHook top] : glyph-proc set-width df.width include : df.markSet.[if (top > XH) 'capDesc' 'p'] @@ -69,8 +69,8 @@ glyph-block Letter-Latin-Upper-J : begin hookend Descender g4 hookx (Descender + JHook) - set JFullHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.rightSB - [HSwToV HalfStroke] - JBalance2) (df.leftSB) top 0 'capital' - set JDescendingBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.middle + JBalance) (df.middle + JBalance - LongJut - [HSwToV HalfStroke]) top Descender 'capDesc' + set JBentHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.rightSB - [HSwToV HalfStroke] - JBalance2) (df.leftSB) top 0 'capital' + set JDescendingBentHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.middle + JBalance) (df.middle + JBalance - LongJut - [HSwToV HalfStroke]) top Descender 'capDesc' define [JCurlyTailBaseT df xc xCo top bottom markClass] : glyph-proc set-width df.width include : df.markSet.(markClass) @@ -90,7 +90,7 @@ glyph-block Letter-Latin-Upper-J : begin y2 -- bottom + 0.5 * fine yLoopTop -- bottom + 2 * fine + 2 * rinner - define [JDescendingFlatHookBase df dfHook top] : glyph-proc + define [JDescendingFlatHookSeriflessBase df dfHook top] : glyph-proc set-width df.width include : df.markSet.[if (top > XH) 'capDesc' 'p'] include : FlatHookDotlessJShape df dfHook top @@ -112,11 +112,11 @@ glyph-block Letter-Latin-Upper-J : begin define JConfig : SuffixCfg.weave object # height and hook - "" { JFullHookBase [DivFrame 1] [DivFrame 1] } - flatHook { JFlatHookBase [DivFrame 1] [DivFrame 1] } - descending { JDescendingBase [DivFrame 1] [DivFrame 1] } - descendingFlatHookSerifless { JDescendingFlatHookBase [DivFrame para.diversityI] [DivFrame para.diversityI] } - descendingFlatHookSerifed { JDescendingFlatHookSerifedBase [DivFrame para.diversityI] [DivFrame para.diversityI] } + bentHook { JBentHookBase [DivFrame 1] [DivFrame 1] } + flatHook { JFlatHookBase [DivFrame 1] [DivFrame 1] } + descendingBentHook { JDescendingBentHookBase [DivFrame 1] [DivFrame 1] } + descendingFlatHookSerifless { JDescendingFlatHookSeriflessBase [DivFrame para.diversityI] [DivFrame para.diversityI] } + descendingFlatHookSerifed { JDescendingFlatHookSerifedBase [DivFrame para.diversityI] [DivFrame para.diversityI] } function [body] : if (body == 'descendingFlatHookSerifless' || body == 'descendingFlatHookSerifed') {."" null} : object serifless null serifed JLeftwardSerif diff --git a/packages/font-glyphs/src/letter/latin/upper-q.ptl b/packages/font-glyphs/src/letter/latin/upper-q.ptl index c0e21cbd09..10153ca3f5 100644 --- a/packages/font-glyphs/src/letter/latin/upper-q.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-q.ptl @@ -104,6 +104,7 @@ glyph-block Letter-Latin-Upper-Q : begin flat [Math.min (df.middle + HookX - 1) (df.middle - [HSwToV HalfStroke] - TailDepth)] (Stroke + TailDepth) curl (df.middle + HookX) (Stroke + TailDepth) + glyph-block-export QCrossing define [QCrossing df top sw] : begin define k 1.5 define cor : DiagCor (k * (df.rightSB - df.middle)) (df.rightSB - df.middle - OX) @@ -147,13 +148,17 @@ glyph-block Letter-Latin-Upper-Q : begin ################################### + glyph-block-export QInnerDiagSw + define QInnerDiagSw : AdviceStroke 4 + define QInnerVertSw : Math.min [AdviceStroke 3.5] ((RightSB - SB - [HSwToV : 2 * Stroke]) / (2 * HVContrast)) + define QConfig : object straight { QStdBody Stroke QStraightTail 'capDesc' 'p' } curlyTailed { QStdBody Stroke QCurlyTail 'capDesc' 'p' } crossingCurlyTailed { QStdBody QInnerVertSw QCrossingCurlyTail 'capDesc' 'p' } - crossing { QStdBody [AdviceStroke 4] QCrossing 'capital' 'e' } - crossingBaseline { QStdBody [AdviceStroke 4] QCrossingBaseline 'capital' 'e' } + crossing { QStdBody QInnerDiagSw QCrossing 'capital' 'e' } + crossingBaseline { QStdBody QInnerDiagSw QCrossingBaseline 'capital' 'e' } verticalCrossing { QStdBody QInnerVertSw QVerticalCrossing 'capDesc' 'p' } horizontalTailed { QHorizontalTailedBody [AdviceStroke 3] no-shape 'capital' 'e' } detachedTailed { QStdBody Stroke QDetachedTail 'capDesc' 'p' } diff --git a/packages/font-glyphs/src/letter/latin/x.ptl b/packages/font-glyphs/src/letter/latin/x.ptl index fd4a91a610..886e43e78a 100644 --- a/packages/font-glyphs/src/letter/latin/x.ptl +++ b/packages/font-glyphs/src/letter/latin/x.ptl @@ -51,7 +51,7 @@ glyph-block Letter-Latin-X : begin include : HalfXStrand stb slab xLeft yLeft xMid yMid turn pStraight tension _sw (-0.001) include : HalfXStrand stb slab xRight yRight xMid yMid turn pStraight tension _sw (-0.001) - define [XChanceryStrand sign leftX leftY rightX rightY fHalf _sw] : begin + define [XChanceryStrand sign fSlab leftX leftY rightX rightY fHalf _sw] : begin local sw : fallback _sw Stroke local blendK1X : StrokeWidthBlend 0.58 0.65 local blendK1Y 0.2 @@ -63,17 +63,22 @@ glyph-block Letter-Latin-X : begin local fine : [AdviceStroke 3] * (sw / Stroke) + local leftXExt : leftX - [if fSlab SideJut 0] + local rightXExt : rightX + [if fSlab SideJut 0] + return : dispiro 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] + flat leftXExt (leftY - sign * sw / 2) [widths.center.heading sw Rightward] + curl (leftX + TINY) (leftY - sign * sw / 2) [widths.center.heading sw Rightward] 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] + flat (rightX - TINY) (rightY + sign * sw / 2) [widths.center.heading sw Rightward] + curl rightXExt (rightY + sign * sw / 2) [widths.center.heading sw Rightward] glyph-block-export XCursiveHalfShape define [XCursiveHalfShape] : with-params [ @@ -142,7 +147,7 @@ glyph-block Letter-Latin-X : begin include : 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-CHANCERY] : XChanceryStrand (-1) fSlab 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 @@ -154,7 +159,7 @@ glyph-block Letter-Latin-X : begin include : 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-CHANCERY] : XChanceryStrand (+1) fSlab df.leftSB top df.rightSB bot false sw [Just STROKE-CURSIVE] : XCursiveHalfShape top bot df.middle df.rightSB swCoEnd -- swCursiveCoEnd swEnd -- swCursiveEnd @@ -168,12 +173,12 @@ glyph-block Letter-Latin-X : begin include : 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 + [Just STROKE-CHANCERY] : XChanceryStrand (-1) fSlab df.leftSB bot df.rightSB top true sw __ : glyph-proc include : 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-CHANCERY] : XChanceryStrand (+1) fSlab df.leftSB top df.rightSB bot true sw [Just STROKE-CURSIVE] : XCursiveHalfShape top bot df.middle df.rightSB swCoEnd -- swCursiveCoEnd swEnd -- swCursiveEnd diff --git a/packages/font-glyphs/src/letter/shared.ptl b/packages/font-glyphs/src/letter/shared.ptl index 357866c865..777b4873f7 100644 --- a/packages/font-glyphs/src/letter/shared.ptl +++ b/packages/font-glyphs/src/letter/shared.ptl @@ -126,7 +126,7 @@ glyph-block Letter-Blackboard : begin glyph-block Letter-Shared-Metrics : begin glyph-block-export BowlXDepth define [BowlXDepth top bottom left right sw] : begin - local trShrink : Math.pow (((right - left) / (top - bottom))) 0.5 + local trShrink : Math.sqrt : (right - left) / (top - bottom) return : Math.max HSwToV : 1.25 * sw trShrink * [Math.min ((top - bottom) * 0.45) ((right - left + [HSwToV sw]) * 0.875)] @@ -288,74 +288,67 @@ glyph-block Letter-Shared-Shapes : begin curl xend yend export : define [shape] : with-params [ - [top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : begin return : dispiro widths.lhs fine - flat (left + [HSwToV : sw - fine]) (top - ada - TINY) - curl (left + [HSwToV : sw - fine]) (0 + adb) - arch.lhs 0 (sw -- sw) (swBefore -- fine) - flat (right - OX) (0 + ada) - curl (right - OX) (top - adb) + flatside.ld (left + [HSwToV : sw - fine]) bot top ada adb 0 + arch.lhs bot (sw -- sw) (swBefore -- fine) + flatside.ru right bot top ada adb arch.lhs top (sw -- sw) (swAfter -- fine) - flat (left + [HSwToV : sw - fine]) (top - ada) [widths.lhs fine] - curl (left + [HSwToV : sw - fine]) (top - ada - TINY) + flatside.ld (left + [HSwToV : sw - fine]) bot top ada adb 0 (af -- [widths.lhs fine]) export : define [toothless] : with-params [ - [top XH] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] [mBlend Math.SQRT1_2] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : begin return : dispiro - g4 left rise [widths.lhs sw] + g4 left (bot + rise) [widths.lhs sw] alsoThru.g2 0.5 mBlend important - arch.lhs.centerAt.ltr.b [mix left right 0.5] 0 (sw -- sw) + arch.lhs.centerAt.ltr.b [mix left right 0.5] bot (sw -- sw) archv - flat (right - OX) (0 + ada) - curl (right - OX) (top - adb) + flatside.ru right bot top ada adb arch.lhs top (sw -- sw) (swAfter -- fine) flat (left + [HSwToV : sw - fine]) (top - ada) [widths.lhs fine] curl (left + [HSwToV : sw - fine]) (top - ada - TINY) [widths.lhs fine] export : define [rounded] : with-params [ - [top XH] [left SB] [right RightSB] [yTerminal CAP] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [yTerminal CAP] [sw Stroke] [fine ShoulderFine] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : begin return : dispiro flat left yTerminal [widths.lhs.heading sw Downward] curl left [Math.min adb (yTerminal - TINY)] - arch.lhs 0 (sw -- sw) - flat (right - OX) (0 + ada) - curl (right - OX) (top - adb) + arch.lhs bot (sw -- sw) + flatside.ru right bot top ada adb arch.lhs top (sw -- sw) (swAfter -- fine) flat (left + [HSwToV : sw - fine]) (top - ada + TINY) [widths.lhs fine] curl (left + [HSwToV : sw - fine]) (top - ada) [widths.lhs fine] export : define [toothlessTop] : with-params [ - [top XH] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] [mBlend Math.SQRT1_2] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : begin return : dispiro - flat (left + [HSwToV : sw - fine]) (top - ada - TINY) [widths.lhs fine] - curl (left + [HSwToV : sw - fine]) (0 + adb) [widths.lhs fine] - arch.lhs 0 (sw -- sw) (swBefore -- fine) - flat (right - OX) (0 + ada) - curl (right - OX) (top - adb) + flat (left + [HSwToV : sw - fine]) (bot + adb + TINY) [widths.lhs fine] + curl (left + [HSwToV : sw - fine]) (bot + adb) [widths.lhs fine] + arch.lhs bot (sw -- sw) (swBefore -- fine) + flatside.ru right bot top ada adb arcvh arch.lhs.centerAt.rtl.t [mix left right 0.5] top (sw -- sw) alsoThru.g2 0.5 (1 - mBlend) important g4 left (top - rise) [widths.lhs sw] export : define [roundedTop] : with-params [ - [top XH] [left SB] [right RightSB] [yTerminal Descender] [sw Stroke] + [top XH] [bot 0] [left SB] [right RightSB] [yTerminal Descender] [sw Stroke] [fine ShoulderFine] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : begin return : dispiro - flat (left + [HSwToV : sw - fine]) (top - ada - TINY) [widths.lhs fine] - curl (left + [HSwToV : sw - fine]) (0 + adb) [widths.lhs fine] - arch.lhs 0 (sw -- sw) (swBefore -- fine) - flat (right - OX) (0 + ada) - curl (right - OX) (top - adb) + flat (left + [HSwToV : sw - fine]) (bot + adb + TINY) [widths.lhs fine] + curl (left + [HSwToV : sw - fine]) (bot + adb) [widths.lhs fine] + arch.lhs bot (sw -- sw) (swBefore -- fine) + flatside.ru right bot top ada adb arch.lhs top (sw -- sw) flat left [Math.max (yTerminal + TINY - TanSlope * Stroke) (top - ada)] curl left yTerminal [widths.lhs.heading sw Downward] @@ -386,25 +379,27 @@ glyph-block Letter-Shared-Shapes : begin curl xend yend export : define [shape] : with-params [ - [top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : new-glyph : glyph-proc include : OBarLeft.shape top -- top + bot -- bot left -- left right -- right sw -- sw fine -- fine ada -- ada adb -- adb - include : FlipAround [mix left right 0.5] (top / 2) + include : FlipAround [mix left right 0.5] [mix bot top 0.5] export : define [toothless] : with-params [ - [top XH] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [rise SHook] [sw Stroke] [fine ShoulderFine] [mBlend Math.SQRT1_2] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : new-glyph : glyph-proc include : OBarLeft.toothlessTop top -- top + bot -- bot left -- left right -- right rise -- rise @@ -413,14 +408,15 @@ glyph-block Letter-Shared-Shapes : begin mBlend -- mBlend ada -- ada adb -- adb - include : FlipAround [mix left right 0.5] (top / 2) + include : FlipAround [mix left right 0.5] [mix bot top 0.5] export : define [rounded] : with-params [ - [top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] + [top XH] [bot 0] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] [yTerminal CAP] [ada SmallArchDepthA] [adb SmallArchDepthB] ] : new-glyph : glyph-proc include : OBarLeft.roundedTop top -- top + bot -- bot left -- left right -- right sw -- sw @@ -428,7 +424,7 @@ glyph-block Letter-Shared-Shapes : begin yTerminal -- (top - yTerminal) ada -- ada adb -- adb - include : FlipAround [mix left right 0.5] (top / 2) + include : FlipAround [mix left right 0.5] [mix bot top 0.5] glyph-block-export FlatHookDepth define [FlatHookDepth df s] : object @@ -711,6 +707,11 @@ glyph-block Letter-Shared-Shapes : begin [rightAt x] : tagged 'serifMB' : HSerif.mbAsymmetric x bot 0 jutIn swSerif set this.mt : object full : tagged 'serifMT' : HSerif.mtAsymmetric [mix lBarCenter rBarCenter 0.5] top jutIn jutIn swSerif + [fullAt x] : tagged 'serifMT' : HSerif.mtAsymmetric x top jutIn jutIn swSerif + left : tagged 'serifMT' : HSerif.mtAsymmetric [mix lBarCenter rBarCenter 0.5] top jutIn 0 swSerif + [leftAt x] : tagged 'serifMT' : HSerif.mtAsymmetric x top jutIn 0 swSerif + right : tagged 'serifMT' : HSerif.mtAsymmetric [mix lBarCenter rBarCenter 0.5] top 0 jutIn swSerif + [rightAt x] : tagged 'serifMT' : HSerif.mtAsymmetric x top 0 jutIn swSerif public [slice l r] : begin local ink : HSwToV this.swRef diff --git a/packages/font-glyphs/src/marks/above.ptl b/packages/font-glyphs/src/marks/above.ptl index 254b50ddd8..c96253fd86 100644 --- a/packages/font-glyphs/src/marks/above.ptl +++ b/packages/font-glyphs/src/marks/above.ptl @@ -1290,6 +1290,8 @@ glyph-block Mark-Above : begin derive-composites 'graveAbove/viCenter' null 'graveAbove' [VNSecondaryMark 0.875 0 1.75 0.5] derive-composites 'hookAbove/viCenter' null 'hookAbove' [VNSecondaryMark 0.875 0 1.75 0.5] + # Combining brackets + create-glyph 'leftParenAbove' 0x1AC1 : glyph-proc set-width 0 set-mark-anchor 'aboveBraceL' markMiddle aboveMarkMid (markMiddle - markExtend) aboveMarkMid @@ -1382,3 +1384,11 @@ glyph-block Mark-Above : begin include : refer-glyph 'rightBrackAbove' # No need to setup anchors -- ccmp will help us + create-glyph 'armn/abbreviationMark' 0x55F : glyph-proc + set-width 0 + include : StdAnchors.wide + + local leftEnd : markMiddle - markExtend * 1.5 + local rightEnd : markMiddle + markExtend * 1.5 + include : VBar.m leftEnd aboveMarkBot aboveMarkTop (markFine * 2) + include : HBar.b leftEnd rightEnd aboveMarkBot (markFine * 2) diff --git a/packages/font-glyphs/src/meta/aesthetics.ptl b/packages/font-glyphs/src/meta/aesthetics.ptl index 1328545aa8..71e2e40ab7 100644 --- a/packages/font-glyphs/src/meta/aesthetics.ptl +++ b/packages/font-glyphs/src/meta/aesthetics.ptl @@ -32,6 +32,8 @@ export : define [calculateMetrics para] : begin define PictBot : SymbolMid - para.pictSize * (Width - SB * 2) define BgOpTop : SymbolMid + para.bgopSize * (Width - SB * 2) define BgOpBot : SymbolMid - para.bgopSize * (Width - SB * 2) + define BgTkTop : SymbolMid + para.bgtkSize * (Width - SB * 2) + define BgTkBot : SymbolMid - para.bgtkSize * (Width - SB * 2) define Contrast : fallback para.contrast 1 @@ -75,8 +77,8 @@ export : define [calculateMetrics para] : begin # Weight Control # We will estimate blackness using lower-case 'e' - define DarknessMockWidth : if (Width < HalfUPM) (HalfUPM * [Math.pow (Width / HalfUPM) 0.5]) Width - define DarknessMockWidth2 : HalfUPM * [Math.pow (Width / HalfUPM) 0.5] + define DarknessMockWidth : if (Width < HalfUPM) (HalfUPM * [Math.sqrt : Width / HalfUPM]) Width + define DarknessMockWidth2 : HalfUPM * [Math.sqrt : Width / HalfUPM] define [BaseFillRate con] : 1 / 2 + para.stroke / ([Math.max HalfUPM DarknessMockWidth2] - SB * 2) define [InverseCrowdedness con cow] : [Math.tanh (cow * [Math.sqrt con])] / (cow * [Math.sqrt con]) define [advicestrokeImpl con cow div mul] : begin @@ -188,12 +190,12 @@ export : define [calculateMetrics para] : begin return [object DesignParameters UPM HalfUPM Width SB CAP XH Ascender Descender Contrast SymbolMid ParenTop ParenBot OperTop OperBot TackTop TackBot PlusTop PlusBot PictTop PictBot BgOpTop - BgOpBot Italify Upright Scale Translate ApparentTranslate Rotate GlobalTransform TanSlope - HVContrast Upward Downward Rightward Leftward O OX OXHook Hook AHook SHook RHook JHook - HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize PeriodSize HBarPos OverlayPos - LongJut Jut VJut VJutStroke AccentStackOffset AccentWidth AccentClearance AccentHeight - CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 RBalance - RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 + BgOpBot BgTkTop BgTkBot Italify Upright Scale Translate ApparentTranslate Rotate + GlobalTransform TanSlope HVContrast Upward Downward Rightward Leftward O OX OXHook Hook + AHook SHook RHook JHook HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize PeriodSize + HBarPos OverlayPos LongJut Jut VJut VJutStroke AccentStackOffset AccentWidth AccentClearance + AccentHeight CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 + RBalance RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 EssUpper EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius SideJut ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS compositeBaseAnchors AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke diff --git a/packages/font-glyphs/src/meta/macros.ptl b/packages/font-glyphs/src/meta/macros.ptl index 7a6dbca013..efca735080 100644 --- a/packages/font-glyphs/src/meta/macros.ptl +++ b/packages/font-glyphs/src/meta/macros.ptl @@ -201,7 +201,7 @@ define-macro glyph-block-import : syntax-rules CommonShapes `[no-shape tagged Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt Circle Ellipse OShapeT OShape OShapeOutline OShapeFlatTB HSerif VSerif NeedSlab NeedNotItalic HBar HOverlayBar VBar FlatSlashShape hookstart hookend - arch Ungizmo Regizmo FlipAround ScaleAround Realign ForceUpright DiagCor NameUni + flatside arch Ungizmo Regizmo FlipAround ScaleAround Realign ForceUpright DiagCor NameUni PointingTo with-transform with-outlined remove-holes radicalize clear-geometry clear-anchors ExtLineCenter ExtLineLhs ExtLineRhs DiagCorDs HCrossBar MaskAbove MaskBelow MaskLeft MaskRight HalfRectTriangle MaskAboveLine MaskBelowLine @@ -270,19 +270,19 @@ define-macro glyph-block : syntax-rules define metricImports `[DesignParameters UPM HalfUPM Width SB CAP XH Ascender Descender Contrast SymbolMid ParenTop ParenBot OperTop OperBot TackTop TackBot PlusTop PlusBot - PictTop PictBot BgOpTop BgOpBot Italify Upright Scale Translate ApparentTranslate Rotate - GlobalTransform TanSlope HVContrast Upward Downward Rightward Leftward O OX OXHook Hook - AHook SHook RHook JHook HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize - PeriodSize HBarPos OverlayPos LongJut Jut VJut VJutStroke AccentStackOffset AccentWidth - AccentClearance AccentHeight CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 - TBalance TBalance2 RBalance RBalance2 FBalance OneBalance WideWidth0 WideWidth1 - WideWidth2 WideWidth3 WideWidth4 EssUpper EssLower EssQuestion HalfStroke RightSB - Middle DotRadius PeriodRadius SideJut ArchDepthA ArchDepthB SmallArchDepthA - SmallArchDepthB CorrectionOMidX CorrectionOMidS AdviceStroke AdviceStroke2 - OverlayStroke OperatorStroke GeometryStroke ShoulderFine AdviceGlottalStopArchDepth - StrokeWidthBlend ArchDepthAOf ArchDepthBOf SmoothAdjust MidJutSide MidJutCenter - compositeBaseAnchors YSmoothMidR YSmoothMidL HSwToV NarrowUnicodeT WideUnicodeT - VERY-FAR TINY] + PictTop PictBot BgOpTop BgOpBot BgTkTop BgTkBot Italify Upright Scale Translate + ApparentTranslate Rotate GlobalTransform TanSlope HVContrast Upward Downward Rightward + Leftward O OX OXHook Hook AHook SHook RHook JHook HookX TailX TailY ArchDepth + SmallArchDepth Stroke DotSize PeriodSize HBarPos OverlayPos LongJut Jut VJut + VJutStroke AccentStackOffset AccentWidth AccentClearance AccentHeight CThin CThinB + SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 RBalance RBalance2 + FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 EssUpper + EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius SideJut + ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS + AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke ShoulderFine + AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf SmoothAdjust + MidJutSide MidJutCenter compositeBaseAnchors YSmoothMidR YSmoothMidL HSwToV + NarrowUnicodeT WideUnicodeT VERY-FAR TINY] define spiroFnImports `[g4 g2 corner flat curl virt close end straight g2c cg2 flatc ccurl widths disable-contrast heading unimportant important alsoThru alsoThruThem bezControls quadControls archv arcvh dispiro spiro-outline spiro-collect] diff --git a/packages/font-glyphs/src/meta/unicode-knowledge.ptl b/packages/font-glyphs/src/meta/unicode-knowledge.ptl index 80436c0cab..fae75c06f0 100644 --- a/packages/font-glyphs/src/meta/unicode-knowledge.ptl +++ b/packages/font-glyphs/src/meta/unicode-knowledge.ptl @@ -221,6 +221,11 @@ export : define decompOverrides : object 0x1DF0C { 'eshCurlyTail' 'dblBarOver' } 0x1DF1A { 'iRetroflexHook' 'barOver' } + # Aliasing of Armenian marks + 0x559 { 'modifierLetterLeftHalfRing' } + 0x55A { 'modifierLetterRightHalfRing' } + 0x55B { 'prime' } + 0x55D { 'revprime' } # List of canonical and non-canonical combinations but applicable for ccmp feature export : define ccmpCombinations : list diff --git a/packages/font-glyphs/src/symbol/arrow.ptl b/packages/font-glyphs/src/symbol/arrow.ptl index fe9f088842..de66db8620 100644 --- a/packages/font-glyphs/src/symbol/arrow.ptl +++ b/packages/font-glyphs/src/symbol/arrow.ptl @@ -9,7 +9,7 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1 glyph-block-import Common-Derivatives glyph-block-import Symbol-Geometric-Shared : GeometricDim UnicodeWeightGrade GeometricSizes - define arrowHeight : para.arrowHeight * (Width - SB / 2) * [Math.pow MosaicWidthScalar (1 / 3)] + define arrowHeight : para.arrowHeight * (Width - SB / 2) * [Math.cbrt MosaicWidthScalar] define arrowWidth : Math.min (MosaicWidth - SB / 2) arrowHeight define arrowTop : SymbolMid + arrowHeight / 2 define arrowBot : SymbolMid - arrowHeight / 2 @@ -18,7 +18,7 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1 define arrowRSB : MosaicWidth - arrowSB define o : O * 2 - define arrowHeadSize : (Width - SB) * DesignParameters.arrow_size * [Math.pow (arrowWidth / Width) 0.5] - [AdviceStroke 5] / 4 + define arrowHeadSize : (Width - SB) * DesignParameters.arrow_size * [Math.sqrt : arrowWidth / Width] - [AdviceStroke 5] / 4 define arrowSw OperatorStroke define halfArrowSw : arrowSw / 2 define bendArrowHeadSize : mix arrowSw arrowHeadSize 0.75 @@ -1492,4 +1492,4 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1 include : FlipAround arrowMidX SymbolMid if (MosaicWidthScalar == 1) : begin - glyph-block-export ArrowShape + glyph-block-export ArrowShape ArrowHead ArrowBar diff --git a/packages/font-glyphs/src/symbol/geometric/plain.ptl b/packages/font-glyphs/src/symbol/geometric/plain.ptl index 5a570a20bc..13ebac3500 100644 --- a/packages/font-glyphs/src/symbol/geometric/plain.ptl +++ b/packages/font-glyphs/src/symbol/geometric/plain.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix linreg clamp fallback] from "@iosevka/util" +import [mix linreg clamp fallback strokeOffset] from "@iosevka/util" import [DesignParameters] from "../../meta/aesthetics.mjs" glyph-module @@ -612,7 +612,7 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1 StdWhiteShape RightArrowHeadShape 'whiteArrowHeadRight' null {.sw ([Math.min GeometryStroke : AdviceStroke 4.75 : Math.sqrt Geom.Scalar] * [Math.sqrt 5])} do "Other Polygon" - glyph-block-import Shared-Symbol-Shapes : TriangleShape + glyph-block-import Shared-Symbol-Shapes : TriangleShape HZigzag define fineGeometryStroke : AdviceStroke2 4 4 (Geom.Size * 2) @@ -636,3 +636,25 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1 create-glyph [MangleName 'slope'] [MangleUnicode 0x2333] : glyph-proc set-width Geom.Width include : TriangleShape Geom.Left Geom.Bot Geom.Left Geom.MidY Geom.Right Geom.Bot fineGeometryStroke + + create-glyph [MangleName 'horiZigzag'] [MangleUnicode 0x1CEB0] : glyph-proc + set-width Geom.Width + define left : SB * MosaicWidthScalar + define right : RightSB * MosaicWidthScalar + define amp : (OperTop - OperBot) / 8 + define sgmts : 4 * MosaicWidthScalar + 1 + + define dx : (right - left) / sgmts + define rhs : strokeOffset left (Geom.MidY - amp) dx (2 * amp) (GeometryStroke / 2) HVContrast + define bot : linreg rhs.x rhs.y (rhs.x + dx) (rhs.y + 2 * amp) left + define top : Geom.MidY * 2 - bot + include : union + HZigzag Geom.MidY left right amp sgmts 1 GeometryStroke + dispiro + widths.lhs GeometryStroke + flat left bot + curl (left + dx) (bot + 2 * amp) + dispiro + widths.lhs GeometryStroke + flat right top + curl (right - dx) (top - 2 * amp) diff --git a/packages/font-glyphs/src/symbol/geometric/stars.ptl b/packages/font-glyphs/src/symbol/geometric/stars.ptl index 1cbe9d5527..19626a408e 100644 --- a/packages/font-glyphs/src/symbol/geometric/stars.ptl +++ b/packages/font-glyphs/src/symbol/geometric/stars.ptl @@ -172,3 +172,22 @@ glyph-block Symbol-Geometric-Stars : for-width-kinds WideWidth1 size -- (0.625 * Geom.Size + swInner) include : ApparentTranslate Geom.MidX Geom.MidY + +glyph-block Symbol-Other-Stars : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + + define [EternitySymbol sign] : glyph-proc + define sw : AdviceStroke 6.5 + define radius : (RightSB - Middle) / 2 + + foreach [j : range 0 8] : do + local angle : sign * j * Math.PI / 4 + local angle2 : sign * (j + 1) * Math.PI / 4 + include : difference + Circle.Outline.At (Middle + radius * [Math.cos angle ]) (SymbolMid + radius * [Math.sin angle ]) radius sw + Circle.Outline.At (Middle + radius * [Math.cos angle ]) (SymbolMid + radius * [Math.sin angle ]) (radius - sw) sw + Circle.Outline.At (Middle + radius * [Math.cos angle2]) (SymbolMid + radius * [Math.sin angle2]) radius sw + + create-glyph 'armn/eternitySignLeft' 0x58E : EternitySymbol 1 + create-glyph 'armn/eternitySignRight' 0x58D : EternitySymbol (-1) diff --git a/packages/font-glyphs/src/symbol/math/apl.ptl b/packages/font-glyphs/src/symbol/math/apl.ptl index 02b1156075..ef82200c5f 100644 --- a/packages/font-glyphs/src/symbol/math/apl.ptl +++ b/packages/font-glyphs/src/symbol/math/apl.ptl @@ -70,9 +70,9 @@ glyph-block Symbol-Math-APL : begin create-glyph 'apl/iBar' 0x2336 : glyph-proc local l [mix 0 SB (1 / 3)] local r [mix Width RightSB (1 / 3)] - include : HBar.t l r OperTop OperatorStroke - include : HBar.b l r OperBot OperatorStroke - include : VBar.m Middle OperTop OperBot OperatorStroke + include : HBar.t l r TackTop OperatorStroke + include : HBar.b l r TackBot OperatorStroke + include : VBar.m Middle TackTop TackBot OperatorStroke create-glyph 'apl/squish' 0x2337 : glyph-proc local l : mix SB RightSB (1 / 8) @@ -110,8 +110,8 @@ glyph-block Symbol-Math-APL : begin create-glyph 'apl/minus' : glyph-proc include : dispiro widths.center aplBoxSW - flat RightSB [mix OperTop OperBot 0.5] - curl SB [mix OperTop OperBot 0.5] + flat RightSB SymbolMid + curl SB SymbolMid create-glyph 'apl/backSlash' : glyph-proc include : dispiro diff --git a/packages/font-glyphs/src/symbol/math/circled.ptl b/packages/font-glyphs/src/symbol/math/circled.ptl index d87c5a6f84..04bf323491 100644 --- a/packages/font-glyphs/src/symbol/math/circled.ptl +++ b/packages/font-glyphs/src/symbol/math/circled.ptl @@ -8,6 +8,7 @@ glyph-block Symbol-Math-Circled : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives glyph-block-import Symbol-Math-Frame : MathEnclosureSw + glyph-block-import Symbol-Arrow : ArrowHead ArrowBar define [MakeMathCircled u inner] : begin derive-glyphs "mathCircled{\(inner)}" u inner : function [src gr] @@ -93,3 +94,9 @@ glyph-block Symbol-Math-Circled : begin union VBar.m Middle PlusTop (SymbolMid - eqD) eqS HBar.m (SB + eqS) (RightSB - eqS) (SymbolMid - eqD) eqS + + local arrowTop : mix SymbolMid BgOpTop 1.1 + local arrowBot : mix SymbolMid BgOpBot 1.1 + create-glyph 0x29BD : composite-proc [refer-glyph 'mathO'] : union + ArrowHead Middle arrowBot Middle arrowTop ((RightSB - SB) / 2) + ArrowBar Middle arrowBot Middle arrowTop (MathEnclosureSw / 2) diff --git a/packages/font-glyphs/src/symbol/math/geometry.ptl b/packages/font-glyphs/src/symbol/math/geometry.ptl index 5b1e10607f..2117937a5b 100644 --- a/packages/font-glyphs/src/symbol/math/geometry.ptl +++ b/packages/font-glyphs/src/symbol/math/geometry.ptl @@ -163,7 +163,7 @@ glyph-block Symbol-Math-Geometry : begin straight.right.end right top do 'Zigzags' - create-glyph 'zigzag' 0x299A : VZigzag Middle ParenBot ParenTop (radiusBox / 4) 9 0 GeometryStroke + create-glyph 'vertZigzag' 0x299A : VZigzag Middle ParenBot ParenTop (radiusBox / 4) 9 0 GeometryStroke create-glyph 'wigglyFenceLeft' 0x29D8 : VZigzag Middle ParenBot ParenTop (radiusBox / 4) 10 1 GeometryStroke create-glyph 'wigglyFenceRight' 0x29D9 : VZigzag Middle ParenBot ParenTop (radiusBox / 4) 10 0 GeometryStroke diff --git a/packages/font-glyphs/src/symbol/math/large-operators.ptl b/packages/font-glyphs/src/symbol/math/large-operators.ptl index dc7a417765..3acdfa43f7 100644 --- a/packages/font-glyphs/src/symbol/math/large-operators.ptl +++ b/packages/font-glyphs/src/symbol/math/large-operators.ptl @@ -72,11 +72,25 @@ glyph-block Symbol-Math-Large-Operators : for-width-kinds WideWidth1 create-glyph [MangleName 'Top'] [MangleUnicode 0x27D9] : glyph-proc set-width df.width - include : HBar.t df.leftSB df.rightSB BgOpTop OperatorStroke - include : VBar.m df.middle BgOpTop BgOpBot OperatorStroke + include : HBar.t df.leftSB df.rightSB BgTkTop OperatorStroke + include : VBar.m df.middle BgTkTop BgTkBot OperatorStroke turned [MangleName 'Bot'] [MangleUnicode 0x27D8] [MangleName 'Top'] df.middle SymbolMid + # These operators are always wide. In force-monospace variants they will be deleted + if (MosaicWidthScalar > 1 && !para.forceMonospace) : do + define kLongTackSB : [DivFrame MosaicWidthScalar 4].leftSB / [DivFrame MosaicWidthScalar 2].leftSB + + define l : mix 0 SB kLongTackSB + define r : MosaicWidth - l + + create-glyph 'longVDash' 0x27DD : glyph-proc + set-width MosaicWidth + include : HBar.m l r SymbolMid OperatorStroke + include : VBar.l l TackTop TackBot OperatorStroke + + turned 'longDashV' 0x27DE 'longVDash' (MosaicWidth / 2) SymbolMid + create-glyph [MangleName 'SquareCap'] [MangleUnicode 0x2A05] : glyph-proc set-width df.width include : PiShape df BgOpTop BgOpBot (shrinkRate -- 0) (fine -- OperatorStroke) (doSerif -- false) diff --git a/packages/font-glyphs/src/symbol/math/logicals.ptl b/packages/font-glyphs/src/symbol/math/logicals.ptl index 3bbd9abdb8..be1a240262 100644 --- a/packages/font-glyphs/src/symbol/math/logicals.ptl +++ b/packages/font-glyphs/src/symbol/math/logicals.ptl @@ -115,6 +115,32 @@ glyph-block Symbol-Math-Logicals : begin include : HBar.b SB RightSB 0 OperatorStroke include : VBar.m Middle (SymbolMid * 2) 0 OperatorStroke + create-glyph 'turnedTautologyTautology' 0x27DA : glyph-proc + local df : include : DivFrame para.diversityM 4 + local vs : df.mvs * OperatorStroke / Stroke + local innerSB : Math.min (SB * [Math.min (df.div / 1.5) 1]) df.leftSB + local l : Math.max (df.middle - innerSB - vs / 2) : mix df.middle df.leftSB (1 / 3) + local r : Math.min (df.middle + innerSB + vs / 2) : mix df.middle df.rightSB (1 / 3) + local t : mix SymbolMid top (1 / 3) + local b : mix SymbolMid bot (1 / 3) + include : VBar.m l top bot vs + include : VBar.m r top bot vs + include : HBar.m df.leftSB l t OperatorStroke + include : HBar.m df.leftSB l b OperatorStroke + include : HBar.m r df.rightSB t OperatorStroke + include : HBar.m r df.rightSB b OperatorStroke + + create-glyph 'dashvvdash' 0x27DB : glyph-proc + local df : include : DivFrame para.diversityM 4 + local vs : df.mvs * OperatorStroke / Stroke + local innerSB : Math.min (SB * [Math.min (df.div / 1.5) 1]) df.leftSB + local l : Math.max (df.middle - innerSB - vs / 2) : mix df.middle df.leftSB (1 / 3) + local r : Math.min (df.middle + innerSB + vs / 2) : mix df.middle df.rightSB (1 / 3) + include : VBar.m l top bot vs + include : VBar.m r top bot vs + include : HBar.m df.leftSB l SymbolMid OperatorStroke + include : HBar.m r df.rightSB SymbolMid OperatorStroke + create-glyph 'gleichStark' 0x29E6 : glyph-proc local l : mix Middle SB 1 local r : mix Middle RightSB 1 @@ -195,7 +221,7 @@ glyph-block Symbol-Math-Logicals : begin create-glyph 'barRingAbove' 0x2AEF : glyph-proc local sw : AdviceStroke 4 local radius : (RightSB - SB) / 6 - include : VBar.m Middle (top - radius - sw / 2 ) bot OperatorStroke + include : VBar.m Middle (top - radius - sw / 2) bot OperatorStroke include : difference DotAt Middle top (radius + sw) DotAt Middle top radius @@ -209,4 +235,4 @@ glyph-block Symbol-Math-Logicals : begin create-glyph 'interleave' 0x2AF4 : TripleBarShape Middle top bot OperatorStroke - create-glyph 'bigInterleave' 0x2AFC : TripleBarShape Middle ParenTop ParenBot OperatorStroke + create-glyph 'bigInterleave' 0x2AFC : TripleBarShape Middle BgTkTop BgTkBot OperatorStroke diff --git a/packages/font-glyphs/src/symbol/mosaic/split-graphic.ptl b/packages/font-glyphs/src/symbol/mosaic/split-graphic.ptl index 382301d7d1..92fe288610 100644 --- a/packages/font-glyphs/src/symbol/mosaic/split-graphic.ptl +++ b/packages/font-glyphs/src/symbol/mosaic/split-graphic.ptl @@ -1,6 +1,7 @@ $$include '../../meta/macros.ptl' import [mix linreg clamp fallback] from "@iosevka/util" +import [Transform] from "@iosevka/geometry/transform" import [Box] from "@iosevka/geometry/box" glyph-module @@ -8,7 +9,7 @@ glyph-module glyph-block Symbol-Mosaic-Split-Graphic : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Symbol-Pictograph-Stick-Figure : StickFigureKit PointingHandShape + glyph-block-import Symbol-Pictograph-Stick-Figure : StickFigureKit glyph-block-import Symbol-Pictograph-Keyboard : KeyGen define boxDrawingStroke : AdviceStroke 3.5 @@ -33,18 +34,24 @@ glyph-block Symbol-Mosaic-Split-Graphic : begin return : new Box t2 b l r2 - export : define [Split t b l r vspan hspan vidx hidx fUpright shapeFunc] : begin + export : define [Split t b l r vspan hspan shapeFunc mappings] : glyph-proc local box : NBox t b l r vspan hspan + local shape : shapeFunc box.top box.bottom box.left box.right + local gizmo currentGlyph.gizmo - return : intersection + foreach { vidx hidx name code } [items-of mappings] : create-forked-glyph name code : glyph-proc + set currentGlyph.gizmo gizmo + include : intersection + Mask + composite-proc shape : Translate (-hidx * MosaicWidth) (-vidx * MosaicHeight) + + export : define [Select t b l r vspan hspan shapeFunc vidx hidx] : glyph-proc + local box : NBox t b l r vspan hspan + local shape : shapeFunc box.top box.bottom box.left box.right + + include : intersection Mask - with-transform - Translate (-hidx * MosaicWidth) (-vidx * MosaicHeight) - if fUpright - composite-proc - ForceUpright - shapeFunc box.top box.bottom box.left box.right - shapeFunc box.top box.bottom box.left box.right + composite-proc shape : Translate (-hidx * MosaicWidth) (-vidx * MosaicHeight) for-width-kinds WideWidth4 define right MosaicWidth @@ -64,28 +71,28 @@ glyph-block Symbol-Mosaic-Split-Graphic : begin archv.superness 2 close - define [BuildSplitCircle name unicode vspan hspan vidx hidx] : begin - create-glyph [MangleName name] [MangleUnicode unicode] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right vspan hspan vidx hidx 1 CircleTouchingBox - - BuildSplitCircle "twelfthCircleLT" 0x1CC30 4 4 3 0 - BuildSplitCircle "twelfthCircleCLT" 0x1CC31 4 4 3 1 - BuildSplitCircle "twelfthCircleCRT" 0x1CC32 4 4 3 2 - BuildSplitCircle "twelfthCircleRT" 0x1CC33 4 4 3 3 - BuildSplitCircle "twelfthCircleLMT" 0x1CC34 4 4 2 0 - BuildSplitCircle "quarterCircleLT" 0x1CC35 2 2 1 0 - BuildSplitCircle "quarterCircleRT" 0x1CC36 2 2 1 1 - BuildSplitCircle "twelfthCircleRMT" 0x1CC37 4 4 2 3 - BuildSplitCircle "twelfthCircleLMB" 0x1CC38 4 4 1 0 - BuildSplitCircle "quarterCircleLB" 0x1CC39 2 2 0 0 - BuildSplitCircle "quarterCircleRB" 0x1CC3A 2 2 0 1 - BuildSplitCircle "twelfthCircleRMB" 0x1CC3B 4 4 1 3 - BuildSplitCircle "twelfthCircleLB" 0x1CC3C 4 4 0 0 - BuildSplitCircle "twelfthCircleCLB" 0x1CC3D 4 4 0 1 - BuildSplitCircle "twelfthCircleCRB" 0x1CC3E 4 4 0 2 - BuildSplitCircle "twelfthCircleRB" 0x1CC3F 4 4 0 3 + create-glyph : glyph-proc + set-width MosaicWidth + include : ForceUpright + include : multicell.Split top bottom left right 2 2 CircleTouchingBox : list + list 1 0 [MangleName 'quarterCircleLT'] [MangleUnicode 0x1CC35] + list 1 1 [MangleName 'quarterCircleRT'] [MangleUnicode 0x1CC36] + list 0 0 [MangleName 'quarterCircleLB'] [MangleUnicode 0x1CC39] + list 0 1 [MangleName 'quarterCircleRB'] [MangleUnicode 0x1CC3A] + + include : multicell.Split top bottom left right 4 4 CircleTouchingBox : list + list 3 0 [MangleName 'twelfthCircleLT' ] [MangleUnicode 0x1CC30] + list 3 1 [MangleName 'twelfthCircleCLT'] [MangleUnicode 0x1CC31] + list 3 2 [MangleName 'twelfthCircleCRT'] [MangleUnicode 0x1CC32] + list 3 3 [MangleName 'twelfthCircleRT' ] [MangleUnicode 0x1CC33] + list 2 0 [MangleName 'twelfthCircleLMT'] [MangleUnicode 0x1CC34] + list 2 3 [MangleName 'twelfthCircleRMT'] [MangleUnicode 0x1CC37] + list 1 0 [MangleName 'twelfthCircleLMB'] [MangleUnicode 0x1CC38] + list 1 3 [MangleName 'twelfthCircleRMB'] [MangleUnicode 0x1CC3B] + list 0 0 [MangleName 'twelfthCircleLB' ] [MangleUnicode 0x1CC3C] + list 0 1 [MangleName 'twelfthCircleCLB'] [MangleUnicode 0x1CC3D] + list 0 2 [MangleName 'twelfthCircleCRB'] [MangleUnicode 0x1CC3E] + list 0 3 [MangleName 'twelfthCircleRB' ] [MangleUnicode 0x1CC3F] do "Television" define scaffold : object @@ -141,22 +148,14 @@ glyph-block Symbol-Mosaic-Split-Graphic : begin include : DotAt dotX (top - graphicSw - scaffold.dotYOffset * 3) scaffold.dotSize include : Screen (top - scaffold.screenInset) (tvBot + scaffold.screenInset) (left + scaffold.screenInset) (dotX - scaffold.dotXOffset) - create-glyph [MangleName 'televisionLT'] [MangleUnicode 0x1CCB2] : glyph-proc + create-glyph : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 0 1 Television - create-glyph [MangleName 'televisionRT'] [MangleUnicode 0x1CCB3] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 1 1 Television - create-glyph [MangleName 'televisionLB'] [MangleUnicode 0x1CCB4] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 Television - create-glyph [MangleName 'televisionRB'] [MangleUnicode 0x1CCB5] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 Television + include : multicell.Split top bottom left right 2 2 Television : list + list 1 0 [MangleName 'televisionLT'] [MangleUnicode 0x1CCB2] + list 1 1 [MangleName 'televisionRT'] [MangleUnicode 0x1CCB3] + list 0 0 [MangleName 'televisionLB'] [MangleUnicode 0x1CCB4] + list 0 1 [MangleName 'televisionRB'] [MangleUnicode 0x1CCB5] do "Microcomputer" define scaffold : object @@ -187,7 +186,7 @@ glyph-block Symbol-Mosaic-Split-Graphic : begin # ** ** ** ** ** ** **** # *** ** ** ** ** ** *** # **** ** ** ** ** ****** - # **************** + # **************** include : KeyGen (kbdTop - graphicSw - scaffold.keyInset) (bot + graphicSw + scaffold.keyInset) keyLeft keyRight 28 4 graphicSw : list list 3 0 2 list 3 4 6 @@ -211,21 +210,115 @@ glyph-block Symbol-Mosaic-Split-Graphic : begin list 1 22 28 list 0 6 22 - create-glyph [MangleName 'microcomputerLT'] [MangleUnicode 0x1CCB6] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 0 1 Microcomputer - create-glyph [MangleName 'microcomputerRT'] [MangleUnicode 0x1CCB7] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 1 1 Microcomputer - create-glyph [MangleName 'microcomputerLB'] [MangleUnicode 0x1CCB8] : glyph-proc + create-glyph : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 Microcomputer - create-glyph [MangleName 'microcomputerRB'] [MangleUnicode 0x1CCB9] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 Microcomputer + include : multicell.Split top bottom left right 2 2 Microcomputer : list + list 1 0 [MangleName 'microcomputerLT'] [MangleUnicode 0x1CCB6] + list 1 1 [MangleName 'microcomputerRT'] [MangleUnicode 0x1CCB7] + list 0 0 [MangleName 'microcomputerLB'] [MangleUnicode 0x1CCB8] + list 0 1 [MangleName 'microcomputerRB'] [MangleUnicode 0x1CCB9] + + do "Knight" + define [StandingKnight top bot left right] : glyph-proc + local box : new Box top bot left right + + local sw1 : graphicSw * MosaicWidthScalar + local sw2 : graphicSw * 2 * [Math.sqrt MosaicWidthScalar] + local kit1 : StickFigureKit box [Transform.Id] sw1 + local kit2 : StickFigureKit box [Translate (sw2 - sw1) 0] sw2 + local kit3 : StickFigureKit box [Translate (sw1 / 2) 0] sw1 + # Flag + local flagMidX : [box.mixX : 13 / 16] + (sw2 - sw1) + include : union + kit1.RoundSeg 1 0 1 1 0 0 (-1) + intersection [MaskRight flagMidX] + kit2.RoundSeg (16 / 16) 1 (13 / 16) (13 / 16) 0 0 1 + intersection [MaskLeft flagMidX] + kit2.RoundSeg (13 / 16) (13 / 16) (10 / 16) 1 0 0 1 + # Head + local HelmetX1 : box.mixX (6 / 16) + local HelmetMask : union + kit1.Arc 0.75 0.5 (6 / 16) (14 / 16) 0.75 (10 / 16) 0 0 1 1 + MaskLeft HelmetX1 + include : union + difference + union + kit1.RoundSeg ( 4 / 16) (25 / 32) ( 6 / 16) (14 / 16) 0 0 1 + kit1.Arc ( 6 / 16) (14 / 16) (10 / 16) (14 / 16) ( 8 / 16) (31 / 32) 0 0 1 + kit1.RoundSeg (10 / 16) (14 / 16) (12 / 16) (25 / 32) 0 0 1 + kit1.Arc (12 / 16) (25 / 32) (13 / 16) (11 / 16) (13 / 16) (47 / 64) 0 0 1 + kit1.ArcVH (13 / 16) (11 / 16) (11 / 16) ( 8 / 16) 0 0 1 + * HelmetMask + intersection + union + kit1.Arc ( 2 / 16) (5 / 8) ( 6 / 16) (14 / 16) ( 2 / 16) (6 / 8) 0 0 1 1 + MaskRight HelmetX1 + kit1.Arc 0.75 0.5 (6 / 16) (14 / 16) 0.75 (10 / 16) 0 0 (-1) + intersection + * HelmetMask + union + kit1.RoundSeg 0.75 0.5 0.25 0.5 0 0 1 + kit1.ArcHV ( 4 / 16) 0.5 ( 2 / 16) (5 / 8) 0 0 1 + kit1.ArcHV ( 6 / 16) 0.5 ( 4 / 16) (5 / 8) 0 0 1 + kit1.ArcHV ( 8 / 16) 0.5 ( 6 / 16) (5 / 8) 0 0 1 + kit1.ArcHV (10 / 16) 0.5 ( 8 / 16) (5 / 8) 0 0 1 + kit1.ArcHV (12 / 16) 0.5 (10 / 16) (5 / 8) 0 0 1 + kit1.Arc ( 2 / 16) (5 / 8) ( 6 / 16) (14 / 16) ( 2 / 16) (6 / 8) 0 0 1 + kit1.Arc ( 4 / 16) (5 / 8) ( 8 / 16) (14 / 16) ( 4 / 16) (6 / 8) 0 0 1 + kit1.Arc ( 6 / 16) (5 / 8) (10 / 16) (14 / 16) ( 6 / 16) (6 / 8) 0 0 1 + kit1.Arc ( 8 / 16) (5 / 8) (12 / 16) (14 / 16) ( 8 / 16) (6 / 8) 0 0 1 + kit1.Arc (10 / 16) (5 / 8) (14 / 16) (14 / 16) (10 / 16) (6 / 8) 0 0 1 + + # Body + include : union + difference + union + kit1.ArcVH (12 / 16) ( 8 / 16) ( 7 / 16) ( 4 / 16) 0 0 1 + kit1.ArcHV ( 7 / 16) ( 4 / 16) ( 3 / 16) ( 6 / 16) 0 0 1 + kit1.Arc ( 3 / 16) ( 6 / 16) ( 4 / 16) ( 8 / 16) ( 3 / 16) ( 7 / 16) 0 0 1 + kit1.ArcHV ( 7 / 16) ( 6 / 16) ( 4 / 16) ( 8 / 16) 0 0 1 1 + intersection [MaskBelow : box.mixY 0.5] + kit1.Arc (12 / 16) ( 8 / 16) ( 7 / 16) ( 6 / 16) ( 9 / 16) ( 6 / 16) 0 0 1 + kit1.ArcHV ( 7 / 16) ( 6 / 16) ( 4 / 16) ( 8 / 16) 0 0 1 + + # Limbs + include : difference + union + # Left Arm + kit1.RoundSeg 1 0.5 (5 / 8) 0.5 0 0 (-1) + kit1.RoundSeg 1 0.5 (5 / 8) 0.5 0 0 (-3) + kit1.RoundSeg 1 0.5 1 [Math.min (17 / 32) : 8 / 16 + 2 * sw1 / (top - bot)] 0 1 (-3) + # Right Arm + kit3.RoundSeg (0 / 16) (7 / 16) (4 / 16) ( 7 / 16) 1 0 1 + kit3.RoundSeg (0 / 16) (7 / 16) (4 / 16) ( 7 / 16) 1 0 3 + kit3.RoundSeg (1 / 32) (7 / 16) (1 / 32) [Math.min (15 / 32) : 7 / 16 + 2 * sw1 / (top - bot)] 0 1 1 + # Leg + kit1.RoundSeg (8 / 16) 0 (8 / 16) (5 / 16) 0 0 1 + kit1.RoundSeg (7 / 16) 0 (7 / 16) (5 / 16) 0 0 (-1) + union + kit1.ArcVH (12 / 16) ( 8 / 16) ( 7 / 16) ( 4 / 16) 0 0 1 1 + kit1.ArcHV ( 7 / 16) ( 4 / 16) ( 3 / 16) ( 6 / 16) 0 0 1 1 + kit1.Arc ( 3 / 16) ( 6 / 16) ( 4 / 16) ( 8 / 16) ( 3 / 16) (7 / 16) 0 0 1 1 + kit1.Box ( 4 / 16) ( 6 / 16) ( 8 / 16) ( 8 / 16) + + # Feet + include : difference + spiro-outline + corner left bot + g4 [box.mixX : 1 / 4] (bot + sw2) + g4 [box.mixX : 2 / 4] (bot + 0.99 * sw2) + g4 [box.mixX : 3 / 4] (bot + sw2) + corner [box.mixX : 7 / 8] bot + intersection [MaskRight : box.mixX : 7 / 16] [MaskLeft : box.mixX : 1 / 2] + + create-glyph : glyph-proc + set-width MosaicWidth + include : ForceUpright + include : multicell.Split top bottom left right 2 2 StandingKnight : list + list 1 0 [MangleName 'standingknightLT'] [MangleUnicode 0x1CCD2] + list 1 1 [MangleName 'standingknightRT'] [MangleUnicode 0x1CCD3] + list 0 0 [MangleName 'standingknightLB'] [MangleUnicode 0x1CCD4] + list 0 1 [MangleName 'standingknightRB'] [MangleUnicode 0x1CCD5] diff --git a/packages/font-glyphs/src/symbol/pictograph/faces.ptl b/packages/font-glyphs/src/symbol/pictograph/faces.ptl index 7d1dc03675..65b247fa56 100644 --- a/packages/font-glyphs/src/symbol/pictograph/faces.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/faces.ptl @@ -180,51 +180,25 @@ glyph-block Symbol-Pictograph-Faces : begin bigFace.Nose bigFace.Mouth k - create-glyph [MangleName 'openEyeBigFaceLeft'] [MangleUnicode 0x1CCA6] : glyph-proc + create-glyph : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 0 1 FaceOpenEyes - create-glyph [MangleName 'openEyeBigFaceRight'] [MangleUnicode 0x1CCA7] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 1 1 FaceOpenEyes - create-glyph [MangleName 'closedEyeBigFaceLeft'] [MangleUnicode 0x1CCA8] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 0 1 FaceClosedEyes - create-glyph [MangleName 'closedEyeBigFaceRight'] [MangleUnicode 0x1CCA9] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 1 1 1 FaceClosedEyes - create-glyph [MangleName 'smileBigFaceLeft'] [MangleUnicode 0x1CCAA] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 : FaceClosedMouth 1 - create-glyph [MangleName 'smileBigFaceRight'] [MangleUnicode 0x1CCAB] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 : FaceClosedMouth 1 - create-glyph [MangleName 'neutralBigFaceLeft'] [MangleUnicode 0x1CCAC] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 : FaceClosedMouth 0 - create-glyph [MangleName 'neutralBigFaceRight'] [MangleUnicode 0x1CCAD] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 : FaceClosedMouth 0 - create-glyph [MangleName 'openMouthBigFaceLeft'] [MangleUnicode 0x1CCAE] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 FaceOpenMouth - create-glyph [MangleName 'openMouthBigFaceRight'] [MangleUnicode 0x1CCAF] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 FaceOpenMouth - create-glyph [MangleName 'frownBigFaceLeft'] [MangleUnicode 0x1CCB0] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 0 1 : FaceClosedMouth (-1) - create-glyph [MangleName 'frownBigFaceRight'] [MangleUnicode 0x1CCB1] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 2 2 0 1 1 : FaceClosedMouth (-1) + + include : multicell.Split top bottom left right 2 2 FaceOpenEyes : list + list 1 0 [MangleName 'openEyeBigFaceLeft'] [MangleUnicode 0x1CCA6] + list 1 1 [MangleName 'openEyeBigFaceRight'] [MangleUnicode 0x1CCA7] + include : multicell.Split top bottom left right 2 2 FaceClosedEyes : list + list 1 0 [MangleName 'closedEyeBigFaceLeft'] [MangleUnicode 0x1CCA8] + list 1 1 [MangleName 'closedEyeBigFaceRight'] [MangleUnicode 0x1CCA9] + include : multicell.Split top bottom left right 2 2 [FaceClosedMouth 1] : list + list 0 0 [MangleName 'smileBigFaceLeft'] [MangleUnicode 0x1CCAA] + list 0 1 [MangleName 'smileBigFaceRight'] [MangleUnicode 0x1CCAB] + include : multicell.Split top bottom left right 2 2 [FaceClosedMouth 0] : list + list 0 0 [MangleName 'neutralBigFaceLeft'] [MangleUnicode 0x1CCAC] + list 0 1 [MangleName 'neutralBigFaceRight'] [MangleUnicode 0x1CCAD] + include : multicell.Split top bottom left right 2 2 FaceOpenMouth : list + list 0 0 [MangleName 'openMouthBigFaceLeft'] [MangleUnicode 0x1CCAE] + list 0 1 [MangleName 'openMouthBigFaceRight'] [MangleUnicode 0x1CCAF] + include : multicell.Split top bottom left right 2 2 [FaceClosedMouth : -1] : list + list 0 0 [MangleName 'frownBigFaceLeft'] [MangleUnicode 0x1CCB0] + list 0 1 [MangleName 'frownBigFaceRight'] [MangleUnicode 0x1CCB1] diff --git a/packages/font-glyphs/src/symbol/pictograph/robot-and-human.ptl b/packages/font-glyphs/src/symbol/pictograph/robot-and-human.ptl index 1c9b28340a..bae4ab7545 100644 --- a/packages/font-glyphs/src/symbol/pictograph/robot-and-human.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/robot-and-human.ptl @@ -274,23 +274,23 @@ glyph-block Symbol-Pictograph-Robot-And-Human : begin create-glyph [MangleName 'humanFrontTop'] [MangleUnicode 0x1CDF0] : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 1 1 0 1 : HumanFront 0 + include : multicell.Select top bottom left right 2 1 [HumanFront 0] 1 0 create-glyph [MangleName 'humanFrontBottom1'] [MangleUnicode 0x1CDF1] : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 1 0 0 1 : HumanFront 1 + include : multicell.Select top bottom left right 2 1 [HumanFront 1] 0 0 create-glyph [MangleName 'humanFrontBottom2'] [MangleUnicode 0x1CDF2] : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 1 0 0 1 : HumanFront 2 + include : multicell.Select top bottom left right 2 1 [HumanFront 2] 0 0 create-glyph [MangleName 'humanFrontBottom3'] [MangleUnicode 0x1CDF3] : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 1 0 0 1 : HumanFront 3 + include : multicell.Select top bottom left right 2 1 [HumanFront 3] 0 0 create-glyph [MangleName 'humanFrontBottom4'] [MangleUnicode 0x1CDF4] : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 2 1 0 0 1 : HumanFront 4 + include : multicell.Select top bottom left right 2 1 [HumanFront 4] 0 0 create-glyph [MangleName 'flailRobotBody1'] [MangleUnicode 0x1CDF6] : glyph-proc set-width MosaicWidth include : ForceUpright diff --git a/packages/font-glyphs/src/symbol/pictograph/schematic.ptl b/packages/font-glyphs/src/symbol/pictograph/schematic.ptl index d12c07fc2b..592287c45d 100644 --- a/packages/font-glyphs/src/symbol/pictograph/schematic.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/schematic.ptl @@ -223,18 +223,13 @@ glyph-block Symbol-Pictograph-Schematic : for-width-kinds WideWidth4 : begin g4 [mix right mid2 kX3] [mix yTerm yTop 0.4] straight.right.end right yTerm - create-glyph [MangleName 'inductorLeftThird'] [MangleUnicode 0x1CC0B] : glyph-proc + create-glyph : glyph-proc set-width MosaicWidth include : ForceUpright - include : multicell.Split top bottom left right 1 3 0 0 1 CoilImpl - create-glyph [MangleName 'inductorMiddleThird'] [MangleUnicode 0x1CC0C] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 1 3 0 1 1 CoilImpl - create-glyph [MangleName 'inductorRightThird'] [MangleUnicode 0x1CC0D] : glyph-proc - set-width MosaicWidth - include : ForceUpright - include : multicell.Split top bottom left right 1 3 0 2 1 CoilImpl + include : multicell.Split top bottom left right 1 3 CoilImpl : list + list 0 0 [MangleName 'inductorLeftThird'] [MangleUnicode 0x1CC0B] + list 0 1 [MangleName 'inductorMiddleThird'] [MangleUnicode 0x1CC0C] + list 0 2 [MangleName 'inductorRightThird'] [MangleUnicode 0x1CC0D] do "Diode" define diodeGap : MosaicWidth / 9 diff --git a/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl b/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl index 23af04a35c..db251305ee 100644 --- a/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl @@ -27,24 +27,36 @@ glyph-block Symbol-Pictograph-Stick-Figure : begin glyph-block-export StickFigureKit define [StickFigureKit box tfm sw] : namespace - export : define [RoundSeg h1 v1 h2 v2 cl cr] : glyph-proc + define [StrokeCap z1 zc side] : glyph-proc + local dh1 : zc.x - z1.x + local dv1 : zc.y - z1.y + local mag : Math.hypot dh1 dv1 + include : Circle.Outline.DotAt (z1.x + dv1 * side * sw / mag) (z1.y - dh1 * side * sw / mag) (sw / 2) + + export : define [RoundSeg h1 v1 h2 v2 cl cr _side] : glyph-proc + local side : [fallback _side 0] / 2 + 0.5 + local z1 : tfm.applyXY [mix box.left box.right h1] [mix box.bottom box.top v1] local z2 : tfm.applyXY [mix box.left box.right h2] [mix box.bottom box.top v2] include : dispiro disable-contrast - widths.center sw + widths ((1 - side) * sw) (side * sw) corner z1.x z1.y corner z2.x z2.y - if cl : include : Circle.Outline.DotAt z1.x z1.y (sw / 2) - if cr : include : Circle.Outline.DotAt z2.x z2.y (sw / 2) + if cl : include : StrokeCap z1 z2 (side - 0.5) + if cr : include : StrokeCap z2 z1 (0.5 - side) + + define [ArcImpl mode h1 v1 h2 v2 cl cr _side _fMask] : glyph-proc + local side : [fallback _side 0] / 2 + 0.5 + local fMask : fallback _fMask false - define [ArcImpl mode h1 v1 h2 v2 cl cr] : glyph-proc local z1 : tfm.applyXY [mix box.left box.right h1] [mix box.bottom box.top v1] local z2 : tfm.applyXY [mix box.left box.right h2] [mix box.bottom box.top v2] local zc : tfm.applyXY [mix box.left box.right : if mode h1 h2] [mix box.bottom box.top : if mode v2 v1] + local zr : tfm.applyXY [mix box.left box.right : if mode h2 h1] [mix box.bottom box.top : if mode v1 v2] local innerKnots {} foreach j [range 1 64] : begin @@ -58,20 +70,68 @@ glyph-block Symbol-Pictograph-Stick-Figure : begin innerKnots.push : g4 zm.x zm.y unimportant - include : dispiro + include : [if fMask spiro-outline dispiro] disable-contrast - widths.center sw + widths ((1 - side) * sw) (side * sw) flat z1.x z1.y curl [mix z1.x zc.x TINY] [mix z1.y zc.y TINY] * innerKnots flat [mix z2.x zc.x TINY] [mix z2.y zc.y TINY] - curl z2.x z2.y + [if fMask corner curl] z2.x z2.y + if fMask [corner zr.x zr.y] [list] + + if cl : include : StrokeCap z1 zc (side - 0.5) + if cr : include : StrokeCap z2 zc (0.5 - side) + + export : define [ArcVH h1 v1 h2 v2 cl cr _side _fMask] : ArcImpl 1 h1 v1 h2 v2 cl cr _side _fMask + export : define [ArcHV h1 v1 h2 v2 cl cr _side _fMask] : ArcImpl 0 h1 v1 h2 v2 cl cr _side _fMask + + export : define [Arc h1 v1 h2 v2 hc vc cl cr _side _fMask] : glyph-proc + local side : [fallback _side 0] / 2 + 0.5 + local fMask : fallback _fMask false + + local fFlat : (h1 == h2) || (v1 == v2) + local fSwap : ((h2 - hc) * (h1 - h2) > 0) || ((v1 - v2) * (vc - v1) > 0) + local zr : tfm.applyXY [mix box.left box.right [if fSwap h1 h2]] [mix box.bottom box.top [if fSwap v2 v1]] + + local z1 : tfm.applyXY [mix box.left box.right h1] [mix box.bottom box.top v1] + local z2 : tfm.applyXY [mix box.left box.right h2] [mix box.bottom box.top v2] + + local zc : tfm.applyXY [mix box.left box.right hc] [mix box.bottom box.top vc] + + local ho : h1 + h2 - hc + local vo : v1 + v2 - vc - if cl : include : Circle.Outline.DotAt z1.x z1.y (sw / 2) - if cr : include : Circle.Outline.DotAt z2.x z2.y (sw / 2) + local dh1 : hc - h1 + local dv1 : vc - v1 + local dh2 : hc - h2 + local dv2 : vc - v2 + + local innerKnots {} + define nKnots 64 + foreach j [range 1 nKnots] : begin + local theta : (Math.PI / 2) * (j / nKnots) + local c : Math.pow [Math.cos theta] (2 / DesignParameters.superness) + local s : Math.pow [Math.sin theta] (2 / DesignParameters.superness) + + local mx : mix box.left box.right (ho + s * dh1 + c * dh2) + local my : mix box.bottom box.top (vo + s * dv1 + c * dv2) + local zm : tfm.applyXY mx my + + innerKnots.push : g4 zm.x zm.y [if (fFlat && (j == [Math.floor : nKnots / 2])) nothing unimportant] + + include : [if fMask spiro-outline dispiro] + disable-contrast + widths ((1 - side) * sw) (side * sw) + flat z1.x z1.y + curl [mix z1.x zc.x TINY] [mix z1.y zc.y TINY] + * innerKnots + flat [mix z2.x zc.x TINY] [mix z2.y zc.y TINY] + [if fMask corner curl] z2.x z2.y + if fMask [corner zr.x zr.y] [list] - export : define [ArcVH h1 v1 h2 v2 cl cr] : ArcImpl 1 h1 v1 h2 v2 cl cr - export : define [ArcHV h1 v1 h2 v2 cl cr] : ArcImpl 0 h1 v1 h2 v2 cl cr + if cl : include : StrokeCap z1 zc (side - 0.5) + if cr : include : StrokeCap z2 zc (0.5 - side) export : define [Box h1 v1 h2 v2] : glyph-proc local z1 : tfm.applyXY [mix box.left box.right h1] [mix box.bottom box.top v1] diff --git a/packages/font-glyphs/src/symbol/punctuation/dashes.ptl b/packages/font-glyphs/src/symbol/punctuation/dashes.ptl index 0d933a717d..84e897fce7 100644 --- a/packages/font-glyphs/src/symbol/punctuation/dashes.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/dashes.ptl @@ -33,7 +33,7 @@ glyph-block Symbol-Punctuation-Dashes : begin foreach { suffix { yBar } } [Object.entries UnderScoreConfig] : do create-glyph "underscore.\(suffix)" : HBar.b SB RightSB yBar create-glyph "doubleUnderscore.\(suffix)" : composite-proc - HBar.b SB RightSB yBar + HBar.b SB RightSB yBar HBar.b SB RightSB (yBar - openBoxGap) create-glyph "openBox.\(suffix)" : composite-proc HBar.b SB RightSB yBar @@ -51,6 +51,14 @@ glyph-block Symbol-Punctuation-Dashes : begin local df : include : DivFrame para.diversityF include : HBar.m df.leftSB df.rightSB SymbolMid + create-glyph 'armn/hyphen' 0x58A : glyph-proc + local df : include : DivFrame para.diversityF + include : dispiro + widths.center + g4 df.leftSB SymbolMid [heading Rightward] + g4 df.middle (SymbolMid + 2 * O) + g4 df.rightSB SymbolMid [heading Rightward] + alias 'softhyphen' 0xAD 'hyphen' alias 'gpHyphen' 0x2010 'hyphen' alias 'nbHyphen' 0x2011 'hyphen' @@ -59,7 +67,7 @@ glyph-block Symbol-Punctuation-Dashes : begin create-glyph 'figureDash' 0x2012 : HBar.m SB RightSB SymbolMid create-glyph 'overline' 0x203E : HBar.t SB RightSB CAP create-glyph 'mdfUnaspirated' 0x2ED : composite-proc - HBar.t SB RightSB CAP + HBar.t SB RightSB CAP HBar.t SB RightSB (CAP - openBoxGap) create-glyph 'enDash' 0x2013 : glyph-proc diff --git a/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl b/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl index bc4ad289e9..0401dfe5d6 100644 --- a/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl @@ -2,6 +2,7 @@ $$include '../../meta/macros.ptl' import [mix linreg clamp fallback] from "@iosevka/util" +import [Box] from "@iosevka/geometry/box" import [DependentSelector] from "@iosevka/glyph/relation" glyph-module @@ -241,3 +242,31 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin derive-composites 'hypodiastole' 0x2E12 'modifierLetterRightHalfRing' ApparentTranslate 0 ([mix [mix [mix PeriodSize commaLow 0.5] yCurlyQuotes 0.5] quoteBottom (-1)] - quoteTop) + + # Armenian exclamatory + create-glyph 'armn/exclam' 0x55C : glyph-proc + local df : include : DivFrame para.diversityF + local height : quoteTop - quoteBottom + local xLeft : df.middle - height / 2.5 + local xRight : df.middle + height / 2.5 + local sw : AdviceStroke 3 + include : dispiro + g4.up.start xLeft quoteBottom [widths.rhs.heading sw Upward] + g2 [pre@mix@post 0.5] [pre@mix@post 0.5] [widths.center sw] + g4.up.end xRight quoteTop [widths.lhs.heading sw Upward] + + create-glyph "armn/questionMark" 0x055E : glyph-proc + local df : include : DivFrame para.diversityF + + local height : quoteTop - quoteBottom + local xLeft : df.middle - height / 2 + local xRight : df.middle + height / 2 + local sw : AdviceStroke 4 + + local frame : new Box quoteTop [mix quoteBottom quoteTop 0.2] xLeft xRight + include : dispiro + g4.up.start frame.left frame.bot [widths.rhs sw] + arch.rhs frame.top 0.55 + g4.down.mid frame.right ([frame.yp 0.55] - 0.5 * sw) [widths.rhs sw] + arcvh + g4.left.end [frame.xp 0.6] frame.bot [heading Leftward] diff --git a/packages/font-glyphs/src/symbol/punctuation/small.ptl b/packages/font-glyphs/src/symbol/punctuation/small.ptl index 7b608bb0ef..db55782009 100644 --- a/packages/font-glyphs/src/symbol/punctuation/small.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/small.ptl @@ -295,6 +295,7 @@ glyph-block Symbol-Punctuation-Small : begin select-variant 'dottedCross' 0x205C (follow -- 'punctuationDot') alias 'grek/question' 0x37E 'semicolon' + alias 'armn/fullstop' 0x589 'colon' turned 'turnSemiColon' 0x2E35 'semicolon' [DivFrame para.diversityF].middle (XH / 2) diff --git a/packages/font-kits/package.json b/packages/font-kits/package.json index 7602f26714..f2b4a6503d 100644 --- a/packages/font-kits/package.json +++ b/packages/font-kits/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font-kits", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { "./derived-coordinates": "./src/derived-coordinates.mjs", @@ -8,9 +8,9 @@ "./spiro-kit": "./src/spiro-kit.mjs" }, "dependencies": { - "@iosevka/geometry": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/geometry": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/util": "32.0.0", "typo-geom": "^0.16.1" } } diff --git a/packages/font-otl/package.json b/packages/font-otl/package.json index a7fe57a4cc..722d8a25a4 100644 --- a/packages/font-otl/package.json +++ b/packages/font-otl/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/font-otl", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./lib/index.mjs" }, "dependencies": { - "@iosevka/font-glyphs": "31.9.1", - "@iosevka/glyph": "31.9.1", + "@iosevka/font-glyphs": "32.0.0", + "@iosevka/glyph": "32.0.0", "toposort": "^2.0.2" } } diff --git a/packages/font-otl/src/gsub-ccmp.ptl b/packages/font-otl/src/gsub-ccmp.ptl index c0650ae173..d0facb28ea 100644 --- a/packages/font-otl/src/gsub-ccmp.ptl +++ b/packages/font-otl/src/gsub-ccmp.ptl @@ -1,7 +1,7 @@ $$include './meta/macros.ptl' import [UkMapToLookup UkLigatureToLookup] from "./table-util.mjs" -import [Dotless TieMark TieGlyph OgonekTrY IsSuperscript IsSubscript LeaningMark LeaningMarkSpacer NLDAcuteVariant] from "@iosevka/glyph/relation" +import [Dotless TieMark TieGlyph OgonekTrY IsSuperscript IsSubscript LeaningMark LeaningMarkSpacer NLDAcuteVariant HBSCaronVariant] from "@iosevka/glyph/relation" import as UnicodeKnowledge from "@iosevka/font-glyphs/unicode-knowledge" extern Map @@ -132,6 +132,17 @@ export : define [buildCCMP gsub glyphStore markGlyphs] : begin .type 'gsub_ligature' .substitutions substitutions + Ccmp-Group "DZ-Caron composites" : begin + local substitutions {} + foreach { gn g } [glyphStore.namedEntries] : begin + local hbsVariant : HBSCaronVariant.get g + if hbsVariant : substitutions.push + object [from : list gn 'caronAbove'] [to hbsVariant] + + export-lookup : gsub.createLookup : object + .type 'gsub_ligature' + .substitutions substitutions + Ccmp-Group "Leaning Mark Trasnform" : begin define LeaningAnchorMap : list list 'above' 'leaningAbove' diff --git a/packages/font/package.json b/packages/font/package.json index 8ef1f0ccb6..e993254cb0 100644 --- a/packages/font/package.json +++ b/packages/font/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,13 +10,13 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "31.9.1", - "@iosevka/font-otl": "31.9.1", - "@iosevka/geometry": "31.9.1", - "@iosevka/geometry-cache": "31.9.1", - "@iosevka/glyph": "31.9.1", - "@iosevka/param": "31.9.1", - "@iosevka/util": "31.9.1", + "@iosevka/font-glyphs": "32.0.0", + "@iosevka/font-otl": "32.0.0", + "@iosevka/geometry": "32.0.0", + "@iosevka/geometry-cache": "32.0.0", + "@iosevka/glyph": "32.0.0", + "@iosevka/param": "32.0.0", + "@iosevka/util": "32.0.0", "harfbuzzjs": "^0.4.0", "ot-builder": "^1.7.4", "semver": "^7.6.3", diff --git a/packages/font/src/derive-spacing.mjs b/packages/font/src/derive-spacing.mjs index ff8f033a71..f55178668a 100644 --- a/packages/font/src/derive-spacing.mjs +++ b/packages/font/src/derive-spacing.mjs @@ -73,6 +73,8 @@ async function deriveTerm(font) { // Drop the following "long" characters. async function deriveFixed_DropWideChars(font) { const longCharCodes = [ + 0x27dd, // LONG RIGHT TACK + 0x27de, // LONG LEFT TACK 0x27f5, // LONG LEFTWARDS ARROW 0x27f6, // LONG RIGHTWARDS ARROW 0x27f7, // LONG LEFT RIGHT ARROW diff --git a/packages/geometry-cache/package.json b/packages/geometry-cache/package.json index 92e2f64665..0f50fdac1c 100644 --- a/packages/geometry-cache/package.json +++ b/packages/geometry-cache/package.json @@ -1,12 +1,12 @@ { "name": "@iosevka/geometry-cache", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/geometry": "31.9.1", + "@iosevka/geometry": "32.0.0", "@msgpack/msgpack": "^2.8.0" } } diff --git a/packages/geometry/package.json b/packages/geometry/package.json index 8ba30ec1ca..0b62773155 100644 --- a/packages/geometry/package.json +++ b/packages/geometry/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/geometry", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -15,7 +15,7 @@ "./spiro-pen-expand": "./src/spiro-pen-expand.mjs" }, "dependencies": { - "@iosevka/util": "31.9.1", + "@iosevka/util": "32.0.0", "spiro": "^3.0.1", "typo-geom": "^0.16.1" } diff --git a/packages/glyph/package.json b/packages/glyph/package.json index cc389cc9b3..f48030f14d 100644 --- a/packages/glyph/package.json +++ b/packages/glyph/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/glyph", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/glyph.mjs", @@ -9,6 +9,6 @@ "./relation": "./src/relation.mjs" }, "dependencies": { - "@iosevka/geometry": "31.9.1" + "@iosevka/geometry": "32.0.0" } } diff --git a/packages/glyph/src/relation.mjs b/packages/glyph/src/relation.mjs index 8e2db1aca1..03f13a2f43 100644 --- a/packages/glyph/src/relation.mjs +++ b/packages/glyph/src/relation.mjs @@ -24,6 +24,7 @@ export const TieMark = LinkedGlyphProp("TieMark"); export const LeaningMark = LinkedGlyphProp("LeaningMark"); export const LeaningMarkSpacer = LinkedGlyphProp("LeaningMarkSpacer"); export const NLDAcuteVariant = LinkedGlyphProp("NLDAcuteVariant"); +export const HBSCaronVariant = LinkedGlyphProp("HBSCaronVariant"); export const LocalizedForm = { SRB: { diff --git a/packages/param/package.json b/packages/param/package.json index 4e85d17189..94e4294a2f 100644 --- a/packages/param/package.json +++ b/packages/param/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/param", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -9,6 +9,6 @@ "./metric-override": "./src/metric-override.mjs" }, "dependencies": { - "@iosevka/util": "31.9.1" + "@iosevka/util": "32.0.0" } } diff --git a/packages/util/package.json b/packages/util/package.json index 123e1c8108..e0667c99b9 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/util", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs", diff --git a/packages/util/src/index.mjs b/packages/util/src/index.mjs index 87f05ab69d..9aa0ce2a3f 100644 --- a/packages/util/src/index.mjs +++ b/packages/util/src/index.mjs @@ -33,6 +33,13 @@ export function boolePn(b) { if (b) return 1; else return -1; } +export function strokeOffset(x, y, dx, dy, offset, contrast) { + const r = Math.hypot(dx, dy); + return { + x: x + (dy / r) * offset * contrast, + y: y - (dx / r) * offset + }; +} /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/params/parameters.toml b/params/parameters.toml index 46de1f28e4..cc02f1bc2d 100644 --- a/params/parameters.toml +++ b/params/parameters.toml @@ -24,6 +24,7 @@ parenSize = 966 # Size of parens, brackets, braces, slashes, etc. operSize = 0.80 # Size of mathematical operators (cups, etc.) tackSize = 0.80 # Size of logical operators (tacks, etc.) bgopSize = 1.10 # Size of "taller" mathematical operators +bgtkSize = 1.10 # Size of "taller" logical operators plusSize = 0.52 # Size of plus and arith symbols pictSize = 1.10 # Size of pictograms arrowHeight = 1.50 # Height of arrows diff --git a/params/variants.toml b/params/variants.toml index 44f46e5a08..976aba1591 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -967,8 +967,6 @@ selector."H/sansSerif" = "serifless" selector."H/descBase" = "serifless" selector.leftHalfH = "serifless" selector.rightHalfH = "serifless" -selector."grek/Heta" = "serifless" -selector."grek/heta" = "serifless" selector.Hwair = "serifless" selector.HHookTop = "serifless" @@ -980,8 +978,6 @@ selector."H/sansSerif" = "serifless" selector."H/descBase" = "topLeftSerifed" selector.leftHalfH = "topLeftSerifed" selector.rightHalfH = "serifless" -selector."grek/Heta" = "topLeftSerifed" -selector."grek/heta" = "topLeftSerifed" selector.Hwair = "topLeftSerifed" selector.HHookTop = "serifless" @@ -993,8 +989,6 @@ selector."H/sansSerif" = "serifless" selector."H/descBase" = "topLeftSerifed" selector.leftHalfH = "topLeftSerifed" selector.rightHalfH = "topLeftBottomRightSerifed" -selector."grek/Heta" = "topLeftSerifed" -selector."grek/heta" = "topLeftSerifed" selector.Hwair = "topLeftSerifed" selector.HHookTop = "topLeftBottomRightSerifed" @@ -1006,8 +1000,6 @@ selector."H/sansSerif" = "serifless" selector."H/descBase" = "serifed" selector.leftHalfH = "serifed" selector.rightHalfH = "serifed" -selector."grek/Heta" = "serifed" -selector."grek/heta" = "topLeftSerifed" selector.Hwair = "serifedExceptBottomRight" selector.HHookTop = "serifed" @@ -1067,13 +1059,13 @@ selectorAffix.JCurlyTail = "descending" [prime.capital-j.variants-buildup.stages.hook."*"] next = "serifs" -[prime.capital-j.variants-buildup.stages.hook.standard] +[prime.capital-j.variants-buildup.stages.hook.bent-hook] rank = 1 keyAffix = "" -selectorAffix.J = "" -selectorAffix."J/noDescend" = "" -selectorAffix."J/sansSerif" = "" -selectorAffix.JCurlyTail = "" +selectorAffix.J = "bentHook" +selectorAffix."J/noDescend" = "bentHook" +selectorAffix."J/sansSerif" = "bentHook" +selectorAffix.JCurlyTail = "bentHook" [prime.capital-j.variants-buildup.stages.hook.flat-hook] rank = 2 @@ -1081,7 +1073,7 @@ descriptionAffix = "flat hook" selectorAffix.J = "flatHook" selectorAffix."J/noDescend" = "flatHook" selectorAffix."J/sansSerif" = "flatHook" -selectorAffix.JCurlyTail = "" +selectorAffix.JCurlyTail = "bentHook" [prime.capital-j.variants-buildup.stages.serifs.serifless] rank = 1 @@ -2145,8 +2137,10 @@ selectorAffix."ae/a" = "doubleStorey" selectorAffix."a/sansSerif" = "doubleStorey" selectorAffix."a/rtailBase" = "doubleStorey" selectorAffix."a/turnABase" = "doubleStorey" -selectorAffix."a/single" = "singleStorey" -selectorAffix.scripta = "singleStorey" +selectorAffix."a/single/autoSerifed/slab" = "singleStorey" +selectorAffix."a/single/autoSerifed/sans" = "singleStorey" +selectorAffix."scripta/autoSerifed/slab" = "singleStorey" +selectorAffix."scripta/autoSerifed/sans" = "singleStorey" [prime.a.variants-buildup.stages.storey.single-storey] rank = 2 @@ -2157,8 +2151,10 @@ selectorAffix."ae/a" = "doubleStorey" selectorAffix."a/sansSerif" = "singleStorey" selectorAffix."a/rtailBase" = "singleStorey" selectorAffix."a/turnABase" = "doubleStorey" -selectorAffix."a/single" = "singleStorey" -selectorAffix.scripta = "singleStorey" +selectorAffix."a/single/autoSerifed/slab" = "singleStorey" +selectorAffix."a/single/autoSerifed/sans" = "singleStorey" +selectorAffix."scripta/autoSerifed/slab" = "singleStorey" +selectorAffix."scripta/autoSerifed/sans" = "singleStorey" [prime.a.variants-buildup.stages.double-storey-hook."*"] next = "bar" @@ -2172,8 +2168,10 @@ selectorAffix."ae/a" = "" selectorAffix."a/sansSerif" = "" selectorAffix."a/rtailBase" = "" selectorAffix."a/turnABase" = "" -selectorAffix."a/single" = "" -selectorAffix.scripta = "" +selectorAffix."a/single/autoSerifed/slab" = "" +selectorAffix."a/single/autoSerifed/sans" = "" +selectorAffix."scripta/autoSerifed/slab" = "" +selectorAffix."scripta/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.double-storey-hook.hook-serifed] rank = 2 @@ -2184,8 +2182,10 @@ selectorAffix."ae/a" = "hookInwardSerifed" selectorAffix."a/sansSerif" = "" selectorAffix."a/rtailBase" = "hookInwardSerifed" selectorAffix."a/turnABase" = "hookInwardSerifed" -selectorAffix."a/single" = "" -selectorAffix.scripta = "" +selectorAffix."a/single/autoSerifed/slab" = "" +selectorAffix."a/single/autoSerifed/sans" = "" +selectorAffix."scripta/autoSerifed/slab" = "" +selectorAffix."scripta/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.ear."*"] next = "bar" @@ -2198,8 +2198,10 @@ selectorAffix."ae/a" = "" selectorAffix."a/sansSerif" = "" selectorAffix."a/rtailBase" = "" selectorAffix."a/turnABase" = "" -selectorAffix."a/single" = "" -selectorAffix.scripta = "" +selectorAffix."a/single/autoSerifed/slab" = "" +selectorAffix."a/single/autoSerifed/sans" = "" +selectorAffix."scripta/autoSerifed/slab" = "" +selectorAffix."scripta/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.ear.earless-corner] rank = 2 @@ -2209,8 +2211,10 @@ selectorAffix."ae/a" = "" selectorAffix."a/sansSerif" = "earlessCorner" selectorAffix."a/rtailBase" = "earlessCorner" selectorAffix."a/turnABase" = "" -selectorAffix."a/single" = "earlessCorner" -selectorAffix.scripta = "" +selectorAffix."a/single/autoSerifed/slab" = "earlessCorner" +selectorAffix."a/single/autoSerifed/sans" = "earlessCorner" +selectorAffix."scripta/autoSerifed/slab" = "" +selectorAffix."scripta/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.ear.earless-rounded] rank = 3 @@ -2220,8 +2224,10 @@ selectorAffix."ae/a" = "" selectorAffix."a/sansSerif" = "earlessRounded" selectorAffix."a/rtailBase" = "earlessRounded" selectorAffix."a/turnABase" = "" -selectorAffix."a/single" = "earlessRounded" -selectorAffix.scripta = "" +selectorAffix."a/single/autoSerifed/slab" = "earlessRounded" +selectorAffix."a/single/autoSerifed/sans" = "earlessRounded" +selectorAffix."scripta/autoSerifed/slab" = "" +selectorAffix."scripta/autoSerifed/sans" = "" [prime.a.variants-buildup.stages.bar.serifless] rank = 1 @@ -2232,8 +2238,10 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "serifless" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "serifless" -selectorAffix."a/single" = "serifless" -selectorAffix.scripta = "serifless" +selectorAffix."a/single/autoSerifed/slab" = "serifless" +selectorAffix."a/single/autoSerifed/sans" = "serifless" +selectorAffix."scripta/autoSerifed/slab" = "serifless" +selectorAffix."scripta/autoSerifed/sans" = "serifless" [prime.a.variants-buildup.stages.bar.serifed] rank = 2 @@ -2243,8 +2251,10 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "serifless" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "serifed" -selectorAffix."a/single" = { if = [{ storey = "double-storey" }], then = "doubleSerifed", else = "serifed" } -selectorAffix.scripta = "serifed" +selectorAffix."a/single/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "doubleSerifed", else = "serifed" } +selectorAffix."a/single/autoSerifed/sans" = "serifed" +selectorAffix."scripta/autoSerifed/slab" = "serifed" +selectorAffix."scripta/autoSerifed/sans" = "serifed" [prime.a.variants-buildup.stages.bar.double-serifed] rank = 3 @@ -2255,8 +2265,10 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "serifless" selectorAffix."a/rtailBase" = "topSerifed" selectorAffix."a/turnABase" = "serifed" -selectorAffix."a/single" = "doubleSerifed" -selectorAffix.scripta = "serifed" +selectorAffix."a/single/autoSerifed/slab" = "doubleSerifed" +selectorAffix."a/single/autoSerifed/sans" = "doubleSerifed" +selectorAffix."scripta/autoSerifed/slab" = "serifed" +selectorAffix."scripta/autoSerifed/sans" = "serifed" [prime.a.variants-buildup.stages.bar.tailed] rank = 4 @@ -2266,8 +2278,10 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "tailed" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "tailed" -selectorAffix."a/single" = "tailed" -selectorAffix.scripta = "tailed" +selectorAffix."a/single/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "tailedSerifed", else = "tailed" } +selectorAffix."a/single/autoSerifed/sans" = "tailed" +selectorAffix."scripta/autoSerifed/slab" = "tailed" +selectorAffix."scripta/autoSerifed/sans" = "tailed" [prime.a.variants-buildup.stages.bar.tailed-serifed] rank = 5 @@ -2278,8 +2292,10 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "tailed" selectorAffix."a/rtailBase" = "topSerifed" selectorAffix."a/turnABase" = "tailed" -selectorAffix."a/single" = "tailedSerifed" -selectorAffix.scripta = "tailed" +selectorAffix."a/single/autoSerifed/slab" = "tailedSerifed" +selectorAffix."a/single/autoSerifed/sans" = "tailedSerifed" +selectorAffix."scripta/autoSerifed/slab" = "tailed" +selectorAffix."scripta/autoSerifed/sans" = "tailed" [prime.a.variants-buildup.stages.bar.toothless-corner] rank = 6 @@ -2290,8 +2306,10 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "toothlessCorner" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "toothlessCorner" -selectorAffix."a/single" = "serifless" -selectorAffix.scripta = "serifless" +selectorAffix."a/single/autoSerifed/slab" = "doubleSerifed" +selectorAffix."a/single/autoSerifed/sans" = "serifless" +selectorAffix."scripta/autoSerifed/slab" = "serifed" +selectorAffix."scripta/autoSerifed/sans" = "serifless" [prime.a.variants-buildup.stages.bar.toothless-rounded] rank = 7 @@ -2302,8 +2320,10 @@ selectorAffix."ae/a" = "serifless" selectorAffix."a/sansSerif" = "toothlessRounded" selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/turnABase" = "toothlessRounded" -selectorAffix."a/single" = "serifless" -selectorAffix.scripta = "serifless" +selectorAffix."a/single/autoSerifed/slab" = "doubleSerifed" +selectorAffix."a/single/autoSerifed/sans" = "serifless" +selectorAffix."scripta/autoSerifed/slab" = "serifed" +selectorAffix."scripta/autoSerifed/sans" = "serifless" @@ -2747,8 +2767,8 @@ selectorAffix.g = "" selectorAffix."g/sansSerif" = "" selectorAffix."g/hookTopBase" = "" selectorAffix."gScript" = "" -selectorAffix."gScriptCrossedTail" = "" -selectorAffix."g/single" = "" +selectorAffix."g/single/autoSerifed/slab" = "" +selectorAffix."g/single/autoSerifed/sans" = "" [prime.g.variants-buildup.stages.openness."*"] next = "END" @@ -2760,8 +2780,8 @@ selectorAffix.g = "doubleStorey" selectorAffix."g/sansSerif" = "doubleStorey" selectorAffix."g/hookTopBase" = "singleStoreySerifless" selectorAffix."gScript" = "singleStoreyScriptCut" -selectorAffix."gScriptCrossedTail" = "singleStoreyScriptCut" -selectorAffix."g/single" = "singleStorey" +selectorAffix."g/single/autoSerifed/slab" = "singleStoreySerifed" +selectorAffix."g/single/autoSerifed/sans" = "singleStoreySerifless" [prime.g.variants-buildup.stages.openness.open] rank = 1 @@ -2770,8 +2790,8 @@ selectorAffix.g = "openDoubleStorey" selectorAffix."g/sansSerif" = "openDoubleStorey" selectorAffix."g/hookTopBase" = "singleStoreySerifless" selectorAffix."gScript" = "singleStoreyScriptCut" -selectorAffix."gScriptCrossedTail" = "singleStoreyScriptCut" -selectorAffix."g/single" = "singleStorey" +selectorAffix."g/single/autoSerifed/slab" = "singleStoreySerifed" +selectorAffix."g/single/autoSerifed/sans" = "singleStoreySerifless" [prime.g.variants-buildup.stages.storey.single-storey] next = "hook" @@ -2781,8 +2801,8 @@ selectorAffix.g = "singleStorey" selectorAffix."g/sansSerif" = "singleStorey" selectorAffix."g/hookTopBase" = "singleStorey" selectorAffix."gScript" = "singleStorey" -selectorAffix."gScriptCrossedTail" = "singleStorey" -selectorAffix."g/single" = "singleStorey" +selectorAffix."g/single/autoSerifed/slab" = "singleStorey" +selectorAffix."g/single/autoSerifed/sans" = "singleStorey" [prime.g.variants-buildup.stages.hook."*"] next = "ear" @@ -2794,8 +2814,8 @@ selectorAffix.g = "" selectorAffix."g/sansSerif" = "" selectorAffix."g/hookTopBase" = "" selectorAffix."gScript" = "" -selectorAffix."gScriptCrossedTail" = "" -selectorAffix."g/single" = "" +selectorAffix."g/single/autoSerifed/slab" = "" +selectorAffix."g/single/autoSerifed/sans" = "" [prime.g.variants-buildup.stages.hook.flat-hook] rank = 2 @@ -2804,8 +2824,8 @@ selectorAffix.g = "flatHook" selectorAffix."g/sansSerif" = "flatHook" selectorAffix."g/hookTopBase" = "flatHook" selectorAffix."gScript" = "flatHook" -selectorAffix."gScriptCrossedTail" = "" -selectorAffix."g/single" = "flatHook" +selectorAffix."g/single/autoSerifed/slab" = "flatHook" +selectorAffix."g/single/autoSerifed/sans" = "flatHook" [prime.g.variants-buildup.stages.ear.serifless] rank = 1 @@ -2813,8 +2833,8 @@ selectorAffix.g = "serifless" selectorAffix."g/sansSerif" = "serifless" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" -selectorAffix."g/single" = "serifless" +selectorAffix."g/single/autoSerifed/slab" = "serifless" +selectorAffix."g/single/autoSerifed/sans" = "serifless" [prime.g.variants-buildup.stages.ear.serifed] rank = 2 @@ -2823,8 +2843,8 @@ selectorAffix.g = "serifed" selectorAffix."g/sansSerif" = "serifless" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" -selectorAffix."g/single" = "serifed" +selectorAffix."g/single/autoSerifed/slab" = "serifed" +selectorAffix."g/single/autoSerifed/sans" = "serifed" [prime.g.variants-buildup.stages.ear.earless-corner] rank = 3 @@ -2833,8 +2853,8 @@ selectorAffix.g = "earlessCorner" selectorAffix."g/sansSerif" = "earlessCorner" selectorAffix."g/hookTopBase" = "earlessCornerHTB" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" -selectorAffix."g/single" = "earlessCorner" +selectorAffix."g/single/autoSerifed/slab" = "earlessCorner" +selectorAffix."g/single/autoSerifed/sans" = "earlessCorner" [prime.g.variants-buildup.stages.ear.earless-rounded] rank = 4 @@ -2843,8 +2863,8 @@ selectorAffix.g = "earlessRounded" selectorAffix."g/sansSerif" = "earlessRounded" selectorAffix."g/hookTopBase" = "serifless" selectorAffix."gScript" = "scriptCut" -selectorAffix."gScriptCrossedTail" = "scriptCut" -selectorAffix."g/single" = "earlessRounded" +selectorAffix."g/single/autoSerifed/slab" = "earlessRounded" +selectorAffix."g/single/autoSerifed/sans" = "earlessRounded" @@ -3062,29 +3082,33 @@ tagKind = "letter" [prime.j.variants.serifless] rank = 1 description = "`j` without serif" -selector.dotlessj = "serifless" -selector."dotlessj/sansSerif" = "serifless" +selector.dotlessj = "bentHookSerifless" +selector."dotlessj/sansSerif" = "bentHookSerifless" +selector.dotlessjHookTop = "bentHook" selector.dotlessjCurlyTail = "serifless" [prime.j.variants.serifed] rank = 2 description = "`j` with top serif" -selector.dotlessj = "serifed" -selector."dotlessj/sansSerif" = "serifless" +selector.dotlessj = "bentHookSerifed" +selector."dotlessj/sansSerif" = "bentHookSerifless" +selector.dotlessjHookTop = "bentHook" selector.dotlessjCurlyTail = "serifed" [prime.j.variants.straight-line] rank = 3 description = "`j` like a straight line" -selector.dotlessj = "straightLine" -selector."dotlessj/sansSerif" = "straightLine" +selector.dotlessj = "straightSerifless" +selector."dotlessj/sansSerif" = "straightSerifless" +selector.dotlessjHookTop = "straight" selector.dotlessjCurlyTail = "serifless" [prime.j.variants.hooky] rank = 4 description = "`j` like a straight line with top serif" -selector.dotlessj = "hooky" -selector."dotlessj/sansSerif" = "straightLine" +selector.dotlessj = "straightSerifed" +selector."dotlessj/sansSerif" = "straightSerifless" +selector.dotlessjHookTop = "straight" selector.dotlessjCurlyTail = "serifed" [prime.j.variants.flat-hook-serifless] @@ -3092,6 +3116,7 @@ rank = 5 description = "`j` with flat terminal hook" selector.dotlessj = "flatHookSerifless" selector."dotlessj/sansSerif" = "flatHookSerifless" +selector.dotlessjHookTop = "flatHook" selector.dotlessjCurlyTail = "serifless" [prime.j.variants.flat-hook-serifed] @@ -3099,6 +3124,7 @@ rank = 6 description = "`j` with flat terminal hook and top serif" selector.dotlessj = "flatHookSerifed" selector."dotlessj/sansSerif" = "flatHookSerifless" +selector.dotlessjHookTop = "flatHook" selector.dotlessjCurlyTail = "serifed" [prime.j.variants.diagonal-tailed-serifless] @@ -3106,6 +3132,7 @@ rank = 7 description = "`j` with diagonal tail" selector.dotlessj = "diagonalTailedSerifless" selector."dotlessj/sansSerif" = "diagonalTailedSerifless" +selector.dotlessjHookTop = "diagonalTailed" selector.dotlessjCurlyTail = "serifless" [prime.j.variants.diagonal-tailed-serifed] @@ -3113,6 +3140,7 @@ rank = 8 description = "`j` with top serif and diagonal tail" selector.dotlessj = "diagonalTailedSerifed" selector."dotlessj/sansSerif" = "diagonalTailedSerifless" +selector.dotlessjHookTop = "diagonalTailed" selector.dotlessjCurlyTail = "serifed" @@ -5538,8 +5566,6 @@ rank = 1 description = "Greek capital Gamma (`Γ`) without serifs" selector."grek/Gamma" = "serifless" selector."grek/Gamma/sansSerif" = "serifless" -selector."grek/Digamma" = "serifless" -selector."grek/digamma" = "serifless" selector."cyrl/Ghe" = "serifless" selector."cyrl/ghe.upright" = "serifless" selector."cyrl/Ge" = "serifless" @@ -5552,8 +5578,6 @@ rank = 2 description = "Greek capital Gamma (`Γ`) with serifs at top right" selector."grek/Gamma" = "topRightSerifed" selector."grek/Gamma/sansSerif" = "serifless" -selector."grek/Digamma" = "topRightSerifed" -selector."grek/digamma" = "topRightSerifed" selector."cyrl/Ghe" = "topRightSerifed" selector."cyrl/ghe.upright" = "topRightSerifed" selector."cyrl/Ge" = "serifless" @@ -5566,8 +5590,6 @@ rank = 3 description = "Greek capital Gamma (`Γ`) with bottom serif" selector."grek/Gamma" = "bottomSerifed" selector."grek/Gamma/sansSerif" = "serifless" -selector."grek/Digamma" = "bottomSerifed" -selector."grek/digamma" = "serifless" selector."cyrl/Ghe" = "bottomSerifed" selector."cyrl/ghe.upright" = "serifless" selector."cyrl/Ge" = "bottomSerifed" @@ -5580,8 +5602,6 @@ rank = 4 description = "Greek capital Gamma (`Γ`) with motion serifs at top and bottom" selector."grek/Gamma" = "serifed" selector."grek/Gamma/sansSerif" = "serifless" -selector."grek/Digamma" = "serifed" -selector."grek/digamma" = "topRightSerifed" selector."cyrl/Ghe" = "serifed" selector."cyrl/ghe.upright" = "serifed" selector."cyrl/Ge" = "serifed" diff --git a/tools/amend-readme/package.json b/tools/amend-readme/package.json index f387c53156..7332e5ce00 100644 --- a/tools/amend-readme/package.json +++ b/tools/amend-readme/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/amend-readme", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "31.9.1", + "@iosevka/param": "32.0.0", "@unicode/unicode-16.0.0": "^1.6.0", "semver": "^7.6.3" } diff --git a/tools/data-export/package.json b/tools/data-export/package.json index 2b6c661cb9..92b6189f05 100644 --- a/tools/data-export/package.json +++ b/tools/data-export/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/data-export", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,7 +10,7 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "31.9.1", + "@iosevka/param": "32.0.0", "@unicode/unicode-16.0.0": "^1.6.0", "cldr": "^7.5.0", "@msgpack/msgpack": "^2.8.0" diff --git a/tools/generate-samples/package.json b/tools/generate-samples/package.json index 0b16d2dc21..2cf069e1a1 100644 --- a/tools/generate-samples/package.json +++ b/tools/generate-samples/package.json @@ -1,11 +1,11 @@ { "name": "@iosevka/generate-samples", - "version": "31.9.1", + "version": "32.0.0", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/data-export": "31.9.1" + "@iosevka/data-export": "32.0.0" } } diff --git a/tools/misc/package.json b/tools/misc/package.json index 5ed1153c45..b2754841c7 100644 --- a/tools/misc/package.json +++ b/tools/misc/package.json @@ -1,11 +1,11 @@ { "name": "@iosevka/misc", - "version": "31.9.1", + "version": "32.0.0", "private": true, "dependencies": { "semver": "^7.6.3", "wawoff2": "^2.0.1", - "@iosevka/util": "31.9.1", + "@iosevka/util": "32.0.0", "@unicode/unicode-16.0.0": "^1.6.0" } } diff --git a/tools/misc/src/make-webfont-css.mjs b/tools/misc/src/make-webfont-css.mjs index 79100e6605..558b867cd6 100644 --- a/tools/misc/src/make-webfont-css.mjs +++ b/tools/misc/src/make-webfont-css.mjs @@ -17,7 +17,7 @@ export default function (output, family, hs, formats, unhinted) { if (!WebfontFormatMap.get(ext)) throw new TypeError("Invalid webfont file format " + ext); } for (const term of hs) { - const dirSuffix = unhinted ? "-unhinted" : ""; + const dirSuffix = unhinted ? "-Unhinted" : ""; const src = formats .map( ext =>