
A Quarto extension that renders animated handwriting using the tegaki library (bundled version: 0.11.1). Works with both RevealJS presentations and plain HTML documents. All assets are bundled — no internet connection required.
quarto add emilhvitfeldt/quarto-tegaki
Add the filter to your document’s front matter:
filters:
- tegaki
Then wrap any text with the .tegaki class:
[Hello, World!]{.tegaki}
Add .fragment to trigger the animation on slide advance:
[Hello, World!]{.tegaki .fragment}
All options are optional.
| Attribute | Description | Default |
|---|---|---|
font |
Font name (see built-in fonts below) | Inherited CSS font, or Caveat |
size |
Font size in em |
5.15 |
duration |
Animation duration in seconds | 0.75 |
[Hello!]{.tegaki font="Parisienne" size="6" duration="2"}
| Name | Style |
|---|---|
Caveat |
Casual |
Italianno |
Formal |
Tangerine |
Elegant |
Parisienne |
Decorative |
If font is not set, the extension checks the element’s computed CSS font-family against the list of built-in fonts. This lets you set the font via a slide or section class:
## My Slide {.parisienne}
[Hello!]{.tegaki .fragment}
// styles.scss
@import url('https://fonts.googleapis.com/css2?family=Parisienne&display=swap');
.parisienne {
font-family: 'Parisienne', cursive;
}
The tegaki library supports custom fonts generated from TTF files using the interactive generator at gkurt.com/tegaki. To add a custom font:
filters:
- tegaki
tegaki-fonts:
- my-font.zip
Multiple fonts can be listed. The font name to use in font= comes from the zip’s bundle.ts (e.g. family: 'My Font' → font="My Font").
IntersectionObserver at 50% visibility threshold).