Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Oct 24, 2025

This PR contains the following updates:

Package Update Change
typst/typst minor 0.13.1 -> 0.14.0

Release Notes

typst/typst (typst/typst)

v0.14.0: Version 0.14.0 (October 24, 2025)

Compare Source

Read the announcement blog post

View changelog with links into the documentation on typst.app/docs

Highlights

  • Typst now produces accessible PDFs out of the box, with opt-in support for stricter checks and conformance to PDF/UA-1
  • Typst now supports all PDF/A standards
  • PDFs can now be used as images (thanks to @​LaurenzV)
  • Added support for character-level justification (can significantly improve the appearance of justified text)
  • Added support for many more built-in elements in HTML export
  • Added typed HTML API (e.g. html.div) with individually typed attributes
  • Added support for multiple headers and subheaders in tables
  • Added title element for displaying the document title
  • Added frac.style property for producing skewed and inline fractions

PDF export

PDF export was fully rewritten to use the new krilla library, fixing various bugs and enabling many improvements. Known fixes are listed below, but there will likely be other changes in how the output behaves. If you spot any regressions, please report them on GitHub. (Thanks to @​LaurenzV for creating krilla!)

  • Typst now produces accessible PDFs out of the box. Such documents are suitable for consumption in a wide range of circumstances. That not only includes consumption by people with permanent or temporary disabilities, but also by those with different devices or preferences.
    • Typst PDFs are now tagged by default. Tags are rich metadata that PDF viewers can use to make the document consumable in other ways than visually (e.g., through a screen reader).
    • In addition, Typst can now emit documents conforming to the PDF/UA-1 standard. (PDF/UA-2 is not yet supported, but planned.)
    • There is an increasing amount of existing and upcoming legislation requiring documents to be accessible, for instance, the European Accessibility Act and the Americans with Disabilities Act.
    • For more details on all of this, read the new Accessibility Guide.
  • Typst now supports all PDF/A standards: PDF/A-1b, PDF/A-1a, PDF/A-2b, PDF/A-2u, PDF/A-2a, PDF/A-3b, PDF/A-3u, PDF/A-3a, PDF/A-4, PDF/A-4f, and PDF/A-4e. See the expanded PDF/A documentation for guidance on how to select a suitable standard.
  • Typst now supports the PDF versions 1.4, 1.5, 1.6, and 2.0 in addition to PDF 1.7. See the relevant section of the PDF documentation for details.
  • Added pdf.artifact function for marking content as not semantically meaningful
  • Added experimental pdf.header-cell, pdf.data-cell, and pdf.table-summary functions for enhancing accessibility of documents with complex tables. These functions are guarded by the a11y-extras feature. They do not have a final interface and will be removed in the future, either through integration into table functions or through full removal.
  • PDF heading bookmarks now contain the heading's numbering
  • Attachments
    • Renamed pdf.embed to pdf.attach (the old name will remain as a deprecated alias until Typst 0.15)
    • The mime property of pdf.attach is now checked for syntactical correctness (Minor breaking change)
    • Fixed parsing of the data argument of pdf.attach
    • Attachments now smartly determine whether they should be compressed
  • Text extraction (i.e. copy paste)
    • Now works correctly even when multiple different characters result in the same glyph
    • Spaces between words at which a natural line break occurred are now correctly retained for text extraction
    • Fixed mapping of hyphenation artifacts to Unicode text
  • Images
    • CMYK images now work properly in PDF export
    • Improved export of text in SVG images with a filter
    • Improved compatibility of SVG images with Quartz rendering engine (the engine used in Apple Preview)
    • Improved handling of SVG images with high group nesting depth
  • Fixed a bug with text in patterns
  • Fixed gradients with transparency

HTML export

  • Added support for many more built-in elements (the Model category is now fully covered)
    • The image element
    • The footnote and footnote.entry element
    • The outline and outline.entry element
    • The bibliography element
    • The smartquote element
    • The sub and super elements
    • The underline, overline, strike, and highlight elements
    • The smallcaps element
    • The lower and upper functions
  • Added typed HTML API (e.g. html.div) with individually typed attributes
    • For example, to generate a video element you can now write #html.video(width: 400, src: "sunrise.mp4") instead of #html.elem("video", attrs: (width: "400", src: "sunrise.mp4")). Note how the width attribute takes an integer instead of a string.
  • Added support for intra-doc link targets
  • The raw element
    • Added syntax highlighting support
    • Block-level raw elements now emit both a <code> and a <pre> tag
    • The language tag of raw elements is now preserved as a data-lang attribute on the <code> tag
  • The authors and keywords properties of the document function now yield corresponding HTML <meta> tags
  • The html.elem function now supports custom HTML element names
  • Improved encoding of html.frame
  • Empty attributes are now encoded with shorthand syntax (e.g. <div hidden></div>)
  • Zero-sized horizontal weak spacing (h(0pt, weak: true)) does not cause a "was ignored during HTML export" warning anymore, so it can be used to destruct surrounding spaces without producing any output, as in paged export
  • Fixed encoding of <pre> and <textarea> elements that start with a newline
  • Fixed encoding of raw text elements
  • Fixed sizing of html.frame
  • Fixed measure in HTML export
  • Fixed nested html.frames
  • Fixed that a box without a body was ignored in HTML export
  • Fixed encoding of whitespace in HTML

SVG export

  • Added support for COLR-flavored color glyphs
  • Reduced amount of <g> grouping elements that are generated

PNG export

  • Fixed crash when text size is negative

Visualize

  • Added support for using PDFs as images using the new hayro library. PDFs will be embedded directly in PDF export, rasterized in PNG export, and turned into SVGs in SVG and HTML export. (Thanks to @​LaurenzV for creating hayro!)
  • Added support for WebP images
  • Various minor improvements for SVG images (see the resvg 0.44 and 0.45 changelogs)
  • SVG images can now refer to external image files
  • Clip paths are now properly anti-aliased
  • Fixed gradients on curves where the last segment is curve.line
  • Fixed stroke cap handling of shapes with partial strokes
  • Fixed corner radius handling of shapes with partial strokes
  • Fixed crash when sampling across two coinciding gradient stops

Layout

  • Added opt-in support for character-level justification in addition to word-level justification, configured via the new par.justification-limits property. This is an impactful microtypographical technique that can significantly improve the appearance of justified text.
  • Fixed wrong linebreak opportunities related to object replacement characters
  • Fixed an issue where a breakable block would still produce an empty segment even if nothing fit into the first segment, leading to various undesirable behaviors in combination with fills, strokes, and stickiness
  • Fixed crash with set rule for column or rowspan on a grid cell
  • Fixed CJK-Latin-spacing at manual line breaks and at sub- and superscript boundaries

Math

  • Added frac.style property with new options for skewed and inline fractions
  • Added math.equation.alt property for setting an alternative description for an equation
  • Text handling
    • A single equation can now use multiple fonts
    • Glyph layout in math now uses proper text shaping, leading to better handling of more complex Unicode features
    • Generated characters in an equation (e.g. the produced by sqrt) can now be targeted by text show rules
    • Added scr function for roundhand script font style
    • Added dotless parameter to accent (typically for rendering a dotless accented i or j)
    • Script-style glyphs are now preferred at reduced math sizes
    • Fixed text.stroke in math
    • Broken glyph assemblies are now prevented even when font data is incorrect
  • Layout
    • Fixed a bug with vertical accent positioning
    • Fixed positioning of bottom accents
    • Fixed a bug with layout of roots
    • Improved layout of vec and cases, making it consistent with mat
    • Removed linebreak opportunity before closing bracket in inline math
  • An augment line can now exist at the start and end of a matrix, not only in between columns and rows
  • Shorthands and multi-character numbers do not bind more tightly than fractions anymore in cases like $x>=(y)/z$ (Minor breaking change)
  • Named arguments passed to symbols used as function now raise an error instead of being silently ignored (Minor breaking change)
  • The mid element does not force the "large" math class upon its contents anymore and instead defaults to "relation"
  • Fixed error in math parsing when .. isn't followed by anything
  • Fixed the default math class of ⅋, ⎰, ⟅, ⎱, ⟆, ⟇, and ،

Thanks to @​mkorje for his work on math!

Model

  • Tables
    • Added support for multiple headers and subheaders in tables
    • Table headers now force a rowbreak, i.e. an incomplete row before a header will not be filled with cells after the header
    • Fixed a bug where headers and footers could accidentally expand to contain non-header cells
  • Added title element for displaying the document title
  • Added figure.alt property for setting an alternative description for a figure
  • Link hit boxes for text are now vertically a bit larger to avoid issues with automatic link detection in PDF viewers
  • The link function will now produce an error when passed an empty string as a URL (Minor breaking change)
  • The value of the number argument of enum.item now takes auto instead of none for automatic numbering (Minor breaking change)
  • Improved spacing of nested tight lists
  • Fixed that quotes: false was ignored for inline-level quotes
  • Fixed hanging indent for centered, numbered headings
  • Fixed footnote.entry show rules breaking links from footnote to entry
  • Hebrew numbering does not add Geresh and Gershayim anymore

Bibliography

  • Built-in styles
    • Updated styles to their latest upstream CSL versions
    • Renamed "chicago-fullnotes" to "chicago-notes" (the old name remains as a deprecated alias)
    • Renamed "modern-humanities-research-association" to "modern-humanities-research-association-notes" (the old name remains as a deprecated alias)
    • Added support for locator/supplement in alphanumeric style
  • Hayagriva format
    • Added chapter field corresponding to CSL chapter-number and BibLaTeX chapter
  • BibLaTeX format
    • Fixed parsing of alphanumeric page ranges
    • Added support for % comment syntax
    • Fixed parsing of space-separated single character commands
    • Added "primaryclass" alias for "eprintclass" field
    • Added support for BibLaTeX language field
    • Improved translation of BibLaTeX fields to genre and serial-number
  • CSL handling
    • The bibliography rendering now uses strong, emph, and smallcaps to express CSL font styling instead of directly adjusting the text style, making styling easier
    • Added support for date seasons, which are displayed when the month is missing
    • Terms for "AD" and "BC" are now correctly used from the chosen locale
    • Fixed how subsequent citations with differing supplements translate into CSL ibid and ibid-with-locator positions
    • Fixed handling of ibid and ibid-with-locator positions in styles
    • Fixed the location conditional in CSL styles for citations with no locator
    • Fixed accesses of the year suffix resulting in wrong CSL renders
    • Fixed regression where page variables were no longer supported in styles' <number> elements
    • Fixed sorting and formatting of name parts
    • Fixed year suffix collapsing
    • Fixed delimiters in locale-specific date formatting
    • Fixed rendering of date ordinals
    • Fixed rendering and sorting of dates with BC years
    • Fixed sorting for empty sort values

Text

  • The sub and super functions now use the subs and sups OpenType font features instead of special Unicode characters for typographic scripts, fixing semantical, sizing, and positioning issues
  • The raw element
    • Tweaked default syntax-highlighting color scheme of raw text to make the colors more accessible
    • JSON keys and string values now use different colors in the default raw syntax highlighting theme
    • Fixed a crash when a raw syntax contains an unescaped trailing backslash
    • Fixed tab indentation in raw text with CRLF line terminators
  • Translations
    • Added term translations (a term being the "Section" in "Section 1") for many new languages by importing pre-existing translations from LaTeX packages
    • Added term translations for Indonesian Latvian Croatian Lithuanian French French (Canada) Galician Dutch Danish Slovenian Italian Chinese Spanish and Irish (Gaeilge)
    • Improved term translations for Czech Swedish Galician Dutch Chinese Spanish Irish (Gaeilge) and German
    • Improved smart quotes for French Ukrainian Russian and Arabic
  • An empty font list is not allowed anymore in text.font (Minor breaking change)
  • Added a warning when using a variable font as those are not currently supported
  • Fixed usage of the same font with different coverage settings
  • Fixed hyphens not showing up when hyphenating at specific positions (where invisible metadata exists)
  • Fixed styling of repeated hyphens in languages with hyphen repetition
  • Last resort font fallback does not consider default ignorable characters anymore during font selection
  • Updated New Computer Modern fonts to version 7.0.4
  • Updated data and shaper to Unicode 16.0.0

Scripting

  • The in operator can now be used to check whether a definition is present in a module
  • Added default parameter to array.first, array.last array.join str.first, and str.last methods
  • Added by parameter to array.sorted for sorting with a comparison function
  • Added str.normalize function for Unicode normalization
  • Added from, to, and sign methods to direction type
  • Labels cannot be empty anymore (Minor breaking change)
  • The WebAssembly runtime used by the plugin system was updated and now supports SIMD
  • Numberings and counters now use 64-bit numbers instead of platform-dependant numbers for consistency across platforms
  • Improved consistency of how large numbers are handled in data loading functions
  • The toml function is now guaranteed to return a dictionary and toml.encode must receive a dictionary (it already errored before when passed something else, but the new function signature makes the error clearer)
  • Serialization of bytes in human-readable formats now uses repr
  • Fixed slicing of last N elements of an array using the count parameter
  • Fixed crash when the expression wrapped in a context expression is an anonymous function
  • Fixed equality check between raw.line elements
  • Fixed repr of labels being potentially syntactically invalid
  • Fixed repr of functions modified through with

Introspection

  • The following elements are newly locatable (i.e. they can be discovered with query, locate, etc. without having a label): par, table, enum, list, terms, title, figure.caption, footnote.entry, outline.entry, image, emph, strong, link, cite, raw, underline, overline, strike, and highlight
  • Fixed issues with logical order in bidirectional text
  • Fixed logical order of cells in right-to-left grid
  • Fixed logical order of elements in grid cells that span multiple pages
  • Fixed logical order of metadata at the starts and ends of paragraphs
  • Fixed introspection positions of inline elements at the very start of a paragraph (previously the Y position of an element at the very start would differ from one in the middle of the first line)

Styling

  • Fixed rare infinite loop in show rule application

Performance

  • Optimized incremental compilation with a new algorithm that, in particular, eliminates cases of very slow compilation with heavy context usage

Command Line Interface

  • Added typst info subcommand for emitting build and environment information
  • Added typst completions subcommand for retrieving shell completions
  • Added TYPST_IGNORE_SYSTEM_FONTS environment variable
  • Added --ignore-embedded-fonts flag and TYPST_IGNORE_EMBEDDED_FONTS environment variable for disabling the use of fonts embedded into the Typst binary
  • Added --no-pdf-tags flag for disabling the automatic generation of accessibility tags. These are emitted when no particular standard like PDF/UA-1 is selected to provide a baseline of accessibility.
  • Added --target parameter to typst query
  • Added --deps and --deps-format parameters for emitting a list of files compilation depends on. Supports the three formats json, zero, and make.
  • Deprecated the --make-deps flag in favor of --deps with --deps-format make
  • On Linux, the font search will now fall back to known font directories if none were loaded via Fontconfig.
  • The CLI will now warn when trying to watch the standard input
  • Fixed race condition when two separate Typst CLI processes concurrently try to install a package
  • Fixed incremental SVG export not writing output SVGs on changes that only affect the page (e.g. changing page.fill)
  • Fixed a rare potential crash when stack space couldn't be grown as expected

Tooling and Diagnostics

  • Errors in many kinds of external text files (e.g., bibliographies, JSON files, etc.) are now annotated within these files instead of at the positions where the files are loaded from a Typst file
  • Warnings originating from within eval are now correctly emitted
  • Diagnostic messages and hints
    • Improved error messages related to parsing of numbers
    • The error message for an unsuitable CSL style now mentions the name of the style
    • Added hints to various deprecated items with the removal timeline
    • Added hint for the error message when an X/Y pair is expected
    • Added hint for a label that appears in both the document and the bibliography
    • Added additional hint for show rule recursion depth error
    • Fixed inconsistent formatting of code points and strings in error messages
  • Autocompletion
    • Labels will now be deduplicated in completions
    • Math font autocompletions are now based on the presence of an OpenType MATH table instead of the word "Math" in the name
    • Autocompletion immediately after a comma in a parameter list is now supported for explicitly triggered completions (e.g. via Ctrl/Cmd+Space)
    • Citation style aliases are now displayed as autocompletions
    • Fixed autocompletion false positives with cursor after parameter list
    • Fixed autocompletion after partial identifier in math
    • Fixed which definitions are suggested in math
    • Fixed inapplicable method autocompletions being listed
  • Tooltips
    • Fixed tooltip for scoped functions (e.g. calc.round)
    • Fixed tooltip and details for figure references
    • Expression tooltips now use × instead of x to indicate a repeated value
  • Fixed jump from click (jumping to the source panel with a click in the preview) in presence of transformations and clipping

Symbols

  • Added many new symbols and variants; many more than could be listed here. View the dedicated changelog for a full listing.
  • Code points that have a symbol and emoji presentation now have the correct variation selector attached depending on whether they appear in sym or emoji. That said, they still don't render consistently in Typst due to how font fallback works.
  • The symbol function can now be used to create symbols that comprise not just one character, but one full grapheme cluster

Deprecations

  • The name pdf.embed in favor of the new name pdf.attach
  • The "chicago-fullnotes" bibliography style in favor of "chicago-notes"
  • The "modern-humanities-research-association" bibliography style in favor of "modern-humanities-research-association-notes"
  • The --make-deps CLI flag in favor of --deps with --deps-format make
  • Various symbols, see the deprecation section in the dedicated changelog for a full listing

Development

  • The Default impl for Library had to be removed for crate splitting and trait coherence reasons, but you can get a drop-in replacement via use typst::LibraryExt
  • The PdfOptions struct has a new tagged field, which defaults to true
  • Fixed a potential panic in World::font implementations. Downstream World implementations might need to apply the same fix.
  • Increased minimum supported Rust version to 1.88
  • The Docker container now has the optional non-root user typst

Thanks to everyone who contributed to this release: @​saecki, @​MDLC01, @​YDX-2147483647, @​Andrew15-5, @​mkorje, @​mewmew, @​bluebear94, @​PgBiel, @​eltos, @​LaurenzV, @​wrzian, @​frozolotl, @​Daaiid, @​Marcono1234, @​breezykermo, @​cAttte, @​hpcfzl, @​3w36zj6, @​EpicEricEE, @​IgKh, @​T0mstone, @​isuffix, @​tingerrr, @​Myriad-Dreamin, @​adriandelgado, @​jassielof, @​jbirnick, @​magistau, @​mi2ebi, @​7ijme, @​Astra3, @​AzurIce, @​Bequen, @​Bugg4, @​Emm54321, @​F2011, @​Fevol, @​Flibbo, @​G1gg1L3s, @​JKRhb, @​JeppeKlitgaard, @​Krasjet, @​LinusU, @​NiklasEi, @​OverflowCat, @​PatrickMassot, @​Pipcount, @​Ri-Nai, @​SIGSTACKFAULT, @​SharzyL, @​SillyFreak, @​TwoF1nger, @​WannesMalfait, @​Wolf-SO, @​aindriu80, @​alerque, @​alluring-mushroom, @​andis854, @​aodenis, @​arbrauns, @​asibahi, @​blinkerfluessigkeit, @​deivisCode, @​diquah, @​eduardosm, @​elegaanz, @​hooyuser, @​istudyatuni, @​kamack38, @​kimushun1101, @​kristoferssolo, @​lvgrr, @​lzm0, @​markus-langgeng, @​martinetd, @​mattfbacon, @​mgazeel, @​michaelfortunato, @​mtoohey31, @​noamzaks, @​patrik64, @​pog102, @​pohlrabi404, @​samuelireson, @​sebaseb98, @​selfisekai, @​siddhantdev, @​ssemigr, @​tjbcg, @​tovrstra, @​ultimatile, @​uwni, @​wkordalski, @​xkevio, @​zefr0x.


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants