1# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg) [![Patreon](https://img.shields.io/badge/donate-patreon-red.svg)](https://www.patreon.com/user?u=5787198) [![Donate](https://img.shields.io/badge/donate-alipay-orange.svg)](http://7xpdnl.dl1.z0.glb.clouddn.com/T1v4huXnleXXXXXXXX.png) 2 3Coders’ typeface, built from code. 4 5![](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/preview-all.png) 6 7## Installation 8 9Quit your editor/program. Unzip and open the folder. 10 11* **[Instructions for Windows](https://www.microsoft.com/en-us/Typography/TrueTypeInstall.aspx)** 12* **[Instructions for macOS](http://support.apple.com/kb/HT2509)** 13 * Standard distribution in Homebrew: `brew tap caskroom/fonts && brew cask install font-iosevka` (May be outdated). 14 * Customizable install using Homebrew: see [robertgzr/homebrew-tap](https://github.com/robertgzr/homebrew-tap). 15* **Linux** : Copy the TTF files to your fonts directory → Run `sudo fc-cache`. 16 - Arch Linux users can install the font from the AUR [here](https://aur.archlinux.org/packages/ttf-iosevka) using an AUR wrapper or by doing it manually. [All variants](https://aur.archlinux.org/packages/?O=0&SeB=nd&K=ttf-iosevka&SB=n&SO=a&PP=50&do_Search=Go). 17 - Void Linux users can install the font with `xbps-install font-iosevka`. 18* **FreeBSD**: The font can be installed with `pkg install iosevka`. 19 20## Weights, Variants and OpenType features 21 22The typeface contains 9 weights (Thin to Heavy) alongside with both italic and oblique versions, with the same metrics as the regular one. 23 24![Weights sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/weights.png) 25 26All versions include the same ranges of characters: Latin letters, Greek letters (including Polytonic), some Cyrillic letters, IPA symbols and common punctuations and some symbols. You can check out the full list [here](http://be5invis.github.io/Iosevka/specimen.html). 27 28![Languages Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/languages.png) 29 30Iosevka supports accessing all letter variants using OpenType features. 31 32![Style Sets](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png) 33 34![Character Variants](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/charvars.png) 35 36### Ligations 37 38![Ligations Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/ligations.png) 39 40Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default. 41 42Iosevka supports Language-Specific Ligations, which is the ligation set enabled only under certain languages. These ligation sets are assigned to custom feature tags, like `XHS0`. 43 44## Building from Source 45 46To build Iosevka you should: 47 481. Ensure that [`nodejs`](http://nodejs.org) (≥ 8.4), [`ttfautohint`](http://www.freetype.org/ttfautohint/), [`otfcc`](https://github.com/caryll/otfcc) (≥ 0.9.3). 492. Install necessary libs by `npm install`. If you’ve installed them, upgrade to the latest. 503. `npm run build -- contents:iosevka`. 51 52 53You will find TTFs, as well as WOFF(2) web fonts and one Webfont CSS in the `dist/` directory. 54 55## Build Your Own Style 56 57Since version 2.0, Iosevka would no longer support building via `makefile`. To initialize a custom build, you need: 58 591. Create `private-build-plans.toml` file. 60 612. Add a build plan into `private-build-plans.toml`, following this format: 62 63 ```toml 64 [buildPlans.iosevka-custom] # <iosevka-custom> is your plan name 65 family = "Iosevka Custom" # Font menu family name 66 design = ["common styles"] # Common styles 67 upright = ["upright-only", "styles"] # Upright-only styles 68 italic = ["italic-only", "styles"] # Italic-only styles 69 oblique = ["oblique-only", "styles"] # Oblique-only styles 70 71 # Override default building weights 72 # When buildPlans.<plan name>.weights is absent 73 # All weights would built and mapped to default shape/CSS 74 [buildPlans.iosevka-custom.weights.regular] 75 shape = 400 # Weight for glyph shapes 76 menu = 400 # Weight for menu name 77 css = 400 # Weight for WebFont CSS 78 79 [buildPlans.iosevka-custom.weights.bold] 80 shape = 700 81 menu = 700 82 css = 700 83 84 # Override default building slant sets 85 # Format: <upright|italic|oblique> = <"normal"|"italic"|"oblique"> 86 # When this section is absent, all slants would be built. 87 [buildPlans.iosevka-custom.slants] 88 upright = "normal" 89 italic = "italic" 90 oblique = "oblique" 91 ``` 92 933. Run `npm run build -- contents:<your plan name>` and the built fonts would be available in `dist/`. Aside from `contents:<plan>`, other options are: 94 95 1. `contents:<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Webfont CSS; 96 2. `ttf:<plan>` : TTF; 97 3. `ttf-unhinted:<plan>` : Unhinted TTF only; 98 4. `woff:<plan>` : TTF and WOFF only; 99 5. `woff2:<plan>` : TTF and WOFF2 only; 100 101The current available styles for `design`/`upright`/`italic`/`oblique` options are: 102 103* Styles for general shape: 104 * `sans` : Sans serif (default). 105 * `slab` : Slab serif. 106* Styles related to ligations and spacing: 107 - `term` : Disable ligations and exact monospace. 108 - The font built will not contain ligatures. 109 - All glyphs wider than one letter would be deleted. 110 - In case of your OS or editor cannot handle ligatures correctly, you can disable ligations with it. 111 - `termlig` : Similar to `term`, the font is exact monospace to make `fontconfig` happy, while ligations are still present. 112 - `nolig` : Disable ligation only. 113 - `type` : Make some symbols, like arrows (`→`) and mathematical operators full-width. 114 - `stress-fw` : When included, full-width characters varying form `U+FF00` to `U+FFFF` will be boxed to present a clear distinguish between ASCII and Full-width. 115* All registered `ss##` and `cv##` feature tags, including: 116 * `ss01`~`ss10` : Predefined stylistic sets based on other Monospace fonts. 117 * `cv01`~`cv53` : Standalone character variants. 118* Styles for ligation sets, include: 119 * `ligset-haskell`: Default ligation set would be assigned to Haskell. 120 * `ligset-idris`: Default ligation set would be assigned to Idris. 121 * `ligset-coq`: Default ligation set would be assigned to Coq. 122 * `ligset-elm`: Default ligation set would be assigned to Elm. 123 * `ligset-ml`: Default ligation set would be assigned to ML. 124 * `ligset-fs`: Default ligation set would be assigned to F#. 125 * `ligset-fstar`: Default ligation set would be assigned to F\*. 126 * `ligset-swift`: Default ligation set would be assigned to Swift. 127 * `ligset-purescript`: Default ligation set would be assigned to PureScript. 128* Styles for further customizing default (`calt`) ligation sets. When any of these styles present in your configuration, the `ligset-*` styles would be overridden. 129 * `calt-clear`: Clear the `calt` ligation set. 130 * `calt-center-ops`: Vertically align some of the operators (like `*`) to the center position it is before or after a "center" operator (like `+`); 131 * `calt-arrow`: Enable ligation set that forms arrows; 132 * `calt-arrow2`: Enable ligation for more arrows, like `>>=`; 133 * `calt-html-comment`: Enable ligation for `<!--` and `<!---`; 134 * `calt-eqeq`: Enable ligation for `==` and `===`; 135 * `calt-ineq`: Enable ligation for `<=` and `>=`; 136 * `calt-arrowZALE`: Enable ligation for `<=` to form a left double arrow; 137 * `calt-arrowZAGE`: Enable ligation for `>=` to form a right inverse double arrow; 138 * `calt-exeq`: Enable ligation for `!=` and `!==`; 139 * `calt-slasheq`: Enable ligation for `/=` and `/==`; 140 * `calt-plusplus`: Enable ligation for `++` and further plus-chaining; 141 * `calt-llgg`: Enable ligation for `<<`, `>>` and other angle-bracket chaining; 142 * `calt-trig`: Enable ligation for `<|`, `|>` , `<||`, and other bar-and-angle-bracket symbols; 143 * `calt-dotoper`: Treat dot (`.`) as operator and perform chained centering; 144 * `calt-brst`: Center asterisk in `(*` and `*)`; 145 * `calt-logic`: Enable ligation for `/\` and `\/`; 146 * `calt-colons`: Enable ligation for `::` and `:::` ; 147* Styles for changing the line space (leading): 148 * `leading-750`, `leading-1000`, `leading-1250`, `leading-1500`, `leading-1750`, `leading-2000`: Change the line space. Default is `leading-1250`. 149* Styles for changing Powerline symbols' position: 150 * `powerline-scale-y-750`, `powerline-scale-y-875`, `powerline-scale-y-1000`, `powerline-scale-y-1125`, `powerline-scale-y-1250`, `powerline-scale-y-1375`, `powerline-scale-y-1500`: Resize the Powerline symbols vertically, from 75% to 150%. 151 * `powerline-scale-x-750`, `powerline-scale-x-875`, `powerline-scale-x-1000`, `powerline-scale-x-1125`, `powerline-scale-x-1250`, `powerline-scale-x-1375`, `powerline-scale-x-1500`: Resize the Powerline symbols horizontally, from 75% to 150%. 152 * `powerline-shift-y-n500`, `powerline-shift-y-n450`, `powerline-shift-y-n400`, `powerline-shift-y-n350`, `powerline-shift-y-n300`, `powerline-shift-y-n250`, `powerline-shift-y-n200`, `powerline-shift-y-n150`, `powerline-shift-y-n100`, `powerline-shift-y-n50`, `powerline-shift-y-0`, `powerline-shift-y-p50`, `powerline-shift-y-p100`, `powerline-shift-y-p150`, `powerline-shift-y-p200`, `powerline-shift-y-p250`, `powerline-shift-y-p300`, `powerline-shift-y-p350`, `powerline-shift-y-p400`, `powerline-shift-y-p450`, `powerline-shift-y-p500`: Shift the Powerline symbols vertically, from -0.5em to +0.5em. 153 * `powerline-shift-x-n500`, `powerline-shift-x-n450`, `powerline-shift-x-n400`, `powerline-shift-x-n350`, `powerline-shift-x-n300`, `powerline-shift-x-n250`, `powerline-shift-x-n200`, `powerline-shift-x-n150`, `powerline-shift-x-n100`, `powerline-shift-x-n50`, `powerline-shift-x-0`, `powerline-shift-x-p50`, `powerline-shift-x-p100`, `powerline-shift-x-p150`, `powerline-shift-x-p200`, `powerline-shift-x-p250`, `powerline-shift-x-p300`, `powerline-shift-x-p350`, `powerline-shift-x-p400`, `powerline-shift-x-p450`, `powerline-shift-x-p500`: Shift the Powerline symbols horizontally, from -0.5em to +0.5em. 154* Styles for changing the width: 155 * `expanded`: Expand the width by 10%; 156 * `compressed`: Compress the width by 10%. 157 * NOTE: these styles are highly experimental. Handle with extreme care. 158* Styles for individual characters. They are easy-to-understand names of the `cv##` styles, including: 159 * Styles for letter `l`: 160 * `v-l-hooky` : Hooky `l`. 161 * `v-l-zshaped` : Z-shaped `l`. 162 * `v-l-serifed` : Serifed `l` (default for upright and oblique). 163 * `v-l-italic` : Italic `l` (default for italic). 164 * `v-l-tailed` : `l` with a curved tail. 165 * `v-l-hookybottom` : `l` with a straight tail. 166 * Styles for letter `i`: 167 * `v-i-hooky` : Hooky `i`. 168 * `v-i-zshaped` : Z-shaped `i`. 169 * `v-i-serifed` : Serifed `i` (default for upright and oblique). 170 * `v-i-italic` : Italic `i` (default for italic). 171 * Styles for letter `a`: 172 * `v-a-doublestorey` : Double-storey `a` (default for upright and oblique). 173 * `v-a-singlestorey` : Single-storey `a` (default for italic). 174 * Styles for letter `f`: 175 * `v-f-straight`: `f` without bottom hook (default for upright and oblique). 176 * `v-f-tailed`: `f` with a leftward bottom hook (default for italic). 177 * Styles for letter `g`: 178 * `v-g-doublestorey` : Double-storey `g` (default for upright and oblique). 179 * `v-g-singlestorey` : Single-storey `g` (default for italic). 180 * `v-g-opendoublestorey` : Open Double-storey `g`. 181 * Styles for letter `m`: 182 * `v-m-longleg` : `m` with long middle leg (default). 183 * `v-m-shortleg` : `m` with shorter middle leg. 184 * Styles for letter `t`: 185 * `v-t-standard` : Standard `t` shape (default). 186 * `v-t-cross` : Futura-like `t` shape. 187 * Styles for letter `Q`: 188 * `v-q-taily` : `Q` with a curly tail (default). 189 * `v-q-straight` : `Q` with a straight tail in the old versions. 190 * Styles for letter `y`: 191 * `v-y-straight`: More-straight letter `y`. 192 * `v-y-curly`: Curly, cursive-like `y`. 193 * Styles for zero (`0`): 194 * `v-zero-slashed` : Slashed Zero `0` (default). 195 * `v-zero-dotted` : Dotted Zero `0`. 196 * `v-zero-unslashed` : O-like `0`. 197 * Styles for one (`1`) 198 * `v-one-serifed` : `1` with bottom serif (default for Slab). 199 * `v-one-hooky` : `1` without bottom serif (default for Sans). 200 * Styles for three (`3`): 201 * `v-three-flattop` : Flat top `3` (Like Museo Sans / Montserrat). 202 * `v-three-twoarks` : Arched top `3` (default). 203 * Styles for ASCII tilde (`~`), asterisk (`*`), paragraph(`¶`), underscore (`_`) and ASCII Caret (`^`): 204 * `v-tilde-high` : Higher tilde `~`. 205 * `v-tilde-low` : Lower tilde `~` (default). 206 * `v-asterisk-high` : Higher asterisk `*` (default). 207 * `v-asterisk-low` : Lower asterisk `*`. 208 * `v-paragraph-high` : Higher paragraph symbol `¶` (default). 209 * `v-paragraph-low` : Lower paragraph symbol `¶`. 210 * `v-caret-high` : Higher circumflex `^` (default). 211 * `v-caret-low` : Lower circumflex `^`. 212 * `v-underscore-high` : Higher underscore `_` (default). 213 * `v-underscore-low` : Lower underscore `_`. 214 * Styles for At (`@`): 215 * `v-at-long` : The long, three-fold At symbol in Iosevka 1.7.x. 216 * `v-at-fourfold` : The traditional, four-fold At symbol. 217 * `v-at-short` : The shorter, Fira-like At symbol introduced in Iosevka 1.8. 218 * Styles for Eszet (`ß`): 219 * `v-eszet-traditional` : Traditional, Fraktur-like Eszet. 220 * `v-eszet-sulzbacher` : A more modern, beta-like Eszet (default). 221 * Styles for curly brackets (`{}`): 222 * `v-brace-straight` : More straight braces. 223 * `v-brace-curly` : More curly braces (default). 224 * Styles for dollar symbol (`$`): 225 * `v-dollar-open` : Dollar symbol with open contour. 226 * `v-dollar-through` : Dollar symbol with strike-through vertical bar (default). 227 * `v-dollar-opencap` : Dollar symbol with open contour, not exceeding baseline and ascender. 228 * `v-dollar-throughcap` : Dollar symbol with strike-through vertical bar, not exceeding baseline and ascender. 229 * Styles for Number sign (`#`): 230 * `v-numbersign-upright` : Number sign with vertical bars (default). 231 * `v-numbersign-slanted` : Number sign with slanted bars. 232 233## For Chinese and Japanese users... 234 235→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic). 236 237--- 238 239![Family Matrix](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/matrix.png) 240 241## Which font? 242 243### TL;DR 244 245* Pick your font family and then select from the `'complete'` directory. 246 * If you are on Windows pick a font with the `'Windows Compatible'` suffix. 247 * This includes specific tweaks to ensure the font works on Windows, in particular monospace identification and font name length limitations 248 * If you are limited to monospaced fonts (because of your terminal, etc) then pick a font with the `'Mono'` suffix. 249 * This denotes that the Nerd Font glyphs will be monospaced not necessarily that the entire font will be monospaced 250 251### Ligatures 252 253By the *Nerd Font* policy, the variant with the `'Mono'` suffix is not supposed to have any ligatures. 254Use the non-*Mono* variants to have ligatures. 255 256### Explanation 257 258Once you narrow down your font choice of family (`Droid Sans`, `Inconsolata`, etc) and style (`bold`, `italic`, etc) you have 2 main choices: 259 260#### `Option 1: Download already patched font` 261 262 * download an already patched font from the `complete` folder 263 * This is most likely the one you want. It includes **all** of the glyphs from all of the glyph sets. Only caution here is that some fonts have glyphs in the _same_ code point so to include everything some had to be moved to alternate code points. 264 265#### `Option 2: Patch your own font` 266 267 * patch your own variations with the various options provided by the font patcher (see each font's readme for full list of combinations available) 268 * This is the option you want if the font you use is _not_ already included or you want maximum control of what's included 269 * This contains a list of _all permutations_ of the various glyphs. E.g. You want the font with only [Octicons][octicons] or you want the font with just [Font Awesome][font-awesome] and [Devicons][vorillaz-devicons]. The goal is to provide every combination possible in this folder. 270 271 272For more information see: [The FAQ](https://github.com/ryanoasis/nerd-fonts/wiki/FAQ-and-Troubleshooting#which-font) 273 274 275[vim-devicons]:https://github.com/ryanoasis/vim-devicons 276[vorillaz-devicons]:https://vorillaz.github.io/devicons/ 277[font-awesome]:https://github.com/FortAwesome/Font-Awesome 278[octicons]:https://github.com/primer/octicons 279[gabrielelana-pomicons]:https://github.com/gabrielelana/pomicons 280[Seti-UI]:https://atom.io/themes/seti-ui 281[ryanoasis-powerline-extra-symbols]:https://github.com/ryanoasis/powerline-extra-symbols 282[SIL-RFN]:http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web_fonts_and_RFNs#14cbfd4a 283 284