diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..2125666 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto \ No newline at end of file diff --git a/README.md b/README.md index ba887d8..3a43181 100644 --- a/README.md +++ b/README.md @@ -27,11 +27,21 @@ The basic way to use this tool is to: 1. Clone the repo and install dependencies (you may wish to fork first, so you can save your preferences to GitHub) 2. Configure your font options in `config.yaml` 3. Run the build script +4. Install the fonts and activate `calt` in your coding app, if you want the code ligatures to be active This instantiates custom fonts for Regular, Italic, Bold, and Bold Italic styles, which you can then use in your preferred editor. One VS Code theme that supports Italics is the [Recursive Theme](https://github.com/arrowtype/recursive-theme). +### Video tutorial for Python beginners -### Prerequisites for this Python project +Here’s a step-by-step video tutorial, if you aren’t used to working with Python projects like this one: + +[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/xEVrdlp24ss/0.jpg)](https://www.youtube.com/watch?v=xEVrdlp24ss) + +You can also follow the instructions below. I have tried to make them pretty granular. My advice is to try the instructions below, and watch the video if you get stuck. If you get _really_ stuck, please [file an issue](https://github.com/arrowtype/recursive-code-config/issues))! It may not be your fault. + +### Step-by-step guide + +#### Prerequisites for this Python project - To work directly with these examples, you should have [Git set up on your computer](https://help.github.com/en/github/getting-started-with-github/set-up-git). - To run the font-building script, you must also [Download Python](http://python.org/download/) and install it if you haven’t already. @@ -44,6 +54,8 @@ git clone https://github.com/arrowtype/recursive-code-config.git cd recursive-code-config ``` +##### Using the venv, on macOS (and maybe Linux?) + Then, set up the venv and install requirements: ```bash @@ -52,8 +64,17 @@ source venv/bin/activate # activate the virtual environment pip install -r requirements.txt # install dependencies ``` +##### Using the venv, on Windows + +Setting up the venv and install requirements is slightly different in Windows, in my testing. Navigate to the project in a terminal, and then use the following commands: + +```bash +py -m venv venv # make a virtual environment called "venv" +venv\Scripts\activate # activate the virtual environment +pip install -r requirements.txt # install dependencies +``` -### 1. Customize your font settings in `config.yaml` +#### 1. Customize your font settings in `config.yaml` This file uses YAML. Hopefully, it is fairly self-explanatory. If not, file an issue and someone will hopefully help out! @@ -75,7 +96,7 @@ Finally, you can copy in the font feature options you want: - ss06 # Simplified r # These options affect both Roman & Cursive styles -- ss07 # Simplified italic diagonals (kwxyz) +- ss07 # Simplified italic diagonals (kwxyz) ### NOT CURRENTLY WORKING, see issue #4 - ss08 # No-serif L and Z - ss09 # Simplified 6 and 9 - ss10 # Dotted 0 @@ -85,8 +106,13 @@ Finally, you can copy in the font feature options you want: ![OpenType features](font-data/img/recursive-ot_features.png) +If you want to turn off all features, you can specify an empty array in YAML like this: -### 2. Build the fonts! +```yaml +Features: [] +``` + +#### 2. Build the fonts! Build the fonts by running the main Python script in the project: @@ -97,7 +123,19 @@ python3 scripts/instantiate-code-fonts.py It will build & output fonts to a folder like `RecMono-Custom` (this is affected by whatever custom name you give fonts in config.yaml). -**Building with other config files** +#### 3. Install the fonts and activate the ligatures! + +This project saves the “code ligatures” to the `calt` feature of fonts, which is the feature most often used by code editors to control code ligatures. + +In many apps, the `calt` feature will be on by default. In others, like VS Code, you will need to specifically turn it on. + +In VS Code specifically, you can turn on `calt` by adding `fontLigatures` into the `settings.json` file and setting it to `true`: + +```JSON + "editor.fontLigatures": true +``` + +#### Building with other config files If you wish to build fonts with premade configurations (or reference these), just add their path as an argument (replace `premade-configs/duotone.yaml` below): @@ -115,8 +153,7 @@ Recursive gets periodic updates, and this repo needs to get these updates, as we Currently, the process to bring in those updates is pretty simple: -1. Copy the latest variable font (e.g. `Recursive_VF_1.0xx.ttf`) into the `font-data` folder -2. Update the `fontPath` variable in `scripts/instantiate-code-fonts.py` with the latest font path +1. Copy the latest variable font (e.g. `Recursive_VF_1.0xx.ttf`) into the `font-data` folder, and delete the old one 3. Activate the `venv` and run `scripts/build-all.sh ` to build updated versions of the fonts Then, you can run the build according to the instructions above. diff --git a/config.yaml b/config.yaml index 27e3ce9..4e16c21 100644 --- a/config.yaml +++ b/config.yaml @@ -77,12 +77,12 @@ Code Ligatures: True # ss01 # Single-story a # ss02 # Single-story g # ss03 # Simplified f -# ss04 # Simplified i (not currently working, see issue #4) +# ss04 # Simplified i ### NOT CURRENTLY WORKING, see issue #4 # ss05 # Simplified l # ss06 # Simplified r # These options affect both Roman & Cursive styles -# ss07 # Simplified italic diagonals (kwxyz) +# ss07 # Simplified italic diagonals (kwxyz) ### NOT CURRENTLY WORKING, see issue #4 # ss08 # No-serif L and Z # ss09 # Simplified 6 and 9 # ss10 # Dotted 0 @@ -94,15 +94,16 @@ Code Ligatures: True # Some features (especially "case") will disrupt code ligatures. # See Issue #20 for more details. +# If you want to turn off all features, you can specify an empty array in YAML like this: +# Features: [] + # (Keep the hyphen before each list item) Features: - ss01 # Single-story a - ss02 # Single-story g - ss03 # Simplified f -- ss04 # Simplified i - ss05 # Simplified l - ss06 # Simplified r -- ss07 # Simplified italic diagonals (kwxyz) - ss08 # Serifless L and Z - ss09 # Simplified 6 and 9 - ss10 # Dotted 0 diff --git a/font-data/Recursive_VF_1.084.ttf b/font-data/Recursive_VF_1.084.ttf deleted file mode 100644 index 25efff4..0000000 Binary files a/font-data/Recursive_VF_1.084.ttf and /dev/null differ diff --git a/font-data/code-features.fea b/font-data/code-features.fea deleted file mode 100644 index 54ba6fa..0000000 --- a/font-data/code-features.fea +++ /dev/null @@ -1,16 +0,0 @@ -languagesystem DFLT dflt; -languagesystem latn dflt; - -# include paths written relative to UFOs in varfontprep folders -# `features` dir will be copied to varfontprep folder, and these includes will link to that -include(../../../features/features/frac.fea); -include(../../../features/features/numr_dnom_supr_infr.fea); -include(../../../features/features/pnum.fea); -include(../../../features/features/zero.fea); -include(../../../features/features/titl.fea); -include(../../../features/features/ordn.fea); -include(../../../features/features/case.fea); -include(../../../features/features/liga.fea); -include(../../../features/features/ss0x.fea); -include(../../../features/features/calt-generated--code_fonts_only.fea); -include(../../../features/features/aalt.fea); diff --git a/font-data/features/aalt.fea b/font-data/features/aalt.fea deleted file mode 100644 index 96737c7..0000000 --- a/font-data/features/aalt.fea +++ /dev/null @@ -1,753 +0,0 @@ -feature aalt { - sub L from [L L.sans]; - sub L.sans from [L.sans L]; - sub Lacute from [Lacute Lacute.sans]; - sub Lacute.sans from [Lacute.sans Lacute]; - sub Lcaron from [Lcaron Lcaron.sans]; - sub Lcaron.sans from [Lcaron.sans Lcaron]; - sub Lcommaaccent from [Lcommaaccent Lcommaaccent.sans]; - sub Lcommaaccent.sans from [Lcommaaccent.sans Lcommaaccent]; - sub Ldot from [Ldot Ldot.sans]; - sub Ldot.sans from [Ldot.sans Ldot]; - sub Ldotbelow from [Ldotbelow Ldotbelow.sans]; - sub Ldotbelow.sans from [Ldotbelow.sans Ldotbelow]; - sub Lj from [Lj Lj.italic]; - sub Lj.italic from [Lj.italic Lj]; - sub Llinebelow from [Llinebelow Llinebelow.sans]; - sub Llinebelow.sans from [Llinebelow.sans Llinebelow]; - sub Lslash from [Lslash Lslash.sans]; - sub Lslash.sans from [Lslash.sans Lslash]; - sub Nj from [Nj Nj.italic]; - sub Nj.italic from [Nj.italic Nj]; - sub Q from [Q Q.titl]; - sub Q.titl from [Q.titl Q]; - sub Z from [Z Z.sans]; - sub Z.sans from [Z.sans Z]; - sub Zacute from [Zacute Zacute.sans]; - sub Zacute.sans from [Zacute.sans Zacute]; - sub Zcaron from [Zcaron Zcaron.sans]; - sub Zcaron.sans from [Zcaron.sans Zcaron]; - sub Zdotaccent from [Zdotaccent Zdotaccent.sans]; - sub Zdotaccent.sans from [Zdotaccent.sans Zdotaccent]; - sub Zdotbelow from [Zdotbelow Zdotbelow.sans]; - sub Zdotbelow.sans from [Zdotbelow.sans Zdotbelow]; - sub a from [a a.simple a.italic]; - sub a.italic from [a.italic a a.simple]; - sub a.simple from [a.simple a.italic a]; - sub aacute from [aacute aacute.italic aacute.simple]; - sub aacute.simple from [aacute.simple aacute aacute.italic]; - sub aacute.italic from [aacute.italic aacute.simple aacute]; - sub abreve from [abreve abreve.italic abreve.simple]; - sub abreve.simple from [abreve.simple abreve abreve.italic]; - sub abreve.italic from [abreve.italic abreve.simple abreve]; - sub abreveacute from [abreveacute abreveacute.italic abreveacute.simple]; - sub abreveacute.simple from [abreveacute.simple abreveacute abreveacute.italic]; - sub abreveacute.italic from [abreveacute.italic abreveacute.simple abreveacute]; - sub abrevedot from [abrevedot abrevedot.italic abrevedot.simple]; - sub abrevedot.simple from [abrevedot.simple abrevedot abrevedot.italic]; - sub abrevedot.italic from [abrevedot.italic abrevedot.simple abrevedot]; - sub abrevegrave from [abrevegrave abrevegrave.italic abrevegrave.simple]; - sub abrevegrave.simple from [abrevegrave.simple abrevegrave abrevegrave.italic]; - sub abrevegrave.italic from [abrevegrave.italic abrevegrave.simple abrevegrave]; - sub abrevehook from [abrevehook abrevehook.italic abrevehook.simple]; - sub abrevehook.simple from [abrevehook.simple abrevehook abrevehook.italic]; - sub abrevehook.italic from [abrevehook.italic abrevehook.simple abrevehook]; - sub abrevetilde from [abrevetilde abrevetilde.italic abrevetilde.simple]; - sub abrevetilde.simple from [abrevetilde.simple abrevetilde abrevetilde.italic]; - sub abrevetilde.italic from [abrevetilde.italic abrevetilde.simple abrevetilde]; - sub acircumflex from [acircumflex acircumflex.simple acircumflex.italic]; - sub acircumflex.italic from [acircumflex.italic acircumflex acircumflex.simple]; - sub acircumflex.simple from [acircumflex.simple acircumflex.italic acircumflex]; - sub acircumflexacute from [acircumflexacute acircumflexacute.italic acircumflexacute.simple]; - sub acircumflexacute.simple from [acircumflexacute.simple acircumflexacute acircumflexacute.italic]; - sub acircumflexacute.italic from [acircumflexacute.italic acircumflexacute.simple acircumflexacute]; - sub acircumflexdot from [acircumflexdot acircumflexdot.simple acircumflexdot.italic]; - sub acircumflexdot.italic from [acircumflexdot.italic acircumflexdot acircumflexdot.simple]; - sub acircumflexdot.simple from [acircumflexdot.simple acircumflexdot.italic acircumflexdot]; - sub acircumflexgrave from [acircumflexgrave acircumflexgrave.italic acircumflexgrave.simple]; - sub acircumflexgrave.simple from [acircumflexgrave.simple acircumflexgrave acircumflexgrave.italic]; - sub acircumflexgrave.italic from [acircumflexgrave.italic acircumflexgrave.simple acircumflexgrave]; - sub acircumflexhook from [acircumflexhook acircumflexhook.italic acircumflexhook.simple]; - sub acircumflexhook.simple from [acircumflexhook.simple acircumflexhook acircumflexhook.italic]; - sub acircumflexhook.italic from [acircumflexhook.italic acircumflexhook.simple acircumflexhook]; - sub acircumflextilde from [acircumflextilde acircumflextilde.simple acircumflextilde.italic]; - sub acircumflextilde.italic from [acircumflextilde.italic acircumflextilde acircumflextilde.simple]; - sub acircumflextilde.simple from [acircumflextilde.simple acircumflextilde.italic acircumflextilde]; - sub acutecomb from [acutecomb acutecomb.case]; - sub acutecomb.case from [acutecomb.case acutecomb]; - sub adieresis from [adieresis adieresis.italic adieresis.simple]; - sub adieresis.simple from [adieresis.simple adieresis adieresis.italic]; - sub adieresis.italic from [adieresis.italic adieresis.simple adieresis]; - sub adotbelow from [adotbelow adotbelow.italic adotbelow.simple]; - sub adotbelow.simple from [adotbelow.simple adotbelow adotbelow.italic]; - sub adotbelow.italic from [adotbelow.italic adotbelow.simple adotbelow]; - sub agrave from [agrave agrave.italic agrave.simple]; - sub agrave.simple from [agrave.simple agrave agrave.italic]; - sub agrave.italic from [agrave.italic agrave.simple agrave]; - sub agravedbl from [agravedbl agravedbl.simple agravedbl.italic]; - sub agravedbl.italic from [agravedbl.italic agravedbl agravedbl.simple]; - sub agravedbl.simple from [agravedbl.simple agravedbl.italic agravedbl]; - sub ahook from [ahook ahook.italic ahook.simple]; - sub ahook.simple from [ahook.simple ahook ahook.italic]; - sub ahook.italic from [ahook.italic ahook.simple ahook]; - sub ainvertedbreve from [ainvertedbreve ainvertedbreve.italic ainvertedbreve.simple]; - sub ainvertedbreve.simple from [ainvertedbreve.simple ainvertedbreve ainvertedbreve.italic]; - sub ainvertedbreve.italic from [ainvertedbreve.italic ainvertedbreve.simple ainvertedbreve]; - sub amacron from [amacron amacron.italic amacron.simple]; - sub amacron.simple from [amacron.simple amacron amacron.italic]; - sub amacron.italic from [amacron.italic amacron.simple amacron]; - sub aogonek from [aogonek aogonek.simple aogonek.italic]; - sub aogonek.italic from [aogonek.italic aogonek aogonek.simple]; - sub aogonek.simple from [aogonek.simple aogonek.italic aogonek]; - sub approxequal from [approxequal approxequal.case]; - sub approxequal.case from [approxequal.case approxequal]; - sub aring from [aring aring.italic aring.simple]; - sub aring.simple from [aring.simple aring aring.italic]; - sub aring.italic from [aring.italic aring.simple aring]; - sub aringacute from [aringacute aringacute.italic aringacute.simple]; - sub aringacute.simple from [aringacute.simple aringacute aringacute.italic]; - sub aringacute.italic from [aringacute.italic aringacute.simple aringacute]; - sub arrowNE from [arrowNE arrowNE.case]; - sub arrowNE.case from [arrowNE.case arrowNE]; - sub arrowNW from [arrowNW arrowNW.case]; - sub arrowNW.case from [arrowNW.case arrowNW]; - sub arrowSE from [arrowSE arrowSE.case]; - sub arrowSE.case from [arrowSE.case arrowSE]; - sub arrowSW from [arrowSW arrowSW.case]; - sub arrowSW.case from [arrowSW.case arrowSW]; - sub arrowdown from [arrowdown arrowdown.case]; - sub arrowdown.case from [arrowdown.case arrowdown]; - sub arrowleft from [arrowleft arrowleft.case]; - sub arrowleft.case from [arrowleft.case arrowleft]; - sub arrowleftright from [arrowleftright arrowleftright.case]; - sub arrowleftright.case from [arrowleftright.case arrowleftright]; - sub arrowright from [arrowright arrowright.case]; - sub arrowright.case from [arrowright.case arrowright]; - sub arrowup from [arrowup arrowup.case]; - sub arrowup.case from [arrowup.case arrowup]; - sub arrowupdown from [arrowupdown arrowupdown.case]; - sub arrowupdown.case from [arrowupdown.case arrowupdown]; - sub asterisk from [asterisk asterisk.code]; - sub asterisk.code from [asterisk.code asterisk]; - sub at from [at at.alt at.alt_case at.case]; - sub at.case from [at.case at at.alt at.alt_case]; - sub at.alt_case from [at.alt_case at.case at at.alt]; - sub at.alt from [at.alt at.alt_case at.case at]; - sub atilde from [atilde atilde.simple atilde.italic]; - sub atilde.italic from [atilde.italic atilde atilde.simple]; - sub atilde.simple from [atilde.simple atilde.italic atilde]; - sub b from [b b.italic]; - sub b.italic from [b.italic b]; - sub backslash from [backslash backslash.case backslash.code]; - sub backslash.code from [backslash.code backslash backslash.case]; - sub backslash.case from [backslash.case backslash.code backslash]; - sub braceleft from [braceleft braceleft.cap braceleft.case]; - sub braceleft.case from [braceleft.case braceleft braceleft.cap]; - sub braceleft.cap from [braceleft.cap braceleft.case braceleft]; - sub braceright from [braceright braceright.cap braceright.case]; - sub braceright.case from [braceright.case braceright braceright.cap]; - sub braceright.cap from [braceright.cap braceright.case braceright]; - sub bracketleft from [bracketleft bracketleft.case]; - sub bracketleft.case from [bracketleft.case bracketleft]; - sub bracketright from [bracketright bracketright.case]; - sub bracketright.case from [bracketright.case bracketright]; - sub brevecomb from [brevecomb brevecomb.case]; - sub brevecomb.case from [brevecomb.case brevecomb]; - sub bullet from [bullet bullet.case]; - sub bullet.case from [bullet.case bullet]; - sub c from [c c.italic]; - sub c.italic from [c.italic c]; - sub cacute from [cacute cacute.italic]; - sub cacute.italic from [cacute.italic cacute]; - sub caroncomb from [caroncomb caroncomb.alt caroncomb.case]; - sub caroncomb.case from [caroncomb.case caroncomb caroncomb.alt]; - sub caroncomb.alt from [caroncomb.alt caroncomb.case caroncomb]; - sub ccaron from [ccaron ccaron.italic]; - sub ccaron.italic from [ccaron.italic ccaron]; - sub ccedilla from [ccedilla ccedilla.italic]; - sub ccedilla.italic from [ccedilla.italic ccedilla]; - sub ccedillaacute from [ccedillaacute ccedillaacute.italic]; - sub ccedillaacute.italic from [ccedillaacute.italic ccedillaacute]; - sub ccircumflex from [ccircumflex ccircumflex.italic]; - sub ccircumflex.italic from [ccircumflex.italic ccircumflex]; - sub cdotaccent from [cdotaccent cdotaccent.italic]; - sub cdotaccent.italic from [cdotaccent.italic cdotaccent]; - sub cedillacomb from [cedillacomb cedillacomb.case]; - sub cedillacomb.case from [cedillacomb.case cedillacomb]; - sub circumflexcomb from [circumflexcomb circumflexcomb.case]; - sub circumflexcomb.case from [circumflexcomb.case circumflexcomb]; - sub colon from [colon colon.case]; - sub colon.case from [colon.case colon]; - sub commaaboverightcomb from [commaaboverightcomb commaaboverightcomb.case]; - sub commaaboverightcomb.case from [commaaboverightcomb.case commaaboverightcomb]; - sub commaaccentcomb from [commaaccentcomb commaaccentcomb.case]; - sub commaaccentcomb.case from [commaaccentcomb.case commaaccentcomb]; - sub commaturnedabovecomb from [commaturnedabovecomb commaturnedabovecomb.case]; - sub commaturnedabovecomb.case from [commaturnedabovecomb.case commaturnedabovecomb]; - sub d from [d d.italic]; - sub d.italic from [d.italic d]; - sub dcaron from [dcaron dcaron.italic]; - sub dcaron.italic from [dcaron.italic dcaron]; - sub ddotbelow from [ddotbelow ddotbelow.italic]; - sub ddotbelow.italic from [ddotbelow.italic ddotbelow]; - sub dieresiscomb from [dieresiscomb dieresiscomb.case]; - sub dieresiscomb.case from [dieresiscomb.case dieresiscomb]; - sub divide from [divide divide.case]; - sub divide.case from [divide.case divide]; - sub dlinebelow from [dlinebelow dlinebelow.italic]; - sub dlinebelow.italic from [dlinebelow.italic dlinebelow]; - sub dotaccentcomb from [dotaccentcomb dotaccentcomb.case]; - sub dotaccentcomb.case from [dotaccentcomb.case dotaccentcomb]; - sub dotbelowcomb from [dotbelowcomb dotbelowcomb.case]; - sub dotbelowcomb.case from [dotbelowcomb.case dotbelowcomb]; - sub dotlessi from [dotlessi dotlessi.mono dotlessi.italic]; - sub dotlessi.italic from [dotlessi.italic dotlessi dotlessi.mono]; - sub dotlessi.mono from [dotlessi.mono dotlessi.italic dotlessi]; - sub dotlessj from [dotlessj dotlessj.italic]; - sub dotlessj.italic from [dotlessj.italic dotlessj]; - sub dzcaron from [dzcaron dzcaron.italic]; - sub dzcaron.italic from [dzcaron.italic dzcaron]; - sub e from [e e.italic]; - sub e.italic from [e.italic e]; - sub eacute from [eacute eacute.italic]; - sub eacute.italic from [eacute.italic eacute]; - sub ebreve from [ebreve ebreve.italic]; - sub ebreve.italic from [ebreve.italic ebreve]; - sub ecaron from [ecaron ecaron.italic]; - sub ecaron.italic from [ecaron.italic ecaron]; - sub ecedillabreve from [ecedillabreve ecedillabreve.italic]; - sub ecedillabreve.italic from [ecedillabreve.italic ecedillabreve]; - sub ecircumflex from [ecircumflex ecircumflex.italic]; - sub ecircumflex.italic from [ecircumflex.italic ecircumflex]; - sub ecircumflexacute from [ecircumflexacute ecircumflexacute.italic]; - sub ecircumflexacute.italic from [ecircumflexacute.italic ecircumflexacute]; - sub ecircumflexdot from [ecircumflexdot ecircumflexdot.italic]; - sub ecircumflexdot.italic from [ecircumflexdot.italic ecircumflexdot]; - sub ecircumflexgrave from [ecircumflexgrave ecircumflexgrave.italic]; - sub ecircumflexgrave.italic from [ecircumflexgrave.italic ecircumflexgrave]; - sub ecircumflexhook from [ecircumflexhook ecircumflexhook.italic]; - sub ecircumflexhook.italic from [ecircumflexhook.italic ecircumflexhook]; - sub ecircumflextilde from [ecircumflextilde ecircumflextilde.italic]; - sub ecircumflextilde.italic from [ecircumflextilde.italic ecircumflextilde]; - sub edieresis from [edieresis edieresis.italic]; - sub edieresis.italic from [edieresis.italic edieresis]; - sub edotaccent from [edotaccent edotaccent.italic]; - sub edotaccent.italic from [edotaccent.italic edotaccent]; - sub edotbelow from [edotbelow edotbelow.italic]; - sub edotbelow.italic from [edotbelow.italic edotbelow]; - sub egrave from [egrave egrave.italic]; - sub egrave.italic from [egrave.italic egrave]; - sub egravedbl from [egravedbl egravedbl.italic]; - sub egravedbl.italic from [egravedbl.italic egravedbl]; - sub ehook from [ehook ehook.italic]; - sub ehook.italic from [ehook.italic ehook]; - sub eightinferior from [eightinferior eightinferior.afrc]; - sub eightinferior.afrc from [eightinferior.afrc eightinferior]; - sub eightsuperior from [eightsuperior eightsuperior.afrc]; - sub eightsuperior.afrc from [eightsuperior.afrc eightsuperior]; - sub einvertedbreve from [einvertedbreve einvertedbreve.italic]; - sub einvertedbreve.italic from [einvertedbreve.italic einvertedbreve]; - sub emacron from [emacron emacron.italic]; - sub emacron.italic from [emacron.italic emacron]; - sub emacronacute from [emacronacute emacronacute.italic]; - sub emacronacute.italic from [emacronacute.italic emacronacute]; - sub emacrongrave from [emacrongrave emacrongrave.italic]; - sub emacrongrave.italic from [emacrongrave.italic emacrongrave]; - sub emdash from [emdash emdash.case]; - sub emdash.case from [emdash.case emdash]; - sub endash from [endash endash.case]; - sub endash.case from [endash.case endash]; - sub eogonek from [eogonek eogonek.italic]; - sub eogonek.italic from [eogonek.italic eogonek]; - sub equal from [equal equal.case]; - sub equal.case from [equal.case equal]; - sub etilde from [etilde etilde.italic]; - sub etilde.italic from [etilde.italic etilde]; - sub exclamdown from [exclamdown exclamdown.case]; - sub exclamdown.case from [exclamdown.case exclamdown]; - sub f from [f f.simple f.italic f.mono]; - sub f.mono from [f.mono f f.simple f.italic]; - sub f.italic from [f.italic f.mono f f.simple]; - sub f.simple from [f.simple f.italic f.mono f]; - sub f_f from [f_f f_f.mono f_f.italic]; - sub f_f.italic from [f_f.italic f_f f_f.mono]; - sub f_f.mono from [f_f.mono f_f.italic f_f]; - sub f_f_i from [f_f_i f_f_i.mono f_f_i.italic]; - sub f_f_i.italic from [f_f_i.italic f_f_i f_f_i.mono]; - sub f_f_i.mono from [f_f_i.mono f_f_i.italic f_f_i]; - sub f_f_l from [f_f_l f_f_l.italic f_f_l.mono]; - sub f_f_l.mono from [f_f_l.mono f_f_l f_f_l.italic]; - sub f_f_l.italic from [f_f_l.italic f_f_l.mono f_f_l]; - sub fi from [fi fi.italic fi.mono]; - sub fi.mono from [fi.mono fi fi.italic]; - sub fi.italic from [fi.italic fi.mono fi]; - sub fiveeighths from [fiveeighths fiveeighths.afrc]; - sub fiveeighths.afrc from [fiveeighths.afrc fiveeighths]; - sub fiveinferior from [fiveinferior fiveinferior.afrc]; - sub fiveinferior.afrc from [fiveinferior.afrc fiveinferior]; - sub fivesuperior from [fivesuperior fivesuperior.afrc]; - sub fivesuperior.afrc from [fivesuperior.afrc fivesuperior]; - sub fl from [fl fl.italic fl.mono]; - sub fl.mono from [fl.mono fl fl.italic]; - sub fl.italic from [fl.italic fl.mono fl]; - sub fourinferior from [fourinferior fourinferior.afrc]; - sub fourinferior.afrc from [fourinferior.afrc fourinferior]; - sub foursuperior from [foursuperior foursuperior.afrc]; - sub foursuperior.afrc from [foursuperior.afrc foursuperior]; - sub g from [g g.mono g.simple g.italic]; - sub g.italic from [g.italic g g.mono g.simple]; - sub g.simple from [g.simple g.italic g g.mono]; - sub g.mono from [g.mono g.simple g.italic g]; - sub gbreve from [gbreve gbreve.simple gbreve.italic]; - sub gbreve.italic from [gbreve.italic gbreve gbreve.simple]; - sub gbreve.simple from [gbreve.simple gbreve.italic gbreve]; - sub gcaron from [gcaron gcaron.simple gcaron.italic]; - sub gcaron.italic from [gcaron.italic gcaron gcaron.simple]; - sub gcaron.simple from [gcaron.simple gcaron.italic gcaron]; - sub gcircumflex from [gcircumflex gcircumflex.simple gcircumflex.italic]; - sub gcircumflex.italic from [gcircumflex.italic gcircumflex gcircumflex.simple]; - sub gcircumflex.simple from [gcircumflex.simple gcircumflex.italic gcircumflex]; - sub gcommaaccent from [gcommaaccent gcommaaccent.italic gcommaaccent.simple]; - sub gcommaaccent.simple from [gcommaaccent.simple gcommaaccent gcommaaccent.italic]; - sub gcommaaccent.italic from [gcommaaccent.italic gcommaaccent.simple gcommaaccent]; - sub gdotaccent from [gdotaccent gdotaccent.simple gdotaccent.italic]; - sub gdotaccent.italic from [gdotaccent.italic gdotaccent gdotaccent.simple]; - sub gdotaccent.simple from [gdotaccent.simple gdotaccent.italic gdotaccent]; - sub gmacron from [gmacron gmacron.simple gmacron.italic]; - sub gmacron.italic from [gmacron.italic gmacron gmacron.simple]; - sub gmacron.simple from [gmacron.simple gmacron.italic gmacron]; - sub gravecomb from [gravecomb gravecomb.case]; - sub gravecomb.case from [gravecomb.case gravecomb]; - sub gravedoublecmb from [gravedoublecmb gravedoublecmb.case]; - sub gravedoublecmb.case from [gravedoublecmb.case gravedoublecmb]; - sub greater from [greater greater.case greater.code]; - sub greater.code from [greater.code greater greater.case]; - sub greater.case from [greater.case greater.code greater]; - sub greaterequal from [greaterequal greaterequal.case]; - sub greaterequal.case from [greaterequal.case greaterequal]; - sub guillemotleft from [guillemotleft guillemotleft.case]; - sub guillemotleft.case from [guillemotleft.case guillemotleft]; - sub guillemotright from [guillemotright guillemotright.case]; - sub guillemotright.case from [guillemotright.case guillemotright]; - sub guilsinglleft from [guilsinglleft guilsinglleft.case]; - sub guilsinglleft.case from [guilsinglleft.case guilsinglleft]; - sub guilsinglright from [guilsinglright guilsinglright.case]; - sub guilsinglright.case from [guilsinglright.case guilsinglright]; - sub h from [h h.italic]; - sub h.italic from [h.italic h]; - sub hbrevebelow from [hbrevebelow hbrevebelow.italic]; - sub hbrevebelow.italic from [hbrevebelow.italic hbrevebelow]; - sub hcircumflex from [hcircumflex hcircumflex.italic]; - sub hcircumflex.italic from [hcircumflex.italic hcircumflex]; - sub hdotbelow from [hdotbelow hdotbelow.italic]; - sub hdotbelow.italic from [hdotbelow.italic hdotbelow]; - sub hookcomb from [hookcomb hookcomb.case]; - sub hookcomb.case from [hookcomb.case hookcomb]; - sub horncomb from [horncomb horncomb.case]; - sub horncomb.case from [horncomb.case horncomb]; - sub horncombo from [horncombo horncombo.case]; - sub horncombo.case from [horncombo.case horncombo]; - sub hungarumlautcomb from [hungarumlautcomb hungarumlautcomb.case]; - sub hungarumlautcomb.case from [hungarumlautcomb.case hungarumlautcomb]; - sub hyphen from [hyphen hyphen.code hyphen.case]; - sub hyphen.case from [hyphen.case hyphen hyphen.code]; - sub hyphen.code from [hyphen.code hyphen.case hyphen]; - sub i from [i i.mono i.italic i.simple]; - sub i.simple from [i.simple i i.mono i.italic]; - sub i.italic from [i.italic i.simple i i.mono]; - sub i.mono from [i.mono i.italic i.simple i]; - sub iacute from [iacute iacute.simple iacute.italic iacute.mono]; - sub iacute.mono from [iacute.mono iacute iacute.simple iacute.italic]; - sub iacute.italic from [iacute.italic iacute.mono iacute iacute.simple]; - sub iacute.simple from [iacute.simple iacute.italic iacute.mono iacute]; - sub ibreve from [ibreve ibreve.mono ibreve.simple ibreve.italic]; - sub ibreve.italic from [ibreve.italic ibreve ibreve.mono ibreve.simple]; - sub ibreve.simple from [ibreve.simple ibreve.italic ibreve ibreve.mono]; - sub ibreve.mono from [ibreve.mono ibreve.simple ibreve.italic ibreve]; - sub icircumflex from [icircumflex icircumflex.italic icircumflex.simple icircumflex.mono]; - sub icircumflex.mono from [icircumflex.mono icircumflex icircumflex.italic icircumflex.simple]; - sub icircumflex.simple from [icircumflex.simple icircumflex.mono icircumflex icircumflex.italic]; - sub icircumflex.italic from [icircumflex.italic icircumflex.simple icircumflex.mono icircumflex]; - sub idieresis from [idieresis idieresis.simple idieresis.italic idieresis.mono]; - sub idieresis.mono from [idieresis.mono idieresis idieresis.simple idieresis.italic]; - sub idieresis.italic from [idieresis.italic idieresis.mono idieresis idieresis.simple]; - sub idieresis.simple from [idieresis.simple idieresis.italic idieresis.mono idieresis]; - sub idieresisacute from [idieresisacute idieresisacute.italic idieresisacute.simple idieresisacute.mono]; - sub idieresisacute.mono from [idieresisacute.mono idieresisacute idieresisacute.italic idieresisacute.simple]; - sub idieresisacute.simple from [idieresisacute.simple idieresisacute.mono idieresisacute idieresisacute.italic]; - sub idieresisacute.italic from [idieresisacute.italic idieresisacute.simple idieresisacute.mono idieresisacute]; - sub idot from [idot idot.italic idot.simple idot.mono]; - sub idot.mono from [idot.mono idot idot.italic idot.simple]; - sub idot.simple from [idot.simple idot.mono idot idot.italic]; - sub idot.italic from [idot.italic idot.simple idot.mono idot]; - sub idotaccent from [idotaccent idotaccent.mono idotaccent.italic idotaccent.simple]; - sub idotaccent.simple from [idotaccent.simple idotaccent idotaccent.mono idotaccent.italic]; - sub idotaccent.italic from [idotaccent.italic idotaccent.simple idotaccent idotaccent.mono]; - sub idotaccent.mono from [idotaccent.mono idotaccent.italic idotaccent.simple idotaccent]; - sub idotbelow from [idotbelow idotbelow.italic idotbelow.simple idotbelow.mono]; - sub idotbelow.mono from [idotbelow.mono idotbelow idotbelow.italic idotbelow.simple]; - sub idotbelow.simple from [idotbelow.simple idotbelow.mono idotbelow idotbelow.italic]; - sub idotbelow.italic from [idotbelow.italic idotbelow.simple idotbelow.mono idotbelow]; - sub igrave from [igrave igrave.italic igrave.simple igrave.mono]; - sub igrave.mono from [igrave.mono igrave igrave.italic igrave.simple]; - sub igrave.simple from [igrave.simple igrave.mono igrave igrave.italic]; - sub igrave.italic from [igrave.italic igrave.simple igrave.mono igrave]; - sub igravedbl from [igravedbl igravedbl.italic igravedbl.mono igravedbl.simple]; - sub igravedbl.simple from [igravedbl.simple igravedbl igravedbl.italic igravedbl.mono]; - sub igravedbl.mono from [igravedbl.mono igravedbl.simple igravedbl igravedbl.italic]; - sub igravedbl.italic from [igravedbl.italic igravedbl.mono igravedbl.simple igravedbl]; - sub ihook from [ihook ihook.simple ihook.mono ihook.italic]; - sub ihook.italic from [ihook.italic ihook ihook.simple ihook.mono]; - sub ihook.mono from [ihook.mono ihook.italic ihook ihook.simple]; - sub ihook.simple from [ihook.simple ihook.mono ihook.italic ihook]; - sub iinvertedbreve from [iinvertedbreve iinvertedbreve.mono iinvertedbreve.simple iinvertedbreve.italic]; - sub iinvertedbreve.italic from [iinvertedbreve.italic iinvertedbreve iinvertedbreve.mono iinvertedbreve.simple]; - sub iinvertedbreve.simple from [iinvertedbreve.simple iinvertedbreve.italic iinvertedbreve iinvertedbreve.mono]; - sub iinvertedbreve.mono from [iinvertedbreve.mono iinvertedbreve.simple iinvertedbreve.italic iinvertedbreve]; - sub imacron from [imacron imacron.simple imacron.mono imacron.italic]; - sub imacron.italic from [imacron.italic imacron imacron.simple imacron.mono]; - sub imacron.mono from [imacron.mono imacron.italic imacron imacron.simple]; - sub imacron.simple from [imacron.simple imacron.mono imacron.italic imacron]; - sub invertedbrevecmb from [invertedbrevecmb invertedbrevecmb.case]; - sub invertedbrevecmb.case from [invertedbrevecmb.case invertedbrevecmb]; - sub iogonek from [iogonek iogonek.italic iogonek.simple iogonek.mono]; - sub iogonek.mono from [iogonek.mono iogonek iogonek.italic iogonek.simple]; - sub iogonek.simple from [iogonek.simple iogonek.mono iogonek iogonek.italic]; - sub iogonek.italic from [iogonek.italic iogonek.simple iogonek.mono iogonek]; - sub itilde from [itilde itilde.mono itilde.simple itilde.italic]; - sub itilde.italic from [itilde.italic itilde itilde.mono itilde.simple]; - sub itilde.simple from [itilde.simple itilde.italic itilde itilde.mono]; - sub itilde.mono from [itilde.mono itilde.simple itilde.italic itilde]; - sub j from [j j.italic]; - sub j.italic from [j.italic j]; - sub jcircumflex from [jcircumflex jcircumflex.italic]; - sub jcircumflex.italic from [jcircumflex.italic jcircumflex]; - sub k from [k k.italic]; - sub k.italic from [k.italic k]; - sub kcommaaccent from [kcommaaccent kcommaaccent.italic]; - sub kcommaaccent.italic from [kcommaaccent.italic kcommaaccent]; - sub l from [l l.mono l.simple l.italic l.sans]; - sub l.sans from [l.sans l l.mono l.simple l.italic]; - sub l.italic from [l.italic l.sans l l.mono l.simple]; - sub l.simple from [l.simple l.italic l.sans l l.mono]; - sub l.mono from [l.mono l.simple l.italic l.sans l]; - sub lacute from [lacute lacute.sans lacute.mono lacute.italic lacute.simple]; - sub lacute.simple from [lacute.simple lacute lacute.sans lacute.mono lacute.italic]; - sub lacute.italic from [lacute.italic lacute.simple lacute lacute.sans lacute.mono]; - sub lacute.mono from [lacute.mono lacute.italic lacute.simple lacute lacute.sans]; - sub lacute.sans from [lacute.sans lacute.mono lacute.italic lacute.simple lacute]; - sub lcaron from [lcaron lcaron.sans lcaron.simple lcaron.italic lcaron.mono]; - sub lcaron.mono from [lcaron.mono lcaron lcaron.sans lcaron.simple lcaron.italic]; - sub lcaron.italic from [lcaron.italic lcaron.mono lcaron lcaron.sans lcaron.simple]; - sub lcaron.simple from [lcaron.simple lcaron.italic lcaron.mono lcaron lcaron.sans]; - sub lcaron.sans from [lcaron.sans lcaron.simple lcaron.italic lcaron.mono lcaron]; - sub lcommaaccent from [lcommaaccent lcommaaccent.simple lcommaaccent.italic lcommaaccent.mono lcommaaccent.sans]; - sub lcommaaccent.sans from [lcommaaccent.sans lcommaaccent lcommaaccent.simple lcommaaccent.italic lcommaaccent.mono]; - sub lcommaaccent.mono from [lcommaaccent.mono lcommaaccent.sans lcommaaccent lcommaaccent.simple lcommaaccent.italic]; - sub lcommaaccent.italic from [lcommaaccent.italic lcommaaccent.mono lcommaaccent.sans lcommaaccent lcommaaccent.simple]; - sub lcommaaccent.simple from [lcommaaccent.simple lcommaaccent.italic lcommaaccent.mono lcommaaccent.sans lcommaaccent]; - sub ldot from [ldot ldot.sans ldot.simple ldot.italic ldot.mono]; - sub ldot.mono from [ldot.mono ldot ldot.sans ldot.simple ldot.italic]; - sub ldot.italic from [ldot.italic ldot.mono ldot ldot.sans ldot.simple]; - sub ldot.simple from [ldot.simple ldot.italic ldot.mono ldot ldot.sans]; - sub ldot.sans from [ldot.sans ldot.simple ldot.italic ldot.mono ldot]; - sub ldotbelow from [ldotbelow ldotbelow.sans ldotbelow.simple ldotbelow.italic ldotbelow.mono]; - sub ldotbelow.mono from [ldotbelow.mono ldotbelow ldotbelow.sans ldotbelow.simple ldotbelow.italic]; - sub ldotbelow.italic from [ldotbelow.italic ldotbelow.mono ldotbelow ldotbelow.sans ldotbelow.simple]; - sub ldotbelow.simple from [ldotbelow.simple ldotbelow.italic ldotbelow.mono ldotbelow ldotbelow.sans]; - sub ldotbelow.sans from [ldotbelow.sans ldotbelow.simple ldotbelow.italic ldotbelow.mono ldotbelow]; - sub less from [less less.case less.code]; - sub less.code from [less.code less less.case]; - sub less.case from [less.case less.code less]; - sub lessequal from [lessequal lessequal.case]; - sub lessequal.case from [lessequal.case lessequal]; - sub lj from [lj lj.italic]; - sub lj.italic from [lj.italic lj]; - sub llinebelow from [llinebelow llinebelow.italic llinebelow.sans llinebelow.simple llinebelow.mono]; - sub llinebelow.mono from [llinebelow.mono llinebelow llinebelow.italic llinebelow.sans llinebelow.simple]; - sub llinebelow.simple from [llinebelow.simple llinebelow.mono llinebelow llinebelow.italic llinebelow.sans]; - sub llinebelow.sans from [llinebelow.sans llinebelow.simple llinebelow.mono llinebelow llinebelow.italic]; - sub llinebelow.italic from [llinebelow.italic llinebelow.sans llinebelow.simple llinebelow.mono llinebelow]; - sub logicalnot from [logicalnot logicalnot.case]; - sub logicalnot.case from [logicalnot.case logicalnot]; - sub lslash from [lslash lslash.mono lslash.italic lslash.sans lslash.simple]; - sub lslash.simple from [lslash.simple lslash lslash.mono lslash.italic lslash.sans]; - sub lslash.sans from [lslash.sans lslash.simple lslash lslash.mono lslash.italic]; - sub lslash.italic from [lslash.italic lslash.sans lslash.simple lslash lslash.mono]; - sub lslash.mono from [lslash.mono lslash.italic lslash.sans lslash.simple lslash]; - sub m from [m m.italic]; - sub m.italic from [m.italic m]; - sub macroncomb from [macroncomb macroncomb.case]; - sub macroncomb.case from [macroncomb.case macroncomb]; - sub mdotbelow from [mdotbelow mdotbelow.italic]; - sub mdotbelow.italic from [mdotbelow.italic mdotbelow]; - sub minus from [minus minus.case]; - sub minus.case from [minus.case minus]; - sub multiply from [multiply multiply.case]; - sub multiply.case from [multiply.case multiply]; - sub n from [n n.italic]; - sub n.italic from [n.italic n]; - sub nacute from [nacute nacute.italic]; - sub nacute.italic from [nacute.italic nacute]; - sub napostrophe from [napostrophe napostrophe.italic]; - sub napostrophe.italic from [napostrophe.italic napostrophe]; - sub ncaron from [ncaron ncaron.italic]; - sub ncaron.italic from [ncaron.italic ncaron]; - sub ncommaaccent from [ncommaaccent ncommaaccent.italic]; - sub ncommaaccent.italic from [ncommaaccent.italic ncommaaccent]; - sub ndot from [ndot ndot.italic]; - sub ndot.italic from [ndot.italic ndot]; - sub ndotbelow from [ndotbelow ndotbelow.italic]; - sub ndotbelow.italic from [ndotbelow.italic ndotbelow]; - sub nine from [nine nine.ss01]; - sub nine.ss01 from [nine.ss01 nine]; - sub nineinferior from [nineinferior nineinferior.afrc nineinferior.ss01]; - sub nineinferior.ss01 from [nineinferior.ss01 nineinferior nineinferior.afrc]; - sub nineinferior.afrc from [nineinferior.afrc nineinferior.ss01 nineinferior]; - sub ninesuperior from [ninesuperior ninesuperior.afrc ninesuperior.ss01]; - sub ninesuperior.ss01 from [ninesuperior.ss01 ninesuperior ninesuperior.afrc]; - sub ninesuperior.afrc from [ninesuperior.afrc ninesuperior.ss01 ninesuperior]; - sub nj from [nj nj.italic]; - sub nj.italic from [nj.italic nj]; - sub nlinebelow from [nlinebelow nlinebelow.italic]; - sub nlinebelow.italic from [nlinebelow.italic nlinebelow]; - sub notequal from [notequal notequal.case]; - sub notequal.case from [notequal.case notequal]; - sub ntilde from [ntilde ntilde.italic]; - sub ntilde.italic from [ntilde.italic ntilde]; - sub numbersign from [numbersign numbersign.code]; - sub numbersign.code from [numbersign.code numbersign]; - sub ogonekcomb from [ogonekcomb ogonekcomb.case]; - sub ogonekcomb.case from [ogonekcomb.case ogonekcomb]; - sub ogonekcombo from [ogonekcombo ogonekcombo.case]; - sub ogonekcombo.case from [ogonekcombo.case ogonekcombo]; - sub one from [one one.sans one.simple]; - sub one.simple from [one.simple one one.sans]; - sub one.sans from [one.sans one.simple one]; - sub oneeighth from [oneeighth oneeighth.afrc]; - sub oneeighth.afrc from [oneeighth.afrc oneeighth]; - sub onehalf from [onehalf onehalf.afrc]; - sub onehalf.afrc from [onehalf.afrc onehalf]; - sub oneinferior from [oneinferior oneinferior.afrc]; - sub oneinferior.afrc from [oneinferior.afrc oneinferior]; - sub onequarter from [onequarter onequarter.afrc]; - sub onequarter.afrc from [onequarter.afrc onequarter]; - sub onesuperior from [onesuperior onesuperior.afrc]; - sub onesuperior.afrc from [onesuperior.afrc onesuperior]; - sub onethird from [onethird onethird.afrc]; - sub onethird.afrc from [onethird.afrc onethird]; - sub parenleft from [parenleft parenleft.case]; - sub parenleft.case from [parenleft.case parenleft]; - sub parenright from [parenright parenright.case]; - sub parenright.case from [parenright.case parenright]; - sub periodcentered from [periodcentered periodcentered.loclCAT periodcentered.case]; - sub periodcentered.case from [periodcentered.case periodcentered periodcentered.loclCAT]; - sub periodcentered.loclCAT from [periodcentered.loclCAT periodcentered.case periodcentered]; - sub plus from [plus plus.case plus.code]; - sub plus.code from [plus.code plus plus.case]; - sub plus.case from [plus.case plus.code plus]; - sub plusminus from [plusminus plusminus.case]; - sub plusminus.case from [plusminus.case plusminus]; - sub questiondown from [questiondown questiondown.case]; - sub questiondown.case from [questiondown.case questiondown]; - sub quotedbl from [quotedbl quotedbl.code]; - sub quotedbl.code from [quotedbl.code quotedbl]; - sub quotesingle from [quotesingle quotesingle.code]; - sub quotesingle.code from [quotesingle.code quotesingle]; - sub r from [r r.italic r.simple r.mono]; - sub r.mono from [r.mono r r.italic r.simple]; - sub r.simple from [r.simple r.mono r r.italic]; - sub r.italic from [r.italic r.simple r.mono r]; - sub racute from [racute racute.simple racute.mono racute.italic]; - sub racute.italic from [racute.italic racute racute.simple racute.mono]; - sub racute.mono from [racute.mono racute.italic racute racute.simple]; - sub racute.simple from [racute.simple racute.mono racute.italic racute]; - sub rcaron from [rcaron rcaron.simple rcaron.mono rcaron.italic]; - sub rcaron.italic from [rcaron.italic rcaron rcaron.simple rcaron.mono]; - sub rcaron.mono from [rcaron.mono rcaron.italic rcaron rcaron.simple]; - sub rcaron.simple from [rcaron.simple rcaron.mono rcaron.italic rcaron]; - sub rcommaaccent from [rcommaaccent rcommaaccent.italic rcommaaccent.mono rcommaaccent.simple]; - sub rcommaaccent.simple from [rcommaaccent.simple rcommaaccent rcommaaccent.italic rcommaaccent.mono]; - sub rcommaaccent.mono from [rcommaaccent.mono rcommaaccent.simple rcommaaccent rcommaaccent.italic]; - sub rcommaaccent.italic from [rcommaaccent.italic rcommaaccent.mono rcommaaccent.simple rcommaaccent]; - sub rdotbelow from [rdotbelow rdotbelow.italic rdotbelow.simple rdotbelow.mono]; - sub rdotbelow.mono from [rdotbelow.mono rdotbelow rdotbelow.italic rdotbelow.simple]; - sub rdotbelow.simple from [rdotbelow.simple rdotbelow.mono rdotbelow rdotbelow.italic]; - sub rdotbelow.italic from [rdotbelow.italic rdotbelow.simple rdotbelow.mono rdotbelow]; - sub rgravedbl from [rgravedbl rgravedbl.simple rgravedbl.italic rgravedbl.mono]; - sub rgravedbl.mono from [rgravedbl.mono rgravedbl rgravedbl.simple rgravedbl.italic]; - sub rgravedbl.italic from [rgravedbl.italic rgravedbl.mono rgravedbl rgravedbl.simple]; - sub rgravedbl.simple from [rgravedbl.simple rgravedbl.italic rgravedbl.mono rgravedbl]; - sub ringacute from [ringacute ringacute.case]; - sub ringacute.case from [ringacute.case ringacute]; - sub ringcomb from [ringcomb ringcomb.case]; - sub ringcomb.case from [ringcomb.case ringcomb]; - sub rinvertedbreve from [rinvertedbreve rinvertedbreve.simple rinvertedbreve.mono rinvertedbreve.italic]; - sub rinvertedbreve.italic from [rinvertedbreve.italic rinvertedbreve rinvertedbreve.simple rinvertedbreve.mono]; - sub rinvertedbreve.mono from [rinvertedbreve.mono rinvertedbreve.italic rinvertedbreve rinvertedbreve.simple]; - sub rinvertedbreve.simple from [rinvertedbreve.simple rinvertedbreve.mono rinvertedbreve.italic rinvertedbreve]; - sub rlinebelow from [rlinebelow rlinebelow.italic rlinebelow.mono rlinebelow.simple]; - sub rlinebelow.simple from [rlinebelow.simple rlinebelow rlinebelow.italic rlinebelow.mono]; - sub rlinebelow.mono from [rlinebelow.mono rlinebelow.simple rlinebelow rlinebelow.italic]; - sub rlinebelow.italic from [rlinebelow.italic rlinebelow.mono rlinebelow.simple rlinebelow]; - sub s from [s s.italic]; - sub s.italic from [s.italic s]; - sub sacute from [sacute sacute.italic]; - sub sacute.italic from [sacute.italic sacute]; - sub sacutedotaccent from [sacutedotaccent sacutedotaccent.italic]; - sub sacutedotaccent.italic from [sacutedotaccent.italic sacutedotaccent]; - sub scaron from [scaron scaron.italic]; - sub scaron.italic from [scaron.italic scaron]; - sub scarondot from [scarondot scarondot.italic]; - sub scarondot.italic from [scarondot.italic scarondot]; - sub scedilla from [scedilla scedilla.italic]; - sub scedilla.italic from [scedilla.italic scedilla]; - sub scircumflex from [scircumflex scircumflex.italic]; - sub scircumflex.italic from [scircumflex.italic scircumflex]; - sub scommaaccent from [scommaaccent scommaaccent.italic]; - sub scommaaccent.italic from [scommaaccent.italic scommaaccent]; - sub sdot from [sdot sdot.italic]; - sub sdot.italic from [sdot.italic sdot]; - sub sdotbelow from [sdotbelow sdotbelow.italic]; - sub sdotbelow.italic from [sdotbelow.italic sdotbelow]; - sub sdotbelowdotabove from [sdotbelowdotabove sdotbelowdotabove.italic]; - sub sdotbelowdotabove.italic from [sdotbelowdotabove.italic sdotbelowdotabove]; - sub seveneighths from [seveneighths seveneighths.afrc]; - sub seveneighths.afrc from [seveneighths.afrc seveneighths]; - sub seveninferior from [seveninferior seveninferior.afrc]; - sub seveninferior.afrc from [seveninferior.afrc seveninferior]; - sub sevensuperior from [sevensuperior sevensuperior.afrc]; - sub sevensuperior.afrc from [sevensuperior.afrc sevensuperior]; - sub six from [six six.ss01]; - sub six.ss01 from [six.ss01 six]; - sub sixinferior from [sixinferior sixinferior.ss01 sixinferior.afrc]; - sub sixinferior.afrc from [sixinferior.afrc sixinferior sixinferior.ss01]; - sub sixinferior.ss01 from [sixinferior.ss01 sixinferior.afrc sixinferior]; - sub sixsuperior from [sixsuperior sixsuperior.ss01 sixsuperior.afrc]; - sub sixsuperior.afrc from [sixsuperior.afrc sixsuperior sixsuperior.ss01]; - sub sixsuperior.ss01 from [sixsuperior.ss01 sixsuperior.afrc sixsuperior]; - sub slash from [slash slash.case]; - sub slash.case from [slash.case slash]; - sub slashcomb from [slashcomb slashcomb.case]; - sub slashcomb.case from [slashcomb.case slashcomb]; - sub threeeighths from [threeeighths threeeighths.afrc]; - sub threeeighths.afrc from [threeeighths.afrc threeeighths]; - sub threeinferior from [threeinferior threeinferior.afrc]; - sub threeinferior.afrc from [threeinferior.afrc threeinferior]; - sub threequarters from [threequarters threequarters.afrc]; - sub threequarters.afrc from [threequarters.afrc threequarters]; - sub threesuperior from [threesuperior threesuperior.afrc]; - sub threesuperior.afrc from [threesuperior.afrc threesuperior]; - sub tildecomb from [tildecomb tildecomb.case]; - sub tildecomb.case from [tildecomb.case tildecomb]; - sub twoinferior from [twoinferior twoinferior.afrc]; - sub twoinferior.afrc from [twoinferior.afrc twoinferior]; - sub twosuperior from [twosuperior twosuperior.afrc]; - sub twosuperior.afrc from [twosuperior.afrc twosuperior]; - sub twothirds from [twothirds twothirds.afrc]; - sub twothirds.afrc from [twothirds.afrc twothirds]; - sub u from [u u.italic]; - sub u.italic from [u.italic u]; - sub uacute from [uacute uacute.italic]; - sub uacute.italic from [uacute.italic uacute]; - sub ubreve from [ubreve ubreve.italic]; - sub ubreve.italic from [ubreve.italic ubreve]; - sub ucircumflex from [ucircumflex ucircumflex.italic]; - sub ucircumflex.italic from [ucircumflex.italic ucircumflex]; - sub udieresis from [udieresis udieresis.italic]; - sub udieresis.italic from [udieresis.italic udieresis]; - sub udotbelow from [udotbelow udotbelow.italic]; - sub udotbelow.italic from [udotbelow.italic udotbelow]; - sub ugrave from [ugrave ugrave.italic]; - sub ugrave.italic from [ugrave.italic ugrave]; - sub ugravedbl from [ugravedbl ugravedbl.italic]; - sub ugravedbl.italic from [ugravedbl.italic ugravedbl]; - sub uhook from [uhook uhook.italic]; - sub uhook.italic from [uhook.italic uhook]; - sub uhorn from [uhorn uhorn.italic]; - sub uhorn.italic from [uhorn.italic uhorn]; - sub uhornacute from [uhornacute uhornacute.italic]; - sub uhornacute.italic from [uhornacute.italic uhornacute]; - sub uhorndot from [uhorndot uhorndot.italic]; - sub uhorndot.italic from [uhorndot.italic uhorndot]; - sub uhorngrave from [uhorngrave uhorngrave.italic]; - sub uhorngrave.italic from [uhorngrave.italic uhorngrave]; - sub uhornhook from [uhornhook uhornhook.italic]; - sub uhornhook.italic from [uhornhook.italic uhornhook]; - sub uhorntilde from [uhorntilde uhorntilde.italic]; - sub uhorntilde.italic from [uhorntilde.italic uhorntilde]; - sub uhungarumlaut from [uhungarumlaut uhungarumlaut.italic]; - sub uhungarumlaut.italic from [uhungarumlaut.italic uhungarumlaut]; - sub uinvertedbreve from [uinvertedbreve uinvertedbreve.italic]; - sub uinvertedbreve.italic from [uinvertedbreve.italic uinvertedbreve]; - sub umacron from [umacron umacron.italic]; - sub umacron.italic from [umacron.italic umacron]; - sub umacrondieresis from [umacrondieresis umacrondieresis.italic]; - sub umacrondieresis.italic from [umacrondieresis.italic umacrondieresis]; - sub uogonek from [uogonek uogonek.italic]; - sub uogonek.italic from [uogonek.italic uogonek]; - sub uring from [uring uring.italic]; - sub uring.italic from [uring.italic uring]; - sub utilde from [utilde utilde.italic]; - sub utilde.italic from [utilde.italic utilde]; - sub utildeacute from [utildeacute utildeacute.italic]; - sub utildeacute.italic from [utildeacute.italic utildeacute]; - sub v from [v v.italic]; - sub v.italic from [v.italic v]; - sub w from [w w.italic]; - sub w.italic from [w.italic w]; - sub wacute from [wacute wacute.italic]; - sub wacute.italic from [wacute.italic wacute]; - sub wcircumflex from [wcircumflex wcircumflex.italic]; - sub wcircumflex.italic from [wcircumflex.italic wcircumflex]; - sub wdieresis from [wdieresis wdieresis.italic]; - sub wdieresis.italic from [wdieresis.italic wdieresis]; - sub wgrave from [wgrave wgrave.italic]; - sub wgrave.italic from [wgrave.italic wgrave]; - sub x from [x x.italic]; - sub x.italic from [x.italic x]; - sub y from [y y.italic]; - sub y.italic from [y.italic y]; - sub yacute from [yacute yacute.italic]; - sub yacute.italic from [yacute.italic yacute]; - sub ycircumflex from [ycircumflex ycircumflex.italic]; - sub ycircumflex.italic from [ycircumflex.italic ycircumflex]; - sub ydieresis from [ydieresis ydieresis.italic]; - sub ydieresis.italic from [ydieresis.italic ydieresis]; - sub ydot from [ydot ydot.italic]; - sub ydot.italic from [ydot.italic ydot]; - sub ydotbelow from [ydotbelow ydotbelow.italic]; - sub ydotbelow.italic from [ydotbelow.italic ydotbelow]; - sub ygrave from [ygrave ygrave.italic]; - sub ygrave.italic from [ygrave.italic ygrave]; - sub yhookabove from [yhookabove yhookabove.italic]; - sub yhookabove.italic from [yhookabove.italic yhookabove]; - sub ymacron from [ymacron ymacron.italic]; - sub ymacron.italic from [ymacron.italic ymacron]; - sub ytilde from [ytilde ytilde.italic]; - sub ytilde.italic from [ytilde.italic ytilde]; - sub z from [z z.italic]; - sub z.italic from [z.italic z]; - sub zacute from [zacute zacute.italic]; - sub zacute.italic from [zacute.italic zacute]; - sub zcaron from [zcaron zcaron.italic]; - sub zcaron.italic from [zcaron.italic zcaron]; - sub zdotaccent from [zdotaccent zdotaccent.italic]; - sub zdotaccent.italic from [zdotaccent.italic zdotaccent]; - sub zdotbelow from [zdotbelow zdotbelow.italic]; - sub zdotbelow.italic from [zdotbelow.italic zdotbelow]; - sub zero from [zero zero.dotted zero.slash zero.sans]; - sub zero.sans from [zero.sans zero zero.dotted zero.slash]; - sub zero.slash from [zero.slash zero.sans zero zero.dotted]; - sub zero.dotted from [zero.dotted zero.slash zero.sans zero]; - sub zeroinferior from [zeroinferior zeroinferior.dotted zeroinferior.slash zeroinferior.afrc zeroinferior.sans]; - sub zeroinferior.sans from [zeroinferior.sans zeroinferior zeroinferior.dotted zeroinferior.slash zeroinferior.afrc]; - sub zeroinferior.afrc from [zeroinferior.afrc zeroinferior.sans zeroinferior zeroinferior.dotted zeroinferior.slash]; - sub zeroinferior.slash from [zeroinferior.slash zeroinferior.afrc zeroinferior.sans zeroinferior zeroinferior.dotted]; - sub zeroinferior.dotted from [zeroinferior.dotted zeroinferior.slash zeroinferior.afrc zeroinferior.sans zeroinferior]; - sub zerosuperior from [zerosuperior zerosuperior.sans zerosuperior.slash zerosuperior.dotted zerosuperior.afrc]; - sub zerosuperior.afrc from [zerosuperior.afrc zerosuperior zerosuperior.sans zerosuperior.slash zerosuperior.dotted]; - sub zerosuperior.dotted from [zerosuperior.dotted zerosuperior.afrc zerosuperior zerosuperior.sans zerosuperior.slash]; - sub zerosuperior.slash from [zerosuperior.slash zerosuperior.dotted zerosuperior.afrc zerosuperior zerosuperior.sans]; - sub zerosuperior.sans from [zerosuperior.sans zerosuperior.slash zerosuperior.dotted zerosuperior.afrc zerosuperior]; -} aalt; \ No newline at end of file diff --git a/font-data/features/case.fea b/font-data/features/case.fea deleted file mode 100644 index a8782aa..0000000 --- a/font-data/features/case.fea +++ /dev/null @@ -1,7 +0,0 @@ -# intentionally left out: colon -@lowercasePunc = [hyphen endash emdash parenleft parenright bracketleft bracketright braceleft braceright guilsinglleft guilsinglright guillemotleft guillemotright slash backslash exclamdown questiondown at periodcentered bullet plus minus plusminus divide multiply equal less greater lessequal greaterequal approxequal notequal logicalnot arrowleft arrowup arrowright arrowdown arrowleftright arrowupdown arrowNW arrowNE arrowSE arrowSW ]; -@uppercasePunc = [hyphen.case endash.case emdash.case parenleft.case parenright.case bracketleft.case bracketright.case braceleft.case braceright.case guilsinglleft.case guilsinglright.case guillemotleft.case guillemotright.case slash.case backslash.case exclamdown.case questiondown.case at.case periodcentered.case bullet.case plus.case minus.case plusminus.case divide.case multiply.case equal.case less.case greater.case lessequal.case greaterequal.case approxequal.case notequal.case logicalnot.case arrowleft.case arrowup.case arrowright.case arrowdown.case arrowleftright.case arrowupdown.case arrowNW.case arrowNE.case arrowSE.case arrowSW.case]; - -feature case { - sub @lowercasePunc by @uppercasePunc; -} case; \ No newline at end of file diff --git a/font-data/features/dlig-generated.fea b/font-data/features/dlig-generated.fea deleted file mode 100644 index c492163..0000000 --- a/font-data/features/dlig-generated.fea +++ /dev/null @@ -1,351 +0,0 @@ -# generated by src/01-shell-scripts-for-sources/features/make-dlig-fea-code.py -feature dlig { - lookup hyphen_space_bracketleft_x_bracketright { - ignore sub hyphen hyphen' space' bracketleft' x' bracketright'; - ignore sub hyphen' space' bracketleft' x' bracketright' bracketright; - sub hyphen' space' bracketleft' x' bracketright' by hyphen_space_bracketleft_x_bracketright.code; - } hyphen_space_bracketleft_x_bracketright; - - lookup hyphen_space_bracketleft_space_bracketright { - ignore sub hyphen hyphen' space' bracketleft' space' bracketright'; - ignore sub hyphen' space' bracketleft' space' bracketright' bracketright; - sub hyphen' space' bracketleft' space' bracketright' by hyphen_space_bracketleft_space_bracketright.code; - } hyphen_space_bracketleft_space_bracketright; - - lookup numbersign_numbersign_numbersign_numbersign { - ignore sub numbersign numbersign' numbersign' numbersign' numbersign'; - ignore sub numbersign' numbersign' numbersign' numbersign' numbersign; - sub numbersign' numbersign' numbersign' numbersign' by numbersign_numbersign_numbersign_numbersign.code; - } numbersign_numbersign_numbersign_numbersign; - - lookup less_exclam_hyphen_hyphen { - ignore sub less less' exclam' hyphen' hyphen'; - ignore sub less' exclam' hyphen' hyphen' hyphen; - sub less' exclam' hyphen' hyphen' by less_exclam_hyphen_hyphen.code; - } less_exclam_hyphen_hyphen; - - lookup slash_slash_slash { - ignore sub slash slash' slash' slash'; - ignore sub slash' slash' slash' slash; - sub slash' slash' slash' by slash_slash_slash.code; - } slash_slash_slash; - - lookup equal_slash_equal { - ignore sub equal equal' slash' equal'; - ignore sub equal' slash' equal' equal; - sub equal' slash' equal' by equal_slash_equal.code; - } equal_slash_equal; - - lookup hyphen_hyphen_hyphen { - ignore sub hyphen hyphen' hyphen' hyphen'; - ignore sub hyphen' hyphen' hyphen' hyphen; - sub hyphen' hyphen' hyphen' by hyphen_hyphen_hyphen.code; - } hyphen_hyphen_hyphen; - - lookup numbersign_numbersign_numbersign { - ignore sub numbersign numbersign' numbersign' numbersign'; - ignore sub numbersign' numbersign' numbersign' numbersign; - sub numbersign' numbersign' numbersign' by numbersign_numbersign_numbersign.code; - } numbersign_numbersign_numbersign; - - lookup asterisk_asterisk_asterisk { - ignore sub asterisk asterisk' asterisk' asterisk'; - ignore sub asterisk' asterisk' asterisk' asterisk; - sub asterisk' asterisk' asterisk' by asterisk_asterisk_asterisk.code; - } asterisk_asterisk_asterisk; - - lookup bar_bar_bar { - ignore sub bar bar' bar' bar'; - ignore sub bar' bar' bar' bar; - sub bar' bar' bar' by bar_bar_bar.code; - } bar_bar_bar; - - lookup hyphen_hyphen_greater { - ignore sub hyphen hyphen' hyphen' greater'; - ignore sub hyphen' hyphen' greater' greater; - sub hyphen' hyphen' greater' by hyphen_hyphen_greater.code; - } hyphen_hyphen_greater; - - lookup colon_slash_slash { - ignore sub colon colon' slash' slash'; - ignore sub colon' slash' slash' slash; - sub colon' slash' slash' by colon_slash_slash.code; - } colon_slash_slash; - - lookup equal_equal_equal { - ignore sub equal equal' equal' equal'; - ignore sub equal' equal' equal' equal; - sub equal' equal' equal' by equal_equal_equal.code; - } equal_equal_equal; - - lookup greater_greater_greater { - ignore sub greater greater' greater' greater'; - ignore sub greater' greater' greater' greater; - sub greater' greater' greater' by greater_greater_greater.code; - } greater_greater_greater; - - lookup quotedbl_quotedbl_quotedbl { - ignore sub quotedbl quotedbl' quotedbl' quotedbl'; - ignore sub quotedbl' quotedbl' quotedbl' quotedbl; - sub quotedbl' quotedbl' quotedbl' by quotedbl_quotedbl_quotedbl.code; - } quotedbl_quotedbl_quotedbl; - - lookup plus_plus_plus { - ignore sub plus plus' plus' plus'; - ignore sub plus' plus' plus' plus; - sub plus' plus' plus' by plus_plus_plus.code; - } plus_plus_plus; - - lookup quotesingle_quotesingle_quotesingle { - ignore sub quotesingle quotesingle' quotesingle' quotesingle'; - ignore sub quotesingle' quotesingle' quotesingle' quotesingle; - sub quotesingle' quotesingle' quotesingle' by quotesingle_quotesingle_quotesingle.code; - } quotesingle_quotesingle_quotesingle; - - lookup less_less_less { - ignore sub less less' less' less'; - ignore sub less' less' less' less; - sub less' less' less' by less_less_less.code; - } less_less_less; - - lookup exclam_equal_equal { - ignore sub exclam exclam' equal' equal'; - ignore sub exclam' equal' equal' equal; - sub exclam' equal' equal' by exclam_equal_equal.code; - } exclam_equal_equal; - - lookup grave_grave_grave { - ignore sub grave grave' grave' grave'; - ignore sub grave' grave' grave' grave; - sub grave' grave' grave' by grave_grave_grave.code; - } grave_grave_grave; - - lookup ampersand_ampersand_ampersand { - ignore sub ampersand ampersand' ampersand' ampersand'; - ignore sub ampersand' ampersand' ampersand' ampersand; - sub ampersand' ampersand' ampersand' by ampersand_ampersand_ampersand.code; - } ampersand_ampersand_ampersand; - - lookup backslash_r { - ignore sub backslash backslash' r'; - ignore sub backslash' r' r; - sub backslash' r' by backslash_r.code; - } backslash_r; - - lookup backslash_v { - ignore sub backslash backslash' v'; - ignore sub backslash' v' v; - sub backslash' v' by backslash_v.code; - } backslash_v; - - lookup hyphen_less { - ignore sub hyphen hyphen' less'; - ignore sub hyphen' less' less; - sub hyphen' less' by hyphen_less.code; - } hyphen_less; - - lookup backslash_n { - ignore sub backslash backslash' n'; - ignore sub backslash' n' n; - sub backslash' n' by backslash_n.code; - } backslash_n; - - lookup colon_colon { - ignore sub colon colon' colon'; - ignore sub colon' colon' colon; - sub colon' colon' by colon_colon.code; - } colon_colon; - - lookup exclam_equal { - ignore sub exclam exclam' equal'; - ignore sub exclam' equal' equal; - sub exclam' equal' by exclam_equal.code; - } exclam_equal; - - lookup underscore_underscore { - ignore sub underscore underscore' underscore'; - ignore sub underscore' underscore' underscore; - sub underscore' underscore' by underscore_underscore.code; - } underscore_underscore; - - lookup equal_equal { - ignore sub equal equal' equal'; - ignore sub equal' equal' equal; - sub equal' equal' by equal_equal.code; - } equal_equal; - - lookup greater_hyphen { - ignore sub greater greater' hyphen'; - ignore sub greater' hyphen' hyphen; - sub greater' hyphen' by greater_hyphen.code; - } greater_hyphen; - - lookup hyphen_greater { - ignore sub hyphen hyphen' greater'; - ignore sub hyphen' greater' greater; - sub hyphen' greater' by hyphen_greater.code; - } hyphen_greater; - - lookup slash_slash { - ignore sub slash slash' slash'; - ignore sub slash' slash' slash; - sub slash' slash' by slash_slash.code; - } slash_slash; - - lookup asterisk_asterisk { - ignore sub asterisk asterisk' asterisk'; - ignore sub asterisk' asterisk' asterisk; - sub asterisk' asterisk' by asterisk_asterisk.code; - } asterisk_asterisk; - - lookup f_quotesingle { - ignore sub f f' quotesingle'; - ignore sub f' quotesingle' quotesingle; - sub f' quotesingle' by f_quotesingle.code; - } f_quotesingle; - - lookup greater_greater { - ignore sub greater greater' greater'; - ignore sub greater' greater' greater; - sub greater' greater' by greater_greater.code; - } greater_greater; - - lookup slash_equal { - ignore sub slash slash' equal'; - ignore sub slash' equal' equal; - sub slash' equal' by slash_equal.code; - } slash_equal; - - lookup plus_plus { - ignore sub plus plus' plus'; - ignore sub plus' plus' plus; - sub plus' plus' by plus_plus.code; - } plus_plus; - - lookup asterisk_slash { - ignore sub asterisk asterisk' slash'; - ignore sub asterisk' slash' slash; - sub asterisk' slash' by asterisk_slash.code; - } asterisk_slash; - - lookup slash_asterisk { - ignore sub slash slash' asterisk'; - ignore sub slash' asterisk' asterisk; - sub slash' asterisk' by slash_asterisk.code; - } slash_asterisk; - - lookup equal_greater { - ignore sub equal equal' greater'; - ignore sub equal' greater' greater; - sub equal' greater' by equal_greater.code; - } equal_greater; - - lookup less_equal { - ignore sub less less' equal'; - ignore sub less' equal' equal; - sub less' equal' by less_equal.code; - } less_equal; - - lookup question_question { - ignore sub question question' question'; - ignore sub question' question' question; - sub question' question' by question_question.code; - } question_question; - - lookup greater_equal { - ignore sub greater greater' equal'; - ignore sub greater' equal' equal; - sub greater' equal' by greater_equal.code; - } greater_equal; - - lookup ampersand_ampersand { - ignore sub ampersand ampersand' ampersand'; - ignore sub ampersand' ampersand' ampersand; - sub ampersand' ampersand' by ampersand_ampersand.code; - } ampersand_ampersand; - - lookup asterisk_equal { - ignore sub asterisk asterisk' equal'; - ignore sub asterisk' equal' equal; - sub asterisk' equal' by asterisk_equal.code; - } asterisk_equal; - - lookup backslash_t { - ignore sub backslash backslash' t'; - ignore sub backslash' t' t; - sub backslash' t' by backslash_t.code; - } backslash_t; - - lookup hyphen_hyphen { - ignore sub hyphen hyphen' hyphen'; - ignore sub hyphen' hyphen' hyphen; - sub hyphen' hyphen' by hyphen_hyphen.code; - } hyphen_hyphen; - - lookup bar_bar { - ignore sub bar bar' bar'; - ignore sub bar' bar' bar; - sub bar' bar' by bar_bar.code; - } bar_bar; - - lookup less_hyphen { - ignore sub less less' hyphen'; - ignore sub less' hyphen' hyphen; - sub less' hyphen' by less_hyphen.code; - } less_hyphen; - - lookup less_less { - ignore sub less less' less'; - ignore sub less' less' less; - sub less' less' by less_less.code; - } less_less; - - lookup exclam_exclam { - ignore sub exclam exclam' exclam'; - ignore sub exclam' exclam' exclam; - sub exclam' exclam' by exclam_exclam.code; - } exclam_exclam; - - lookup numbersign_numbersign { - ignore sub numbersign numbersign' numbersign'; - ignore sub numbersign' numbersign' numbersign; - sub numbersign' numbersign' by numbersign_numbersign.code; - } numbersign_numbersign; - - lookup plus_equal { - ignore sub plus plus' equal'; - ignore sub plus' equal' equal; - sub plus' equal' by plus_equal.code; - } plus_equal; - - lookup dollar_braceleft { - ignore sub dollar dollar' braceleft'; - ignore sub dollar' braceleft' braceleft; - sub dollar' braceleft' by dollar_braceleft.code; - } dollar_braceleft; - - lookup minus_equal { - ignore sub minus minus' equal'; - ignore sub minus' equal' equal; - sub minus' equal' by minus_equal.code; - } minus_equal; - - lookup backslash_b { - ignore sub backslash backslash' b'; - ignore sub backslash' b' b; - sub backslash' b' by backslash_b.code; - } backslash_b; - - lookup question_period { - ignore sub question question' period'; - ignore sub question' period' period; - sub question' period' by question_period.code; - } question_period; - - lookup question_colon { - ignore sub question question' colon'; - ignore sub question' colon' colon; - sub question' colon' by question_colon.code; - } question_colon; - -} dlig; diff --git a/font-data/features/frac.fea b/font-data/features/frac.fea deleted file mode 100644 index a4b0087..0000000 --- a/font-data/features/frac.fea +++ /dev/null @@ -1,11 +0,0 @@ -feature frac { - sub one [slash fraction] four by onequarter; - sub one [slash fraction] two by onehalf; - sub three [slash fraction] four by threequarters; - sub one [slash fraction] three by onethird; - sub two [slash fraction] three by twothirds; - sub one [slash fraction] eight by oneeighth; - sub three [slash fraction] eight by threeeighths; - sub five [slash fraction] eight by fiveeighths; - sub seven [slash fraction] eight by seveneighths; -} frac; \ No newline at end of file diff --git a/font-data/features/liga.fea b/font-data/features/liga.fea deleted file mode 100644 index 7195d69..0000000 --- a/font-data/features/liga.fea +++ /dev/null @@ -1,6 +0,0 @@ -feature liga { - sub f i.italic by fi; - sub f f i.italic by f_f_i; - sub f l.italic by fl; - sub f f l.italic by f_f_l; -} liga; diff --git a/font-data/features/numr_dnom_supr_infr.fea b/font-data/features/numr_dnom_supr_infr.fea deleted file mode 100644 index 3069120..0000000 --- a/font-data/features/numr_dnom_supr_infr.fea +++ /dev/null @@ -1,28 +0,0 @@ -@numbers_dflt = [zero one two three four five six seven eight nine]; # 10 items -@numbers_sups = [zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior]; # 10 items -@numbers_sinf = [zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior]; # 10 items -@numbers_numr = [zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior]; # 10 items -@numbers_dnom = [zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior]; # 10 items -# @numbers_numr = [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr]; # 10 items -# @numbers_dnom = [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom]; # 10 items - - -feature numr { - # numerators - sub @numbers_dflt by @numbers_numr; -} numr; - -feature dnom { - # denominators - sub @numbers_dflt by @numbers_dnom; -} dnom; - -feature sups { - # superiors - sub @numbers_dflt by @numbers_sups; -} sups; - -feature sinf { - # inferiors - sub @numbers_dflt by @numbers_sinf; -} sinf; \ No newline at end of file diff --git a/font-data/features/ordn.fea b/font-data/features/ordn.fea deleted file mode 100644 index 63295c6..0000000 --- a/font-data/features/ordn.fea +++ /dev/null @@ -1,4 +0,0 @@ -feature ordn { - # ordinals - sub [a o] by [ordfeminine ordmasculine]; -} ordn; \ No newline at end of file diff --git a/font-data/features/pnum.fea b/font-data/features/pnum.fea deleted file mode 100644 index 6c22309..0000000 --- a/font-data/features/pnum.fea +++ /dev/null @@ -1,3 +0,0 @@ -feature pnum { - sub one by one.sans; -} pnum; \ No newline at end of file diff --git a/font-data/features/ss0x.fea b/font-data/features/ss0x.fea deleted file mode 100644 index c99eaac..0000000 --- a/font-data/features/ss0x.fea +++ /dev/null @@ -1,176 +0,0 @@ -@dfltA = [a aacute abreve abreveacute abrevedot abrevegrave abrevehook abrevetilde acircumflex acircumflexacute acircumflexdot acircumflexgrave acircumflexhook acircumflextilde adieresis adotbelow agrave agravedbl ahook ainvertedbreve amacron aogonek aring aringacute atilde ]; -@italicA = [a.italic aacute.italic abreve.italic abreveacute.italic abrevedot.italic abrevegrave.italic abrevehook.italic abrevetilde.italic acircumflex.italic acircumflexacute.italic acircumflexdot.italic acircumflexgrave.italic acircumflexhook.italic acircumflextilde.italic adieresis.italic adotbelow.italic agrave.italic agravedbl.italic ahook.italic ainvertedbreve.italic amacron.italic aogonek.italic aring.italic aringacute.italic atilde.italic ]; -@simpleA = [a.simple aacute.simple abreve.simple abreveacute.simple abrevedot.simple abrevegrave.simple abrevehook.simple abrevetilde.simple acircumflex.simple acircumflexacute.simple acircumflexdot.simple acircumflexgrave.simple acircumflexhook.simple acircumflextilde.simple adieresis.simple adotbelow.simple agrave.simple agravedbl.simple ahook.simple ainvertedbreve.simple amacron.simple aogonek.simple aring.simple aringacute.simple atilde.simple ]; - -feature ss01 { - featureNames { - # MS, unicode, English - name "Single-story \2018a\2019"; - # Apple, roman, unspecified - name 1 "Single-story \D4a\D5"; - }; - sub @dfltA by @simpleA; -} ss01; - -@dfltG = [g gbreve gcaron gcircumflex gcommaaccent gdotaccent gmacron ]; -@italicG = [g.italic gbreve.italic gcaron.italic gcircumflex.italic gcommaaccent.italic gdotaccent.italic gmacron.italic ]; -@simpleG = [g.simple gbreve.simple gcaron.simple gcircumflex.simple gcommaaccent.simple gdotaccent.simple gmacron.simple ]; - -feature ss02 { - featureNames { - # MS, unicode, English - name "Single-story \2018g\2019"; - # Apple, roman, unspecified - name 1 "Single-story \D4g\D5"; - }; - sub @dfltG by @simpleG; - sub g.mono by g.simple; -} ss02; - -feature ss03 { - featureNames { - # MS, unicode, English - name "Simplified Mono \2018f\2019"; - # Apple, roman, unspecified - name 1 "Simplified Mono \D4f\D5"; - }; - sub f by f.simple; - sub f.mono by f.simple; -} ss03; - -@sansI = [i iacute ibreve icircumflex idieresis idieresisacute idotbelow igrave igravedbl ihook iinvertedbreve imacron iogonek itilde ]; -@italI = [i.italic iacute.italic ibreve.italic icircumflex.italic idieresis.italic idieresisacute.italic idotbelow.italic igrave.italic igravedbl.italic ihook.italic iinvertedbreve.italic imacron.italic iogonek.italic itilde.italic]; -@smplI = [i.simple iacute.simple ibreve.simple icircumflex.simple idieresis.simple idieresisacute.simple idotbelow.simple igrave.simple igravedbl.simple ihook.simple iinvertedbreve.simple imacron.simple iogonek.simple itilde.simple]; -@monoI = [i.mono iacute.mono ibreve.mono icircumflex.mono idieresis.mono idieresisacute.mono idotbelow.mono igrave.mono igravedbl.mono ihook.mono iinvertedbreve.mono imacron.mono iogonek.mono itilde.mono ]; - -feature ss04 { - featureNames { - # MS, unicode, English - name "Simplified Mono \2018i\2019"; - # Apple, roman, unspecified - name 1 "Simplified Mono \D4i\D5"; - }; - sub @sansI by @smplI; - sub @monoI by @smplI; - sub fi by f i.simple; -} ss04; - -# TODO: add /lcaron -# TODO: update l italic rules -@sansL = [l lacute lcaron lcommaaccent ldot ldotbelow llinebelow lslash ]; -@monoL = [l.mono lacute.mono lcaron.mono lcommaaccent.mono ldot.mono ldotbelow.mono llinebelow.mono lslash.mono ]; -@italL = [l.italic lacute.italic lcaron.italic lcommaaccent.italic ldot.italic ldotbelow.italic llinebelow.italic lslash.italic ]; -@simpleL = [l.simple lacute.simple lcaron.simple lcommaaccent.simple ldot.simple ldotbelow.simple llinebelow.simple lslash.simple ]; - -feature ss05 { - featureNames { - # MS, unicode, English - name "Simplified Mono \2018l\2019"; - # Apple, roman, unspecified - name 1 "Simplified Mono \D4l\D5"; - }; - sub @sansL by @simpleL; - sub @monoL by @simpleL; -} ss05; - -@sansR = [r racute rcaron rcommaaccent rinvertedbreve rgravedbl rdotbelow rlinebelow ]; -@monoR = [r.mono racute.mono rcaron.mono rcommaaccent.mono rinvertedbreve.mono rgravedbl.mono rdotbelow.mono rlinebelow.mono ]; -@italR = [r.italic racute.italic rcaron.italic rcommaaccent.italic rinvertedbreve.italic rgravedbl.italic rdotbelow.italic rlinebelow.italic ]; -@simpleR = [r.simple racute.simple rcaron.simple rcommaaccent.simple rinvertedbreve.simple rgravedbl.simple rdotbelow.simple rlinebelow.simple ]; - -feature ss06 { - featureNames { - # MS, unicode, English - name "Simplified Mono \2018r\2019"; - # Apple, roman, unspecified - name 1 "Simplified Mono \D4r\D5"; - }; - sub @sansR by @simpleR; - sub @monoR by @simpleR; -} ss06; - -@dfltCapL = [L Lacute Lcommaaccent Lcaron Ldotbelow Llinebelow Lslash ]; -@sansCapL = [L.sans Lacute.sans Lcommaaccent.sans Lcaron.sans Ldotbelow.sans Llinebelow.sans Lslash.sans ]; - -@dfltCapZ = [Z Zacute Zdotaccent Zcaron Zdotbelow ]; -@sansCapZ = [Z.sans Zacute.sans Zdotaccent.sans Zcaron.sans Zdotbelow.sans ]; - -feature ss07 { - featureNames { - # MS, unicode, English - name "No-serif \2018L\2019 & \2018Z\2019"; - # Apple, roman, unspecified - name 1 "No-serif \2018L\2019 & \D4Z\D5"; - }; - sub @dfltCapL by @sansCapL; - sub @dfltCapZ by @sansCapZ; - sub z.italic by z; -} ss07; - -feature ss08 { - featureNames { - # MS, unicode, English - name "Simplified Mono \2018at\2019"; - # Apple, roman, unspecified - name 1 "Simplified Mono \D4at\D5"; - }; - sub at by at.alt; - sub at.case by at.alt_case; -} ss08; - -# TODO: change names of \2018s\2019x.ss01', etc, in sources - -feature ss09 { - featureNames { - # MS, unicode, English - name "Simplified Six & Nine"; - # Apple, roman, unspecified - name 1 "Simplified Six & Nine"; - }; - sub six by six.ss01; - sub sixsuperior by sixsuperior.ss01; - sub sixinferior by sixinferior.ss01; - sub nine by nine.ss01; - sub ninesuperior by ninesuperior.ss01; - sub nineinferior by nineinferior.ss01; -} ss09; - -@dfltZero = [zero zerosuperior zeroinferior zeroinferior.afrc zerosuperior.afrc ]; -@sansZero = [zero.sans zerosuperior.sans zeroinferior.sans zeroinferiorsans.afrc zerosuperiorsans.afrc ]; -@slshZero = [zero.slash zerosuperior.slash zeroinferior.slash zeroinferiorslash.afrc zeroinferiorslash.afrc ]; -@dttdZero = [zero.dotted zerosuperior.dotted zeroinferior.dotted zeroinferiordotted.afrc zeroinferiordotted.afrc ]; - -# TODO: add dotted zero as ss10 -feature ss10 { - featureNames { - # MS, unicode, English - name "Dotted Zero"; - # Apple, roman, unspecified - name 1 "Dotted Zero"; - }; - sub @sansZero by @dttdZero; - sub @dfltZero by @dttdZero; -} ss10; - -feature ss11 { - featureNames { - # MS, unicode, English - name "Simplified One"; - # Apple, roman, unspecified - name 1 "Simplified One"; - }; - sub one by one.simple; - sub one.sans by one.simple; -} ss11; - -feature ss20 { - featureNames { - # MS, unicode, English - name "Slashed Zero"; - # Apple, roman, unspecified - name 1 "Slashed Zero"; - }; - #sub @sansZero by @slshZero; - sub @dfltZero by @slshZero; - #sub @dfltZero by @sansZero; -} ss20; \ No newline at end of file diff --git a/font-data/features/titl.fea b/font-data/features/titl.fea deleted file mode 100644 index bf10f39..0000000 --- a/font-data/features/titl.fea +++ /dev/null @@ -1,3 +0,0 @@ -feature titl { - sub Q by Q.titl; -} titl; \ No newline at end of file diff --git a/font-data/features/zero.fea b/font-data/features/zero.fea deleted file mode 100644 index 7e4860b..0000000 --- a/font-data/features/zero.fea +++ /dev/null @@ -1,13 +0,0 @@ -@dfltZero = [zero zerosuperior zeroinferior zeroinferior.afrc zerosuperior.afrc ]; -@sansZero = [zero.sans zerosuperior.sans zeroinferior.sans zeroinferiorsans.afrc zerosuperiorsans.afrc ]; -@slshZero = [zero.slash zerosuperior.slash zeroinferior.slash zeroinferiorslash.afrc zeroinferiorslash.afrc ]; - - - -feature zero { - #sub zero.sans by zero; - #sub zero by zero.ss03; - #sub zero.sans by zero.ss03; - #sub @sansZero by @slshZero; - sub @dfltZero by @slshZero; # may not work in variable font -} zero; \ No newline at end of file diff --git a/font-data/img/Recursive_VF_1.074.ttf b/font-data/img/Recursive_VF_1.074.ttf deleted file mode 100644 index b7017bf..0000000 Binary files a/font-data/img/Recursive_VF_1.074.ttf and /dev/null differ diff --git a/font-data/img/recursive-ot_features.png b/font-data/img/recursive-ot_features.png index a39d881..8936132 100644 Binary files a/font-data/img/recursive-ot_features.png and b/font-data/img/recursive-ot_features.png differ diff --git a/fonts/RecMonoCasual/RecMonoCasual-Bold-1.085.ttf b/fonts/RecMonoCasual/RecMonoCasual-Bold-1.085.ttf index 3523ad1..92eb36e 100644 Binary files a/fonts/RecMonoCasual/RecMonoCasual-Bold-1.085.ttf and b/fonts/RecMonoCasual/RecMonoCasual-Bold-1.085.ttf differ diff --git a/fonts/RecMonoCasual/RecMonoCasual-BoldItalic-1.085.ttf b/fonts/RecMonoCasual/RecMonoCasual-BoldItalic-1.085.ttf index 568c87f..28fd072 100644 Binary files a/fonts/RecMonoCasual/RecMonoCasual-BoldItalic-1.085.ttf and b/fonts/RecMonoCasual/RecMonoCasual-BoldItalic-1.085.ttf differ diff --git a/fonts/RecMonoCasual/RecMonoCasual-Italic-1.085.ttf b/fonts/RecMonoCasual/RecMonoCasual-Italic-1.085.ttf index b2ad9a3..ab9b272 100644 Binary files a/fonts/RecMonoCasual/RecMonoCasual-Italic-1.085.ttf and b/fonts/RecMonoCasual/RecMonoCasual-Italic-1.085.ttf differ diff --git a/fonts/RecMonoCasual/RecMonoCasual-Regular-1.085.ttf b/fonts/RecMonoCasual/RecMonoCasual-Regular-1.085.ttf index 2ae620f..b618529 100644 Binary files a/fonts/RecMonoCasual/RecMonoCasual-Regular-1.085.ttf and b/fonts/RecMonoCasual/RecMonoCasual-Regular-1.085.ttf differ diff --git a/fonts/RecMonoDuotone/RecMonoDuotone-Bold-1.085.ttf b/fonts/RecMonoDuotone/RecMonoDuotone-Bold-1.085.ttf index 554d994..8b04680 100644 Binary files a/fonts/RecMonoDuotone/RecMonoDuotone-Bold-1.085.ttf and b/fonts/RecMonoDuotone/RecMonoDuotone-Bold-1.085.ttf differ diff --git a/fonts/RecMonoDuotone/RecMonoDuotone-BoldItalic-1.085.ttf b/fonts/RecMonoDuotone/RecMonoDuotone-BoldItalic-1.085.ttf index e51a5b2..a49507d 100644 Binary files a/fonts/RecMonoDuotone/RecMonoDuotone-BoldItalic-1.085.ttf and b/fonts/RecMonoDuotone/RecMonoDuotone-BoldItalic-1.085.ttf differ diff --git a/fonts/RecMonoDuotone/RecMonoDuotone-Italic-1.085.ttf b/fonts/RecMonoDuotone/RecMonoDuotone-Italic-1.085.ttf index 12c25d6..422e686 100644 Binary files a/fonts/RecMonoDuotone/RecMonoDuotone-Italic-1.085.ttf and b/fonts/RecMonoDuotone/RecMonoDuotone-Italic-1.085.ttf differ diff --git a/fonts/RecMonoDuotone/RecMonoDuotone-Regular-1.085.ttf b/fonts/RecMonoDuotone/RecMonoDuotone-Regular-1.085.ttf index 1cfb18f..6c70b56 100644 Binary files a/fonts/RecMonoDuotone/RecMonoDuotone-Regular-1.085.ttf and b/fonts/RecMonoDuotone/RecMonoDuotone-Regular-1.085.ttf differ diff --git a/fonts/RecMonoLinear/RecMonoLinear-Bold-1.085.ttf b/fonts/RecMonoLinear/RecMonoLinear-Bold-1.085.ttf index 1a32173..3531b95 100644 Binary files a/fonts/RecMonoLinear/RecMonoLinear-Bold-1.085.ttf and b/fonts/RecMonoLinear/RecMonoLinear-Bold-1.085.ttf differ diff --git a/fonts/RecMonoLinear/RecMonoLinear-BoldItalic-1.085.ttf b/fonts/RecMonoLinear/RecMonoLinear-BoldItalic-1.085.ttf index ea24ba4..4bfacb5 100644 Binary files a/fonts/RecMonoLinear/RecMonoLinear-BoldItalic-1.085.ttf and b/fonts/RecMonoLinear/RecMonoLinear-BoldItalic-1.085.ttf differ diff --git a/fonts/RecMonoLinear/RecMonoLinear-Italic-1.085.ttf b/fonts/RecMonoLinear/RecMonoLinear-Italic-1.085.ttf index 0ba68a5..a50983b 100644 Binary files a/fonts/RecMonoLinear/RecMonoLinear-Italic-1.085.ttf and b/fonts/RecMonoLinear/RecMonoLinear-Italic-1.085.ttf differ diff --git a/fonts/RecMonoLinear/RecMonoLinear-Regular-1.085.ttf b/fonts/RecMonoLinear/RecMonoLinear-Regular-1.085.ttf index ba6baff..329e99c 100644 Binary files a/fonts/RecMonoLinear/RecMonoLinear-Regular-1.085.ttf and b/fonts/RecMonoLinear/RecMonoLinear-Regular-1.085.ttf differ diff --git a/fonts/RecMonoSemicasual/RecMonoSemicasual-Bold-1.085.ttf b/fonts/RecMonoSemicasual/RecMonoSemicasual-Bold-1.085.ttf index b400b62..c42c07e 100644 Binary files a/fonts/RecMonoSemicasual/RecMonoSemicasual-Bold-1.085.ttf and b/fonts/RecMonoSemicasual/RecMonoSemicasual-Bold-1.085.ttf differ diff --git a/fonts/RecMonoSemicasual/RecMonoSemicasual-BoldItalic-1.085.ttf b/fonts/RecMonoSemicasual/RecMonoSemicasual-BoldItalic-1.085.ttf index 8df2901..9d7e793 100644 Binary files a/fonts/RecMonoSemicasual/RecMonoSemicasual-BoldItalic-1.085.ttf and b/fonts/RecMonoSemicasual/RecMonoSemicasual-BoldItalic-1.085.ttf differ diff --git a/fonts/RecMonoSemicasual/RecMonoSemicasual-Italic-1.085.ttf b/fonts/RecMonoSemicasual/RecMonoSemicasual-Italic-1.085.ttf index 8fe4e7a..6a5c48e 100644 Binary files a/fonts/RecMonoSemicasual/RecMonoSemicasual-Italic-1.085.ttf and b/fonts/RecMonoSemicasual/RecMonoSemicasual-Italic-1.085.ttf differ diff --git a/fonts/RecMonoSemicasual/RecMonoSemicasual-Regular-1.085.ttf b/fonts/RecMonoSemicasual/RecMonoSemicasual-Regular-1.085.ttf index e06e3ba..2957b7d 100644 Binary files a/fonts/RecMonoSemicasual/RecMonoSemicasual-Regular-1.085.ttf and b/fonts/RecMonoSemicasual/RecMonoSemicasual-Regular-1.085.ttf differ diff --git a/requirements.txt b/requirements.txt index 5e0a437..f12db88 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # to enable all sorts of font manipulation -fonttools==4.17.0 +fonttools==4.39.3 # to check font versions in the build-all shell script font-v==1.0.5 @@ -8,7 +8,7 @@ font-v==1.0.5 opentype-feature-freezer==1.32.2 # to remove components in code ligatures for improved rendering -skia-pathops==0.7.0 +skia-pathops==0.7.4 # to parse YAML config file pyyaml==5.4.1 diff --git a/scripts/build-all.sh b/scripts/build-all.sh index 2c06770..16829e1 100755 --- a/scripts/build-all.sh +++ b/scripts/build-all.sh @@ -4,28 +4,10 @@ set -e -if [ -z "$1" ];then - echo "No argument supplied – font path required" - exit 1 -fi - -fontPath=$1 - -version=$(font-v report $fontPath | tail -1) -release=ArrowType-RecMonoCode-v$version - -echo $release - rm -rf ./fonts configs=$(ls ./premade-configs) for config in $configs; do - python3 scripts/instantiate-code-fonts.py ./premade-configs/$config $fontPath + python3 scripts/instantiate-code-fonts.py ./premade-configs/$config done - -cp -r ./fonts ./$release - -zip $release.zip -r $release -x .DS_* - -rm -rf $release diff --git a/scripts/dlig2calt.py b/scripts/dlig2calt.py index fc02bfb..9eba945 100644 --- a/scripts/dlig2calt.py +++ b/scripts/dlig2calt.py @@ -10,28 +10,6 @@ from argparse import ArgumentParser import pathops -def decomposeAndRemoveOverlap(font, glyphName): - - glyfTable = font["glyf"] - glyphSet = font.getGlyphSet() - - # record TTGlyph outlines without components - dcPen = DecomposingRecordingPen(glyphSet) - glyphSet[glyphName].draw(dcPen) - - # replay recording onto a skia-pathops Path - path = pathops.Path() - pathPen = path.getPen() - dcPen.replay(pathPen) - - # remove overlaps - path.simplify() - - # create new TTGlyph from Path - ttPen = TTGlyphPen(None) - path.draw(ttPen) - glyfTable[glyphName] = ttPen.glyph() - # codeLigs = {} # probably not needed @@ -50,8 +28,6 @@ def dlig2calt(fontPath, inplace=False): for glyphName in font.getGlyphNames(): if font['hmtx'][glyphName][0] > unitWidth: - decomposeAndRemoveOverlap(font, glyphName) - # set width to space (e.g. 600), then offset left side to be negative oldWidth = font['hmtx'][glyphName][0] oldLSB = font['hmtx'][glyphName][1] @@ -60,15 +36,17 @@ def dlig2calt(fontPath, inplace=False): font['hmtx'].__setitem__(glyphName, (unitWidth, newLSB)) # Adjust coordinates in glyf table - coords = font['glyf'][glyphName].coordinates - phantoms = font['glyf'].getPhantomPoints(glyphName, font) + coords = font['glyf']._getCoordinatesAndControls(glyphName, font['hmtx'].metrics)[0] + phantoms = font['glyf']._getPhantomPoints(glyphName, font['hmtx'].metrics) + + # take off last four items of coords to allow adjusted phantoms to be handled separately, then combined + coords = coords[:len(coords)-4] adjustedCoords = [(x-widthDiff, y) for x, y in coords] adjustedPhantoms = [(0,0), (600,0), phantoms[-2], phantoms[-1]] newCoords = adjustedCoords+adjustedPhantoms - # print(glyphName, newCoords, font) # DEBUGGING - font['glyf'].setCoordinates(glyphName, newCoords, font) + font['glyf']._setCoordinates(glyphName, newCoords, font['hmtx'].metrics) # add new feature code, using calt rather than dlig diff --git a/scripts/instantiate-code-fonts.py b/scripts/instantiate-code-fonts.py index 1beb61c..f43a426 100644 --- a/scripts/instantiate-code-fonts.py +++ b/scripts/instantiate-code-fonts.py @@ -4,11 +4,12 @@ Run from the directory above, pointing to a config and a variable font path, e.g. - python3 scripts/instantiate-code-fonts.py + python3 scripts/instantiate-code-fonts.py """ import os import pathlib +import glob from fontTools import ttLib import subprocess import shutil @@ -17,6 +18,7 @@ import logging import ttfautohint from fontTools.varLib import instancer +from fontTools.varLib.instancer import OverlapMode from opentype_feature_freezer import cli as pyftfeatfreeze from dlig2calt import dlig2calt from mergePowerlineFont import mergePowerlineFont @@ -35,9 +37,7 @@ try: fontPath = sys.argv[2] # allows custom path to be passed in, helpful for generating new release from arrowtype/recursive dir except IndexError: - fontPath = "font-data/Recursive_VF_1.085.ttf" # allows script to run without font path passed in. Update this to find whatever the latest Recursive file is - - + fontPath = glob.glob('./font-data/Recursive_VF_*.ttf')[0] # allows script to run without font path passed in. # read yaml config with open(configPath) as file: @@ -101,6 +101,7 @@ def splitFont( "slnt": fontOptions["Fonts"][instance]["slnt"], "CRSV": fontOptions["Fonts"][instance]["CRSV"], }, + overlap=OverlapMode.REMOVE ) # UPDATE NAME ID 6, postscript name