Iosevka 
Iosevka is an open-source, sans-serif + slab-serif, monospace + quasi‑proportional typeface family, designed for writing code, using in terminals, and preparing technical documents.
Installation
Quit your editor/program. Unzip and open the folder.
-
Windows: Download the fonts from the Releases, select the font files and right click, then hit “Install”.
- On Windows 10 1809 or newer the default font installation is per-user, and it may cause compatibility issues for some applications, mostly written in Java. To cope with this, right click and select “Install for all users” instead. Ref.
-
- Standard distribution in Homebrew:
brew tap homebrew/cask-fonts brew install --cask font-iosevka - Search for other variants using
brew search font-iosevkaand install what you want. - Customizable install using Homebrew: see robertgzr/homebrew-tap.
- Standard distribution in Homebrew:
-
Linux : Copy the TTF files to your fonts directory → Run
sudo fc-cache.- Arch Linux users can install one of the ttc-iosevka packages.
- Void Linux users can install the font with
xbps-install font-iosevka. - Fedora Linux users can install the font(s) from the copr here. Run
dnf search iosevkato discover available fonts anddnf installto install the chosen one(s).
-
FreeBSD: The font can be installed with
pkg install iosevka. -
OpenBSD: Run
pkg_info -Q iosevkato see which Iosevka packages are available. Usepkg_addto install the chosen package(s).
Features
In the official package, Iosevka provides 6 monospace subfamilies (sans-serif and slab-serif, each in the 3 spacings Default, Term and Fixed) and 2 quasi-proportional subfamilies (Aile (sans-serif) and Etoile (slab-serif)). In all the monospace subfamilies, 9 weights (Thin to Heavy), 2 widths (Normal and Extended), and 3 slopes (Upright, Italic and Oblique) are included. In the quasi-proportional subfamilies, the quantity of widths is reduced to 1.
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.
161 Supported Languages:
Afrikaans, Aghem, Akan, Albanian, Asturian, Asu, Azerbaijani, Bafia, Bambara, Basaa, Basque, Belarusian, Bemba, Bena, Bosnian, Breton, Bulgarian, Catalan, Cebuano, Central Atlas Tamazight, Chechen, Chiga, Colognian, Cornish, Croatian, Czech, Danish, Duala, Dutch, Embu, English, Esperanto, Estonian, Ewe, Ewondo, Faroese, Filipino, Finnish, French, Friulian, Fulah, Galician, Ganda, German, Greek, Gusii, Hausa, Hawaiian, Hungarian, Icelandic, Igbo, Inari Sami, Indonesian, Interlingua, Irish, Italian, Javanese, Jola-Fonyi, Kabuverdianu, Kabyle, Kako, Kalaallisut, Kalenjin, Kamba, Kazakh, Kikuyu, Kinyarwanda, Koyra Chiini, Koyraboro Senni, Kurdish, Kwasio, Kyrgyz, Lakota, Langi, Latvian, Lingala, Lithuanian, Low German, Lower Sorbian, Luba-Katanga, Luo, Luxembourgish, Luyia, Macedonian, Machame, Makhuwa-Meetto, Makonde, Malagasy, Malay, Maltese, Manx, Maori, Masai, Meru, Metaʼ, Mongolian, Morisyen, Mundang, Nama, Ngiemboon, Nigerian Pidgin, North Ndebele, Northern Sami, Norwegian, Norwegian Bokmål, Norwegian Nynorsk, Nuer, Nyankole, Oromo, Ossetic, Polish, Portuguese, Quechua, Romanian, Romansh, Rombo, Rundi, Russian, Rwa, Sakha, Samburu, Sango, Sangu, Scottish Gaelic, Sena, Serbian, Shambala, Shona, Slovak, Slovenian, Soga, Somali, Spanish, Sundanese, Swahili, Swedish, Swiss German, Tachelhit (shi_latn), Taita, Tajik, Tasawaq, Tatar, Teso, Tongan, Turkish, Turkmen, Ukrainian, Upper Sorbian, Uzbek, Vai (vai_latn), Vietnamese, Vunjo, Walser, Welsh, Western Frisian, Wolof, Xhosa, Yangben, Yoruba, Zarma, Zulu
Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
Character Variants
Alongside stylistic sets, Monospace Iosevka can also be configured to cherry-pick variants for each character using OpenType. The variants are shown below. To enable, assign the feature tag to the variant index. For example, setting cv26 to 6 will enable single-storey a.
Caution : Certain software may limit the quantity of OpenType features and drop some of them if the feature list is too long. Please validate your feature configuration to ensure that it worked in your software.
Ligations
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to calt feature, though not all of them are enabled by default.
calt off |
Ligation Off |
![]() |
|
calt |
Default setting in text editors |
![]() |
|
Iosevka supports Language-Specific Ligations, which is the ligation set enabled only under certain languages. These ligation sets are assigned to custom feature tags. To use them, you need to turn off calt and enable the corresponded feature. The feature list is:
Please note that, due to the complex interactions when forming ligations, cherry-picking ligation groups will require a custom Iosevka build. The instructions could be seen below.
Building from Source
To build Iosevka you should:
- Ensure that
nodejs(≥ 12.16.0) andttfautohintare present, and accessible fromPATH. - Run
npm install. This command will install all the NPM dependencies, and will also validate whether external dependencies are present. npm run build -- contents::iosevka.
You will find TTFs, as well as WOFF(2) web fonts and one Webfont CSS in the dist/ directory.
Using a Docker container
A Docker container handling the build environment for you can be found here.
To pull it from Docker Hub and start a standard build of the latest released version, run
docker run -it -v $(pwd):/build avivace/iosevka-build
Fonts files will be placed in the dist folder.
You can provide private-build.plans.toml for a customized build and/or specify the desired release appending -e FONT_VERSION=X.X.X. to the Docker command.
Customized Build
To create a custom build, you need:
-
Create
private-build-plans.tomlfile if absent. -
Add a build plan into
private-build-plans.toml. The configurable properties are described in the following sections. -
Run
npm run build -- contents::<your plan name>and the built fonts would be available indist/. Aside fromcontents::<plan>, other options are:contents::<plan>: TTF (Hinted and Unhinted), WOFF(2) and Web font CSS;ttf::<plan>: TTF;ttf-unhinted::<plan>: Unhinted TTF only;webfont::<plan>: Web fonts only (CSS + WOFF2);woff2::<plan>: WOFF2 only.
Configuring Custom Build
Configuration of build plans are organized under [buildPlans.<plan name>] sections in the private-build-plans.toml. You can use the Customizer to create the build plan, and/or manually edit them, following the instructions below.
Inside the plan, top-level properties include:
family: String, defines the family name of your custom variant.spacing: Optional, String, denotes the spacing of the custom variant. Valid values include:quasi-proportional: The font will become quasi-proportional.term: Make the symbols' width suitable for terminal emulators. Arrows and geometric symbols will become narrower.fontconfig-mono: Applytermspacing changes and further apply changes to be compatible with FontConfig's Mono spacing, which recognizes a font as monospace if and only if its every non-combining characters having the same width. The changes include:- Completely remove wide glyphs. All non-combining glyphs will be exactly the same width.
- As a consequence, the following characters will be removed:
U+27F5LONG LEFTWARDS ARROWU+27F6LONG RIGHTWARDS ARROW
- As a consequence, the following characters will be removed:
- Completely remove wide glyphs. All non-combining glyphs will be exactly the same width.
fixed: Applyfontconfig-monochanges and further remove ligations.
serifs: Optional, String, configures style of serifs.- When set to
slab, the font will be converted into slab-serif. - Otherwise the font will be sans-serif.
- When set to
no-cv-ss: Optional, Boolean, disablescv##andss##OpenType features.no-ligation: Optional, Boolean, disables ligations.export-glyph-names: Optional, Boolean, whether to export glyph names into the fonts. Setting this totruewill increase file footprint, however this is necessary for ligature support in Kitty.
Build plan could have 5 optional subsections: ligations, variants, weights, widths and slopes.
Configuring Ligations
Subsection ligations is used to customize the ligation set assigned to calt OpenType feature. Properties include:
-
inherits: Optional, String, defines the inherited ligation set. When absent, the ligation set will not inherit any other sets. Valid values are:default-calt: Inherit default ligation set.dlig: Default ligation set would be assigned to Discretionary ligatures.clike: Default ligation set would be assigned to C-Like.javascript: Default ligation set would be assigned to JavaScript.php: Default ligation set would be assigned to PHP.ml: Default ligation set would be assigned to ML.fsharp: Default ligation set would be assigned to F#.fstar: Default ligation set would be assigned to F*.haskell: Default ligation set would be assigned to Haskell.idris: Default ligation set would be assigned to Idris.elm: Default ligation set would be assigned to Elm.purescript: Default ligation set would be assigned to PureScript.swift: Default ligation set would be assigned to Swift.coq: Default ligation set would be assigned to Coq.matlab: Default ligation set would be assigned to Matlab.verilog: Default ligation set would be assigned to Verilog.wolfram: Default ligation set would be assigned to Wolfram Language (Mathematica).
-
disablesandenables: Optional, String Array, Cherry-picking ligation groups to be disabled or enabled. Valid values include:center-ops: Vertically align some of the operators (like*) to the center position it is before or after a "center" operator (like+).arrow: Enable ligation set that forms arrows.arrow2: Enable ligation for more arrows, like>>=.trig: Enable ligation for<|,|>,<||, and other bar-and-angle-bracket symbols.eqeqeq: Enable special ligation for===with triple lines.eqeq: Enable ligation for==and===.ineq: Enable ligation for<=and>=.exeqeq: Enable special ligation for!==with triple lines.exeqeq-dotted: Enable special ligation for!==with triple lines, and a dot at below for distinction.eqexeq: Enable special ligation for=!=with triple lines.eqexeq-dotted: Enable special ligation for=!=with triple lines and a dot at below for distinction.eqexeq-dl: Enable special ligation for=!=with double lines.eqexeq-dl-dotted: Enable special ligation for=!=with double lines, and a dot at below for distinction.exeq: Enable ligation for!=and!==.exeq-dotted: Enable ligation for!=and!==with a dot at below for distinction.tildeeq: Enable ligation for~=as inequality.eqslasheq: Enable special triple-line ligation for=/=as inequality.slasheq: Enable ligation for/=and=/=as inequality.ltgt-ne: Enable ligation for<>as inequality.ltgt-diamond: Enable ligation for<>as diamond.brst: Center asterisk in(*and*).plusplus: Enable ligation for++and further plus-chaining.kern-dotty: Move connecting dotty punctuations closer, like for::,:::and....kern-bars: Move consecutive bars closer, like for||,|||and//.logic: Enable ligation for/\and\/.llgg: Enable ligation for<<,>>and other angle-bracket chaining.llggeq: Enable ligation for<<=,>>=as shift operator.dot-as-operator: Treat dot (.) as operator and perform chained centering.lteq-as-arrow: Treat<=as arrow.gteq-as-co-arrow: Treat>=as co-arrow.html-comment: Enable ligation for<!--and<!---.colon-greater-as-colon-arrow: Transform:>into:and a narrow arrow.brace-bar: Enable ligation for{|and|}.brack-bar: Enable ligation for[|and|].connected-underscore: Make contiguous underscores (like__) connected.connected-number-sign: Make contiguous number signs (like##) connected.connected-tilde-as-wave: Make contiguous ASCII tildes (like~~) connected as a wave line.connected-hyphen-as-solid-line: Make contiguous hyphen-minuses (like--) connected as a straight solid line.connected-hyphen-as-semi-dashed-line: Make contiguous hyphen-minuses (like--) connected as a straight semi-dashed line, identifying each hyphen component.
Configuring Character Variants
Subsection variants is used to configure character variants in the font. Properties include:
-
inherits: Optional, String, defines the inherited stylistic set. Valid options include:ss01: Set character variant to “Andale Mono Style”.ss02: Set character variant to “Anonymous Pro Style”.ss03: Set character variant to “Consolas Style”.ss04: Set character variant to “Menlo Style”.ss05: Set character variant to “Fira Mono Style”.ss06: Set character variant to “Liberation Mono Style”.ss07: Set character variant to “Monaco Style”.ss08: Set character variant to “Pragmata Pro Style”.ss09: Set character variant to “Source Code Pro Style”.ss10: Set character variant to “Envy Code R Style”.ss11: Set character variant to “X Window Style”.ss12: Set character variant to “Ubuntu Mono Style”.ss13: Set character variant to “Lucida Style”.ss14: Set character variant to “JetBrains Mono Style”.ss15: Set character variant to “IBM Plex Mono Style”.ss16: Set character variant to “PT Mono Style”.ss17: Set character variant to “Recursive Mono Style”.ss18: Set character variant to “Input Mono Style”.ss20: Set character variant to “Curly Style”.
-
design,upright,italic, andoblique: Optional, Dictionary, defines styles for individual characters. The choices are organized in key-value pairs, assigning a variant to a character group. Alternatively, you could assign numbers tocv##tags, like what you did when using OpenType in CSS. Assignments underdesignwill be applied to all the slopes, andupright,italic, andobliquewill apply to corresponded slopes.In addition, style selector for default digit form also uses these dictionaries.
The valid combinations include:
- Default digit form:

digit-form = 'lining'Lining (default) 
digit-form = 'old-style'Old-style - APL form:

apl-form = 'none'Disable APL-specific forms 
apl-form = 'enable'Enable APL-specific forms for operators used in APL to harmonize APL operators - Styles for
A: - Styles for
B: - Styles for
C: - Styles for
D: - Styles for
E:
capital-e = 'serifless',cv05 = 1E without serifs 
capital-e = 'top-left-serifed',cv05 = 2E with serif only at top left 
capital-e = 'serifed',cv05 = 3E with serifs - Styles for
F:
capital-f = 'serifless',cv06 = 1F without serifs 
capital-f = 'top-left-serifed',cv06 = 2F with serif only at top left 
capital-f = 'serifed',cv06 = 3F with serifs - Styles for
G: - Styles for
H: - Styles for
I:
capital-i = 'serifed',cv09 = 1I with standard (long) serifs 
capital-i = 'serifless',cv09 = 2I without serifs, like a straight bar 
capital-i = 'short-serifed',cv09 = 3I with short serifs - Styles for
J: - Styles for
K: - Styles for
L:
capital-l = 'serifless',cv12 = 1Serifless L
capital-l = 'motion-serifed',cv12 = 2Standard Lwith motion serif at bottom right
capital-l = 'serifed',cv12 = 3Lwith serifs - Styles for
M: - Styles for
N: - Styles for
P: - Styles for
Q: - Styles for
R: - Styles for
S: - Styles for
T:
capital-t = 'serifless',cv19 = 1Serifless T 
capital-t = 'motion-serifed',cv19 = 2Motion-Serifed T 
capital-t = 'serifed',cv19 = 3Serifed T - Styles for
U: - Styles for
V: - Styles for
W: - Styles for
X: - Styles for
Y: - Styles for
Z: - Styles for
a: - Styles for
b: - Styles for
c: - Styles for
d: - Styles for
e:
e = 'flat-crossbar',cv30 = 1ewith flat crossbar
e = 'rounded',cv30 = 2ewith more rounded shape - Styles for
f: - Styles for
g: - Styles for
h: - Styles for
i: - Styles for
j: - Styles for
k: - Styles for
l: - Styles for
m: - Styles for
n: - Styles for
p: - Styles for
q: - Styles for
r: - Styles for
s: - Styles for
t: - Styles for
u: - Styles for
v: - Styles for
w: - Styles for
x: - Styles for
y: - Styles for
z: - Styles for
ſ(Long-S): - Styles for
ß(Eszet): - Styles for
Λ,Δ(Greek capital Lambda (Λ) and Greek capital Delta (Δ)): - Styles for
α(Greek lower Alpha):
lower-alpha = 'crossing',cv54 = 1Greek lower Alpha ( α) with a cross-like shape at right
lower-alpha = 'tailed-barred',cv54 = 2Greek lower Alpha ( α) with a straight right bar and tail - Styles for
δ(Greek lower Delta):
lower-delta = 'rounded',VXAA = 1Greek lower Delta ( δ) with rounded top
lower-delta = 'flat-top',VXAA = 2Greek lower Delta ( δ) with flat top - Styles for
Γ(Greek capital Gamma): - Styles for
ι(Greek lower Iota): - Styles for
λ(Greek small Lambda): - Styles for
μ(Greek small Mu):
lower-mu = 'tailless',VXAC = 1Tailless Greek small Mu ( μ)
lower-mu = 'tailed',VXAC = 2Tailed Greek small Mu ( μ) - Styles for
ξ(Greek lower Xi):
lower-xi = 'rounded',VXAB = 1Greek lower Xi ( ξ) with rounded top
lower-xi = 'flat-top',VXAB = 2Greek lower Xi ( ξ) with flat top - Styles for
З(Cyrillic Capital Ze): - Styles for
з(Cyrillic Lower Ze): - Styles for
К(Cyrillic Capital Ka): - Styles for
к(Cyrillic Ka): - Styles for
л(Cyrillic Lower El):
cyrl-el = 'straight',cv62 = 1Cyrillic Lower El ( л) with standard shape
cyrl-el = 'tailed',cv62 = 2Cyrillic Lower El ( л) with tail shape - Styles for
н(Cyrillic Lower En): - Styles for
ф(Cyrillic Lower Ef): - Styles for
ч(Cyrillic Lower Che):
cyrl-che = 'standard',cv65 = 1Cyrillic Lower Che ( ч) with standard shape
cyrl-che = 'tailed',cv65 = 2Cyrillic Lower Che ( ч) with tail - Styles for
У(Cyrillic Capital U): - Styles for
Я(Cyrillic Capital Ya): - Styles for
я(Cyrillic Lower Ya): - Styles for
ь(Cyrillic Lower Yeri and related letters): - Styles for
ы(Cyrillic Lower Yery): - Styles for
0: - Styles for
1: - Styles for
2:
two = 'straight-neck',cv73 = 12with straight neck
two = 'curly-neck',cv73 = 22with curly neck - Styles for
3:
three = 'flat-top',cv74 = 1Flat top 3(Like Museo Sans / Montserrat)
three = 'two-arcs',cv74 = 2Arched top 3 - Styles for
4: - Styles for
5:
five = 'vertical-upper-left-bar',cv76 = 15with a vertical upper-left bar
five = 'oblique-upper-left-bar',cv76 = 25with an oblique upper-left bar - Styles for
6:
six = 'closed-contour',cv77 = 16with a more closed contour
six = 'open-contour',cv77 = 26with a more open contour
six = 'straight-bar',cv77 = 36with a straight bar - Styles for
7: - Styles for
8: - Styles for
9:
nine = 'closed-contour',cv80 = 19with a more closed contour
nine = 'open-contour',cv80 = 29with a more open contour
nine = 'straight-bar',cv80 = 39with a straight bar - Styles for
~:
tilde = 'high',cv81 = 1Higher tilde ~
tilde = 'low',cv81 = 2Lower tilde ~ - Styles for
*: - Styles for
_: - Styles for
¶:
paragraph-sign = 'high',cv84 = 1Higher paragraph sign ¶
paragraph-sign = 'low',cv84 = 2Lower paragraph sign ¶ - Styles for
^:
caret = 'high',cv85 = 1Higher circumflex ^
caret = 'medium',cv85 = 2Lower circumflex ^
caret = 'low',cv85 = 3Lower circumflex ^ - Styles for
(,): - Styles for
{,}:
brace = 'straight',cv87 = 1More straight braces 
brace = 'curly',cv87 = 2More curly braces 
brace = 'curly-flat-boundary',cv87 = 3Curly braces with flat boundary shape - Styles for
#: - Styles for
&: - Styles for
@: - Styles for
$: - Styles for
¢: - Styles for
%: - Styles for
|:
bar = 'natural-slope',cv94 = 1Bar punctuations ( |) has a natural slope under italics and oblique
bar = 'force-upright',cv94 = 2Bar punctuations ( |) is forced upright under italics and oblique - Styles for
<=,>=:
lig-ltgteq = 'flat',cv95 = 1The lower bar of <=and>=ligation is flat
lig-ltgteq = 'slanted',cv95 = 2The lower bar of <=and>=ligation is slanted - Styles for
':
ascii-single-quote = 'straight',cv96 = 1Show ASCII quote ( ") as short vertical straight bar.
ascii-single-quote = 'raised-comma',cv96 = 2Show ASCII quote ( ") as raised comma. - Styles for
`: - Styles for
?: - Styles for
.,,:;(Dot and Comma shape in punctuations and symbols):
punctuation-dot = 'round',cv99 = 1Small punctuations (like .,,) use round dots
punctuation-dot = 'square',cv99 = 2Small punctuations (like .,,) use square dots
- Default digit form:
Configuring Weights, Widths and Slopes
Subsection weights is used to change the weight grades that the custom family needs. It is a dictionary of either strings formatted in default.<weight> format, meaning reusing a default weight grade, or sub-objects with properties:
shape: Number, configures the weight grade of the glyphs' shapes.menu: Integer, configures the weight grade used when naming fonts.css: Integer, configures the weight grade used in web font CSS.
Subsection widths is used to change the width grades that the custom family needs. It is a dictionary of either strings formatted in default.<width> format, meaning reusing a default width grade, or sub-objects with properties:
shape: Number, configures the width of the glyphs' shapes, measured in 1/1000 em.menu: Integer, configures the width grade used when naming fonts. The valid values are1to9, inclusive.css: String, configures the font-stretch value used in web font CSS.
Subsection slopes is used to change the slope angles and grades that the custom family needs. It is a dictionary of either strings formatted in default.<slope> format, meaning reusing a default slope grade, or sub-objects with properties:
angle: Number, configures the slope angle in degrees. The valid vales are0to15, inclusive.shape: String fromupright,italicoroblique. Configures the slope used for variant selection.menu: String fromupright,italicoroblique. Configures the slope grade used when naming fonts.css: String fromnormal,italicoroblique. Configures the CSS font-style value.
Subsection slopes is a simple string-to-string dictionary maps slopes (upright, italic or oblique) to CSS font-style values, represented in string.
Compatibility Ligatures
Certain software, notably Emacs, relies on pre-encoded ligatures instead of OpenType to provide ligations. Iosevka could be configured with additional subsection compatibility-ligatures, being an array of records with following fields:
unicode: The PUA code point being assigned to.featureTag: The feature tag to compute ligations.sequence: The source character sequence.
A sample of compatibility ligature config is:
[[buildPlans.iosevka-custom.compatibility-ligatures]]
unicode = 57600 # 0xE100
featureTag = 'calt'
sequence = '<*>'
Metric Override
Subsection metric-override provides ability to override certain metric values, if you reallly want to. Adding this section is strongly discouraged as it may introduce broken geometry or broken shapes.
| Property | Unit | Default Value | Meaning |
|---|---|---|---|
cap |
emu | 735 | Height of H. |
xheight |
emu | 530 | Height of x. |
sb |
emu | (varies, 60 for Regular) | Width of common side-bearings. |
accentWidth |
emu | 200 | Width of accent marks. |
accentClearance |
emu | 72 | Vertical clearance of accent marks to the base. |
accentHeight |
emu | 176 | Height of accent marks. |
accentStackOffset |
emu | 220 | Offset height of accent mark stack. |
dotSize |
emu | (varies, 125 for regular) | Size of dots in diacritic marks. |
periodSize |
emu | (varies, 140 for regular) | Size of dots in period. |
leading |
emu | 1250 | Built-in line height. |
symbolMid |
emu | 340 | Height of the center of hyphen (-). |
parenSize |
emu | 966 | Height of Parentheses. |
winMetricAscenderPad |
emu | 0 | Additional pad for Win metrics’ ascender to avoid clipping in legacy Windows applications. |
winMetricDescenderPad |
emu | 0 | Additional pad for Win metrics’ descender to avoid clipping in legacy Windows applications. |
powerlineScaleX, powerlineScaleY |
(ratio) | 1 | X and Y scale of Powerline glyphs. |
powerlineShiftX, powerlineShiftY |
emu | 0 | X and Y shift of Powerline glyphs. |
onumZeroHeightRatio |
(ratio) | 1.145 | Ratio of height of 0 under onum feature, to the height of x. |
The values of each item could be either a number, or a string representing an expression so that it could be different for different instance fonts, or depending on default values. The syntax of valid expressions are:
Expression -> Term (('+' | '-') Term)*
Term -> Factor (('*' | '/') Factor)*
Factor -> ('+' | '-')* Primitive
Primitive -> Literal
| Call
| Binding
| Group
| List
Literal -> ['0'..'9']+ ('.' ['0'..'9']+)?
Identifier -> ['A'..'Z', 'a'..'z', '_']+
Call -> Identifier '(' Expression (',' Expression)* ')'
List -> Identifier '[' Expression (',' Expression)* ']'
Binding -> Identifier
Valid identifiers include:
weight: being the weight grade;width: being the characters' unit width, measured in em-units;slopeAngle: being the slope angle in degrees;- Default value of all overridable metrics, prefixed with
default_, i.e., defaultcapvalue will be accessable thorughdefault_cap.
Valid functions include:
blend(x, [x1, y1], [x2, y2], ...): Perform a smooth interpolation through data pairs [x1, y1], [x2, y2], ..., against parameter x.
For example, the following configuration:
[buildPlans.iosevka-custom.metric-override]
leading = 1500
sb = 'default_sb * 1.0625 + 15'
dotSize = 'blend(weight, [100, 50], [400, 125], [900, 180])'
will:
- Override line height to
1500em-unit; - Override the sidebearing value by its value multiplied by
1.0625then added with15. - Override the dot size by a interpolation against weight: at thin (
100) being50, at regular (400) being125, and at heavy (900) being180.
Sample Configuration
A sample configuration could be found at private-build-plans.sample.toml.
TTC Building
It is possible to create a customized TTC build by using the following method:
- Add a collect plan into
private-build-plans.toml, with afromfield containing all the TTF groups it needs:
[collectPlans.iosevka-custom]
from = ["iosevka-custom1", "iosevka-custom-2"]
- Run build with the following command:
npm run build -- ttc::iosevka-custom: Create TTCs from collectioniosevka-custom; The file will be saved intodist/.ttc.npm run build -- super-ttc::iosevka-custom: Create a single-file TTC from collectioniosevka-custom; The file will be saved intodist/.super-ttc.
For Chinese and Japanese users...
Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka


























































