Iosevka

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Iosevka
Iosevka sample.svg
CategoryMonospaced font family
ClassificationMonospaced font
Sans serif
Slab serif
Unicode font
Designer(s)Belleve Invis
Date created2015
Date released19 Jul 2015
LicenseSIL Open Font License
Design based onPragmataPro, PF DIN Mono, M+
Websitetypeof.net/Iosevka/
Latest release version2.3.3
Latest release date2 November 2019

Iosevka is a monospace programming typeface, built declaratively using custom typeface generation software, and with an emphasis on compatibility with CJK characters.[1] It is available under a FOSS license. The default builds are available in two styles of seven weights each, and come with italic and oblique versions. The typeface was designed, however, to be easily configurable by editing textual TOML configuration files in the custom generation software.

The character repertoire covers a significant portion of the Basic Multilingual Plane of Unicode, and a few characters from the Enclosed Alphanumeric Supplement block.

History[edit]

The first version of Iosevka, then named codexHW, was created on 19 Jul 2015,[2] and renamed to Iosevka three days later.[3] It is the product of Chinese typographer Renzhi Li, using the Romanised pseudonym Belleve Invis, who as of 2017 was working on typography as an intern at Microsoft.[4]

Features[edit]

Iosevka is a condensed font, with double width CJK characters, using a slashed zero by default. It contains many ligatures, especially suited towards functional programming languages such as Coq, Idris, and Haskell. The variant Iosevka Term is designed to better support terminals by omitting the ligatures. The author of the font, Belleve Invis, has contributed to several functional programming projects. It also comes with OpenType features including stylistic sets and character variants.

Build process[edit]

One major characteristic of Iosevka is that it is generated from declarative data files using a multi-phase build process.[5] It was originally created as a typeface that could be used with a package called node-sfnt:

"As I maintaining node-sfnt, a low-level library used to parse and generate TTFs in Node.JS, I decided to make a programming font using it. Iosevka is generated from a program written by me, as well as a set of parameters, pretty like Computer Modern, but in a more modern way. [...] [C]reating a font actually needs a domain-specific language, like Knuth's METAFONT language. With PatEL's macro system I can easily turn PatEL into a DSL while remaining its full ability of programming. The PatEL is in another repository I created, though not documented yet. It's syntax is basically a Lisp with improvements reducing brackets (by using colons and indents), and supporting infix operators."[6]

As of 2018 the data files are still written in the Patrisika Example Language, also known as PatEL.[7] PatEL was created by the author of Iosevka, and is an alternative s-expression format somewhat akin to the wisp of SRFI 119.[8] The PatEL data is then converted into SpiderMonkey AST using another library by the same author called Patrisika.[9] The AST is then converted into JavaScript using Escodegen.[10]

References[edit]

  1. ^ "Because I and many of my friends live in China and Japan, I decided to make my font exactly half-width, to be compatible with Han Characters (exactly 1em wide)." — A programming typeface
    "Do you know that all letters in Iosevka are EXACTLY 1/2 em wide? For ASIAN users, you can use THIS and preserve your perfect alignment." — be5invis
  2. ^ Created in commit 075cd395d1457e69
  3. ^ The name was changed in commit 3326d7ab3704fd29
  4. ^ CV of Renzhi Li
  5. ^ Comment by the author
  6. ^ A programming typeface
  7. ^ PatEL
  8. ^ SRFI 119
  9. ^ Patrisika
  10. ^ Escodegen

External links[edit]