typst/typst
A markup-based typesetting system that is powerful and easy to learn.
How typst is put together
Typst is a markup-based typesetting system implemented as a large Rust Cargo workspace (edition 2024) whose default member is the `typst-cli` binary. The pipeline flows from source parsing (typst-syntax) through evaluation of the embedded scripting language (typst-eval), realization and layout (typst-realize, typst-layout), into export backends for PDF (typst-pdf via krilla), SVG, PNG rendering, HTML, and bundles (typst-bundle). Shared infrastructure lives in typst-library (elements, World trait, diagnostics), typst-kit (fonts, packages, downloader, watcher, hot-reload HTTP server), and typst-utils/macros/timing. The CLI compiles or watches `.typ` files, can serve live-reload HTML on localhost, download community packages over HTTPS, and optionally self-update.
Languages
Frameworks
Infrastructure
Major components
typst-cli
The `typst` binary: subcommands compile/watch/init/query/eval/fonts/update/completions/info, argument parsing, terminal output, and wiring a World implementation.
typst-syntax
Lexer/parser producing the syntax tree, spans, virtual paths, and source file management.
typst-eval
Interpreter for Typst's embedded scripting language: bindings, calls, imports, control flow, operators, and set/show rule application.
typst-layout
Layout engine: inline text shaping (rustybuzz), math shaping, lists, stacks, shapes, transforms, images, and document assembly.
typst-library
Core element/model definitions, the World abstraction, engine context, diagnostics, symbols, and localized translations.
typst-kit
Platform integration: font discovery/embedding, package management, HTTPS downloader, file watching, datetime, diagnostics emission, and the hot-reload HTTP server.
typst-pdf / typst-svg / typst-render / typst-html / typst-bundle
Export backends converting laid-out documents into PDF, SVG, raster images, HTML, and multi-file bundles with link/introspection handling.
tests & fuzzing
Workspace members `tests`, `tests/fuzz` (libfuzzer-sys), and `tests/wrapper` for regression and fuzz testing of the compiler.
A quieter week centered on small documentation cleanups and build infrastructure.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
A quieter week centered on small documentation cleanups and build infrastructure.
Week of 2026-08-17
Work focused on friendlier error messages, expanded language support, and Windows test tooling.
Week of 2026-08-03
The busiest week, mixing new capabilities like eval output formats with many layout and documentation fixes.
Week of 2026-07-27
Mostly documentation improvements plus a fix for line breaking in web addresses.
Week of 2026-07-20
Improvements to grayscale colors and tiling, plus a security-minded SVG fix and Croatian translations.
Over the past five weeks, the Typst team focused heavily on polishing documentation and translations while also shipping meaningful fixes to text layout, error messages, and export behavior. Notable functional work included a new angle option for tiling patterns, support for a raw output format in typst eval, and more robust line breaking and hyphen handling. The overall arc shows steady quality-of-life improvements for both writers using Typst and developers working on the codebase.
Week by week
2026-08-24A quieter week centered on small documentation cleanups and build infrastructure.latest4 changes
Docs
Better line breaks in PDF syntax list
The list of raw syntaxes in the PDF documentation now breaks lines more cleanly so it is easier to read.
Fix
Fixed spacing around single-argument functions in docs
Function examples with one argument no longer have awkward spacing in the reference pages.
Fix
Fixed comment formatting for color options
Comments describing color options are now formatted consistently in the codebase.
Chore
Pinned Docker base image versions
Docker builds now use specific tagged base layers instead of floating ones, making builds more predictable.
2026-08-17Work focused on friendlier error messages, expanded language support, and Windows test tooling.6 changes
Feature
Helpful hint for empty luma arguments
When someone passes an empty value to luma, the error now suggests trying white or luma(100%) instead.
Fix
Clearer error when calling to-dict
Error messages now show which key type was wrong rather than just the value, making mistakes easier to diagnose.
Docs
Improved French heading translation
The French wording for headings was reworked because the previous version broke grammar rules.
Feature
Completed Esperanto translations
Esperanto users now get full coverage of translated interface strings.
Chore
Windows symlink fix for test runner
The cargo testit tool now uses forward slashes for symlinks on Windows so tests run reliably there.
Refactor
Cleaned up missing-argument check
Internal code that reports missing arguments was simplified using a more idiomatic pattern.
2026-08-03The busiest week, mixing new capabilities like eval output formats with many layout and documentation fixes.6 changes
Feature
Raw output format for typst eval
Typst's evaluation mode can now output results as plain raw data, useful for scripting and automation.
Feature
Diagnostics format environment variable
Developers can now control how compiler diagnostics are formatted via an environment variable.
Fix
Trailing-slash redirects in HTTP server
Visiting a directory URL without a trailing slash now correctly redirects to the version with one.
Fix
Hanging indent fix for Japanese-style numbering
Headings numbered like 〔1〕 now get proper hanging indents automatically.
Fix
More robust overhang behavior
Text overhang (where punctuation slightly extends past margins) was made more reliable across cases.
Fix
Hyphen index fixes with surrounding tags
Hyphens now keep correct logical positions when tags appear around them, improving accessibility output.
2026-07-27Mostly documentation improvements plus a fix for line breaking in web addresses.6 changes
Fix
Line breaking for hosts starting with digits
Web addresses whose hostnames begin with a number now break across lines correctly.
Docs
Clipping example added to image docs
The image documentation gained an example showing how to clip images to a shape.
Docs
Easier discovery of modulo functions
The docs were updated so readers can find the modulo calculation functions more easily.
Docs
Regex show-rule example added
The regex documentation now includes an example combining show rules with capture groups.
Fix
Path parameter completion fixed
Autocomplete suggestions for general path parameters now work as expected.
Chore
Test report UI tweaks
Image controls no longer overlap the source view and the test report source is no longer resizable.
2026-07-20Improvements to grayscale colors and tiling, plus a security-minded SVG fix and Croatian translations.4 changes
Feature
Angle argument for tiling
Tiling patterns can now be rotated by specifying an angle argument.
Fix
Luma accepts integer alpha values
The luma color function now accepts whole numbers for its transparency component, with better argument handling overall.
Fix
SVG special characters escaped
Ampersands and less-than signs in SVG attribute values are now properly escaped, preventing broken or unsafe output.
Docs
Expanded Croatian translations
Croatian-language coverage of interface strings was broadened.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 0 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required