Typst: Typst 0.15 contains multitudes – Typst Blog
Arrow to the left<br>Back to blog main page<br>product update<br>June 15, 2026<br>Typst 0.15 contains multitudes
Between myriads of instances of the same font, multi-file output, multiple bibliographies, and support for more than one PDF standard at once, Typst 0.15 is all about multiplicity.
by Laurenz Mädje
Typst 0.15, our latest and largest release to date, brings long-desired support for variable fonts to Typst, pushes the experimental HTML export further with MathML and multi-file support, solidifies existing features like bibliography management and PDF standards support, and improves Typst in tons of other ways.
In this release cycle, we've also heavily invested into foundational systems to keep making Typst easier to adopt and use. In an effort to expand and improve our documentation, we've ported it to Typst and now also publish a print version of it. We're also, for the first time, including a comprehensive migration guide in the changelog. On the compiler side, we've been working on clearer, more actionable diagnostics and hints (with the new introspection warnings being just one of them). And for future Typst releases, we've started work on even smoother upgrades through migration tooling and automatic compatibility behavior of packages.
Contents
In this blog post, we'll take a closer look at some of the highlights of this release:
Variable fonts
MathML
Bundle export
Multiple bibliographies
Multiple PDF standards at once
Layout convergence diagnostics
Print version of the documentation
To get started with Typst 0.15…
…in the web app: Just open any of your projects! You'll get a prompt offering you to upgrade to the latest version.
…on the command line: Run typst update in your terminal or, if you haven't installed Typst previously, download the latest version of the CLI.
For a comprehensive overview of all changes in the release, visit the changelog. If you're looking to upgrade your document to Typst 0.15, you can also skip ahead to its Migration guide.
Variable fonts
Typefaces often come with different design variants suitable for different design elements in a document. A common baseline is to have four fonts in a family: A regular one, a bold one, an italic one, and a bold-italic one. Beyond this, many fonts ship with more weights, different stretches (also called widths), or variants intended for different point sizes. Classically, each of the variants comes in a different font file. This can easily lead to situations where a font family comes with a ton of files and yet it still lacks the exact desired variant.
This is where variable fonts come in. They let font designers express glyph outlines and metrics in a parametric way, such that different weights, widths, and more can be derived from a single outline definition. The different tweakable parameters of a variable font are called variation axes. There are a few standard axes for classic design options like italics, slant, weight, stretch, and optical sizing (adjustments based on point size). Typst will automatically configure those based on the style, weight, stretch, and size parameters of the text function:
#set par(justify: true)<br>#set text(font: "Mona Sans")
#for weight in range(<br>100,<br>900,<br>step: 10,<br>inclusive: true,<br>) [<br>#text(weight: weight)[A]
On top, fonts can define completely custom variation axes, for example an axis that tweaks the softness of the font. Below, we tweak the font's SOFT variation axis (custom axes are typically all uppercase):
#set text(<br>font: "Fraunces",<br>size: 50pt,
#text(variations: (SOFT: 0))[<br>Soft / #underline[Rigid]
#text(variations: (SOFT: 100))[<br>#underline[Soft] / Rigid
What's in a font?
To get the most out of a variable font, you need to know which design variations it supports. To help you with this, we've revamped tooltips and autocomplete in the web app and the output of typst fonts in the CLI so that you know what kind of variations are available in the font of your choice. We've also hunted down the variable versions of all fonts in the web app that provide such a version. Projects that use Typst 0.15 will automatically use them while Typst 0.14 and below will continue using the static versions.
$ typst fonts --variants<br>Fraunces<br>├ fonts/Fraunces[SOFT,WONK,opsz,wght].ttf (Variable)<br>│ Style: Normal<br>│ Stretch: 100%<br>│ Weight: 100-900 (Default: 900)<br>│ Optical Size: 9pt-144pt (Default: 9pt)<br>│ SOFT: 0-100 (Default: 0)<br>│ WONK: 0-1 (Default: 1)<br>└ fonts/Fraunces-Italic[SOFT,WONK,opsz,wght].ttf (Variable)<br>...
MathML
If you've already played around with Typst's HTML export before, you might've noticed that it would just completely ignore equations. A pretty good workaround was available by using html.frame and rendering equations to SVG. However, this turns the equation inaccessible and unselectable.
With Typst 0.15, we've added native support for equations via MathML. MathML encodes an equation's structure and semantics. MathML equations...