head 1.14; access; symbols pkgsrc-2026Q2:1.13.0.6 pkgsrc-2026Q2-base:1.13 pkgsrc-2026Q1:1.13.0.4 pkgsrc-2026Q1-base:1.13 pkgsrc-2025Q4:1.13.0.2 pkgsrc-2025Q4-base:1.13 pkgsrc-2025Q3:1.9.0.6 pkgsrc-2025Q3-base:1.9 pkgsrc-2025Q2:1.9.0.4 pkgsrc-2025Q2-base:1.9 pkgsrc-2025Q1:1.9.0.2 pkgsrc-2025Q1-base:1.9 pkgsrc-2024Q4:1.7.0.2 pkgsrc-2024Q4-base:1.7 pkgsrc-2024Q3:1.6.0.4 pkgsrc-2024Q3-base:1.6 pkgsrc-2024Q2:1.6.0.2 pkgsrc-2024Q2-base:1.6 pkgsrc-2024Q1:1.5.0.2 pkgsrc-2024Q1-base:1.5 pkgsrc-2023Q4:1.4.0.2 pkgsrc-2023Q4-base:1.4 pkgsrc-2023Q2:1.1.0.2 pkgsrc-2023Q2-base:1.1; locks; strict; comment @# @; 1.14 date 2026.06.22.07.56.09; author pin; state Exp; branches; next 1.13; commitid HCqMLESkvNnKDLKG; 1.13 date 2025.12.13.19.55.16; author pin; state Exp; branches; next 1.12; commitid CogZdsQ4qwb7LhmG; 1.12 date 2025.12.03.18.23.52; author pin; state Exp; branches; next 1.11; commitid O7TgsonfoIWGzZkG; 1.11 date 2025.10.27.12.05.01; author pin; state Exp; branches; next 1.10; commitid YsrLzbBQH55sFcgG; 1.10 date 2025.10.16.10.51.28; author pin; state Exp; branches; next 1.9; commitid MOehoW2HtMb9CMeG; 1.9 date 2025.03.12.13.29.14; author pin; state Exp; branches; next 1.8; commitid KkzL50izZ8YIuMMF; 1.8 date 2025.02.21.14.36.35; author pin; state Exp; branches; next 1.7; commitid 02EwgICJvc3HtlKF; 1.7 date 2024.10.19.21.09.21; author pin; state Exp; branches; next 1.6; commitid 9HTIop9ELBvxFjuF; 1.6 date 2024.05.18.07.03.55; author pin; state Exp; branches; next 1.5; commitid XZVgFJFJHN3qWraF; 1.5 date 2024.03.18.09.04.33; author pin; state Exp; branches; next 1.4; commitid LC3gycFeX0OmzC2F; 1.4 date 2023.12.09.22.01.45; author pin; state Exp; branches; next 1.3; commitid YGs3eOeAtR4i5QPE; 1.3 date 2023.08.17.02.49.19; author pin; state dead; branches; next 1.2; commitid B5SE260hfm57n5BE; 1.2 date 2023.07.10.19.43.05; author pin; state Exp; branches; next 1.1; commitid 6cQJtxnYzPGDciwE; 1.1 date 2023.05.24.12.17.49; author pin; state Exp; branches; next ; commitid UyJJHHEDx2iwfdqE; desc @@ 1.14 log @textproc/typst: update to 0.15.0 Highlights Typst now supports variable fonts HTML export now supports equations out of the box via MathML With the new, experimental bundle export target, a single Typst project can output multiple files (e.g. a multi-page website) A single document can now contain multiple bibliographies Typst can now target multiple PDF standards at once The new within selector simplifies many introspection use cases The new divider element represents a thematic break that templates can style Spot colors enable use of custom pigments in offset printing With the new file path type, project-relative paths can be passed to packages The new, more general typst eval CLI subcommand supersedes typst query Layout convergence issues now result in detailed diagnostics Two long-standing list layout issues with marker alignment and centering were fixed Paragraph handling in HTML export is improved, preventing unexpected paragraphs from appearing The Typst documentation now has a print version Language Syntax File paths (e.g. in imports or image function calls) may not contain backslashes anymore; instead forward slashes must be used (Breaking change) Added hints for invalid characters in code mode Added hint when trying to use a unary operator directly in an embedded expression using a hash (e.g. #-30deg) Fixed potential stack overflow crashes by enforcing a maximum parsing depth Fixed incremental parsing of unclosed strings Styling Text show rules now have tracebacks that include the matched text Fixed a crash with text show rules that match on multi-character symbols Scripting Extended hint when built-in definitions are shadowed to set and show rules Added hint when trying to spread one or multiple dictionaries into an array Improved diagnostics for invalid method calls Improved hint for unknown variables in math that are available in std Fixed a misleading error message when trying to assign to a temporary return value Library Foundations Added file path type that is now accepted in all places where paths were previously only represented as strings A path constructed in one file can be used in another file, but will be resolved relative to its original file Likewise, paths can be passed across package boundaries The initial path type is very minimal, but additional features like file existence checks or directory walking are planned Collections Added map and filter functions on dictionaries and arguments Named arguments on arguments values are now accessible with field access syntax The slice functions on strings and arrays will now error if passing both an end and a count (Minor breaking change) Added inclusive parameter to range function Calculation Added asinh, acosh, atanh, and erf functions to calc module Added int.min and int.max constants for the minimum and maximum representable integer, respectively Fixed behavior of quo for negative integers Fixed potential overflows in norm, abs, gcd, and lcm Floating-point calculations are now consistently deterministic across platforms Date & time handling The offset parameter of datetime.today now accepts durations as an alternative to integers, allowing for sub-hour precision offsets Addition and subtraction of datetimes and durations now retains precision instead of clamping to full days in some cases The datetime constructor now emits more precise errors when components are missing Conversions Added base parameter to int constructor to configure in which base to parse a string Fixed that the base parameter of the str constructor was accepted for non-integer values if its value was 10 (Minor breaking change) Added hint when trying to construct a string with base 1 The panic function now displays strings as-is instead of showing their repr, making it more suitable for friendly, user-facing messages Changed repr of styles and locations to be more distinct Model Added divider element representing a thematic break that templates can style Bundle-related elements The document element can now be constructed to produce individual documents in bundle export Added path and format parameters to document element Added experimental asset element Bibliography management A single document can now contain multiple bibliographies Added target parameter to bibliography element to configure which citation is picked up by which bibliography Added group parameter to bibliography element to configure how numbers are shared/reset across bibliographies Added support for numeric values for the month key in .bib files Added support for BibLaTeX name options in .bib files Added support for propagating non-numeric volume fields in .bib files to bibliographies Improved sorting in bibliographies to take into account language conventions Improved interoperability with CSL styles; for a full listing of changes, review the Hayagriva 0.10.0 changelog Added support for setting directors on videos without a parent in Hayagriva YAML files Improved handling of Anthos entries in Hayagriva YAML files by treating them as chapters in CSL Footnotes The link of a footnote is now within the superscript instead of around it, improving PDF tagging and HTML output The thickness of the default footnote separator is now specified in font-relative instead of absolute units Numbering Added numbering support for Armenian numerals , Arabic Abjad numerals , and Tibetan numerals Greek numbering now uses the modern Greek style The par.first-line-indent property will now fold, meaning that partial dictionaries across different set rules or par calls are combined Added list.marker-align property for defining how to align list markers When omitted, it will default to the new baseline alignment (vertically), combined with end alignment (horizontally) Text Added support for variable fonts The well-known variation axes ital, slnt, wght, wdth, and opsz are automatically set based on text weight, stretch, style, and size Custom variations can be configured via the new variations parameter of the text function When using a variable font with Typst, the suffixes "Variable", "Var", and "VF" should be omitted as Typst trims them to unify static and variable fonts into a single family (Minor breaking change) Font features The text.alternates parameter now accepts an integer in addition to a boolean to select stylistic alternates other than 0 and 1 Parsing of tag names in text.features is now more strict (Minor breaking change) Fixed that context text.font did not reflect the covers field Fixed uneven CJK-Latin spacing in justified paragraphs Fixed a bug where the lorem function would not produce the exact number of requested words Improved translations for Swedish , Portuguese , Czech , Latvian , Slovak , Polish , Vietnamese , Finnish , and Welsh Added font exception to avoid SimSun-ExtB being incorrectly merged with SimSun Updated New Computer Modern fonts to version 8.1.0 This update changes the default look of calligraphic letterforms in the math font; the previous style can be restored through show math.equation: set text(stylistic-set: 6) Updated Unicode components In particular, this fixed an issue with linebreaking of guillemets Math Layout Improved layout of under/over elements like underbrace Slightly improved spacing around math.op elements In which situations cramped styles (with tighter spacing) are applied is now fully consistent with TeX and MathML Core The size parameter of the lr function now consistently applies to middle delimiters in the same way it does to outer delimiters The size parameter of the lr function now resolves relatively to the height of just the inner content; it does not take the delimiters into account anymore (Minor breaking change) Glyph stretching is now always relative to the base glyph rather than a potentially already scaled version (e.g. due to display sizing) (Minor breaking change) Fixed left/right alignment not being applied correctly due to spacing next to alignment points The binom element now uses different OpenType constants for layout; though this does not lead to visible changes with most fonts The default length and stroke width of math.cancel lines is now specified in font-relative instead of absolute units Fixed potential misalignment in cases function Text handling Improved handling of multi-character symbols in math Fixed that some glyphs did not stretch correctly in script sizes Fraction, root, and under/over lines now respect text.stroke Accents in math are now always rendered in front of their base if they overlap The class function now applies the class only to its direct body rather than recursively (Minor breaking change) More delimiter symbols (e.g. chevron.l) are now callable to produce an lr element (Minor breaking change) Fixed various bugs with rendering of mathematical expressions that look like function calls but in reality aren't (e.g. $pi(1, 2)$, since pi is not a function) Fixed a bug with ordering of primes and nested attachments Symbols Added many new symbols and variants. View the codex 0.3.0 changelog for a full listing. Layout Baseline information is now retained in many more parts of the layout engine (Breaking change) In particular, text contained in a box with an inset is now aligned with the text surrounding the box This also fixes a bug where wrapping an inline equation in a box would shift its baseline Similarly, using a block in an equation will keep the baseline intact Last but not least, the marker/number and item of a list or enum are now properly baseline-aligned with the first line of the item even if the item is vertically larger than a normal line Centering something in a list now centers based on the full available width rather than based on the maximum width of other list content Page layout Added bleed parameter to page element to set up bleed margins Fixed the size of "us-executive" paper Added warning for show page rules as they are unsupported Paragraph layout Fixed a bug where justified text could accidentally protrude into the margin when it ends with certain kinds of characters (e.g. a zero-width space) Fixed a bug where first-line indent was applied at the start of a column even if all: false is set Added support for spacing that is both weak and fractional Visualize Added support for spot colors (also called separation colors) Tilings Added offset parameter for shifting the starting position of a tiling Fixed parent-relative placement for stack and polygon Gradients Added color.map.coolwarm for use with gradients Fixed interpolation of gradient stops in Oklab color space Fixed gradient angle handling for negative-size shapes Fixed gradient strokes for lines and curves Fixed parent-relative placement for stack and polygon Fixed various bugs with rectangle strokes in combination with radii Fixed a potential deadlock with font fallback in SVGs Various improvements to SVG image handling (see the resvg 0.46 and 0.47 changelogs); in particular: Added support for SVGs without top-level xmlns attribute Added support for variable fonts in SVG using the font-variation-settings CSS property Various improvements to PDF image handling (see the commits between d0b540f and 3483462 on hayro); in particular: Added support for JPEG2000 (JPXDecode) and JBIG2 (JBIG2Decode) images Improved parsing robustness for non-compliant files Added support for blend modes Introspection Layout convergence issues now result in detailed diagnostics that help pin down the cause Added within selector that matches elements that are contained within any elements matching an ancestor selector Added at parameter to counter.display function Improved how counter.display auto-selects the numbering to use Data Loading Added support for namespaces to xml function Added hint when trying to read from a path that looks like a URL Diagnostics for binary file loading failures now include file paths The json function now emits a friendly error when the loaded JSON has a leading UTF‑8 BOM Export Bundle Added new, experimental bundle export target With bundle export, you can emit multiple output files from a single Typst project Bundles can contain any combination of HTML pages, PDFs, PNGs, SVGs, and arbitrary assets HTML Mathematical equations are now automatically exported to MathML (thanks to @@mkorje) MathML defines how to render an equation, but also preserves its semantics If you've previously relied on show rules that use html.frame to render equations to SVG, try MathML output. Switching to it will improve the accessibility of your document (though rendering will be somewhat less consistent across browsers). The box and block elements' purpose is now aligned with paged export (Breaking change) box is used to bring block-level content inline block ensures inline-level content becomes block-level Depending on the contained content, this may be achieved by setting the CSS display property or by wrapping in an additional or
. The rules of how paragraphs are grouped in HTML have been adjusted to fix cases where paragraphs would appear unexpectedly (Breaking change) The list of HTML elements that can be grouped into paragraphs was tweaked (it now includes all phrasing content with the exception of elements that default to display: none) This default can be controlled by wrapping an element in a box or block as appropriate HTML elements that cannot be part of paragraphs (like a
) do not immediately force adjacent inline-level Typst content to be wrapped in a paragraph; rather, they are considered neutral for paragraph grouping Paragraph creation is only forced by block-level Typst elements (as opposed to HTML elements). Built-in block-level elements like headings or images wrap the HTML elements they create in block elements to force adjacent inline content into paragraphs. Package authors should do the same to ensure paragraph creation is consistent between HTML and paged export. The target function can now be used without the html feature flag (the rest of HTML export remains feature-flagged) DOM structure and built-in show rules The root element now receives a lang attribute respecting what was configured for text.lang The Typst image element now always emits width and height attributes on the generated HTML element Code in
 tags will now prefer raw newlines over 
elements to encode line breaks Fixed generated HTML for quote attributions Fixed table cell show rules not working in HTML export Serialization HTML is now minified by default; use the --pretty CLI flag or the checkbox in the web app to pretty-print it HTML elements The attrs parameter on html.elem will now fold, meaning that partial attributes across different set rules or html.elem calls are combined html.script and html.style only accept a string and not arbitrary content anymore (Breaking change) Whitespace handling HTML
elements now collapse adjacent Typst spaces Fixed spans being emitted to protect whitespace from collapsing unnecessarily in some cases PDF Typst can now target multiple (compatible) PDF standards at once, e.g. PDF/UA-1 and PDF/A-2a PDFs are now a bit more space-optimized at the cost of being harder to inspect with a text editor; use the --pretty CLI flag or the checkbox in the web app to pretty-print them Labelled headings now result in named destinations even if they are not referenced Graphics Added support for more compositing features of COLRv1 fonts Fixed rendering of gradients in LinearRGB, CMYK, and Luma color spaces Fixed excessive sampling of linear gradients Tagging Added support for more specific artifact kinds in pdf.artifact; these are now internally used when appropriate Fixed "invalid document structure" errors with complex list markers Fixed wrong PDF tagging order for inline content outside of paragraphs Fixed bounding box computations for stroked shapes in tagged PDFs Standards compliance Fixed potentially incompliant PDF files by emitting an error when PDF/UA-1 is requested but complying with PDF/UA-1 would require newer features than available in the current PDF version Fixed potentially incompliant PDF 1.4 files by emitting errors when implementation limits are exceeded SVG SVGs are now minified by default; use the --pretty CLI flag or the checkbox in the web app to pretty-print them Somewhat reduced the size of generated SVGs SVG elements do not have the classes typst-frame, typst-doc, typst-group, typst-shape, and typst-text anymore (Minor breaking change) Graphics Fixed a bug where tilings could be incorrectly reused in multiple places Fixed rendering of gradients in LinearRGB, CMYK, and Luma color spaces Fixed handling of conic gradient angles Fixed excessive sampling of linear gradients Fixed positioning and sizing of color bitmap glyphs Fixed sources of non-determinism in SVG export PNG Fixed handling of conic gradient angles Fixed positioning and sizing of color bitmap glyphs Fixed that negatively scaled text with equal x and y scale would turn invisible in PNG export Command Line Interface Added new typst eval subcommand to evaluate a Typst code expression from the CLI; this command supersedes typst query Tracebacks for diagnostics are now more compact and readable Added --pretty flag for producing human-readable output; output is otherwise minified by default (applies to HTML, SVG, and PDF, but not PNG) Fonts The output of typst fonts --variants is now more readable and informative; in particular, it also displays the paths of font files and, for variable fonts, variation axes The CLI now discovers fonts lazily, saving time on operations that do not need fonts (like HTML export without frames) Adobe Creative Cloud fonts are now discovered as system fonts Dependency output When writing to stdout while using --deps-format make (which is incompatible and thus fails), no empty Make dependency file will be emitted anymore The JSON dependency format now includes information about outputs in addition to inputs Path handling fixes on Windows Reading from a path that contains a drive letter now results in an explicit error instead of the drive letter being silently ignored Attempting to read from a path that contains a reserved filename (like COM1) now results in an explicit error Non-Unicode input paths are not supported anymore (Breaking change) The experimental --timings argument now requires an explicit file name instead of defaulting to record-{n}.json (Breaking change) Added colors to --help/-h and typst info output Fixed inconsistency in environment variable handling between typst info and typst compile Fixed a bug with the injection of a live reload script when using typst watch with HTML export Fixed a bug where local timezone information was taken into account even if a fixed date is set via --creation-timestamp or SOURCE_DATE_EPOCH, leading to irreproducible results Tooling Syntax highlighting In math, parentheses used for grouping are now highlighted differently than ones intended for display Autocomplete and tooltips Autocompletion and tooltips are now aware of parameters of user-defined functions Autocomplete descriptions and tooltips for font families are now more detailed and, for variable fonts, include variation axes Function autocompletions in math mode now always prefer round parentheses over square brackets (which are not supported in math) Fixed autocompletion and tooltips not working with argument lists in math mode Deprecations Certain unclear/ambiguous ways to write a raw language tag; these will now emit a warning in anticipation of an upcoming change to how they are parsed Fallback to Arabic numerals for numbering systems that do not support the number zero (e.g. for "⓵") Various symbols were renamed, see the deprecation section in the dedicated changelog for a full listing Some citation styles that were renamed or superseded council-of-science-editors is now called cse-citation-sequence-brackets-8th-edition council-of-science-editors-author-date is now called cse-name-year modern-language-association-8 / mla-8 is superseded by modern-language-association / mla vancouver is now called nlm-citation-sequence vancouver-superscript is now called nlm-citation-sequence-superscript Undocumented array forms of enum and terms items Removals The path element, use curve instead (Breaking change) The pattern type, use tiling instead (Breaking change) The pdf.embed element, use pdf.attach instead (Breaking change) The scoped functions cbor.decode, csv.decode, json.decode, toml.decode, xml.decode, yaml.decode, and image.decode; directly pass bytes to the top-level functions instead (Breaking change) Various previously deprecated symbols, see the removals section in the dedicated changelog for a full listing (Breaking change) Development The typst-kit crate was completely reworked to make it easier to create a Typst World implementation Diagnostic hints can now have spans (though typically they will be detached, which just means there isn't a span) Increased minimum supported Rust version to 1.92 Moved Nix flake from typst/typst to typst/typst-flake, where it is now maintained by the community as a best effort @ text @$NetBSD$ Work around unpublished crate. --- Cargo.toml.orig 2026-06-16 06:41:50.712217351 +0000 +++ Cargo.toml @@@@ -34,7 +34,7 @@@@ typst-assets = "0.15.0" typst-timing = { path = "crates/typst-timing", version = "0.15.0" } typst-utils = { path = "crates/typst-utils", version = "0.15.0" } typst-assets = "0.15.0" -typst-dev-assets = { git = "https://github.com/typst/typst-dev-assets", tag = "v0.15.0" } +typst-dev-assets = { path = "typst-dev-assets-a2e29ed9393121735ce56d9d06deeab701cf35e0" } arrayvec = "0.7.4" az = "1.2" base64 = "0.22" @ 1.13 log @textproc/typst: update to 0.14.2 Version 0.14.2 (December 12, 2025) Security Updated the WebAssembly runtime used for executing plugins. The version used in Typst 0.14.0 and 0.14.1 suffers from a memory handling vulnerability. Based on our investigation, the vulnerability would be very hard to exploit in practice, but an exploit could theoretically be feasible. In any case, we recommend upgrading to Typst 0.14.2. This holds in particular for local users. In the web app, the bug is not critical as the browser offers an extra layer of protection. Typst 0.13.1 and below are not affected by this vulnerability. Technical details: The wasmi WebAssembly runtime versions used in 0.14.0 and 0.14.1 have a use-after-free memory handling bug in certain memory growth situations. Specifically, the bug occurs when the plugin tries to grow its memory, but allocating the requested amount of memory fails. Based on our investigation, the bug is hard to trigger in practice as the WebAssembly linear memory is always limited to 4GB on a technical level and modern operating systems rarely fail to serve a 4GB memory allocation request (typically not even under RAM pressure). Once the bug is triggered, it would also still be very challenging to turn it into an actual exploit. Regardless, we recommend upgrading to Typst 0.14.2 for protection against a potential exploit. Diagnostics Added a hint when array.sorted fails because a pair of elements could not be compared. This hint aids with fixing bugs in user code that were surfaced by a change in internal sorting behavior in Typst 0.14.1. @ text @d1 1 a1 1 $NetBSD: patch-Cargo.toml,v 1.12 2025/12/03 18:23:52 pin Exp $ d5 1 a5 1 --- Cargo.toml.orig 2025-12-03 17:36:28.602478465 +0000 d7 6 a12 6 @@@@ -33,7 +33,7 @@@@ typst-syntax = { path = "crates/typst-sy typst-timing = { path = "crates/typst-timing", version = "0.14.2" } typst-utils = { path = "crates/typst-utils", version = "0.14.2" } typst-assets = "0.14.2" -typst-dev-assets = { git = "https://github.com/typst/typst-dev-assets", tag = "v0.14.2" } +typst-dev-assets = { path = "typst-dev-assets-fe6cad916d8b20c20742512b2a3f3b247a2bc4f8" } @ 1.12 log @textproc/typst: update to 0.14.1 PDF export Fixed regression where links to labelled elements would sometimes not work correctly Fixed bug where PDF text attributes could be written incorrectly Fixed crash in link handling Fixed crash for zero-sized pages Fixed crash when a table vline or hline has an out-of-bounds index Fixed crash in formatting of font-related PDF export errors Fixed crash when a footnote or place element was queried and reinserted into the document Fixed crash for PNGs with invalid metadata Fixed bug where text in SVGs with fill-and-stroke paint order could be exported incorrectly Fixed bug with layer isolation in SVGs where blending/masking is used Fixed that table headers could be tagged incorrectly in some scenarios Fixed issues where generated PDFs could differ between 32-bit and 64-bit systems Upgraded JPEG decoder used during PDF export for improved compatibility, fixing a case where a valid JPEG was rejected A PDF document information dictionary that would be empty is now fully omitted instead A rare crash in PDF tagging was turned into a compiler error HTML export Fixed export of table headers and footers with gutter A page set rule in HTML export is now a warning instead of a hard error, in line with how unsupported elements are generally treated Math Fixed regression where arrow.l.r could not be used as an accent anymore Fixed that single-letter strings did not react to spaces around them like multi-letter strings do Fixed that spacing around mat and vec with a fence delimiter was whitespace-dependent Fixed height calculation for horizontally stretched glyphs Model Fixed regression where Typst would error in heading numbering functions that don't handle the counter state (0,). This can occur in the first layout iteration. Such errors are usually automatically caught by Typst, which was not the case here. Text Fixed regression where Typst would synthesize superscripts for some fonts even when typographic glyphs were available Fixed regression where some oblique fonts would be classified as italic Scripting Fixed crash due to violated invariants in array.sorted Fixed crashes due to overflow in calc.rem, calc.rem-euclid, calc.div-euclid, calc.quo, and calc.gcd Upgraded WebAssembly runtime, fixing a bug that plugins could run into Command Line Interface Compiling to standard output in combination with --deps --deps-format=make (which results in an error) will not produce an empty Make dependency file as a side effect anymore Development Increased minimum supported Rust version to 1.89 @ text @d1 1 a1 1 $NetBSD$ d8 5 a12 5 typst-timing = { path = "crates/typst-timing", version = "0.14.1" } typst-utils = { path = "crates/typst-utils", version = "0.14.1" } typst-assets = "0.14.1" -typst-dev-assets = { git = "https://github.com/typst/typst-dev-assets", tag = "v0.14.1" } +typst-dev-assets = { path = "typst-dev-assets-03addcfb64f3f95209464a521e6aa49645bd271a" } @ 1.11 log @textproc/typst: update to 0.14.0 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 and a
 tag
        The language tag of raw elements is now preserved as a data-lang attribute on the  tag
    The authors and keywords properties of the document function now yield corresponding HTML  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. )
    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 
 and