# 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) Coders’ typeface, built from code. ![](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/preview-all.png) ## Installation Quit your editor/program. Unzip and open the folder. * **[Instructions for Windows](https://www.microsoft.com/en-us/Typography/TrueTypeInstall.aspx)** * **[Instructions for macOS](http://support.apple.com/kb/HT2509)** * Standard distribution in Homebrew: `brew tap caskroom/fonts && brew cask install font-iosevka` (May be outdated). * Customizable install using Homebrew: see [robertgzr/homebrew-tap](https://github.com/robertgzr/homebrew-tap). * **Linux** : Copy the TTF files to your fonts directory → Run `sudo fc-cache`. - 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). - Void Linux users can install the font with `xbps-install font-iosevka`. * **FreeBSD**: The font can be installed with `pkg install iosevka`. ## Weights, Variants and OpenType features The typeface contains 9 weights (Thin to Heavy) alongside with both italic and oblique versions, with the same metrics as the regular one. ![Weights sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/weights.png) All 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). ![Languages Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/languages.png) Iosevka supports accessing all letter variants using OpenType features. ![Style Sets](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png) ![Character Variants](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/charvars.png) ### Ligations ![Ligations Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/ligations.png) Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default. Iosevka 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`. ## Building from Source To build Iosevka you should: 1. Ensure that [`nodejs`](http://nodejs.org) (≥ 8.4), [`ttfautohint`](http://www.freetype.org/ttfautohint/), [`otfcc`](https://github.com/caryll/otfcc) (≥ 0.9.3). 2. Install necessary libs by `npm install`. If you’ve installed them, upgrade to the latest. 3. `npm run build -- contents:iosevka`. You will find TTFs, as well as WOFF(2) web fonts and one Webfont CSS in the `dist/` directory. ## Build Your Own Style Since version 2.0, Iosevka would no longer support building via `makefile`. To initialize a custom build, you need: 1. Create `private-build-plans.toml` file. 2. Add a build plan into `private-build-plans.toml`, following this format: ```toml [buildPlans.iosevka-custom] # is your plan name family = "Iosevka Custom" # Font menu family name design = ["common styles"] # Common styles upright = ["upright-only", "styles"] # Upright-only styles italic = ["italic-only", "styles"] # Italic-only styles oblique = ["oblique-only", "styles"] # Oblique-only styles # Override default building weights # When buildPlans..weights is absent # All weights would built and mapped to default shape/CSS [buildPlans.iosevka-custom.weights.regular] shape = 400 # Weight for glyph shapes menu = 400 # Weight for menu name css = 400 # Weight for WebFont CSS [buildPlans.iosevka-custom.weights.bold] shape = 700 menu = 700 css = 700 # Override default building slant sets # Format: = <"normal"|"italic"|"oblique"> # When this section is absent, all slants would be built. [buildPlans.iosevka-custom.slants] upright = "normal" italic = "italic" oblique = "oblique" ``` 3. Run `npm run build -- contents:` and the built fonts would be available in `dist/`. Aside from `contents:`, other options are: 1. `contents:` : TTF (Hinted and Unhinted), WOFF(2) and Webfont CSS; 2. `ttf:` : TTF; 3. `ttf-unhinted:` : Unhinted TTF only; 4. `woff:` : TTF and WOFF only; 5. `woff2:` : TTF and WOFF2 only; The current available styles for `design`/`upright`/`italic`/`oblique` options are: * Styles for general shape: * `sans` : Sans serif (default). * `slab` : Slab serif. * Styles related to ligations and spacing: - `term` : Disable ligations and exact monospace. - The font built will not contain ligatures. - All glyphs wider than one letter would be deleted. - In case of your OS or editor cannot handle ligatures correctly, you can disable ligations with it. - `termlig` : Similar to `term`, the font is exact monospace to make `fontconfig` happy, while ligations are still present. - `nolig` : Disable ligation only. - `type` : Make some symbols, like arrows (`→`) and mathematical operators full-width. - `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. * All registered `ss##` and `cv##` feature tags, including: * `ss01`~`ss10` : Predefined stylistic sets based on other Monospace fonts. * `cv01`~`cv53` : Standalone character variants. * Styles for ligation sets, include: * `ligset-haskell`: Default ligation set would be assigned to Haskell. * `ligset-idris`: Default ligation set would be assigned to Idris. * `ligset-coq`: Default ligation set would be assigned to Coq. * `ligset-elm`: Default ligation set would be assigned to Elm. * `ligset-ml`: Default ligation set would be assigned to ML. * `ligset-fs`: Default ligation set would be assigned to F#. * `ligset-fstar`: Default ligation set would be assigned to F\*. * `ligset-swift`: Default ligation set would be assigned to Swift. * `ligset-purescript`: Default ligation set would be assigned to PureScript. * Styles for further customizing default (`calt`) ligation sets. When any of these styles present in your configuration, the `ligset-*` styles would be overridden. * `calt-clear`: Clear the `calt` ligation set. * `calt-center-ops`: Vertically align some of the operators (like `*`) to the center position it is before or after a "center" operator (like `+`); * `calt-arrow`: Enable ligation set that forms arrows; * `calt-arrow2`: Enable ligation for more arrows, like `>>=`; * `calt-html-comment`: Enable ligation for `