Typst Hebrew Letter
August 5, 2026 · View on GitHub
A Typst template for formal letters in Hebrew.
Right-to-left throughout, set in David Libre, with a centred underlined heading, a details block, numbered paragraphs and dual Hebrew/Gregorian dating. The same template renders an RTL Hebrew original and an LTR English translation with identical page geometry, so the two editions can sit side by side without either looking like the afterthought.

Use it
git clone https://github.com/danielrosehill/Typst-Hebrew-Letter.git
cd Typst-Hebrew-Letter
./build.sh # builds both sample letters into pdf/
Then:
- Edit
src/sender.typonce. Name in both scripts, identifier, address, phone, email. Every placeholder in the samples comes from there — the details block, the signature and the page footer all read the same values, so they cannot end up disagreeing with each other. - Copy
examples/letter-he.typto a new file and replace the content. - Build it:
typst compile --root . --font-path fonts my-letter.typ out.pdf
Requires Typst 0.14 or newer. Nothing else — the fonts are vendored.
Layout
| Path | What |
|---|---|
src/profile.typ | The template. Page setup, and every block the letters use. |
src/sender.typ | The only file carrying an identity. Placeholders — edit this. |
src/strings.typ | Label sets, he and en. The template contains no literal words. |
examples/letter-he.typ | Worked example, with dummy content. |
examples/letter-en.typ | The same letter as an English convenience translation. |
fonts/ | David Libre (OFL), three faces. |
pdf/ | Built samples. Build output — do not hand-edit. |
docs/typesetting-hebrew.md | Read this before writing a letter. |
What you get
| Function | What it draws |
|---|---|
formal-doc | Page setup: A4, margins, footer with contact line and "page N of M", numbered-paragraph and heading styles |
doc-head | Centred underlined heading with a subtitle line beneath it |
details | Label/value block for sender, addressee, reference and date, closed by a rule |
subject-line | The הנדון — centred, underlined |
notice | Tinted, rule-flanked block for what must be read first |
contents | Short tinted contents list for a long letter (there is no title page) |
sender-block | Your own details, assembled from sender.typ |
signature | Sign-off, name, identifier, phone, email, your reference |
dual-date | Hebrew · Gregorian, in the right order for the edition |
Every one takes is-rtl. Nothing reads direction from a global, which is what
lets both editions share one template.
Things that will bite
Full list in docs/typesetting-hebrew.md. The
four that cost the most time:
--font-path fontsis not optional. Without it Typst falls back to a system font for Hebrew, silently and often mid-word. The build still exits zero. Always look at the PDF.*after a Hebrew prefix letter is not emphasis.ש*מילה*fails to parse; writeש#strong[מילה]. The examples use#strong[...]throughout.@in a content block starts a reference. Write an email address asyou\@example.com.- The Hebrew date is passed in, not computed. Typst has no Hebrew calendar. Convert against hebcal and record the pairing next to the letter. The Hebrew day starts at sunset.
Licence
The template and the sample text are released under the MIT licence — see
LICENSE.
David Libre in fonts/ is by Yanek Iontef and is licensed separately under
the SIL Open Font License 1.1. See fonts/OFL-DavidLibre.txt, which must
travel with the font files.