The JuliaMono Typeface
JuliaMono - a monospaced font for scientific and technical computing<br>Introduction<br>Screenshots<br>Examples<br>Languages<br>Monospaced fonts<br>Unicode coverage<br>Contextual and stylistic alternates (aka “ligatures”)<br>Stylistic sets<br>Mathematical scriptsCalligraphy and Roundhand script<br>Ball-point script<br>Variation selectors
Customizing the fontUsing FontFreeze<br>Using pyftsubset
Private Use Areas (PUAs)<br>Thanks!<br>Footnotes
Introduction
JuliaMono is a monospaced typeface designed for programming and other text editing environments that require a wide range of specialist and technical Unicode characters. It was presented at the 2020 JuliaCon conference, which was to have been held in Lisbon, Portugal, but instead took place online.
JuliaMono is:
free (but you can buy me a ☕️!)
distributed with a liberal licence [1]
suitable for scientific and technical programming as well as for general purpose hacking
full of Unicode goodness
easy to use, simple, unquirky, friendly, and approachable
available for MacOS, Unix, and Windows [2]
This site uses JuliaMono for all text; if your browser can’t[3] (or you didn’t allow it to) download and display web fonts, you’ll only see the font in action in the images. You’ll see three large dots here when/if the font has been successfully downloaded:
( )<br>To download and install JuliaMono, see the instructions here.
Screenshots
In VS Code.
In Vim:
In Emacs:
In Helix:
Examples
The following examples will be rendered in JuliaMono by your browser (if it’s successfully downloaded the web font versions), so I hope what you see here is close to what I made.
There are different weights of JuliaMono[4], so you can control the amount of contrast you have in your highlighted code:
JuliaMono-Light<br>JuliaMono-Regular<br>JuliaMono-Medium<br>JuliaMono-Bold<br>JuliaMono-ExtraBold<br>JuliaMono-Black<br>They all occupy the same amount of horizontal space, so they can be mixed without losing alignment.
The CSS markup applied to the following code uses another weight of the typeface, JuliaMono-Medium, which is a smidgeon bolder:
using Zygote: @adjoint<br>function ignore(f)<br>try return f()<br>catch e;<br>return 0;<br>end<br>end<br>@adjoint function ignore(f)<br>try Zygote._pullback(__context__, f)<br>catch e<br>0, ȳ -> nothing<br>end<br>end<br>Each weight has a matching italic variant: so JuliaMono-Light has JuliaMono-LightItalic, and so on.
JuliaMono-LightItalic<br>JuliaMono-RegularItalic<br>JuliaMono-MediumItalic<br>JuliaMono-BoldItalic<br>JuliaMono-ExtraBoldItalic<br>JuliaMono-BlackItalic<br>In the hands of a virtuoso (such as Dr Zygmunt Szpak, the author of the following Julia code fragment[5]), the range of available Unicode characters can be quite expressive:
function T(𝛉::AbstractArray,<br>𝒞::Tuple{AbstractArray,<br>Vararg{AbstractArray}},<br>𝒟::Tuple{AbstractArray, Vararg{AbstractArray}})<br>⊗ = kron<br>l = length(𝛉)<br>𝐈ₗ = SMatrix{l,l}(1.0I)<br>𝐈ₘ = SMatrix{1,1}(1.0I)<br>𝐓 = @SMatrix zeros(l,l)<br>N = length(𝒟[1])<br>ℳ, ℳʹ = 𝒟<br>Λ₁, Λ₂ = 𝒞<br>𝚲ₙ = @MMatrix zeros(4,4)<br>𝐞₁ = @SMatrix [1.0; 0.0; 0.0]<br>𝐞₂ = @SMatrix [0.0; 1.0; 0.0]<br>for n = 1:N<br>index = SVector(1,2)<br>𝚲ₙ[1:2,1:2] .= Λ₁[n][index,index]<br>𝚲ₙ[3:4,3:4] .= Λ₂[n][index,index]<br>𝐦 = hom(ℳ[n])<br>𝐦ʹ = hom(ℳʹ[n])<br>𝐔ₙ = (𝐦 ⊗ 𝐦ʹ)<br>∂ₓ𝐮ₙ = [(𝐞₁ ⊗ 𝐦ʹ) (𝐞₂ ⊗ 𝐦ʹ) (𝐦 ⊗ 𝐞₁) (𝐦 ⊗ 𝐞₂)]<br>𝐁ₙ = ∂ₓ𝐮ₙ * 𝚲ₙ * ∂ₓ𝐮ₙ'<br>𝚺ₙ = 𝛉' * 𝐁ₙ * 𝛉<br>𝚺ₙ⁻¹ = inv(𝚺ₙ)<br>𝐓₁ = @SMatrix zeros(Float64,l,l)<br>for k = 1:l<br>𝐞ₖ = 𝐈ₗ[:,k]<br>∂𝐞ₖ𝚺ₙ = (𝐈ₘ ⊗ 𝐞ₖ') * 𝐁ₙ * (𝐈ₘ ⊗ 𝛉) + (𝐈ₘ ⊗ 𝛉') * 𝐁ₙ * (𝐈ₘ ⊗ 𝐞ₖ)<br># Accumulating the result in 𝐓₁ allocates memory,<br># even though the two terms in the<br># summation are both SArrays.<br>𝐓₁ = 𝐓₁ + 𝐔ₙ * 𝚺ₙ⁻¹ * (∂𝐞ₖ𝚺ₙ) * 𝚺ₙ⁻¹ * 𝐔ₙ' * 𝛉 * 𝐞ₖ'<br>end<br>𝐓 = 𝐓 + 𝐓₁<br>end<br>𝐓<br>end<br>Languages
Here are some samples of various languages[6] :
Ancient Greek<br>Ἄδμηθ’, ὁρᾷς γὰρ τἀμὰ πράγμαθ’ ὡς ἔχει, λέξαι θέλω σοι πρὶν θανεῖν ἃ βούλομαι.
Armenian<br>Իմ օդաթիռը լի է օձաձկերով
Bulgarian<br>Я, пазачът Вальо уж бди, а скришом хапва кюфтенца зад щайгите.
Catalan<br>«Dóna amor que seràs feliç!». Això, il·lús company geniüt, ja és un lluït rètol blavís d’onze kWh.
Czech<br>Zvlášť zákeřný učeň s ďolíčky běží podél zóny úlů
Danish<br>Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon.
English<br>Sphinx of black quartz, judge my vow.
Estonian<br>Põdur Zagrebi tšellomängija-följetonist Ciqo külmetas kehvas garaažis
Finnish<br>Charles Darwin jammaili Åken hevixylofonilla Qatarin yöpub Zeligissä.
French<br>Voix ambiguë d’un cœur qui au zéphyr préfère les jattes de kiwi.
Georgian<br>სწრაფი ყავისფერი მელა ახტება ზარმაც ძაღლს.
German<br>Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich.
Greek<br>Ταχίστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός.
Guarani<br>Hĩlandiagua kuñanguéra oho peteĩ saʼyju ypaʼũme Gavõme omboʼe hag̃ua ingyleñeʼẽ mitãnguérare neʼẽndyʼỹ.
Hungarian<br>Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít.
IPA<br>[ɢʷɯʔ.nas.doːŋ.kʰlja] [ŋan.ȵʑi̯wo.ɕi̯uĕn.ɣwa]
Icelandic<br>Kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa.
Irish<br>Ċuaiġ bé ṁórṡáċ le...