typst/tests/typ/visualize/shape-aspect.typ
2023-02-12 19:57:28 +01:00

64 lines
1.5 KiB
Typst

// Test that squares and circles respect their 1-1 aspect ratio.
---
// Test relative width and height and size that is smaller
// than default size.
#set page(width: 120pt, height: 70pt)
#set align(bottom)
#let centered = align.with(center + horizon)
#stack(
dir: ltr,
spacing: 1fr,
square(width: 50%, centered[A]),
square(height: 50%),
stack(
square(size: 10pt),
square(size: 20pt, centered[B])
),
)
---
// Test alignment in automatically sized square and circle.
#set text(8pt)
#box(square(inset: 4pt)[
Hey there, #align(center + bottom, rotate(180deg, [you!]))
])
#box(circle(align(center + horizon, [Hey.])))
---
// Test that minimum wins if both width and height are given.
#stack(
dir: ltr,
spacing: 2pt,
square(width: 20pt, height: 40pt),
circle(width: 20%, height: 100pt),
)
---
// Test square that is limited by region size.
#set page(width: 20pt, height: 10pt, margin: 0pt)
#stack(dir: ltr, square(fill: forest), square(fill: conifer))
---
// Test different ways of sizing.
#set page(width: 120pt, height: 40pt)
#stack(
dir: ltr,
spacing: 2pt,
circle(radius: 5pt),
circle(width: 10%),
circle(height: 50%),
)
---
// Test that square doesn't overflow due to its aspect ratio.
#set page(width: 40pt, height: 25pt, margin: 5pt)
#square(width: 100%)
#square(width: 100%)[Hello there]
---
// Size cannot be relative because we wouldn't know
// relative to which axis.
// Error: 15-18 expected length or auto, found ratio
#square(size: 50%)