typst/tests/typ/library/font.typ
Laurenz 57ca9628c1 Better space coalescing logic 🌧
This creates a smaller state machine helper type for softness coalescing, which does not own the resulting nodes. While this creates a bit more duplication in stack and par builder, it makes it a lot easier to integrate additional logic into the paragraph builder.

Furthermore:
- Line breaks are now "hard", that is, not coalesced with each other.
- Text nodes with equal style are now merged allowing for example `f{}i` to form a ligature.
2021-03-27 21:52:39 +01:00

77 lines
1.6 KiB
Typst
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Test the `font` function.
---
// Test configuring font properties.
// Set same font size in three different ways.
#font(22pt)[A]
#font(200%)[A]
#font(16.5pt + 50%)[A]
// Do nothing.
#font[Normal]
// Set style (is available).
#font(style: italic)[Italic]
// Set weight (is available).
#font(weight: bold)[Bold]
// Set stretch (not available, matching closest).
#font(stretch: 50%)[Condensed]
// Set family.
#font("PT Sans")[Sans serif]
// Emoji.
Emoji: 🐪, 🌋, 🏞
// Math.
#font("Latin Modern Math")[
𝛼 + 3𝛽 d𝑡
]
// Colors.
#font(color: #239DAD)[This is #font(color: #FA644B)[way more] colorful.]
---
// Test top and bottom edge.
#page(width: 170pt)
#let try(top, bottom) = rect(fill: #9feb52)[
#font(top-edge: top, bottom-edge: bottom)
`From `#top` to `#bottom
]
#try(ascender, descender)
#try(ascender, baseline)
#try(cap-height, baseline)
#try(x-height, baseline)
---
// Test class definitions.
#font(sans-serif: "PT Sans")
#font(sans-serif)[Sans-serif.] \
#font(monospace)[Monospace.] \
#font(monospace, monospace: ("Nope", "Latin Modern Math"))[Math.]
---
// Ref: false
// Error: 7-12 unexpected argument
#font(false)
// Error: 3:14-3:18 expected font style, found font weight
// Error: 2:28-2:34 expected font weight, found string
// Error: 1:43-1:44 expected string or array of strings, found integer
#font(style: bold, weight: "thin", serif: 0)
// Warning: 15-19 should be between 100 and 900
#font(weight: 2700)
// Warning: 16-21 should be between 50% and 200%
#font(stretch: 1000%)
// Error: 7-27 unexpected argument
#font(something: "invalid")