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