No lookalikes
Il1 O0 Il1 O0 Il1 O0
Capital I, small l and number 1 are always distinct, as are capital O and number 0.
Lisnoti Code is a proportional font for coding that typically fits 20–30% more code on a line than popular monospaced fonts.
The case for using proportional fonts for code largely comes down to efficiency – they’re faster and easier to read, and make better use of space. That case has been well made by Bevan Arps, Martijn Storck, Nelson Minar and David Jonathan Ross (and I’ve had a go here).
But font design still matters:
Lisnoti Code addresses all of these issues. Try it out below.
Version 0.903 · regular, italic, bold and bold italic · free under the SIL Open Font Licence
Did you know that Lisnoti Code is based on Lisnoti, a font for everyday use with especially good support for math? See Lisnoti.
Pick an example, or type in the left-hand box, which uses Lisnoti Code. The right-hand box reproduces the same code at the same size but in your choice of monospaced font.
Viewing in Safari or on an iPhone or iPad?
These browsers can’t use context-aware spacing on web pages, so you will see wider spaces between words. This issue doesn’t affect Lisnoti Code’s general use – code editors such as VS Code work fine.
Lisnoti Code
Fira Code
Lisnoti Code inherits Lisnoti’s clarity and aesthetics, but with additional features specifically to help with writing code.
Il1 O0 Il1 O0 Il1 O0
Capital I, small l and number 1 are always distinct, as are capital O and number 0.
-5 + x - y test-main
Many monospaced fonts make the hyphen a compromise between true hyphen and true minus. Lisnoti Code uses context to do both.
if ready: start(now)
Lisnoti Code sets runs of spaces as extra wide to make indentation levels clear, but leaves single spaces at normal width for readability.
src/ ├── main.py └── tests/ └── test_main.py
Box-drawing characters are as wide as the wide space, so directory trees join up and line up.
If you don’t want these ligatures and your editor can’t switch them off, use Lisnoti Code NL.
=≠ ≡≢ <≤ ⊂⊆ ±∓ ∞∝ ∪⊔∨⊻ ∀∃∈∉∅ √∫∂ ∑∏⋀⋃ β⁽⁰⁾ΔΘ x₀ f′ ⊕ ✓✗☑♔♞♠ $£€₹
5,700-plus characters, including every operator Julia parses, so nothing has to be borrowed from another font.
Monospaced fonts are mostly just familiar. Many (not all) objections to proportional fonts boil down to
Proportional fonts are easier to read, make better use of space and have excellent support in most code editors and IDEs.
Why not try Lisnoti Code for a week before deciding? (But do read the other FAQs first!)
Yes, of course indentation still works – indentations line up because indents use the same characters.
Lisnoti Code helps by making runs of spaces wide so that each level is easy to see, while using normal spaces between words for readability.
Trying to align columns using spaces is never going to work well with a proportional font.
But that’s arguably a brittle way of writing code because it means that a one-line change can require repadding other lines, which is diff-unfriendly, and why many coding standards discourage
= signs.If you follow those coding standards, then proportional fonts will work just fine.
Sometimes monospace is exactly what you want:
This is why the VS Code settings below set
terminal.integrated.fontFamily to a monospace family. Similar settings may
be available in other IDEs.
Math and other symbols turn up in documentation all the time. And in Julia they are actual code.
When a character is missing from a font, editors either show a meaningless replacement box or borrow the missing character from another font, which rarely matches. With Lisnoti Code you’re unlikely to have this problem.
Many editors switch ligatures off unless told otherwise. In VS Code, add these to your settings:
"editor.fontFamily": "Lisnoti Code",
"editor.fontLigatures": true
Other editors usually have a similar setting.
If every space looks the same width, the app has switched off contextual
alternates (calt) as well. To keep the spacing and the short hyphen
without the ligatures, VS Code takes
"editor.fontLigatures": "'liga' off, 'calt' on".
Safari, and every browser on an iPhone or iPad, cannot apply the spacing rule, so Lisnoti Code’s web stylesheet switches it off there (which makes all spaces moderately wide).
Use Lisnoti Code NL instead – it is provided for this specific scenario because some editors, e.g. Visual Studio, have no way to switch ligatures off.
Lisnoti Code NL is identical to Lisnoti Code but with no ligatures (‘NL’). The spacing, hyphen and the box drawing behaviour remain the same as with Lisnoti Code.
Lisnoti Code NL and Lisnoti Code can be installed alongside each other.
If you want to see what it looks like, just untick Ligatures in the Try it section above.
Download LisnotiCodeNL-ttf.zip and install the fonts in the usual way (see Get Lisnoti Code).
Lisnoti Code has over 5,700 characters. Pick a group, then point at or tap a character.
There are three ways to use Lisnoti Code:
Download the four fonts and install them in the usual way.
For editors that can’t switch ligatures off, there is Lisnoti Code NL (Lisnoti Code with no ligatures). The files are in LisnotiCodeNL-ttf.zip.
Add the following line to each page’s <head>:
<link rel="stylesheet" href="https://lisnoti.com/lisnoti-code.css">
and name the font in your CSS:
code, pre { font-family: 'Lisnoti Code', monospace; }
Pages fetch only the subsets they need: about 26 KB per style for English text.
Download LisnotiCode-woff2.zip,
copy the folder into your site and link its lisnoti-code.css. Keep the
stylesheet in the folder with its font files.
For one file per style, use
LisnotiCode-woff2-monolithic.zip
and its lisnoti-code-monolithic.css.
VS Code switches the ligatures and spacing off unless told otherwise, so add these to your settings:
"editor.fontFamily": "Lisnoti Code",
"editor.fontLigatures": true,
"terminal.integrated.fontFamily": "Consolas, Menlo, monospace"
A terminal needs a monospaced font, so the last line keeps VS Code’s terminal on one.
Some editors list only monospaced fonts until told otherwise.
Look for a setting such as ‘Show only monospaced fonts’ and untick it, or type the name ‘Lisnoti Code’ in directly.
In JetBrains IDEs such as IntelliJ IDEA and PyCharm, the font settings are under Settings › Editor › Font, where you can also tick ‘Enable ligatures’.