Path to this page:
Subject: CVS commit: pkgsrc/textproc/typst
From: pin
Date: 2025-02-21 15:36:35
Message id: 20250221143635.B5FCFFBE0@cvs.NetBSD.org
Log Message:
textproc/typst: update to 0.13.0
For more information read:
https://typst.app/blog/2025/typst-0.13/
Highlights
There is now a distinction between proper paragraphs and just inline-level \
content. This is important for future work on accessibility and means that first \
line indent can now be enabled for all paragraphs instead of just consecutive \
ones.
The outline has a better out-of-the-box look and is more customizable
The new curve function (that supersedes the path function) provides a \
simpler and more flexible interface for creating Bézier curves
The image function now supports raw pixel raster formats for generating \
images from within Typst
Functions that accept file paths now also accept raw bytes, for full flexibility
WebAssembly plugins are more flexible and automatically run multi-threaded
Fixed a long-standing bug where single-letter strings in math \
($"a"$) would be displayed in italics
You can now specify which charset should be covered by which font family
The pdf.embed function lets you embed arbitrary files in the exported PDF
HTML export is currently under active development. The feature is still very \
incomplete, but already available for experimentation behind a feature flag.
Model
There is now a distinction between proper paragraphs and just inline-level \
content (Breaking change)
All text at the root of a document is wrapped in paragraphs. Meanwhile, \
text in a container (like a block) is only wrapped in a paragraph if the \
container holds any block-level content. If all of the content is inline-level, \
no paragraph is created.
In the laid-out document, it's not immediately visible whether text \
became part of a paragraph. However, it is still important for accessibility, \
HTML export, and for properties like first-line-indent.
Show rules on par now only affect proper paragraphs
The first-line-indent and hanging-indent properties also only affect \
proper paragraphs
Creating a par[..] with body content that is not fully inline-level will \
result in a warning
The default show rules of various built-in elements like lists, quotes, \
etc. were adjusted to ensure they produce/don't produce paragraphs as \
appropriate
Removed support for booleans and content in outline.indent
The outline function was fully reworked to improve its out-of-the-box \
behavior (Breaking change)
Outline entries are now blocks and are thus affected by block spacing
The auto indentation mode now aligns numberings and titles outline-wide \
for a grid-like look
Automatic indentation now also indents entries without a numbering
Titles wrapping over multiple lines now have hanging indent
The page number won't appear alone on its own line anymore
The link now spans the full entry instead of just the title and page number
The default spacing between outline leader dots was increased
The fill parameter was moved from outline to outline.entry and can thus \
be configured through show-set rules
Removed body and page fields from outline entry
Added indented, prefix, inner, body, and page methods on outline entries \
to simplify writing of show rules
Added configuration to par.first-line-indent for indenting all paragraphs \
instead of just consecutive ones
Added form parameter to ref function. Setting the form to "page" \
will produce a page reference instead of a textual one.
Added document.description field, which results in corresponding PDF and \
HTML metadata
Added enum.reversed parameter
Added support for Greek numbering
When the link function wraps around a container like a block, it will now \
generate only one link for the whole block instead of individual links for all \
the visible leaf elements. This significantly reduces PDF file sizes when \
combining link and repeat.
The link function will now only strip one prefix (like mailto: or tel:) \
instead of multiple
The link function now suppresses hyphenation via a built-in show-set rule \
rather than through its default show rule
Displaying the page counter without a specified numbering will now take the \
page numbering into account
Visualization
Added new curve function that supersedes the path function and provides a \
simpler and more flexible interface. The path function is now deprecated.
The image function now supports raw pixel raster formats. This can be used \
to generate images from within Typst without the need for encoding in an image \
exchange format.
Added image.scaling parameter for configuring how an image is scaled by PNG \
export and PDF viewers (smooth or pixelated)
Added image.icc parameter for providing or overriding the ICC profile of an image
Renamed pattern to tiling. The name pattern remains as a deprecated alias.
Added gradient.center, gradient.radius, gradient.focal-center, and \
gradient.focal-radius methods
Fixed interaction of clipping and outset on box and block
Fixed panic with path of infinite length
Fixed non-solid (e.g. tiling) text fills in clipped blocks
Fixed a crash for images with a DPI value of zero
Fixed floating-point error in gradient.repeat
Auto-detection of image formats from a raw buffer now has support for SVGs
Scripting
Functions that accept file paths now also accept raw bytes
image, cbor, csv, json, toml, xml, and yaml now support a path string or \
bytes and their .decode variants are deprecated
plugin, bibliography, bibliography.style, cite.style, raw.theme, and \
raw.syntaxes now accept bytes in addition to path strings. These did not have \
.decode variants, so this adds new flexibility.
The path argument/field of image and bibliography was renamed to source \
and sources, respectively (Minor breaking change)
Improved WebAssembly plugins
The plugin type is replaced by a plugin function that returns a module \
containing normal Typst functions. This module can be used with import syntax. \
(Breaking change)
Plugins now automatically run in multiple threads without any changes by \
plugin authors
A new plugin.transition API is introduced which allows plugins to run \
impure initialization in a way that doesn't break Typst's purity guarantees
The variable name bound by a bare import (no renaming, no import list) is \
now determined statically and dynamic imports without as renaming (e.g. import \
"ot" + "her.typ") are a hard error (Breaking change)
Values of the arguments type can now be added with + and joined in \
curly-braced code blocks
Functions in an element function's scope can now be called with method \
syntax, bringing elements and types closer (in anticipation of a future full \
unification of the two). Currently, this is only useful for outline.entry as no \
other element function defines methods.
Added calc.norm function
Added support for 32-bit floats in float.from-bytes and float.to-bytes
The decimal constructor now also accepts decimal values
Improved repr of symbols, arguments, and types
Duplicate symbol variants and modifiers are now a hard error (Breaking change)
Math
Fixed a bug where single letter strings in math ($"a"$) would be \
displayed in italics
Math function calls can now have hyphenated named arguments and support \
argument spreading
Better looking accents thanks to support for the flac (Flattened Accent \
Forms) and dtls (Dotless Forms) OpenType features
Added lcm text operator
The bold function now works with ϝ and Ϝ
The italic function now works with ħ
Fixed a bug where the extent of a math equation was wrongly affected by \
internal metadata
Fixed interaction of lr and context expressions
Fixed weak spacing being unconditionally ignored in lr
Fixed sub/superscripts sometimes being in the wrong position with lr
Fixed multi-line annotations (e.g. overbrace) changing the math baseline
Fixed merging of attachments when the base is a nested equation
Fixed resolving of contextual (em-based) text sizes within math
Fixed spacing around up tacks (⊥)
Bibliography
Prose and author-only citations now use editor names if the author names are \
unavailable
Some non-standard but widely used BibLaTeX editortypes like producer, \
writer, scriptwriter, and none (defined by widespread style biblatex-chicago to \
mean performers within music and video entries) are now recognized
CSL styles can now render affixes around the bibliography
For BibTeX entries with eprinttype = {pubmed}, the PubMed ID will now be \
correctly processed
Whitespace handling for strings delimiting initialized names has been improved
Uppercase spelling after apostrophes used as quotation marks is now possible
Fixed bugs around the handling of CSL delimiting characters
Fixed a problem with parsing multibyte characters in page ranges that could \
prevent Hayagriva from parsing some BibTeX page ranges
Updated CSL APA style
Updated CSL locales for Finnish, Swiss German, Austrian German, German, and \
Arabic
Text
Added support for specifying which charset should be covered by which font family
Added all parameter to smallcaps function that also enables small capitals \
on uppercase letters
Added basic i18n for Basque and Bulgarian
Justification does not affect raw blocks anymore
CJK-Latin-spacing does not affect raw text anymore
Fixed wrong language codes being used for Greek and Ukrainian
Fixed default quotes for Croatian and Bulgarian
Fixed crash in RTL text handling
Added support for raw syntax highlighting for a few new languages: CFML, \
NSIS, and WGSL
New font metadata exception for New Computer Modern Sans Math
Updated bundled New Computer Modern fonts to version 7.0.1
Layout
Fixed various bugs with footnotes
Fixed footnotes getting lost when multiple footnotes were nested within \
another footnote
Fixed endless loops with empty and overlarge footnotes
Fixed crash with overlarge footnotes within a floating placement
Fixed sizing of quadratic shapes (square and circle)
Fixed block.sticky not working properly at the top of a container
Fixed crash due to consecutive weak spacing
Fixed crash when a block or text have negative sizes
Fixed unnecessary hyphenations occurring in rare scenarios due to a bad \
interaction between padding and paragraph optimization
Fixed lone citations in align not becoming their own paragraph
Syntax
Top-level closing square brackets that do not have a matching opening square \
bracket are now a hard error (Minor breaking change)
Adding a space between the identifier and the parentheses in a set rule is \
not allowed anymore (Minor breaking change)
Numbers with a unit cannot have a base prefix anymore, e.g. 0b100000pt is \
not allowed anymore. Previously, it was syntactically allowed but always \
resolved to a value of zero. (Minor breaking change)
Using is as an identifier will now warn as it might become a keyword in the \
future
Fixed minor whitespace handling bugs
in math mode argument lists
at the end of headings
between a term list's term and description
Fixed parsing of empty single line raw blocks with 3+ backticks and a \
language tag
Fixed minor bug with parentheses parsing in math
Markup that can only appear at the start of the line (headings, lists) can \
now also appear at the start of a list item
A shebang #! at the very start of a file is now ignored
PDF export
Added pdf.embed function for embedding arbitrary files in the exported PDF
Added support for PDF/A-3b export
The PDF timestamp will now contain the timezone by default
HTML export
Note: HTML export is currently under active development. The feature is still \
very incomplete, but already available for experimentation behind a feature \
flag.
Added HTML output support for some (but not all) of the built-in elements
Added html.elem function for outputting an arbitrary HTML element
Added html.frame function for integrating content that requires layout into \
HTML (by embedding an SVG)
Added target function which returns either "paged" or \
"html" depending on the export target
Tooling and Diagnostics
Autocompletion improvements
Added autocompletion for file paths
Smarter autocompletion of variables: Completing rect(fill: |) will now \
only show variables which contain a valid fill (either directly or nested, e.g. \
a dictionary containing a valid fill)
Different functions will now autocomplete with different brackets (round \
vs square) depending on which kind is more useful
Positional parameters which are already provided aren't autocompleted \
again anymore
Fixed variable autocompletion not considering parameters
Added autocompletion snippets for common figure usages
Fixed autocompletion after half-completed import item
Fixed autocompletion for cite function
Added warning when an unconditional return in a code block discards joined \
content
Fixed error message when accessing non-existent label
Fixed handling of nested imports in IDE functionality
Command Line Interface
Added --features argument and TYPST_FEATURES environment variable for opting \
into experimental features. The only feature so far is html.
Added a live reloading HTTP server to typst watch when targeting HTML
Fixed self-update not being aware about certain target architectures
Fixed crash when piping typst fonts output to another command
Fixed handling of relative paths in --make-deps output
Fixed handling of multipage SVG and PNG export in --make-deps output
Colons in filenames are now correctly escaped in --make-deps output
Symbols
New
inter, inter.and, inter.big, inter.dot, inter.double, inter.sq, \
inter.sq.big, inter.sq.double, integral.inter
asymp, asymp.not
mapsto, mapsto.long
divides.not.rev, divides.struck
interleave, interleave.big, interleave.struck
eq.triple.not, eq.dots, eq.dots.down, eq.dots.up
smt, smt.eq, lat, lat.eq
colon.tri, colon.tri.op
dagger.triple, dagger.l, dagger.r, dagger.inv
hourglass.stroked, hourglass.filled
die.six, die.five, die.four, die.three, die.two, die.one
errorbar.square.stroked, errorbar.square.filled, \
errorbar.diamond.stroked, errorbar.diamond.filled, errorbar.circle.stroked, \
errorbar.circle.filled
numero
Omega.inv
Renamed
ohm.inv to Omega.inv
Changed codepoint (Breaking change)
angle.l.double from 《 to ⟪
angle.r.double from 》 to ⟫
angstrom from U+212B (Å) to U+00C5 (Å)
Deprecated
sect and all its variants in favor of inter
integral.sect in favor of integral.inter
Removed (Breaking change)
degree.c in favor of °C ($upright(°C)$ or $upright(degree C)$ in math)
degree.f in favor of °F ($upright(°F)$ or $upright(degree F)$ in math)
kelvin in favor of just K ($upright(K)$ in math)
Deprecations
The path function in favor of the curve function
The name pattern for tiling patterns in favor of the new name tiling
image.decode, cbor.decode, csv.decode, json.decode, toml.decode, xml.decode, \
yaml.decode in favor of the top-level functions directly accepting both paths \
and bytes
The sect and its variants in favor of inter, and integral.sect in favor of \
integral.inter
The compatibility behavior of type/str comparisons (e.g. int == \
"integer") which was temporarily introduced in Typst 0.8 now emits \
warnings. It will be removed in Typst 0.14.
Removals
Removed style function and styles argument of measure, use a context \
expression instead (Breaking change)
Removed state.display function, use state.get instead (Breaking change)
Removed location argument of state.at, counter.at, and query (Breaking change)
Removed compatibility behavior where counter.display worked without context \
(Breaking change)
Removed compatibility behavior of locate (Breaking change)
Development
The typst::compile function is now generic and can return either a \
PagedDocument or an HtmlDocument
typst-timing now supports WebAssembly targets via web-sys when the wasm \
feature is enabled
Increased minimum supported Rust version to 1.80
Fixed linux/arm64 Docker image
Files: