a

anatomy

@preview

Anatomy of a Font. Visualise metrics.

v0.1.1
MIT

Package Information

Last Updated
Authors
Toto

1. Get the package

Download the package using the TPIX CLI:

tpix get @preview/anatomy:0.1.1

2. Import in your Typst file

Add this to your .typ file:

#import "@preview/anatomy:0.1.1": *

Version History

0.1.1
0e58ef2d56c5...
0.1.0
1d6f9f8c4d9c...

Anatomy

Anatomy of a Font. Visualise metrics.

Import the anatomy package:

#import "@preview/anatomy:0.1.1": metrics

Display Metrics

metrics(72pt, "EB Garamond", display: "Typewriter") will be rendered as
follows:

Additionally, a closure using metrics dictionary as parameter can be
used to layout additional elements below:

#metrics(54pt, "一點明體",
  display: "電傳打字機",
  use: metrics => table(
    columns: 2,
    ..metrics.pairs().flatten().map(x => [ #x ])
  )
)

It will generate:

Remark on Hybrid Typesetting

To typeset CJK text, adopting font's ascender/descender as
top-edge/bottom-edge makes more sense in some cases. As for most CJK
fonts, the difference between ascender and descender heights will be
exact 1em.

Tested with metrics(54pt, "Hiragino Mincho ProN", "テレタイプ端末"):

Since Typst will use metrics of the font which has the largest advance
height amongst the list provided in set text(font: ( ... )) to set up
top and bottom edges of a line, leading might not work as expected in
hybrid typesetting. This issue can be solved by passing the document to
metrics(use: metrics => { ... }) like this:

#show: doc => metrics(font.size, font.main,
  // Retrieve the metrics of the CJK font
  use: metrics => {
    set text(
      font.size,
      font: ( font.latin, font.main ),
      features: ( "pkna", ),
      // Use CJK font’s ascender/descender as top/bottom edges
      top-edge: metrics.ascender,
      bottom-edge: metrics.descender,
      // ...
    )

    doc
  }
)