1
0
mirror of https://github.com/ryanoasis/nerd-fonts.git synced 2025-02-12 12:45:44 +02:00

Merge branch 'master' into docker

This commit is contained in:
Ryan L McIntyre 2021-11-26 18:13:11 -08:00 committed by GitHub
commit dd76528ef1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
573 changed files with 36679 additions and 9900 deletions

131
.github/workflows/release-candidate.yml vendored Normal file
View File

@ -0,0 +1,131 @@
name: CI
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
paths-ignore:
- 'images/**'
- '**.md'
- '.all-contributorsrc'
- 'chocolatey/**'
- 'bin/scripts/lib/**'
- 'Dockerfile'
- 'install.ps1'
- 'install.sh'
- 'LICENSE'
- 'package**'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
setup-fonts-matrix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: master
fetch-depth: '1'
-
id: set-matrix
run: |
cd -- $GITHUB_WORKSPACE/bin/scripts/
fontNames=$(./get-font-names-from-json.sh)
echo "${fontNames}"
echo "::set-output name=matrix::${fontNames}"
echo ${{ steps.set-matrix.outputs.matrix }}
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
# Workflow to build and install dependencies
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
needs: setup-fonts-matrix
env:
RELEASE_TAG_VERSION: 2.2.0-RC
GITHUB_ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
matrix:
font: ${{fromJson(needs.setup-fonts-matrix.outputs.matrix)}}
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
with:
ref: master
fetch-depth: '1'
# Install and setup Dependencies
# @TODO cache the next 4 steps with actions/cache or upload
- name: Setup core dependencies
run: |
sudo apt update -y -q
sudo apt install software-properties-common -y -q
sudo apt update -y -q
sudo apt install fontforge -y -q
sudo apt install python3-fontforge -y -q
- name: Setup additional dependencies
run: |
pip install fonttools --quiet
- name: Build FreeType from source
run: |
wget http://downloads.sourceforge.net/project/freetype/freetype2/2.7/freetype-2.7.tar.gz --quiet
tar -zxf freetype-2.7.tar.gz
cd freetype-2.7
./configure
make --quiet
sudo make install --quiet
- name: Build Harfbuzz from source
run: |
wget http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-1.3.4.tar.bz2 --quiet
tar -xjf harfbuzz-1.3.4.tar.bz2
cd harfbuzz-1.3.4
./configure
make --quiet
sudo make install --quiet
- name: Verify setup
run: |
fontforge --version
fontforge --version 2>&1 | grep libfontforge | awk '{print $NF}'
- name: Bump version and standardize the readme files
run: |
cd -- "$GITHUB_WORKSPACE/bin/scripts"
./version-bump.sh "$RELEASE_TAG_VERSION"
./standardize-and-complete-readmes.sh "${{ matrix.font }}"
- name: Patch all the fonts
# let's test just on font family for now to prove it out
# once proven we'll remove the font name and the hardcoded release and use the "release" script
run: |
cd -- "$GITHUB_WORKSPACE/bin/scripts"
fontforge --script ../../font-patcher --version
./gotta-patch-em-all-font-patcher\!.sh "${{ matrix.font }}"
# @TODO only run once after patching all fonts
- name: Generate fontconfig and casks
run: |
cd -- "$GITHUB_WORKSPACE/bin/scripts"
./generate-fontconfig.sh
./generate-casks.sh "${{ matrix.font }}"
# @TODO only run once after patching all fonts OR modify to archive one font at a time?
- name: Archive font package zip files and upload for release
run: |
cd -- "$GITHUB_WORKSPACE/bin/scripts"
./archive-fonts.sh "${{ matrix.font }}"
GITHUB_TOKEN=$GITHUB_TOKEN ./upload-archives.sh $RELEASE_TAG_VERSION "${{ matrix.font }}"

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.1.0
# Script Version: 1.1.1
# Iterates over all patched fonts directories
# to generate ruby cask files for homebrew-fonts (https://github.com/caskroom/homebrew-fonts)
# adds Windows versions of the fonts as well (casks files just won't download them)
@ -17,6 +17,8 @@ parent_dir="${PWD}/../../"
echo "dir $scripts_root_dir"
outputdir=$scripts_root_dir../../archives
mkdir -p "$outputdir"
cd "$scripts_root_dir/../../patched-fonts/" || {
echo >&2 "$LINE_PREFIX Could not find patched fonts directory"
exit 1
@ -35,6 +37,7 @@ else
fi
# create a mini readme with basic info on Nerd Fonts project
touch "$outputdir/readme.md"
mini_readme="$outputdir/readme.md"
cat "$parent_dir/src/archive-readme.md" >> "$mini_readme"
@ -43,6 +46,7 @@ find "${outputdir:?}" -name "$search_pattern" -type f -delete
#find ./Hack -maxdepth 0 -type d | # uncomment to test 1 font
#find ./ProFont -maxdepth 0 -type d | # uncomment to test 1 font
# find ./IBMPlexMono -maxdepth 0 -type d | # uncomment to test 1 font
# uncomment to test all fonts:
find -- * -maxdepth 0 -iregex "$pattern" -type d |
while read -r filename
@ -55,14 +59,14 @@ do
# add font files:
# -ic (ignore case not working)
zip -9 "$outputdir/$basename" -rj "$searchdir" -i '*.[o,t]tf' -i '*.[O,T]TF'
zip -9 "$outputdir/$basename" -rj "$searchdir" -i '*.[o,t]tf' -i '*.[O,T]TF' -q
zipStatus=$?
if [ "$zipStatus" != "0" ]
then
echo "$LINE_PREFIX Could not create archive with the path junked (-j option) - likely same font names for different paths, zip status: $zipStatus"
echo "$LINE_PREFIX Retrying with full path"
# add font files and license files as full paths:
zip -9 "$outputdir/$basename" -r "$searchdir" -i '*.[o,t]tf' -i '*.[O,T]TF' -i '*license*' -i '*LICENSE*'
zip -9 "$outputdir/$basename" -r "$searchdir" -i '*.[o,t]tf' -i '*.[O,T]TF' -i '*license*' -i '*LICENSE*' -q
else
# we can copy the font files without full paths but not necessarily the license files:
# add license files separately:
@ -73,6 +77,8 @@ do
fi;
# add mini readme file
zip -9 "$outputdir/$basename" -rj "$mini_readme"
zip -9 "$outputdir/$basename" -rj "$mini_readme" -q
rm -f "$mini_readme"
done
ls -al "$outputdir"

View File

@ -21,5 +21,4 @@ done
printf "Running with options:\n%s\n" "$args"
# shellcheck disable=SC2086
for f in /in/*.otf /in/*.ttf /in/*.woff /in/*.eot; do [ -f "$f" ] && fontforge -script ~/nerd-fonts/font-patcher -out /out $args $f; done
for f in /in/*.otf /in/*.ttf /in/*.woff /in/*.eot /in/*.ttc; do [ -f "$f" ] && fontforge -script /nerd/font-patcher -out /out $args "$f"; done

View File

@ -0,0 +1,20 @@
#!/bin/bash
main() {
# json=()
# for i in $(jq '.fonts | keys | .[]' lib/fonts.json); do
# fontName=$(jq -r ".fonts[$i].patchedName" lib/fonts.json);
# json+=("$fontName");
# done
# # echo "${json[@]}"
# # printf '%s\n' "${json[@]}" | jq tojson | jq -R . | jq -s .
# # printf '%s\n' "${json[@]}" | jq -R . | jq -s .
# # stringified json:
# # printf '%s\n' "${json[@]}" | jq -R . | jq -s . | jq tojson
# echo "${json[@]}"
# @TODO uncomment and use FULL set once kinks worked out for Release Candidate Workflow
# jq '.fonts | .[] | .folderName' lib/fonts.json | jq -sc
jq '.fonts | .[] | .folderName' lib/fonts-small-subset.json | jq -sc
}
main; exit

View File

@ -0,0 +1,45 @@
{
"fonts": [
{
"unpatchedName": "3270",
"patchedName": "3270",
"folderName": "3270",
"imagePreviewFont": "3270 Nerd Font",
"linkPreviewFont": "font3270",
"description": "derived from the x3270 font, a modern format of a font with high nostalgic value"
},
{
"unpatchedName": "Agave",
"patchedName": "Agave",
"folderName": "Agave",
"imagePreviewFont": "Agave Nerd Font",
"linkPreviewFont": "agave",
"description": "A small, monospace, outline font that is geometrically regular and simple"
},
{
"unpatchedName": "Cascadia Code",
"patchedName": "Caskaydia Cove",
"folderName": "CascadiaCode",
"imagePreviewFont": "Caskaydia Cove Nerd Font",
"linkPreviewFont": "cascadia-code",
"description": "A fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal"
},
{
"unpatchedName": "Hack",
"patchedName": "Hack",
"folderName": "Hack",
"imagePreviewFont": "Hack Nerd Font",
"linkPreviewFont": "hack",
"description": "dotted zero, short descenders, expands upon work done for Bitstream Vera & DejaVu, legible at common sizes"
},
{
"unpatchedName": "ShareTechMono",
"patchedName": "ShureTechMono",
"folderName": "ShareTechMono",
"imagePreviewFont": "ShureTechMono Nerd Font",
"linkPreviewFont": "share-tech",
"description": "dotted zeros, distinguishable 1 and l, curved and straight character lines"
}
]
}

View File

@ -3,6 +3,7 @@
{
"unpatchedName": "3270",
"patchedName": "3270",
"folderName": "3270",
"imagePreviewFont": "3270 Nerd Font",
"linkPreviewFont": "font3270",
"description": "derived from the x3270 font, a modern format of a font with high nostalgic value"
@ -10,6 +11,7 @@
{
"unpatchedName": "Agave",
"patchedName": "Agave",
"folderName": "Agave",
"imagePreviewFont": "Agave Nerd Font",
"linkPreviewFont": "agave",
"description": "A small, monospace, outline font that is geometrically regular and simple"
@ -17,6 +19,7 @@
{
"unpatchedName": "AnonymousPro",
"patchedName": "Anonymice",
"folderName": "AnonymousPro",
"imagePreviewFont": "Anonymice Nerd Font",
"linkPreviewFont": false,
"description": "inspired by Anonymous 9 on Macintosh, since 2009, distinct `O`, `0`, `I`, `l`, `1`"
@ -24,6 +27,7 @@
{
"unpatchedName": "Arimo",
"patchedName": "Arimo",
"folderName": "Arimo",
"imagePreviewFont": "Arimo Nerd Font",
"linkPreviewFont": false,
"description": "Metrically similar to Arial, pan-European WGL character set, sans serif"
@ -31,6 +35,7 @@
{
"unpatchedName": "AurulentSansMono",
"patchedName": "AurulentSansMono",
"folderName": "AurulentSansMono",
"imagePreviewFont": "AurulentSansMono Nerd Font",
"linkPreviewFont": "aurulent",
"description": "Sans serif, designed by Stephen G. Hartke which also created Verily Serif"
@ -38,6 +43,7 @@
{
"unpatchedName": "BigBlueTerminal",
"patchedName": "BigBlueTerminal",
"folderName": "BigBlueTerminal",
"imagePreviewFont": "BigBlueTerminal Nerd Font",
"linkPreviewFont": false,
"description": "nostalgic, closely based on IBM's 8x14 EGA/VGA charset"
@ -45,6 +51,7 @@
{
"unpatchedName": "BitstreamVeraSansMono",
"patchedName": "BitstreamVeraSansMono",
"folderName": "BitstreamVeraSansMono",
"imagePreviewFont": "BitstreamVeraSansMono Nerd Font",
"linkPreviewFont": "bitstream-vera",
"description": "dotted zero, compact lowercase characters"
@ -52,13 +59,15 @@
{
"unpatchedName": "Cascadia Code",
"patchedName": "Caskaydia Cove",
"folderName": "CascadiaCode",
"imagePreviewFont": "Caskaydia Cove Nerd Font",
"linkPreviewFont": "cascadia-code",
"description": "A fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal"
},
{
"unpatchedName": "IBMPlex",
"patchedName": "BlexMono",
"unpatchedName": "IBM Plex Mono",
"patchedName": "Blex Mono",
"folderName": "IBMPlexMono",
"imagePreviewFont": "BlexMono Nerd Font",
"linkPreviewFont": false,
"description": "font release is currently missing"
@ -66,6 +75,7 @@
{
"unpatchedName": "CodeNewRoman",
"patchedName": "CodeNewRoman",
"folderName": "CodeNewRoman",
"imagePreviewFont": "CodeNewRoman Nerd Font",
"linkPreviewFont": "code-new-roman",
"description": "tunable, slashed zeros, compact smaller characters"
@ -73,6 +83,7 @@
{
"unpatchedName": "Cousine",
"patchedName": "Cousine",
"folderName": "Cousine",
"imagePreviewFont": "Cousine Nerd Font",
"linkPreviewFont": "cousine",
"description": "similar to Courier New with better readablitiy, dotted zeros"
@ -80,6 +91,7 @@
{
"unpatchedName": "DaddyTimeMono",
"patchedName": "DaddyTimeMono",
"folderName": "DaddyTimeMono",
"imagePreviewFont": "DaddyTimeMono Nerd Font",
"linkPreviewFont": "daddytimemono",
"description": "A monospaced font for programmers and other terminal groupies"
@ -87,6 +99,7 @@
{
"unpatchedName": "DejaVuSansMono",
"patchedName": "DejaVuSansMono",
"folderName": "DejaVuSansMono",
"imagePreviewFont": "DejaVuSansMono Nerd Font",
"linkPreviewFont": "dejavu",
"description": "dotted zero, based on the Bitstream Vera Fonts with a wider range of character"
@ -94,6 +107,7 @@
{
"unpatchedName": "DroidSansMono",
"patchedName": "DroidSansMono",
"folderName": "DroidSansMono",
"imagePreviewFont": "DroidSansMono Nerd Font",
"linkPreviewFont": "droid-sans",
"description": "good for small screens or font sizes"
@ -101,6 +115,7 @@
{
"unpatchedName": "FantasqueSansMono",
"patchedName": "FantasqueSansMono",
"folderName": "FantasqueSansMono",
"imagePreviewFont": "FantasqueSansMono Nerd Font",
"linkPreviewFont": "fantasque-sans",
"description": "\"wibbly-wobbly handwriting-like fuzziness\", takes some inspiration from Inconsolata and Monaco"
@ -108,6 +123,7 @@
{
"unpatchedName": "FiraCode",
"patchedName": "FiraCode",
"folderName": "FiraCode",
"imagePreviewFont": "FiraCode Nerd Font",
"linkPreviewFont": "firacode",
"description": "programming ligatures, extension of Fira Mono font, enlarged operators"
@ -115,6 +131,7 @@
{
"unpatchedName": "FiraMono",
"patchedName": "FiraMono",
"folderName": "FiraMono",
"imagePreviewFont": "FiraMono Nerd Font",
"linkPreviewFont": "fira",
"description": "Mozilla typeface, dotted zero"
@ -122,6 +139,7 @@
{
"unpatchedName": "Go-Mono",
"patchedName": "Go-Mono",
"folderName": "Go-Mono",
"imagePreviewFont": "Go-Mono Nerd Font",
"linkPreviewFont": "go-mono",
"description": "created specifically for the Go project, looks particularly clear for use with the Go language"
@ -129,6 +147,7 @@
{
"unpatchedName": "Gohu",
"patchedName": "Gohu",
"folderName": "Gohu",
"imagePreviewFont": "Gohu Nerd Font",
"linkPreviewFont": false,
"description": "bitmap font, tall capitals and ascenders, small serifs"
@ -136,6 +155,7 @@
{
"unpatchedName": "Hack",
"patchedName": "Hack",
"folderName": "Hack",
"imagePreviewFont": "Hack Nerd Font",
"linkPreviewFont": "hack",
"description": "dotted zero, short descenders, expands upon work done for Bitstream Vera & DejaVu, legible at common sizes"
@ -143,6 +163,7 @@
{
"unpatchedName": "Hasklig",
"patchedName": "Hasklug",
"folderName": "Hasklig",
"imagePreviewFont": "Hasklug Nerd Font",
"linkPreviewFont": "hasklig",
"description": "monospaced ligatures, makes composite glyphs (e.g. ->) more reabable, especially in Haskell"
@ -150,6 +171,7 @@
{
"unpatchedName": "HeavyData",
"patchedName": "HeavyData",
"folderName": "HeavyData",
"imagePreviewFont": "HeavyData Nerd Font",
"linkPreviewFont": false,
"description": "Novel and unique design, dotted zero"
@ -157,6 +179,7 @@
{
"unpatchedName": "Hermit",
"patchedName": "Hurmit",
"folderName": "Hermit",
"imagePreviewFont": "Hurmit Nerd Font",
"linkPreviewFont": "hermit",
"description": "symbols stand out from common text"
@ -164,6 +187,7 @@
{
"unpatchedName": "iA Writer",
"patchedName": "iM Writing",
"folderName": "iA-Writer",
"imagePreviewFont": "iM Writing Nerd Font",
"linkPreviewFont": "ia-writer-mono",
"description": "A heavy modification of IBM's Plex font"
@ -171,6 +195,7 @@
{
"unpatchedName": "Inconsolata",
"patchedName": "Inconsolata",
"folderName": "Inconsolata",
"imagePreviewFont": "Inconsolata Nerd Font",
"linkPreviewFont": "inconsolata",
"description": "slashed zero, takes inspiration from many different fonts and glyphs, subtle curves in lowercase"
@ -178,6 +203,7 @@
{
"unpatchedName": "InconsolataGo",
"patchedName": "InconsolataGo",
"folderName": "InconsolataGo",
"imagePreviewFont": "InconsolataGo Nerd Font",
"linkPreviewFont": false,
"description": "Inconsolata with straight quotes"
@ -185,6 +211,7 @@
{
"unpatchedName": "InconsolataLGC",
"patchedName": "InconsolataLGC",
"folderName": "InconsolataLGC",
"imagePreviewFont": "InconsolataLGC Nerd Font",
"linkPreviewFont": false,
"description": "Inconsolata with added the Cyrillic alphabet"
@ -192,6 +219,7 @@
{
"unpatchedName": "Iosevka",
"patchedName": "Iosevka",
"folderName": "Iosevka",
"imagePreviewFont": "Iosevka Nerd Font",
"linkPreviewFont": "iosevka",
"description": "narrow and horizontally tight characters, slashed zero"
@ -199,6 +227,7 @@
{
"unpatchedName": "JetBrainsMono",
"patchedName": "JetBrainsMono",
"folderName": "JetBrainsMono",
"imagePreviewFont": "JetBrainsMono Nerd Font",
"linkPreviewFont": "jetbrainsmono",
"description": "JetBrains officially created font for developers"
@ -206,6 +235,7 @@
{
"unpatchedName": "Lekton",
"patchedName": "Lekton",
"folderName": "Lekton",
"imagePreviewFont": "Lekton Nerd Font",
"linkPreviewFont": "lekton",
"description": "very light and thin characters, sharp m's, `0` and `O` very similar"
@ -213,6 +243,7 @@
{
"unpatchedName": "LiberationMono",
"patchedName": "LiterationMono",
"folderName": "LiberationMono",
"imagePreviewFont": "LiterationMono Nerd Font",
"linkPreviewFont": "liberation",
"description": "`0` and `O` very similar, very short tight descenders"
@ -220,6 +251,7 @@
{
"unpatchedName": "Meslo",
"patchedName": "Meslo",
"folderName": "Meslo",
"imagePreviewFont": "Meslo Nerd Font",
"linkPreviewFont": "meslo",
"description": "slashed zeros, customized version of Apple's Menlo"
@ -227,6 +259,7 @@
{
"unpatchedName": "Monofur",
"patchedName": "Monofur",
"folderName": "Monofur",
"imagePreviewFont": "Monofur Nerd Font",
"linkPreviewFont": "monofur",
"description": "dotted zeros, slightly exaggerated curvy characters, compact characters"
@ -234,6 +267,7 @@
{
"unpatchedName": "Monoid",
"patchedName": "Monoid",
"folderName": "Monoid",
"imagePreviewFont": "Monoid Nerd Font",
"linkPreviewFont": "monoid",
"description": "ligatures, distinguishable glyphs with short ascenders & descenders, large operators & punctuation"
@ -241,6 +275,7 @@
{
"unpatchedName": "Mononoki",
"patchedName": "Mononoki",
"folderName": "Mononoki",
"imagePreviewFont": "Mononoki Nerd Font",
"linkPreviewFont": "mononoki",
"description": "keeps in mind differentiation of characters and resolution sizes"
@ -248,6 +283,7 @@
{
"unpatchedName": "MPlus",
"patchedName": "MPlus",
"folderName": "MPlus",
"imagePreviewFont": "MPlus Nerd Font",
"linkPreviewFont": false,
"description": "Multiple styles and weights, many glyph sets (e.g. Kana glyphs)"
@ -255,6 +291,7 @@
{
"unpatchedName": "Noto",
"patchedName": "Noto",
"folderName": "Noto",
"imagePreviewFont": "Noto Nerd Font",
"linkPreviewFont": "noto",
"description": "`0` and `O` very similar, characters are either very curvy or straight lined"
@ -262,6 +299,7 @@
{
"unpatchedName": "ProFont",
"patchedName": "ProFont",
"folderName": "ProFont",
"imagePreviewFont": "ProFont Nerd Font",
"linkPreviewFont": "profont",
"description": "looks best with anti-aliasing turned off, squared off character corners, vertically tight small `s`"
@ -269,6 +307,7 @@
{
"unpatchedName": "ProggyClean",
"patchedName": "ProggyClean",
"folderName": "ProggyClean",
"imagePreviewFont": "ProggyClean Nerd Font",
"linkPreviewFont": "proggy-clean",
"description": "Designed particularly for use at small point sizes"
@ -276,6 +315,7 @@
{
"unpatchedName": "OpenDyslexic",
"patchedName": "OpenDyslexic",
"folderName": "OpenDyslexic",
"imagePreviewFont": "OpenDyslexic Nerd Font",
"linkPreviewFont": "opendyslexic",
"description": "designed specifically to alleviate reading errors caused by dyslexia"
@ -283,6 +323,7 @@
{
"unpatchedName": "Overpass",
"patchedName": "Overpass",
"folderName": "Overpass",
"imagePreviewFont": "Overpass Nerd Font",
"linkPreviewFont": "overpass",
"description": "An open source font family inspired by Highway Gothic"
@ -290,6 +331,7 @@
{
"unpatchedName": "RobotoMono",
"patchedName": "RobotoMono",
"folderName": "RobotoMono",
"imagePreviewFont": "RobotoMono Nerd Font",
"linkPreviewFont": "roboto",
"description": "dashed zero, curved and straight character lines"
@ -297,13 +339,15 @@
{
"unpatchedName": "ShareTechMono",
"patchedName": "ShureTechMono",
"folderName": "ShareTechMono",
"imagePreviewFont": "ShureTechMono Nerd Font",
"linkPreviewFont": "share-tech",
"description": "dotted zeros, distinguishable 1 and l, curved and straight character lines"
},
{
"unpatchedName": "Source Code Pro",
"patchedName": "Sauce Code Pro",
"unpatchedName": "SourceCodePro",
"patchedName": "SauceCodePro",
"folderName": "SourceCodePro",
"imagePreviewFont": "Sauce Code Pro Nerd Font",
"linkPreviewFont": "source-code-pro",
"description": "Monospaced font family for user interface and coding environments"
@ -311,6 +355,7 @@
{
"unpatchedName": "SpaceMono",
"patchedName": "SpaceMono",
"folderName": "SpaceMono",
"imagePreviewFont": "SpaceMono Nerd Font",
"linkPreviewFont": "space",
"description": "Squarish character lines, dotted zero, aggressive parethesis"
@ -318,6 +363,7 @@
{
"unpatchedName": "Terminus",
"patchedName": "Terminess",
"folderName": "Terminus",
"imagePreviewFont": "TerminessTTF Nerd Font",
"linkPreviewFont": "terminus",
"description": "Squarish characters that are slightly askew"
@ -325,6 +371,7 @@
{
"unpatchedName": "Tinos",
"patchedName": "Tinos",
"folderName": "Tinos",
"imagePreviewFont": "Tinos Nerd Font",
"linkPreviewFont": false,
"description": "Some similarities to Times New Roman, designed by Steve Matteson, includes pan-European WGL character set"
@ -332,6 +379,7 @@
{
"unpatchedName": "Ubuntu",
"patchedName": "Ubuntu",
"folderName": "Ubuntu",
"imagePreviewFont": "Ubuntu Nerd Font",
"linkPreviewFont": "ubuntu",
"description": "specially created for Ubuntu"
@ -339,6 +387,7 @@
{
"unpatchedName": "UbuntuMono",
"patchedName": "UbuntuMono",
"folderName": "UbuntuMono",
"imagePreviewFont": "UbuntuMono Nerd Font",
"linkPreviewFont": "ubuntu",
"description": "dotted zeros, used the `n`, `o`, `H` & `O` Latin characters as a base for design"
@ -346,6 +395,7 @@
{
"unpatchedName": "VictorMono",
"patchedName": "VictorMono",
"folderName": "VictorMono",
"imagePreviewFont": "VictorMono Nerd Font",
"linkPreviewFont": "victor-mono",
"description": "clean, crisp and narrow, with a large x-height and clear punctuation"

View File

@ -65,4 +65,5 @@ i='' i_custom_elixir=$i
i='' i_custom_electron=$i
i='' i_custom_crystal=$i
i='' i_custom_purescript=$i
i='' i_custom_puppet=$i
unset i

View File

@ -1,10 +1,11 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.0.1
# Script Version: 1.1.0
# Iterates over all archives and uploads to given release
# uncomment to debug:
#set -x
LINE_PREFIX="# [Nerd Fonts] "
cd ../../archives/ || {
@ -12,50 +13,68 @@ cd ../../archives/ || {
exit 1
}
private_config="../private.cfg"
# source the private confit file if exists:
if [ -f "$private_config" ]
then
# shellcheck source=/dev/null
source "$private_config"
else
echo >&2 "$LINE_PREFIX Could not source private config"
exit 1
fi
# shellcheck disable=SC2154
# # we know the '$github_access_token' is from the sourced file
TOKEN=$github_access_token
# We don't need to use a separate access token for accessing Github API when we
# are in a Github action, can use the auto provided `GITHUB_TOKEN`
# see: https://docs.github.com/en/actions/security-guides/automatic-token-authentication
TOKEN=$GITHUB_TOKEN
OWNER="ryanoasis"
REPO="nerd-fonts"
RELEASE_TAG=""
# release id from tag (first script param) or latest if no param given:
if [ $# -eq 1 ]
then
tag=$1
release_url="https://api.github.com/repos/ryanoasis/nerd-fonts/releases/tags/$tag"
echo "$LINE_PREFIX Tag of '$tag' given, will upload to release id based on '$tag'"
if [ -z "$1" ]
then
# before we used to check for tag param and set release URL to releases/latest
# but to simplify things let's just fail and always require a proper release/tag
echo "$LINE_PREFIX No Tag Release was given"
exit 1
else
tag=$1
release_url="https://api.github.com/repos/ryanoasis/nerd-fonts/releases/latest"
echo "$LINE_PREFIX No tag given, will upload to release id based on latest"
echo "$LINE_PREFIX Tag/Release was $1"
RELEASE_TAG="$1"
fi
RELEASE=$(curl -# -XGET -H "Authorization:token $TOKEN" -H 'Content-Type: application/json' $release_url | jq -r '.id')
if [ -z "$2" ]
then
search_pattern="*.zip"
echo "$LINE_PREFIX No limiting pattern given, will search entire folder"
else
pattern=$2
search_pattern="*$2*.zip"
echo "$LINE_PREFIX Limiting upload archive to pattern '$pattern'"
fi
echo "$LINE_PREFIX Release id was '$RELEASE'"
RELEASE_URL="https://api.github.com/repos/${OWNER}/${REPO}/releases/tags/${RELEASE_TAG}"
#if [ "$LAST_RELEASE_ID" = null]
# then
# @TODO add error checking around creating new release if release/tag already exists
echo "$LINE_PREFIX Creating new release/tag of ${RELEASE_TAG}"
curl \
-H "Authorization:token $TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/$OWNER/$REPO/releases \
-d "{\"tag_name\":\"${RELEASE_TAG}\", \"prerelease\": true }"
#else
# echo "$LINE_PREFIX A release did exist and the most recent release id was '$RELEASE'"
#fi
LAST_RELEASE_ID=$(curl -# -XGET -H "Authorization:token $TOKEN" -H 'Content-Type: application/json' "$RELEASE_URL" | jq -r '.id')
echo "$LINE_PREFIX The last release id was $LAST_RELEASE_ID"
#find ./Hack -maxdepth 0 -type d | # uncomment to test 1 font
find ./ -name "*.zip" | # uncomment to test all font
find ./ -name "$search_pattern" | # uncomment to test all font
while read -r filename
do
basename=$(basename "$filename")
printf "$LINE_PREFIX Uploading %s" "$basename"
printf "$LINE_PREFIX Uploading %s \n" "$basename"
curl -# -XPOST -H "Authorization:token $TOKEN" -H "Content-Type:application/octet-stream" --data-binary @"$basename" https://uploads.github.com/repos/"$OWNER"/"$REPO"/releases/"$RELEASE"/assets?name="$basename"
curl \
-# -XPOST \
-H "Authorization:token $TOKEN" \
-H "Content-Type:application/octet-stream" \
--data-binary @"$basename" https://uploads.github.com/repos/"$OWNER"/"$REPO"/releases/"$LAST_RELEASE_ID"/assets?name="$basename"
#exit # uncomment to test only 1 zip

View File

@ -16,6 +16,8 @@ fi
release=$1
echo "$LINE_PREFIX Bump version to $release"
sed -i "s|[0-9]\\.[0-9]\\.[0-9]|$release|g" ../../font-patcher
sed -i "s|\\# Nerd Fonts Version: [0-9]\\.[0-9]\\.[0-9]|\\# Nerd Fonts Version: $release|g" ../../bin/scripts/**/*.sh
sed -i "s|\\# Nerd Fonts Version: [0-9]\\.[0-9]\\.[0-9]|\\# Nerd Fonts Version: $release|g" ../../bin/scripts/**/*.py

View File

@ -25,7 +25,8 @@
### 3. Run build scripts
* When fairly satisfied the font patches correctly, run the following scripts in this order:
* Copy all the unpatched readmes to the patched location with additional info on variations appended:
* `./standardize-and-complete-readmes.sh`
* `cd bin/scripts`
* `./standardize-and-complete-readmes.sh XYZ`
* Patch **all** of the variations/options, e.g.
* `./gotta-patch-em-all-font-patcher\!.sh XYZ`

View File

@ -51,7 +51,10 @@ class font_patcher:
self.extension = ""
self.setup_arguments()
self.config = configparser.ConfigParser(empty_lines_in_values=False, allow_no_value=True)
self.sourceFont = fontforge.open(self.args.font)
try:
self.sourceFont = fontforge.open(self.args.font, ("fstypepermitted",))
except Exception:
sys.exit(projectName + ": Can not open font, try to open with fontforge interactively to get more information")
self.setup_font_names()
self.remove_ligatures()
make_sure_path_exists(self.args.outputdir)
@ -68,6 +71,9 @@ class font_patcher:
def patch(self):
print("{} Patcher v{} executing\n".format(projectName, version))
if self.args.single:
# Force width to be equal on all glyphs to ensure the font is considered monospaced on Windows.
# This needs to be done on all characters, as some information seems to be lost from the original font file.
@ -347,7 +353,11 @@ class font_patcher:
'Cascadia Code' : 'Caskaydia Cove',
'cascadia code' : 'caskaydia cove',
'CascadiaCode' : 'CaskaydiaCove',
'cascadiacode' : 'caskaydiacove'
'cascadiacode' : 'caskaydiacove',
'Cascadia Mono' : 'Caskaydia Mono',
'cascadia mono' : 'caskaydia mono',
'CascadiaMono' : 'CaskaydiaMono',
'cascadiamono' : 'caskaydiamono'
}
# remove overly verbose font names
@ -413,10 +423,10 @@ class font_patcher:
print("Successfully removed subtable:", subtable)
except Exception:
print("Failed to remove subtable:", subtable)
elif self.args.removeligatures:
print("Unable to read configfile, unable to remove ligatures")
else:
print("No configfile given, skipping configfile related actions")
elif self.args.removeligatures:
print("Unable to read configfile, unable to remove ligatures")
else:
print("No configfile given, skipping configfile related actions")
def check_position_conflicts(self):
@ -519,7 +529,7 @@ class font_patcher:
# Define the character ranges
# Symbol font ranges
self.patch_set = [
{'Enabled': True, 'Name': "Seti-UI + Custom", 'Filename': "original-source.otf", 'Exact': False, 'SymStart': 0xE4FA, 'SymEnd': 0xE530, 'SrcStart': 0xE5FA, 'SrcEnd': 0xE630, 'ScaleGlyph': None, 'Attributes': SYM_ATTR_DEFAULT},
{'Enabled': True, 'Name': "Seti-UI + Custom", 'Filename': "original-source.otf", 'Exact': False, 'SymStart': 0xE4FA, 'SymEnd': 0xE531, 'SrcStart': 0xE5FA, 'SrcEnd': 0xE631, 'ScaleGlyph': None, 'Attributes': SYM_ATTR_DEFAULT},
{'Enabled': True, 'Name': "Devicons", 'Filename': "devicons.ttf", 'Exact': False, 'SymStart': 0xE600, 'SymEnd': 0xE6C5, 'SrcStart': 0xE700, 'SrcEnd': 0xE7C5, 'ScaleGlyph': DEVI_SCALE_LIST, 'Attributes': SYM_ATTR_DEFAULT},
{'Enabled': self.args.powerline, 'Name': "Powerline Symbols", 'Filename': "PowerlineSymbols.otf", 'Exact': True, 'SymStart': 0xE0A0, 'SymEnd': 0xE0A2, 'SrcStart': None, 'SrcEnd': None, 'ScaleGlyph': None, 'Attributes': SYM_ATTR_POWERLINE},
{'Enabled': self.args.powerline, 'Name': "Powerline Symbols", 'Filename': "PowerlineSymbols.otf", 'Exact': True, 'SymStart': 0xE0B0, 'SymEnd': 0xE0B3, 'SrcStart': None, 'SrcEnd': None, 'ScaleGlyph': None, 'Attributes': SYM_ATTR_POWERLINE},

62
install.ps1 Normal file
View File

@ -0,0 +1,62 @@
#Requires -Version 3.0
<#
.SYNOPSIS
Installs the provided fonts.
.DESCRIPTION
Installs all the provided fonts by default. The FontName
parameter can be used to pick a subset of fonts to install.
.EXAMPLE
C:\PS> ./install.ps1
Installs all the fonts located in the Git repository.
.EXAMPLE
C:\PS> ./install.ps1 FiraCode, Hack
Installs all the FiraCode and Hack fonts.
.EXAMPLE
C:\PS> ./install.ps1 DejaVuSansMono -WhatIf
Shows which fonts would be installed without actually installing the fonts.
Remove the "-WhatIf" to install the fonts.
#>
[CmdletBinding(SupportsShouldProcess)]
param ()
dynamicparam {
$Attributes = [Collections.ObjectModel.Collection[Attribute]]::new()
$ParamAttribute = [Parameter]::new()
$ParamAttribute.Position = 0
$ParamAttribute.ParameterSetName = '__AllParameterSets'
$Attributes.Add($ParamAttribute)
[string[]]$FontNames = Join-Path $PSScriptRoot patched-fonts | Get-ChildItem -Directory -Name
$Attributes.Add([ValidateSet]::new(($FontNames)))
$Parameter = [Management.Automation.RuntimeDefinedParameter]::new('FontName', [string[]], $Attributes)
$RuntimeParams = [Management.Automation.RuntimeDefinedParameterDictionary]::new()
$RuntimeParams.Add('FontName', $Parameter)
return $RuntimeParams
}
end {
$FontName = $PSBoundParameters.FontName
if (-not $FontName) {$FontName = '*'}
$fontFiles = [Collections.Generic.List[System.IO.FileInfo]]::new()
Join-Path $PSScriptRoot patched-fonts | Push-Location
foreach ($aFontName in $FontName) {
Get-ChildItem $aFontName -Filter "*.ttf" -Recurse | Foreach-Object {$fontFiles.Add($_)}
Get-ChildItem $aFontName -Filter "*.otf" -Recurse | Foreach-Object {$fontFiles.Add($_)}
}
Pop-Location
$fonts = $null
foreach ($fontFile in $fontFiles) {
if ($PSCmdlet.ShouldProcess($fontFile.Name, "Install Font")) {
if (!$fonts) {
$shellApp = New-Object -ComObject shell.application
$fonts = $shellApp.NameSpace(0x14)
}
$fonts.CopyHere($fontFile.FullName)
}
}
}

View File

@ -77,7 +77,7 @@ useful for users of accented capitals. For more info, see the [CHANGELOG](CHANGE
Automatic installation on macOS with [homebrew](https://brew.sh):
brew tap homebrew/cask-fonts #You only need to do this once for cask-fonts
brew cask install font-fantasque-sans-mono
brew install --cask font-fantasque-sans-mono
Instructions for other platforms might follow.

View File

@ -77,7 +77,7 @@ useful for users of accented capitals. For more info, see the [CHANGELOG](CHANGE
Automatic installation on macOS with [homebrew](https://brew.sh):
brew tap homebrew/cask-fonts #You only need to do this once for cask-fonts
brew cask install font-fantasque-sans-mono
brew install --cask font-fantasque-sans-mono
Instructions for other platforms might follow.

View File

@ -77,7 +77,7 @@ useful for users of accented capitals. For more info, see the [CHANGELOG](CHANGE
Automatic installation on macOS with [homebrew](https://brew.sh):
brew tap homebrew/cask-fonts #You only need to do this once for cask-fonts
brew cask install font-fantasque-sans-mono
brew install --cask font-fantasque-sans-mono
Instructions for other platforms might follow.

View File

@ -77,7 +77,7 @@ useful for users of accented capitals. For more info, see the [CHANGELOG](CHANGE
Automatic installation on macOS with [homebrew](https://brew.sh):
brew tap homebrew/cask-fonts #You only need to do this once for cask-fonts
brew cask install font-fantasque-sans-mono
brew install --cask font-fantasque-sans-mono
Instructions for other platforms might follow.

View File

@ -77,7 +77,7 @@ useful for users of accented capitals. For more info, see the [CHANGELOG](CHANGE
Automatic installation on macOS with [homebrew](https://brew.sh):
brew tap homebrew/cask-fonts #You only need to do this once for cask-fonts
brew cask install font-fantasque-sans-mono
brew install --cask font-fantasque-sans-mono
Instructions for other platforms might follow.

View File

@ -77,7 +77,7 @@ useful for users of accented capitals. For more info, see the [CHANGELOG](CHANGE
Automatic installation on macOS with [homebrew](https://brew.sh):
brew tap homebrew/cask-fonts #You only need to do this once for cask-fonts
brew cask install font-fantasque-sans-mono
brew install --cask font-fantasque-sans-mono
Instructions for other platforms might follow.

View File

@ -77,7 +77,7 @@ useful for users of accented capitals. For more info, see the [CHANGELOG](CHANGE
Automatic installation on macOS with [homebrew](https://brew.sh):
brew tap homebrew/cask-fonts #You only need to do this once for cask-fonts
brew cask install font-fantasque-sans-mono
brew install --cask font-fantasque-sans-mono
Instructions for other platforms might follow.

View File

@ -77,7 +77,7 @@ useful for users of accented capitals. For more info, see the [CHANGELOG](CHANGE
Automatic installation on macOS with [homebrew](https://brew.sh):
brew tap homebrew/cask-fonts #You only need to do this once for cask-fonts
brew cask install font-fantasque-sans-mono
brew install --cask font-fantasque-sans-mono
Instructions for other platforms might follow.

View File

@ -77,7 +77,7 @@ useful for users of accented capitals. For more info, see the [CHANGELOG](CHANGE
Automatic installation on macOS with [homebrew](https://brew.sh):
brew tap homebrew/cask-fonts #You only need to do this once for cask-fonts
brew cask install font-fantasque-sans-mono
brew install --cask font-fantasque-sans-mono
Instructions for other platforms might follow.

View File

@ -77,7 +77,7 @@ useful for users of accented capitals. For more info, see the [CHANGELOG](CHANGE
Automatic installation on macOS with [homebrew](https://brew.sh):
brew tap homebrew/cask-fonts #You only need to do this once for cask-fonts
brew cask install font-fantasque-sans-mono
brew install --cask font-fantasque-sans-mono
Instructions for other platforms might follow.

View File

@ -1,24 +1,4 @@
The font is licensed under SIL OFL Version 1.1.
The support code is licensed under Berkeley Software Distribution license.
---
---
Copyright (c) 2015-2017 Belleve Invis (belleve@typeof.net).
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Belleve Invis nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BELLEVE INVIS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-----------------------
---
Copyright 2015-2017, Belleve Invis (belleve@typeof.net).
Copyright 2015-2021, Renzhi Li (aka. Belleve Invis, belleve@typeof.net)
This Font Software is licensed under the SIL Open Font License, Version 1.1.

View File

@ -1,242 +1,111 @@
# 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)
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
Coders’ typeface, built from code.
![](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/preview-all.png)
![](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).
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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).
- Arch Linux users can install one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to install the chosen package(s).
## Weights, Variants and OpenType features
## Features
The typeface contains 9 weights (Thin to Heavy) alongside with both italic and oblique versions, with the same metrics as the regular one.
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.
![Weights sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/weights.png)
![Weights sample](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).
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).
![Languages Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/languages.png)
![Languages Sample](images/languages.png)
Iosevka supports accessing all letter variants using OpenType features.
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
![Style Sets](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png)
161 Supported Languages:
![Character Variants](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/charvars.png)
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
![Ligations Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/ligations.png)
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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`.
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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:
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] # <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.<plan name>.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: <upright|italic|oblique> = <"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:<your plan name>` and the built fonts would be available in `dist/`. Aside from `contents:<plan>`, other options are:
1. `contents:<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Webfont CSS;
2. `ttf:<plan>` : TTF;
3. `ttf-unhinted:<plan>` : Unhinted TTF only;
4. `woff:<plan>` : TTF and WOFF only;
5. `woff2:<plan>` : 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 `<!--` and `<!---`;
* `calt-eqeq`: Enable ligation for `==` and `===`;
* `calt-ineq`: Enable ligation for `<=` and `>=`;
* `calt-arrowZALE`: Enable ligation for `<=` to form a left double arrow;
* `calt-arrowZAGE`: Enable ligation for `>=` to form a right inverse double arrow;
* `calt-exeq`: Enable ligation for `!=` and `!==`;
* `calt-slasheq`: Enable ligation for `/=` and `/==`;
* `calt-plusplus`: Enable ligation for `++` and further plus-chaining;
* `calt-llgg`: Enable ligation for `<<`, `>>` and other angle-bracket chaining;
* `calt-trig`: Enable ligation for `<|`, `|>` , `<||`, and other bar-and-angle-bracket symbols;
* `calt-dotoper`: Treat dot (`.`) as operator and perform chained centering;
* `calt-brst`: Center asterisk in `(*` and `*)`;
* `calt-logic`: Enable ligation for `/\` and `\/`;
* `calt-colons`: Enable ligation for `::` and `:::` ;
* Styles for changing the line space (leading):
* `leading-750`, `leading-1000`, `leading-1250`, `leading-1500`, `leading-1750`, `leading-2000`: Change the line space. Default is `leading-1250`.
* Styles for changing Powerline symbols' position:
* `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%.
* `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%.
* `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.
* `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.
* Styles for changing the width:
* `expanded`: Expand the width by 10%;
* `compressed`: Compress the width by 10%.
* NOTE: these styles are highly experimental. Handle with extreme care.
* Styles for individual characters. They are easy-to-understand names of the `cv##` styles, including:
* Styles for letter `l`:
* `v-l-hooky` : Hooky `l`.
* `v-l-zshaped` : Z-shaped `l`.
* `v-l-serifed` : Serifed `l` (default for upright and oblique).
* `v-l-italic` : Italic `l` (default for italic).
* `v-l-tailed` : `l` with a curved tail.
* `v-l-hookybottom` : `l` with a straight tail.
* Styles for letter `i`:
* `v-i-hooky` : Hooky `i`.
* `v-i-zshaped` : Z-shaped `i`.
* `v-i-serifed` : Serifed `i` (default for upright and oblique).
* `v-i-italic` : Italic `i` (default for italic).
* Styles for letter `a`:
* `v-a-doublestorey` : Double-storey `a` (default for upright and oblique).
* `v-a-singlestorey` : Single-storey `a` (default for italic).
* Styles for letter `f`:
* `v-f-straight`: `f` without bottom hook (default for upright and oblique).
* `v-f-tailed`: `f` with a leftward bottom hook (default for italic).
* Styles for letter `g`:
* `v-g-doublestorey` : Double-storey `g` (default for upright and oblique).
* `v-g-singlestorey` : Single-storey `g` (default for italic).
* `v-g-opendoublestorey` : Open Double-storey `g`.
* Styles for letter `m`:
* `v-m-longleg` : `m` with long middle leg (default).
* `v-m-shortleg` : `m` with shorter middle leg.
* Styles for letter `t`:
* `v-t-standard` : Standard `t` shape (default).
* `v-t-cross` : Futura-like `t` shape.
* Styles for letter `Q`:
* `v-q-taily` : `Q` with a curly tail (default).
* `v-q-straight` : `Q` with a straight tail in the old versions.
* Styles for letter `y`:
* `v-y-straight`: More-straight letter `y`.
* `v-y-curly`: Curly, cursive-like `y`.
* Styles for zero (`0`):
* `v-zero-slashed` : Slashed Zero `0` (default).
* `v-zero-dotted` : Dotted Zero `0`.
* `v-zero-unslashed` : O-like `0`.
* Styles for one (`1`)
* `v-one-serifed` : `1` with bottom serif (default for Slab).
* `v-one-hooky` : `1` without bottom serif (default for Sans).
* Styles for three (`3`):
* `v-three-flattop` : Flat top `3` (Like Museo Sans / Montserrat).
* `v-three-twoarks` : Arched top `3` (default).
* Styles for ASCII tilde (`~`), asterisk (`*`), paragraph(``), underscore (`_`) and ASCII Caret (`^`):
* `v-tilde-high` : Higher tilde `~`.
* `v-tilde-low` : Lower tilde `~` (default).
* `v-asterisk-high` : Higher asterisk `*` (default).
* `v-asterisk-low` : Lower asterisk `*`.
* `v-paragraph-high` : Higher paragraph symbol `¶` (default).
* `v-paragraph-low` : Lower paragraph symbol `¶`.
* `v-caret-high` : Higher circumflex `^` (default).
* `v-caret-low` : Lower circumflex `^`.
* `v-underscore-high` : Higher underscore `_` (default).
* `v-underscore-low` : Lower underscore `_`.
* Styles for At (`@`):
* `v-at-long` : The long, three-fold At symbol in Iosevka 1.7.x.
* `v-at-fourfold` : The traditional, four-fold At symbol.
* `v-at-short` : The shorter, Fira-like At symbol introduced in Iosevka 1.8.
* Styles for Eszet (`ß`):
* `v-eszet-traditional` : Traditional, Fraktur-like Eszet.
* `v-eszet-sulzbacher` : A more modern, beta-like Eszet (default).
* Styles for curly brackets (`{}`):
* `v-brace-straight` : More straight braces.
* `v-brace-curly` : More curly braces (default).
* Styles for dollar symbol (`$`):
* `v-dollar-open` : Dollar symbol with open contour.
* `v-dollar-through` : Dollar symbol with strike-through vertical bar (default).
* `v-dollar-opencap` : Dollar symbol with open contour, not exceeding baseline and ascender.
* `v-dollar-throughcap` : Dollar symbol with strike-through vertical bar, not exceeding baseline and ascender.
* Styles for Number sign (`#`):
* `v-numbersign-upright` : Number sign with vertical bars (default).
* `v-numbersign-slanted` : Number sign with slanted bars.
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/matrix.png)
![Family Matrix](images/matrix.png)
## Which font?

View File

@ -1,242 +1,111 @@
# 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)
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
Coders’ typeface, built from code.
![](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/preview-all.png)
![](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).
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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).
- Arch Linux users can install one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to install the chosen package(s).
## Weights, Variants and OpenType features
## Features
The typeface contains 9 weights (Thin to Heavy) alongside with both italic and oblique versions, with the same metrics as the regular one.
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.
![Weights sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/weights.png)
![Weights sample](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).
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).
![Languages Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/languages.png)
![Languages Sample](images/languages.png)
Iosevka supports accessing all letter variants using OpenType features.
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
![Style Sets](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png)
161 Supported Languages:
![Character Variants](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/charvars.png)
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
![Ligations Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/ligations.png)
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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`.
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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:
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] # <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.<plan name>.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: <upright|italic|oblique> = <"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:<your plan name>` and the built fonts would be available in `dist/`. Aside from `contents:<plan>`, other options are:
1. `contents:<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Webfont CSS;
2. `ttf:<plan>` : TTF;
3. `ttf-unhinted:<plan>` : Unhinted TTF only;
4. `woff:<plan>` : TTF and WOFF only;
5. `woff2:<plan>` : 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 `<!--` and `<!---`;
* `calt-eqeq`: Enable ligation for `==` and `===`;
* `calt-ineq`: Enable ligation for `<=` and `>=`;
* `calt-arrowZALE`: Enable ligation for `<=` to form a left double arrow;
* `calt-arrowZAGE`: Enable ligation for `>=` to form a right inverse double arrow;
* `calt-exeq`: Enable ligation for `!=` and `!==`;
* `calt-slasheq`: Enable ligation for `/=` and `/==`;
* `calt-plusplus`: Enable ligation for `++` and further plus-chaining;
* `calt-llgg`: Enable ligation for `<<`, `>>` and other angle-bracket chaining;
* `calt-trig`: Enable ligation for `<|`, `|>` , `<||`, and other bar-and-angle-bracket symbols;
* `calt-dotoper`: Treat dot (`.`) as operator and perform chained centering;
* `calt-brst`: Center asterisk in `(*` and `*)`;
* `calt-logic`: Enable ligation for `/\` and `\/`;
* `calt-colons`: Enable ligation for `::` and `:::` ;
* Styles for changing the line space (leading):
* `leading-750`, `leading-1000`, `leading-1250`, `leading-1500`, `leading-1750`, `leading-2000`: Change the line space. Default is `leading-1250`.
* Styles for changing Powerline symbols' position:
* `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%.
* `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%.
* `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.
* `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.
* Styles for changing the width:
* `expanded`: Expand the width by 10%;
* `compressed`: Compress the width by 10%.
* NOTE: these styles are highly experimental. Handle with extreme care.
* Styles for individual characters. They are easy-to-understand names of the `cv##` styles, including:
* Styles for letter `l`:
* `v-l-hooky` : Hooky `l`.
* `v-l-zshaped` : Z-shaped `l`.
* `v-l-serifed` : Serifed `l` (default for upright and oblique).
* `v-l-italic` : Italic `l` (default for italic).
* `v-l-tailed` : `l` with a curved tail.
* `v-l-hookybottom` : `l` with a straight tail.
* Styles for letter `i`:
* `v-i-hooky` : Hooky `i`.
* `v-i-zshaped` : Z-shaped `i`.
* `v-i-serifed` : Serifed `i` (default for upright and oblique).
* `v-i-italic` : Italic `i` (default for italic).
* Styles for letter `a`:
* `v-a-doublestorey` : Double-storey `a` (default for upright and oblique).
* `v-a-singlestorey` : Single-storey `a` (default for italic).
* Styles for letter `f`:
* `v-f-straight`: `f` without bottom hook (default for upright and oblique).
* `v-f-tailed`: `f` with a leftward bottom hook (default for italic).
* Styles for letter `g`:
* `v-g-doublestorey` : Double-storey `g` (default for upright and oblique).
* `v-g-singlestorey` : Single-storey `g` (default for italic).
* `v-g-opendoublestorey` : Open Double-storey `g`.
* Styles for letter `m`:
* `v-m-longleg` : `m` with long middle leg (default).
* `v-m-shortleg` : `m` with shorter middle leg.
* Styles for letter `t`:
* `v-t-standard` : Standard `t` shape (default).
* `v-t-cross` : Futura-like `t` shape.
* Styles for letter `Q`:
* `v-q-taily` : `Q` with a curly tail (default).
* `v-q-straight` : `Q` with a straight tail in the old versions.
* Styles for letter `y`:
* `v-y-straight`: More-straight letter `y`.
* `v-y-curly`: Curly, cursive-like `y`.
* Styles for zero (`0`):
* `v-zero-slashed` : Slashed Zero `0` (default).
* `v-zero-dotted` : Dotted Zero `0`.
* `v-zero-unslashed` : O-like `0`.
* Styles for one (`1`)
* `v-one-serifed` : `1` with bottom serif (default for Slab).
* `v-one-hooky` : `1` without bottom serif (default for Sans).
* Styles for three (`3`):
* `v-three-flattop` : Flat top `3` (Like Museo Sans / Montserrat).
* `v-three-twoarks` : Arched top `3` (default).
* Styles for ASCII tilde (`~`), asterisk (`*`), paragraph(``), underscore (`_`) and ASCII Caret (`^`):
* `v-tilde-high` : Higher tilde `~`.
* `v-tilde-low` : Lower tilde `~` (default).
* `v-asterisk-high` : Higher asterisk `*` (default).
* `v-asterisk-low` : Lower asterisk `*`.
* `v-paragraph-high` : Higher paragraph symbol `¶` (default).
* `v-paragraph-low` : Lower paragraph symbol `¶`.
* `v-caret-high` : Higher circumflex `^` (default).
* `v-caret-low` : Lower circumflex `^`.
* `v-underscore-high` : Higher underscore `_` (default).
* `v-underscore-low` : Lower underscore `_`.
* Styles for At (`@`):
* `v-at-long` : The long, three-fold At symbol in Iosevka 1.7.x.
* `v-at-fourfold` : The traditional, four-fold At symbol.
* `v-at-short` : The shorter, Fira-like At symbol introduced in Iosevka 1.8.
* Styles for Eszet (`ß`):
* `v-eszet-traditional` : Traditional, Fraktur-like Eszet.
* `v-eszet-sulzbacher` : A more modern, beta-like Eszet (default).
* Styles for curly brackets (`{}`):
* `v-brace-straight` : More straight braces.
* `v-brace-curly` : More curly braces (default).
* Styles for dollar symbol (`$`):
* `v-dollar-open` : Dollar symbol with open contour.
* `v-dollar-through` : Dollar symbol with strike-through vertical bar (default).
* `v-dollar-opencap` : Dollar symbol with open contour, not exceeding baseline and ascender.
* `v-dollar-throughcap` : Dollar symbol with strike-through vertical bar, not exceeding baseline and ascender.
* Styles for Number sign (`#`):
* `v-numbersign-upright` : Number sign with vertical bars (default).
* `v-numbersign-slanted` : Number sign with slanted bars.
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/matrix.png)
![Family Matrix](images/matrix.png)
## Which font?

View File

@ -1,24 +1,4 @@
The font is licensed under SIL OFL Version 1.1.
The support code is licensed under Berkeley Software Distribution license.
---
---
Copyright (c) 2015-2017 Belleve Invis (belleve@typeof.net).
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Belleve Invis nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BELLEVE INVIS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-----------------------
---
Copyright 2015-2017, Belleve Invis (belleve@typeof.net).
Copyright 2015-2021, Renzhi Li (aka. Belleve Invis, belleve@typeof.net)
This Font Software is licensed under the SIL Open Font License, Version 1.1.

View File

@ -1,242 +1,111 @@
# 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)
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
Coders’ typeface, built from code.
![](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/preview-all.png)
![](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).
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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).
- Arch Linux users can install one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to install the chosen package(s).
## Weights, Variants and OpenType features
## Features
The typeface contains 9 weights (Thin to Heavy) alongside with both italic and oblique versions, with the same metrics as the regular one.
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.
![Weights sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/weights.png)
![Weights sample](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).
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).
![Languages Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/languages.png)
![Languages Sample](images/languages.png)
Iosevka supports accessing all letter variants using OpenType features.
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
![Style Sets](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png)
161 Supported Languages:
![Character Variants](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/charvars.png)
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
![Ligations Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/ligations.png)
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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`.
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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:
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] # <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.<plan name>.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: <upright|italic|oblique> = <"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:<your plan name>` and the built fonts would be available in `dist/`. Aside from `contents:<plan>`, other options are:
1. `contents:<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Webfont CSS;
2. `ttf:<plan>` : TTF;
3. `ttf-unhinted:<plan>` : Unhinted TTF only;
4. `woff:<plan>` : TTF and WOFF only;
5. `woff2:<plan>` : 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 `<!--` and `<!---`;
* `calt-eqeq`: Enable ligation for `==` and `===`;
* `calt-ineq`: Enable ligation for `<=` and `>=`;
* `calt-arrowZALE`: Enable ligation for `<=` to form a left double arrow;
* `calt-arrowZAGE`: Enable ligation for `>=` to form a right inverse double arrow;
* `calt-exeq`: Enable ligation for `!=` and `!==`;
* `calt-slasheq`: Enable ligation for `/=` and `/==`;
* `calt-plusplus`: Enable ligation for `++` and further plus-chaining;
* `calt-llgg`: Enable ligation for `<<`, `>>` and other angle-bracket chaining;
* `calt-trig`: Enable ligation for `<|`, `|>` , `<||`, and other bar-and-angle-bracket symbols;
* `calt-dotoper`: Treat dot (`.`) as operator and perform chained centering;
* `calt-brst`: Center asterisk in `(*` and `*)`;
* `calt-logic`: Enable ligation for `/\` and `\/`;
* `calt-colons`: Enable ligation for `::` and `:::` ;
* Styles for changing the line space (leading):
* `leading-750`, `leading-1000`, `leading-1250`, `leading-1500`, `leading-1750`, `leading-2000`: Change the line space. Default is `leading-1250`.
* Styles for changing Powerline symbols' position:
* `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%.
* `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%.
* `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.
* `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.
* Styles for changing the width:
* `expanded`: Expand the width by 10%;
* `compressed`: Compress the width by 10%.
* NOTE: these styles are highly experimental. Handle with extreme care.
* Styles for individual characters. They are easy-to-understand names of the `cv##` styles, including:
* Styles for letter `l`:
* `v-l-hooky` : Hooky `l`.
* `v-l-zshaped` : Z-shaped `l`.
* `v-l-serifed` : Serifed `l` (default for upright and oblique).
* `v-l-italic` : Italic `l` (default for italic).
* `v-l-tailed` : `l` with a curved tail.
* `v-l-hookybottom` : `l` with a straight tail.
* Styles for letter `i`:
* `v-i-hooky` : Hooky `i`.
* `v-i-zshaped` : Z-shaped `i`.
* `v-i-serifed` : Serifed `i` (default for upright and oblique).
* `v-i-italic` : Italic `i` (default for italic).
* Styles for letter `a`:
* `v-a-doublestorey` : Double-storey `a` (default for upright and oblique).
* `v-a-singlestorey` : Single-storey `a` (default for italic).
* Styles for letter `f`:
* `v-f-straight`: `f` without bottom hook (default for upright and oblique).
* `v-f-tailed`: `f` with a leftward bottom hook (default for italic).
* Styles for letter `g`:
* `v-g-doublestorey` : Double-storey `g` (default for upright and oblique).
* `v-g-singlestorey` : Single-storey `g` (default for italic).
* `v-g-opendoublestorey` : Open Double-storey `g`.
* Styles for letter `m`:
* `v-m-longleg` : `m` with long middle leg (default).
* `v-m-shortleg` : `m` with shorter middle leg.
* Styles for letter `t`:
* `v-t-standard` : Standard `t` shape (default).
* `v-t-cross` : Futura-like `t` shape.
* Styles for letter `Q`:
* `v-q-taily` : `Q` with a curly tail (default).
* `v-q-straight` : `Q` with a straight tail in the old versions.
* Styles for letter `y`:
* `v-y-straight`: More-straight letter `y`.
* `v-y-curly`: Curly, cursive-like `y`.
* Styles for zero (`0`):
* `v-zero-slashed` : Slashed Zero `0` (default).
* `v-zero-dotted` : Dotted Zero `0`.
* `v-zero-unslashed` : O-like `0`.
* Styles for one (`1`)
* `v-one-serifed` : `1` with bottom serif (default for Slab).
* `v-one-hooky` : `1` without bottom serif (default for Sans).
* Styles for three (`3`):
* `v-three-flattop` : Flat top `3` (Like Museo Sans / Montserrat).
* `v-three-twoarks` : Arched top `3` (default).
* Styles for ASCII tilde (`~`), asterisk (`*`), paragraph(``), underscore (`_`) and ASCII Caret (`^`):
* `v-tilde-high` : Higher tilde `~`.
* `v-tilde-low` : Lower tilde `~` (default).
* `v-asterisk-high` : Higher asterisk `*` (default).
* `v-asterisk-low` : Lower asterisk `*`.
* `v-paragraph-high` : Higher paragraph symbol `¶` (default).
* `v-paragraph-low` : Lower paragraph symbol `¶`.
* `v-caret-high` : Higher circumflex `^` (default).
* `v-caret-low` : Lower circumflex `^`.
* `v-underscore-high` : Higher underscore `_` (default).
* `v-underscore-low` : Lower underscore `_`.
* Styles for At (`@`):
* `v-at-long` : The long, three-fold At symbol in Iosevka 1.7.x.
* `v-at-fourfold` : The traditional, four-fold At symbol.
* `v-at-short` : The shorter, Fira-like At symbol introduced in Iosevka 1.8.
* Styles for Eszet (`ß`):
* `v-eszet-traditional` : Traditional, Fraktur-like Eszet.
* `v-eszet-sulzbacher` : A more modern, beta-like Eszet (default).
* Styles for curly brackets (`{}`):
* `v-brace-straight` : More straight braces.
* `v-brace-curly` : More curly braces (default).
* Styles for dollar symbol (`$`):
* `v-dollar-open` : Dollar symbol with open contour.
* `v-dollar-through` : Dollar symbol with strike-through vertical bar (default).
* `v-dollar-opencap` : Dollar symbol with open contour, not exceeding baseline and ascender.
* `v-dollar-throughcap` : Dollar symbol with strike-through vertical bar, not exceeding baseline and ascender.
* Styles for Number sign (`#`):
* `v-numbersign-upright` : Number sign with vertical bars (default).
* `v-numbersign-slanted` : Number sign with slanted bars.
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/matrix.png)
![Family Matrix](images/matrix.png)
## Which font?

View File

@ -1,242 +1,111 @@
# 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)
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
Coders’ typeface, built from code.
![](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/preview-all.png)
![](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).
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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).
- Arch Linux users can install one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to install the chosen package(s).
## Weights, Variants and OpenType features
## Features
The typeface contains 9 weights (Thin to Heavy) alongside with both italic and oblique versions, with the same metrics as the regular one.
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.
![Weights sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/weights.png)
![Weights sample](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).
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).
![Languages Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/languages.png)
![Languages Sample](images/languages.png)
Iosevka supports accessing all letter variants using OpenType features.
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
![Style Sets](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png)
161 Supported Languages:
![Character Variants](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/charvars.png)
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
![Ligations Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/ligations.png)
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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`.
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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:
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] # <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.<plan name>.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: <upright|italic|oblique> = <"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:<your plan name>` and the built fonts would be available in `dist/`. Aside from `contents:<plan>`, other options are:
1. `contents:<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Webfont CSS;
2. `ttf:<plan>` : TTF;
3. `ttf-unhinted:<plan>` : Unhinted TTF only;
4. `woff:<plan>` : TTF and WOFF only;
5. `woff2:<plan>` : 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 `<!--` and `<!---`;
* `calt-eqeq`: Enable ligation for `==` and `===`;
* `calt-ineq`: Enable ligation for `<=` and `>=`;
* `calt-arrowZALE`: Enable ligation for `<=` to form a left double arrow;
* `calt-arrowZAGE`: Enable ligation for `>=` to form a right inverse double arrow;
* `calt-exeq`: Enable ligation for `!=` and `!==`;
* `calt-slasheq`: Enable ligation for `/=` and `/==`;
* `calt-plusplus`: Enable ligation for `++` and further plus-chaining;
* `calt-llgg`: Enable ligation for `<<`, `>>` and other angle-bracket chaining;
* `calt-trig`: Enable ligation for `<|`, `|>` , `<||`, and other bar-and-angle-bracket symbols;
* `calt-dotoper`: Treat dot (`.`) as operator and perform chained centering;
* `calt-brst`: Center asterisk in `(*` and `*)`;
* `calt-logic`: Enable ligation for `/\` and `\/`;
* `calt-colons`: Enable ligation for `::` and `:::` ;
* Styles for changing the line space (leading):
* `leading-750`, `leading-1000`, `leading-1250`, `leading-1500`, `leading-1750`, `leading-2000`: Change the line space. Default is `leading-1250`.
* Styles for changing Powerline symbols' position:
* `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%.
* `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%.
* `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.
* `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.
* Styles for changing the width:
* `expanded`: Expand the width by 10%;
* `compressed`: Compress the width by 10%.
* NOTE: these styles are highly experimental. Handle with extreme care.
* Styles for individual characters. They are easy-to-understand names of the `cv##` styles, including:
* Styles for letter `l`:
* `v-l-hooky` : Hooky `l`.
* `v-l-zshaped` : Z-shaped `l`.
* `v-l-serifed` : Serifed `l` (default for upright and oblique).
* `v-l-italic` : Italic `l` (default for italic).
* `v-l-tailed` : `l` with a curved tail.
* `v-l-hookybottom` : `l` with a straight tail.
* Styles for letter `i`:
* `v-i-hooky` : Hooky `i`.
* `v-i-zshaped` : Z-shaped `i`.
* `v-i-serifed` : Serifed `i` (default for upright and oblique).
* `v-i-italic` : Italic `i` (default for italic).
* Styles for letter `a`:
* `v-a-doublestorey` : Double-storey `a` (default for upright and oblique).
* `v-a-singlestorey` : Single-storey `a` (default for italic).
* Styles for letter `f`:
* `v-f-straight`: `f` without bottom hook (default for upright and oblique).
* `v-f-tailed`: `f` with a leftward bottom hook (default for italic).
* Styles for letter `g`:
* `v-g-doublestorey` : Double-storey `g` (default for upright and oblique).
* `v-g-singlestorey` : Single-storey `g` (default for italic).
* `v-g-opendoublestorey` : Open Double-storey `g`.
* Styles for letter `m`:
* `v-m-longleg` : `m` with long middle leg (default).
* `v-m-shortleg` : `m` with shorter middle leg.
* Styles for letter `t`:
* `v-t-standard` : Standard `t` shape (default).
* `v-t-cross` : Futura-like `t` shape.
* Styles for letter `Q`:
* `v-q-taily` : `Q` with a curly tail (default).
* `v-q-straight` : `Q` with a straight tail in the old versions.
* Styles for letter `y`:
* `v-y-straight`: More-straight letter `y`.
* `v-y-curly`: Curly, cursive-like `y`.
* Styles for zero (`0`):
* `v-zero-slashed` : Slashed Zero `0` (default).
* `v-zero-dotted` : Dotted Zero `0`.
* `v-zero-unslashed` : O-like `0`.
* Styles for one (`1`)
* `v-one-serifed` : `1` with bottom serif (default for Slab).
* `v-one-hooky` : `1` without bottom serif (default for Sans).
* Styles for three (`3`):
* `v-three-flattop` : Flat top `3` (Like Museo Sans / Montserrat).
* `v-three-twoarks` : Arched top `3` (default).
* Styles for ASCII tilde (`~`), asterisk (`*`), paragraph(``), underscore (`_`) and ASCII Caret (`^`):
* `v-tilde-high` : Higher tilde `~`.
* `v-tilde-low` : Lower tilde `~` (default).
* `v-asterisk-high` : Higher asterisk `*` (default).
* `v-asterisk-low` : Lower asterisk `*`.
* `v-paragraph-high` : Higher paragraph symbol `¶` (default).
* `v-paragraph-low` : Lower paragraph symbol `¶`.
* `v-caret-high` : Higher circumflex `^` (default).
* `v-caret-low` : Lower circumflex `^`.
* `v-underscore-high` : Higher underscore `_` (default).
* `v-underscore-low` : Lower underscore `_`.
* Styles for At (`@`):
* `v-at-long` : The long, three-fold At symbol in Iosevka 1.7.x.
* `v-at-fourfold` : The traditional, four-fold At symbol.
* `v-at-short` : The shorter, Fira-like At symbol introduced in Iosevka 1.8.
* Styles for Eszet (`ß`):
* `v-eszet-traditional` : Traditional, Fraktur-like Eszet.
* `v-eszet-sulzbacher` : A more modern, beta-like Eszet (default).
* Styles for curly brackets (`{}`):
* `v-brace-straight` : More straight braces.
* `v-brace-curly` : More curly braces (default).
* Styles for dollar symbol (`$`):
* `v-dollar-open` : Dollar symbol with open contour.
* `v-dollar-through` : Dollar symbol with strike-through vertical bar (default).
* `v-dollar-opencap` : Dollar symbol with open contour, not exceeding baseline and ascender.
* `v-dollar-throughcap` : Dollar symbol with strike-through vertical bar, not exceeding baseline and ascender.
* Styles for Number sign (`#`):
* `v-numbersign-upright` : Number sign with vertical bars (default).
* `v-numbersign-slanted` : Number sign with slanted bars.
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/matrix.png)
![Family Matrix](images/matrix.png)
## Which font?

View File

@ -1,24 +1,4 @@
The font is licensed under SIL OFL Version 1.1.
The support code is licensed under Berkeley Software Distribution license.
---
---
Copyright (c) 2015-2017 Belleve Invis (belleve@typeof.net).
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Belleve Invis nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BELLEVE INVIS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-----------------------
---
Copyright 2015-2017, Belleve Invis (belleve@typeof.net).
Copyright 2015-2021, Renzhi Li (aka. Belleve Invis, belleve@typeof.net)
This Font Software is licensed under the SIL Open Font License, Version 1.1.

View File

@ -1,242 +1,111 @@
# 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)
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
Coders’ typeface, built from code.
![](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/preview-all.png)
![](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).
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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).
- Arch Linux users can install one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to install the chosen package(s).
## Weights, Variants and OpenType features
## Features
The typeface contains 9 weights (Thin to Heavy) alongside with both italic and oblique versions, with the same metrics as the regular one.
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.
![Weights sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/weights.png)
![Weights sample](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).
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).
![Languages Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/languages.png)
![Languages Sample](images/languages.png)
Iosevka supports accessing all letter variants using OpenType features.
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
![Style Sets](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png)
161 Supported Languages:
![Character Variants](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/charvars.png)
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
![Ligations Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/ligations.png)
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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`.
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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:
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] # <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.<plan name>.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: <upright|italic|oblique> = <"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:<your plan name>` and the built fonts would be available in `dist/`. Aside from `contents:<plan>`, other options are:
1. `contents:<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Webfont CSS;
2. `ttf:<plan>` : TTF;
3. `ttf-unhinted:<plan>` : Unhinted TTF only;
4. `woff:<plan>` : TTF and WOFF only;
5. `woff2:<plan>` : 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 `<!--` and `<!---`;
* `calt-eqeq`: Enable ligation for `==` and `===`;
* `calt-ineq`: Enable ligation for `<=` and `>=`;
* `calt-arrowZALE`: Enable ligation for `<=` to form a left double arrow;
* `calt-arrowZAGE`: Enable ligation for `>=` to form a right inverse double arrow;
* `calt-exeq`: Enable ligation for `!=` and `!==`;
* `calt-slasheq`: Enable ligation for `/=` and `/==`;
* `calt-plusplus`: Enable ligation for `++` and further plus-chaining;
* `calt-llgg`: Enable ligation for `<<`, `>>` and other angle-bracket chaining;
* `calt-trig`: Enable ligation for `<|`, `|>` , `<||`, and other bar-and-angle-bracket symbols;
* `calt-dotoper`: Treat dot (`.`) as operator and perform chained centering;
* `calt-brst`: Center asterisk in `(*` and `*)`;
* `calt-logic`: Enable ligation for `/\` and `\/`;
* `calt-colons`: Enable ligation for `::` and `:::` ;
* Styles for changing the line space (leading):
* `leading-750`, `leading-1000`, `leading-1250`, `leading-1500`, `leading-1750`, `leading-2000`: Change the line space. Default is `leading-1250`.
* Styles for changing Powerline symbols' position:
* `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%.
* `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%.
* `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.
* `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.
* Styles for changing the width:
* `expanded`: Expand the width by 10%;
* `compressed`: Compress the width by 10%.
* NOTE: these styles are highly experimental. Handle with extreme care.
* Styles for individual characters. They are easy-to-understand names of the `cv##` styles, including:
* Styles for letter `l`:
* `v-l-hooky` : Hooky `l`.
* `v-l-zshaped` : Z-shaped `l`.
* `v-l-serifed` : Serifed `l` (default for upright and oblique).
* `v-l-italic` : Italic `l` (default for italic).
* `v-l-tailed` : `l` with a curved tail.
* `v-l-hookybottom` : `l` with a straight tail.
* Styles for letter `i`:
* `v-i-hooky` : Hooky `i`.
* `v-i-zshaped` : Z-shaped `i`.
* `v-i-serifed` : Serifed `i` (default for upright and oblique).
* `v-i-italic` : Italic `i` (default for italic).
* Styles for letter `a`:
* `v-a-doublestorey` : Double-storey `a` (default for upright and oblique).
* `v-a-singlestorey` : Single-storey `a` (default for italic).
* Styles for letter `f`:
* `v-f-straight`: `f` without bottom hook (default for upright and oblique).
* `v-f-tailed`: `f` with a leftward bottom hook (default for italic).
* Styles for letter `g`:
* `v-g-doublestorey` : Double-storey `g` (default for upright and oblique).
* `v-g-singlestorey` : Single-storey `g` (default for italic).
* `v-g-opendoublestorey` : Open Double-storey `g`.
* Styles for letter `m`:
* `v-m-longleg` : `m` with long middle leg (default).
* `v-m-shortleg` : `m` with shorter middle leg.
* Styles for letter `t`:
* `v-t-standard` : Standard `t` shape (default).
* `v-t-cross` : Futura-like `t` shape.
* Styles for letter `Q`:
* `v-q-taily` : `Q` with a curly tail (default).
* `v-q-straight` : `Q` with a straight tail in the old versions.
* Styles for letter `y`:
* `v-y-straight`: More-straight letter `y`.
* `v-y-curly`: Curly, cursive-like `y`.
* Styles for zero (`0`):
* `v-zero-slashed` : Slashed Zero `0` (default).
* `v-zero-dotted` : Dotted Zero `0`.
* `v-zero-unslashed` : O-like `0`.
* Styles for one (`1`)
* `v-one-serifed` : `1` with bottom serif (default for Slab).
* `v-one-hooky` : `1` without bottom serif (default for Sans).
* Styles for three (`3`):
* `v-three-flattop` : Flat top `3` (Like Museo Sans / Montserrat).
* `v-three-twoarks` : Arched top `3` (default).
* Styles for ASCII tilde (`~`), asterisk (`*`), paragraph(``), underscore (`_`) and ASCII Caret (`^`):
* `v-tilde-high` : Higher tilde `~`.
* `v-tilde-low` : Lower tilde `~` (default).
* `v-asterisk-high` : Higher asterisk `*` (default).
* `v-asterisk-low` : Lower asterisk `*`.
* `v-paragraph-high` : Higher paragraph symbol `¶` (default).
* `v-paragraph-low` : Lower paragraph symbol `¶`.
* `v-caret-high` : Higher circumflex `^` (default).
* `v-caret-low` : Lower circumflex `^`.
* `v-underscore-high` : Higher underscore `_` (default).
* `v-underscore-low` : Lower underscore `_`.
* Styles for At (`@`):
* `v-at-long` : The long, three-fold At symbol in Iosevka 1.7.x.
* `v-at-fourfold` : The traditional, four-fold At symbol.
* `v-at-short` : The shorter, Fira-like At symbol introduced in Iosevka 1.8.
* Styles for Eszet (`ß`):
* `v-eszet-traditional` : Traditional, Fraktur-like Eszet.
* `v-eszet-sulzbacher` : A more modern, beta-like Eszet (default).
* Styles for curly brackets (`{}`):
* `v-brace-straight` : More straight braces.
* `v-brace-curly` : More curly braces (default).
* Styles for dollar symbol (`$`):
* `v-dollar-open` : Dollar symbol with open contour.
* `v-dollar-through` : Dollar symbol with strike-through vertical bar (default).
* `v-dollar-opencap` : Dollar symbol with open contour, not exceeding baseline and ascender.
* `v-dollar-throughcap` : Dollar symbol with strike-through vertical bar, not exceeding baseline and ascender.
* Styles for Number sign (`#`):
* `v-numbersign-upright` : Number sign with vertical bars (default).
* `v-numbersign-slanted` : Number sign with slanted bars.
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/matrix.png)
![Family Matrix](images/matrix.png)
## Which font?

View File

@ -1,242 +1,111 @@
# 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)
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
Coders’ typeface, built from code.
![](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/preview-all.png)
![](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).
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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).
- Arch Linux users can install one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to install the chosen package(s).
## Weights, Variants and OpenType features
## Features
The typeface contains 9 weights (Thin to Heavy) alongside with both italic and oblique versions, with the same metrics as the regular one.
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.
![Weights sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/weights.png)
![Weights sample](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).
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).
![Languages Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/languages.png)
![Languages Sample](images/languages.png)
Iosevka supports accessing all letter variants using OpenType features.
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
![Style Sets](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png)
161 Supported Languages:
![Character Variants](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/charvars.png)
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
![Ligations Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/ligations.png)
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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`.
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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:
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] # <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.<plan name>.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: <upright|italic|oblique> = <"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:<your plan name>` and the built fonts would be available in `dist/`. Aside from `contents:<plan>`, other options are:
1. `contents:<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Webfont CSS;
2. `ttf:<plan>` : TTF;
3. `ttf-unhinted:<plan>` : Unhinted TTF only;
4. `woff:<plan>` : TTF and WOFF only;
5. `woff2:<plan>` : 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 `<!--` and `<!---`;
* `calt-eqeq`: Enable ligation for `==` and `===`;
* `calt-ineq`: Enable ligation for `<=` and `>=`;
* `calt-arrowZALE`: Enable ligation for `<=` to form a left double arrow;
* `calt-arrowZAGE`: Enable ligation for `>=` to form a right inverse double arrow;
* `calt-exeq`: Enable ligation for `!=` and `!==`;
* `calt-slasheq`: Enable ligation for `/=` and `/==`;
* `calt-plusplus`: Enable ligation for `++` and further plus-chaining;
* `calt-llgg`: Enable ligation for `<<`, `>>` and other angle-bracket chaining;
* `calt-trig`: Enable ligation for `<|`, `|>` , `<||`, and other bar-and-angle-bracket symbols;
* `calt-dotoper`: Treat dot (`.`) as operator and perform chained centering;
* `calt-brst`: Center asterisk in `(*` and `*)`;
* `calt-logic`: Enable ligation for `/\` and `\/`;
* `calt-colons`: Enable ligation for `::` and `:::` ;
* Styles for changing the line space (leading):
* `leading-750`, `leading-1000`, `leading-1250`, `leading-1500`, `leading-1750`, `leading-2000`: Change the line space. Default is `leading-1250`.
* Styles for changing Powerline symbols' position:
* `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%.
* `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%.
* `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.
* `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.
* Styles for changing the width:
* `expanded`: Expand the width by 10%;
* `compressed`: Compress the width by 10%.
* NOTE: these styles are highly experimental. Handle with extreme care.
* Styles for individual characters. They are easy-to-understand names of the `cv##` styles, including:
* Styles for letter `l`:
* `v-l-hooky` : Hooky `l`.
* `v-l-zshaped` : Z-shaped `l`.
* `v-l-serifed` : Serifed `l` (default for upright and oblique).
* `v-l-italic` : Italic `l` (default for italic).
* `v-l-tailed` : `l` with a curved tail.
* `v-l-hookybottom` : `l` with a straight tail.
* Styles for letter `i`:
* `v-i-hooky` : Hooky `i`.
* `v-i-zshaped` : Z-shaped `i`.
* `v-i-serifed` : Serifed `i` (default for upright and oblique).
* `v-i-italic` : Italic `i` (default for italic).
* Styles for letter `a`:
* `v-a-doublestorey` : Double-storey `a` (default for upright and oblique).
* `v-a-singlestorey` : Single-storey `a` (default for italic).
* Styles for letter `f`:
* `v-f-straight`: `f` without bottom hook (default for upright and oblique).
* `v-f-tailed`: `f` with a leftward bottom hook (default for italic).
* Styles for letter `g`:
* `v-g-doublestorey` : Double-storey `g` (default for upright and oblique).
* `v-g-singlestorey` : Single-storey `g` (default for italic).
* `v-g-opendoublestorey` : Open Double-storey `g`.
* Styles for letter `m`:
* `v-m-longleg` : `m` with long middle leg (default).
* `v-m-shortleg` : `m` with shorter middle leg.
* Styles for letter `t`:
* `v-t-standard` : Standard `t` shape (default).
* `v-t-cross` : Futura-like `t` shape.
* Styles for letter `Q`:
* `v-q-taily` : `Q` with a curly tail (default).
* `v-q-straight` : `Q` with a straight tail in the old versions.
* Styles for letter `y`:
* `v-y-straight`: More-straight letter `y`.
* `v-y-curly`: Curly, cursive-like `y`.
* Styles for zero (`0`):
* `v-zero-slashed` : Slashed Zero `0` (default).
* `v-zero-dotted` : Dotted Zero `0`.
* `v-zero-unslashed` : O-like `0`.
* Styles for one (`1`)
* `v-one-serifed` : `1` with bottom serif (default for Slab).
* `v-one-hooky` : `1` without bottom serif (default for Sans).
* Styles for three (`3`):
* `v-three-flattop` : Flat top `3` (Like Museo Sans / Montserrat).
* `v-three-twoarks` : Arched top `3` (default).
* Styles for ASCII tilde (`~`), asterisk (`*`), paragraph(``), underscore (`_`) and ASCII Caret (`^`):
* `v-tilde-high` : Higher tilde `~`.
* `v-tilde-low` : Lower tilde `~` (default).
* `v-asterisk-high` : Higher asterisk `*` (default).
* `v-asterisk-low` : Lower asterisk `*`.
* `v-paragraph-high` : Higher paragraph symbol `¶` (default).
* `v-paragraph-low` : Lower paragraph symbol `¶`.
* `v-caret-high` : Higher circumflex `^` (default).
* `v-caret-low` : Lower circumflex `^`.
* `v-underscore-high` : Higher underscore `_` (default).
* `v-underscore-low` : Lower underscore `_`.
* Styles for At (`@`):
* `v-at-long` : The long, three-fold At symbol in Iosevka 1.7.x.
* `v-at-fourfold` : The traditional, four-fold At symbol.
* `v-at-short` : The shorter, Fira-like At symbol introduced in Iosevka 1.8.
* Styles for Eszet (`ß`):
* `v-eszet-traditional` : Traditional, Fraktur-like Eszet.
* `v-eszet-sulzbacher` : A more modern, beta-like Eszet (default).
* Styles for curly brackets (`{}`):
* `v-brace-straight` : More straight braces.
* `v-brace-curly` : More curly braces (default).
* Styles for dollar symbol (`$`):
* `v-dollar-open` : Dollar symbol with open contour.
* `v-dollar-through` : Dollar symbol with strike-through vertical bar (default).
* `v-dollar-opencap` : Dollar symbol with open contour, not exceeding baseline and ascender.
* `v-dollar-throughcap` : Dollar symbol with strike-through vertical bar, not exceeding baseline and ascender.
* Styles for Number sign (`#`):
* `v-numbersign-upright` : Number sign with vertical bars (default).
* `v-numbersign-slanted` : Number sign with slanted bars.
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/matrix.png)
![Family Matrix](images/matrix.png)
## Which font?

View File

@ -0,0 +1,110 @@
Copyright 2015-2021, Renzhi Li (aka. Belleve Invis, belleve@typeof.net)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
--------------------------
SIL Open Font License v1.1
====================================================
Preamble
----------
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
Definitions
-------------
`"Font Software"` refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
`"Reserved Font Name"` refers to any names specified as such after the
copyright statement(s).
`"Original Version"` refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
`"Modified Version"` refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
`"Author"` refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
Permission & Conditions
------------------------
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1. Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2. Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3. No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5. The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
Termination
-----------
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -0,0 +1,152 @@
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
![](images/preview-all.png)
## Installation
Quit your editor/program. Unzip and open the folder.
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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 one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to 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.
![Weights sample](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).
![Languages Sample](images/languages.png)
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](images/matrix.png)
## Which font?
### TL;DR
* Pick your font family and then select from the `'complete'` directory.
* If you are on Windows pick a font with the `'Windows Compatible'` suffix.
* This includes specific tweaks to ensure the font works on Windows, in particular monospace identification and font name length limitations
* If you are limited to monospaced fonts (because of your terminal, etc) then pick a font with the `'Mono'` suffix.
* This denotes that the Nerd Font glyphs will be monospaced not necessarily that the entire font will be monospaced
### Ligatures
By the *Nerd Font* policy, the variant with the `'Mono'` suffix is not supposed to have any ligatures.
Use the non-*Mono* variants to have ligatures.
### Explanation
Once you narrow down your font choice of family (`Droid Sans`, `Inconsolata`, etc) and style (`bold`, `italic`, etc) you have 2 main choices:
#### `Option 1: Download already patched font`
* download an already patched font from the `complete` folder
* 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.
#### `Option 2: Patch your own font`
* patch your own variations with the various options provided by the font patcher (see each font's readme for full list of combinations available)
* This is the option you want if the font you use is _not_ already included or you want maximum control of what's included
* 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.
For more information see: [The FAQ](https://github.com/ryanoasis/nerd-fonts/wiki/FAQ-and-Troubleshooting#which-font)
[vim-devicons]:https://github.com/ryanoasis/vim-devicons
[vorillaz-devicons]:https://vorillaz.github.io/devicons/
[font-awesome]:https://github.com/FortAwesome/Font-Awesome
[octicons]:https://github.com/primer/octicons
[gabrielelana-pomicons]:https://github.com/gabrielelana/pomicons
[Seti-UI]:https://atom.io/themes/seti-ui
[ryanoasis-powerline-extra-symbols]:https://github.com/ryanoasis/powerline-extra-symbols
[SIL-RFN]:http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web_fonts_and_RFNs#14cbfd4a

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,110 @@
Copyright 2015-2021, Renzhi Li (aka. Belleve Invis, belleve@typeof.net)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
--------------------------
SIL Open Font License v1.1
====================================================
Preamble
----------
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
Definitions
-------------
`"Font Software"` refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
`"Reserved Font Name"` refers to any names specified as such after the
copyright statement(s).
`"Original Version"` refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
`"Modified Version"` refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
`"Author"` refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
Permission & Conditions
------------------------
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1. Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2. Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3. No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5. The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
Termination
-----------
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -0,0 +1,152 @@
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
![](images/preview-all.png)
## Installation
Quit your editor/program. Unzip and open the folder.
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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 one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to 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.
![Weights sample](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).
![Languages Sample](images/languages.png)
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](images/matrix.png)
## Which font?
### TL;DR
* Pick your font family and then select from the `'complete'` directory.
* If you are on Windows pick a font with the `'Windows Compatible'` suffix.
* This includes specific tweaks to ensure the font works on Windows, in particular monospace identification and font name length limitations
* If you are limited to monospaced fonts (because of your terminal, etc) then pick a font with the `'Mono'` suffix.
* This denotes that the Nerd Font glyphs will be monospaced not necessarily that the entire font will be monospaced
### Ligatures
By the *Nerd Font* policy, the variant with the `'Mono'` suffix is not supposed to have any ligatures.
Use the non-*Mono* variants to have ligatures.
### Explanation
Once you narrow down your font choice of family (`Droid Sans`, `Inconsolata`, etc) and style (`bold`, `italic`, etc) you have 2 main choices:
#### `Option 1: Download already patched font`
* download an already patched font from the `complete` folder
* 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.
#### `Option 2: Patch your own font`
* patch your own variations with the various options provided by the font patcher (see each font's readme for full list of combinations available)
* This is the option you want if the font you use is _not_ already included or you want maximum control of what's included
* 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.
For more information see: [The FAQ](https://github.com/ryanoasis/nerd-fonts/wiki/FAQ-and-Troubleshooting#which-font)
[vim-devicons]:https://github.com/ryanoasis/vim-devicons
[vorillaz-devicons]:https://vorillaz.github.io/devicons/
[font-awesome]:https://github.com/FortAwesome/Font-Awesome
[octicons]:https://github.com/primer/octicons
[gabrielelana-pomicons]:https://github.com/gabrielelana/pomicons
[Seti-UI]:https://atom.io/themes/seti-ui
[ryanoasis-powerline-extra-symbols]:https://github.com/ryanoasis/powerline-extra-symbols
[SIL-RFN]:http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web_fonts_and_RFNs#14cbfd4a

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,110 @@
Copyright 2015-2021, Renzhi Li (aka. Belleve Invis, belleve@typeof.net)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
--------------------------
SIL Open Font License v1.1
====================================================
Preamble
----------
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
Definitions
-------------
`"Font Software"` refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
`"Reserved Font Name"` refers to any names specified as such after the
copyright statement(s).
`"Original Version"` refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
`"Modified Version"` refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
`"Author"` refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
Permission & Conditions
------------------------
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1. Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2. Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3. No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5. The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
Termination
-----------
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -0,0 +1,152 @@
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
![](images/preview-all.png)
## Installation
Quit your editor/program. Unzip and open the folder.
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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 one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to 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.
![Weights sample](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).
![Languages Sample](images/languages.png)
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](images/matrix.png)
## Which font?
### TL;DR
* Pick your font family and then select from the `'complete'` directory.
* If you are on Windows pick a font with the `'Windows Compatible'` suffix.
* This includes specific tweaks to ensure the font works on Windows, in particular monospace identification and font name length limitations
* If you are limited to monospaced fonts (because of your terminal, etc) then pick a font with the `'Mono'` suffix.
* This denotes that the Nerd Font glyphs will be monospaced not necessarily that the entire font will be monospaced
### Ligatures
By the *Nerd Font* policy, the variant with the `'Mono'` suffix is not supposed to have any ligatures.
Use the non-*Mono* variants to have ligatures.
### Explanation
Once you narrow down your font choice of family (`Droid Sans`, `Inconsolata`, etc) and style (`bold`, `italic`, etc) you have 2 main choices:
#### `Option 1: Download already patched font`
* download an already patched font from the `complete` folder
* 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.
#### `Option 2: Patch your own font`
* patch your own variations with the various options provided by the font patcher (see each font's readme for full list of combinations available)
* This is the option you want if the font you use is _not_ already included or you want maximum control of what's included
* 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.
For more information see: [The FAQ](https://github.com/ryanoasis/nerd-fonts/wiki/FAQ-and-Troubleshooting#which-font)
[vim-devicons]:https://github.com/ryanoasis/vim-devicons
[vorillaz-devicons]:https://vorillaz.github.io/devicons/
[font-awesome]:https://github.com/FortAwesome/Font-Awesome
[octicons]:https://github.com/primer/octicons
[gabrielelana-pomicons]:https://github.com/gabrielelana/pomicons
[Seti-UI]:https://atom.io/themes/seti-ui
[ryanoasis-powerline-extra-symbols]:https://github.com/ryanoasis/powerline-extra-symbols
[SIL-RFN]:http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web_fonts_and_RFNs#14cbfd4a

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +1,4 @@
The font is licensed under SIL OFL Version 1.1.
The support code is licensed under Berkeley Software Distribution license.
---
---
Copyright (c) 2015-2017 Belleve Invis (belleve@typeof.net).
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Belleve Invis nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BELLEVE INVIS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-----------------------
---
Copyright 2015-2017, Belleve Invis (belleve@typeof.net).
Copyright 2015-2021, Renzhi Li (aka. Belleve Invis, belleve@typeof.net)
This Font Software is licensed under the SIL Open Font License, Version 1.1.

View File

@ -1,242 +1,111 @@
# 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)
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
Coders’ typeface, built from code.
![](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/preview-all.png)
![](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).
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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).
- Arch Linux users can install one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to install the chosen package(s).
## Weights, Variants and OpenType features
## Features
The typeface contains 9 weights (Thin to Heavy) alongside with both italic and oblique versions, with the same metrics as the regular one.
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.
![Weights sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/weights.png)
![Weights sample](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).
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).
![Languages Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/languages.png)
![Languages Sample](images/languages.png)
Iosevka supports accessing all letter variants using OpenType features.
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
![Style Sets](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png)
161 Supported Languages:
![Character Variants](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/charvars.png)
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
![Ligations Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/ligations.png)
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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`.
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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:
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] # <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.<plan name>.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: <upright|italic|oblique> = <"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:<your plan name>` and the built fonts would be available in `dist/`. Aside from `contents:<plan>`, other options are:
1. `contents:<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Webfont CSS;
2. `ttf:<plan>` : TTF;
3. `ttf-unhinted:<plan>` : Unhinted TTF only;
4. `woff:<plan>` : TTF and WOFF only;
5. `woff2:<plan>` : 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 `<!--` and `<!---`;
* `calt-eqeq`: Enable ligation for `==` and `===`;
* `calt-ineq`: Enable ligation for `<=` and `>=`;
* `calt-arrowZALE`: Enable ligation for `<=` to form a left double arrow;
* `calt-arrowZAGE`: Enable ligation for `>=` to form a right inverse double arrow;
* `calt-exeq`: Enable ligation for `!=` and `!==`;
* `calt-slasheq`: Enable ligation for `/=` and `/==`;
* `calt-plusplus`: Enable ligation for `++` and further plus-chaining;
* `calt-llgg`: Enable ligation for `<<`, `>>` and other angle-bracket chaining;
* `calt-trig`: Enable ligation for `<|`, `|>` , `<||`, and other bar-and-angle-bracket symbols;
* `calt-dotoper`: Treat dot (`.`) as operator and perform chained centering;
* `calt-brst`: Center asterisk in `(*` and `*)`;
* `calt-logic`: Enable ligation for `/\` and `\/`;
* `calt-colons`: Enable ligation for `::` and `:::` ;
* Styles for changing the line space (leading):
* `leading-750`, `leading-1000`, `leading-1250`, `leading-1500`, `leading-1750`, `leading-2000`: Change the line space. Default is `leading-1250`.
* Styles for changing Powerline symbols' position:
* `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%.
* `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%.
* `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.
* `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.
* Styles for changing the width:
* `expanded`: Expand the width by 10%;
* `compressed`: Compress the width by 10%.
* NOTE: these styles are highly experimental. Handle with extreme care.
* Styles for individual characters. They are easy-to-understand names of the `cv##` styles, including:
* Styles for letter `l`:
* `v-l-hooky` : Hooky `l`.
* `v-l-zshaped` : Z-shaped `l`.
* `v-l-serifed` : Serifed `l` (default for upright and oblique).
* `v-l-italic` : Italic `l` (default for italic).
* `v-l-tailed` : `l` with a curved tail.
* `v-l-hookybottom` : `l` with a straight tail.
* Styles for letter `i`:
* `v-i-hooky` : Hooky `i`.
* `v-i-zshaped` : Z-shaped `i`.
* `v-i-serifed` : Serifed `i` (default for upright and oblique).
* `v-i-italic` : Italic `i` (default for italic).
* Styles for letter `a`:
* `v-a-doublestorey` : Double-storey `a` (default for upright and oblique).
* `v-a-singlestorey` : Single-storey `a` (default for italic).
* Styles for letter `f`:
* `v-f-straight`: `f` without bottom hook (default for upright and oblique).
* `v-f-tailed`: `f` with a leftward bottom hook (default for italic).
* Styles for letter `g`:
* `v-g-doublestorey` : Double-storey `g` (default for upright and oblique).
* `v-g-singlestorey` : Single-storey `g` (default for italic).
* `v-g-opendoublestorey` : Open Double-storey `g`.
* Styles for letter `m`:
* `v-m-longleg` : `m` with long middle leg (default).
* `v-m-shortleg` : `m` with shorter middle leg.
* Styles for letter `t`:
* `v-t-standard` : Standard `t` shape (default).
* `v-t-cross` : Futura-like `t` shape.
* Styles for letter `Q`:
* `v-q-taily` : `Q` with a curly tail (default).
* `v-q-straight` : `Q` with a straight tail in the old versions.
* Styles for letter `y`:
* `v-y-straight`: More-straight letter `y`.
* `v-y-curly`: Curly, cursive-like `y`.
* Styles for zero (`0`):
* `v-zero-slashed` : Slashed Zero `0` (default).
* `v-zero-dotted` : Dotted Zero `0`.
* `v-zero-unslashed` : O-like `0`.
* Styles for one (`1`)
* `v-one-serifed` : `1` with bottom serif (default for Slab).
* `v-one-hooky` : `1` without bottom serif (default for Sans).
* Styles for three (`3`):
* `v-three-flattop` : Flat top `3` (Like Museo Sans / Montserrat).
* `v-three-twoarks` : Arched top `3` (default).
* Styles for ASCII tilde (`~`), asterisk (`*`), paragraph(``), underscore (`_`) and ASCII Caret (`^`):
* `v-tilde-high` : Higher tilde `~`.
* `v-tilde-low` : Lower tilde `~` (default).
* `v-asterisk-high` : Higher asterisk `*` (default).
* `v-asterisk-low` : Lower asterisk `*`.
* `v-paragraph-high` : Higher paragraph symbol `¶` (default).
* `v-paragraph-low` : Lower paragraph symbol `¶`.
* `v-caret-high` : Higher circumflex `^` (default).
* `v-caret-low` : Lower circumflex `^`.
* `v-underscore-high` : Higher underscore `_` (default).
* `v-underscore-low` : Lower underscore `_`.
* Styles for At (`@`):
* `v-at-long` : The long, three-fold At symbol in Iosevka 1.7.x.
* `v-at-fourfold` : The traditional, four-fold At symbol.
* `v-at-short` : The shorter, Fira-like At symbol introduced in Iosevka 1.8.
* Styles for Eszet (`ß`):
* `v-eszet-traditional` : Traditional, Fraktur-like Eszet.
* `v-eszet-sulzbacher` : A more modern, beta-like Eszet (default).
* Styles for curly brackets (`{}`):
* `v-brace-straight` : More straight braces.
* `v-brace-curly` : More curly braces (default).
* Styles for dollar symbol (`$`):
* `v-dollar-open` : Dollar symbol with open contour.
* `v-dollar-through` : Dollar symbol with strike-through vertical bar (default).
* `v-dollar-opencap` : Dollar symbol with open contour, not exceeding baseline and ascender.
* `v-dollar-throughcap` : Dollar symbol with strike-through vertical bar, not exceeding baseline and ascender.
* Styles for Number sign (`#`):
* `v-numbersign-upright` : Number sign with vertical bars (default).
* `v-numbersign-slanted` : Number sign with slanted bars.
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/matrix.png)
![Family Matrix](images/matrix.png)
## Which font?

View File

@ -1,242 +1,111 @@
# 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)
# Iosevka ![Version](https://img.shields.io/github/release/be5invis/Iosevka.svg)
**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*.
Coders’ typeface, built from code.
![](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/preview-all.png)
![](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).
* **Windows**: Download the fonts from the [Releases](https://github.com/be5invis/Iosevka/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.](https://youtrack.jetbrains.com/issue/JRE-1166?p=IDEA-200145)
* **[macOS](http://support.apple.com/kb/HT2509)**
* Standard distribution in Homebrew:
```bash
brew tap homebrew/cask-fonts
brew install --cask font-iosevka
```
* Search for other variants using `brew search font-iosevka` and install what you want.
* 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).
- Arch Linux users can install one of the [ttc-iosevka packages](https://archlinux.org/packages/?q=ttc-iosevka).
- Void Linux users can install the font with `xbps-install font-iosevka`.
- Fedora Linux users can install the font(s) from the copr [here](https://copr.fedorainfracloud.org/coprs/peterwu/iosevka/). Run `dnf search iosevka` to discover available fonts and `dnf install` to install the chosen one(s).
* **FreeBSD**: The font can be installed with `pkg install iosevka`.
* **OpenBSD**: Run `pkg_info -Q iosevka` to see which Iosevka packages are available. Use `pkg_add` to install the chosen package(s).
## Weights, Variants and OpenType features
## Features
The typeface contains 9 weights (Thin to Heavy) alongside with both italic and oblique versions, with the same metrics as the regular one.
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.
![Weights sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/weights.png)
![Weights sample](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).
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).
![Languages Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/languages.png)
![Languages Sample](images/languages.png)
Iosevka supports accessing all letter variants using OpenType features.
<!-- BEGIN Section-Language-List -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
![Style Sets](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png)
161 Supported Languages:
![Character Variants](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/charvars.png)
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
<!-- END Section-Language-List -->
### Stylistic Sets
Monospace Iosevka contains various stylistic sets to change the shape of certain characters. Enabling corresponded OpenType feature to enable.
<table><tr><td><h2><a href="doc/stylistic-sets.md">View list of stylistic sets of Iosevka.</a></h2></td></tr></table>
### 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.
<table><tr><td><h2><a href="doc/character-variants.md">View list of character variants of Iosevka.</a></h2></td></tr></table>
### Ligations
![Ligations Sample](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/ligations.png)
Monospace subfamilies support ligations. Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default.
<!-- BEGIN Section-OT-Ligation-Tags-1 -->
<!-- THIS SECTION IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
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`.
<table>
<tr>
<td><code>calt off</td>
<td>Ligation Off</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-0.png"/></td>
</tr>
<tr>
<td><code>calt</code></td>
<td>Default setting in text editors</td>
</tr>
<tr>
<td colspan="2"><img src="images/ligset-calt-1.png"/></td>
</tr>
</table>
<!-- END Section-OT-Ligation-Tags-1 -->
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:
<table><tr><td><h2><a href="doc/language-specific-ligation-sets.md">View list of language-specific ligations.</a></h2></td></tr></table>
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:
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] # <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.<plan name>.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: <upright|italic|oblique> = <"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:<your plan name>` and the built fonts would be available in `dist/`. Aside from `contents:<plan>`, other options are:
1. `contents:<plan>` : TTF (Hinted and Unhinted), WOFF(2) and Webfont CSS;
2. `ttf:<plan>` : TTF;
3. `ttf-unhinted:<plan>` : Unhinted TTF only;
4. `woff:<plan>` : TTF and WOFF only;
5. `woff2:<plan>` : 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 `<!--` and `<!---`;
* `calt-eqeq`: Enable ligation for `==` and `===`;
* `calt-ineq`: Enable ligation for `<=` and `>=`;
* `calt-arrowZALE`: Enable ligation for `<=` to form a left double arrow;
* `calt-arrowZAGE`: Enable ligation for `>=` to form a right inverse double arrow;
* `calt-exeq`: Enable ligation for `!=` and `!==`;
* `calt-slasheq`: Enable ligation for `/=` and `/==`;
* `calt-plusplus`: Enable ligation for `++` and further plus-chaining;
* `calt-llgg`: Enable ligation for `<<`, `>>` and other angle-bracket chaining;
* `calt-trig`: Enable ligation for `<|`, `|>` , `<||`, and other bar-and-angle-bracket symbols;
* `calt-dotoper`: Treat dot (`.`) as operator and perform chained centering;
* `calt-brst`: Center asterisk in `(*` and `*)`;
* `calt-logic`: Enable ligation for `/\` and `\/`;
* `calt-colons`: Enable ligation for `::` and `:::` ;
* Styles for changing the line space (leading):
* `leading-750`, `leading-1000`, `leading-1250`, `leading-1500`, `leading-1750`, `leading-2000`: Change the line space. Default is `leading-1250`.
* Styles for changing Powerline symbols' position:
* `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%.
* `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%.
* `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.
* `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.
* Styles for changing the width:
* `expanded`: Expand the width by 10%;
* `compressed`: Compress the width by 10%.
* NOTE: these styles are highly experimental. Handle with extreme care.
* Styles for individual characters. They are easy-to-understand names of the `cv##` styles, including:
* Styles for letter `l`:
* `v-l-hooky` : Hooky `l`.
* `v-l-zshaped` : Z-shaped `l`.
* `v-l-serifed` : Serifed `l` (default for upright and oblique).
* `v-l-italic` : Italic `l` (default for italic).
* `v-l-tailed` : `l` with a curved tail.
* `v-l-hookybottom` : `l` with a straight tail.
* Styles for letter `i`:
* `v-i-hooky` : Hooky `i`.
* `v-i-zshaped` : Z-shaped `i`.
* `v-i-serifed` : Serifed `i` (default for upright and oblique).
* `v-i-italic` : Italic `i` (default for italic).
* Styles for letter `a`:
* `v-a-doublestorey` : Double-storey `a` (default for upright and oblique).
* `v-a-singlestorey` : Single-storey `a` (default for italic).
* Styles for letter `f`:
* `v-f-straight`: `f` without bottom hook (default for upright and oblique).
* `v-f-tailed`: `f` with a leftward bottom hook (default for italic).
* Styles for letter `g`:
* `v-g-doublestorey` : Double-storey `g` (default for upright and oblique).
* `v-g-singlestorey` : Single-storey `g` (default for italic).
* `v-g-opendoublestorey` : Open Double-storey `g`.
* Styles for letter `m`:
* `v-m-longleg` : `m` with long middle leg (default).
* `v-m-shortleg` : `m` with shorter middle leg.
* Styles for letter `t`:
* `v-t-standard` : Standard `t` shape (default).
* `v-t-cross` : Futura-like `t` shape.
* Styles for letter `Q`:
* `v-q-taily` : `Q` with a curly tail (default).
* `v-q-straight` : `Q` with a straight tail in the old versions.
* Styles for letter `y`:
* `v-y-straight`: More-straight letter `y`.
* `v-y-curly`: Curly, cursive-like `y`.
* Styles for zero (`0`):
* `v-zero-slashed` : Slashed Zero `0` (default).
* `v-zero-dotted` : Dotted Zero `0`.
* `v-zero-unslashed` : O-like `0`.
* Styles for one (`1`)
* `v-one-serifed` : `1` with bottom serif (default for Slab).
* `v-one-hooky` : `1` without bottom serif (default for Sans).
* Styles for three (`3`):
* `v-three-flattop` : Flat top `3` (Like Museo Sans / Montserrat).
* `v-three-twoarks` : Arched top `3` (default).
* Styles for ASCII tilde (`~`), asterisk (`*`), paragraph(``), underscore (`_`) and ASCII Caret (`^`):
* `v-tilde-high` : Higher tilde `~`.
* `v-tilde-low` : Lower tilde `~` (default).
* `v-asterisk-high` : Higher asterisk `*` (default).
* `v-asterisk-low` : Lower asterisk `*`.
* `v-paragraph-high` : Higher paragraph symbol `¶` (default).
* `v-paragraph-low` : Lower paragraph symbol `¶`.
* `v-caret-high` : Higher circumflex `^` (default).
* `v-caret-low` : Lower circumflex `^`.
* `v-underscore-high` : Higher underscore `_` (default).
* `v-underscore-low` : Lower underscore `_`.
* Styles for At (`@`):
* `v-at-long` : The long, three-fold At symbol in Iosevka 1.7.x.
* `v-at-fourfold` : The traditional, four-fold At symbol.
* `v-at-short` : The shorter, Fira-like At symbol introduced in Iosevka 1.8.
* Styles for Eszet (`ß`):
* `v-eszet-traditional` : Traditional, Fraktur-like Eszet.
* `v-eszet-sulzbacher` : A more modern, beta-like Eszet (default).
* Styles for curly brackets (`{}`):
* `v-brace-straight` : More straight braces.
* `v-brace-curly` : More curly braces (default).
* Styles for dollar symbol (`$`):
* `v-dollar-open` : Dollar symbol with open contour.
* `v-dollar-through` : Dollar symbol with strike-through vertical bar (default).
* `v-dollar-opencap` : Dollar symbol with open contour, not exceeding baseline and ascender.
* `v-dollar-throughcap` : Dollar symbol with strike-through vertical bar, not exceeding baseline and ascender.
* Styles for Number sign (`#`):
* `v-numbersign-upright` : Number sign with vertical bars (default).
* `v-numbersign-slanted` : Number sign with slanted bars.
<table><tr><td><h2><a href="doc/custom-build.md">Read instructions.</a></h2></td></tr></table>
## For Chinese and Japanese users...
→ [Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic).
## Mirrors
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Iosevka
- NJU (CN): https://mirrors.nju.edu.cn/github-release/be5invis/Iosevka
---
![Family Matrix](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/matrix.png)
![Family Matrix](images/matrix.png)
## Which font?

Some files were not shown because too many files have changed in this diff Show More