Phonokit

Phonological Analysis in Typst

Author

Guilherme D. Garcia

Published

December 17, 2025

A phonology toolkit for Typst, providing IPA transcription with tipa-style input, prosodic structure visualization, and IPA charts for vowels and consonants.

In what follows, I assume you know about Typst, but in a nutshell it is a programming language designed for typesetting. To migrate from LATEX in 2025, I had to spend some time playing around with the language to see if I’d be able to move all of my workflow (slides, articles, CV, etc.). I quickly discovered that it could do everything I do in LATEX and, crucially, much more (see here). That’s how the idea for this package was born: it is a collection of functions I often use in my teaching/research in phonology. Of course, the package is only a subset of my own functions, since many functions I use are too specific to my taste/needs.

TipManual

This vignette tells you everything you need to know about the package. You can also find it in the packages repository:

Features

IPA ModulA

Unlike LATEX, Typst offers out-of-the box support for Unicode characters such as phonetic symbols. While this is great, I am already used to tipa in LATEX, so my first goal was to have a function that emulated tipa as much as possible: it would be familiar, practical and quick. This is what the function #ipa() does. There are only minor differences between \textipa{} and #ipa().

  • tipa-style input: use familiar LATEX tipa notation instead of hunting for Unicode symbols
  • Comprehensive symbol support: most IPA consonants, vowels, and other symbols from the tipa chart
  • Combining diacritics: Nasalized (\\~), devoiced (\\r), syllabic (\\v); the tie (\\t) is also available
  • Suprasegmentals: primary stress ('), secondary stress (,), length (:)
  • Automatic character splitting: Type SE instead of S E for efficiency (spacing is necessary around characters using backslashes)
  • Charis SIL font needed for all transcriptions. If you don’t already have this font installed, visit https://software.sil.org/charis/download/

IPA Charts Module

I have used the great vowel package in LATEX, but I don’t love its interface — see example in my LATEX tutorial for phonologists here. The #vowel() function in phonokit is simpler: it takes a string of vowels and plot them onto a vowel trapezoid.

A similar function also exists for consonants: #consonants(). It returns an IPA table of pulmonic consonants given an input (string). For both #vowels() and #consonants(), you also have the option of using a language as an input (see list of available languages below).

  • Vowel charts: plot vowels on the IPA vowel trapezoid with accurate positioning
  • Consonant tables: display consonants in the pulmonic IPA consonant table
  • Language inventories: pre-defined inventories for some languages (English, Spanish, French, German, Italian, Portuguese, Japanese, Russian, Arabic, Mandarin)
  • Custom symbol sets: plot any combination of IPA symbols
  • Automatic positioning: symbols positioned according to phonetic properties (place, manner, voicing, frontness, height, roundedness)
  • Proper IPA formatting: voiceless/voiced pairs, grayed-out impossible articulations, minimal pair bullets for vowels
  • Scalable charts: adjust size to fit your document layout (scaling includes text as expected)

Prosody Module

The functions #syllable(), #foot() and #word() help you create prosodic representations from strings. They adjust sizing automatically, but you can also use the scale argument.

  • Prosodic structure visualization: draw syllable structures with onset, nucleus, and coda
  • Flexible foot structure: use parentheses to mark explicit foot boundaries and stress mark to identify headedness (iambs, trochees)
  • Stress marking: mark stressed syllables with apostrophe '
  • Flexible alignment: left or right alignment for prosodic word heads

Package Repository

You can download/fork the most up-to-date version of the package in the repository below.

  • http://github.com/guilhermegarcia/phonokit


Copyright © 2025 Guilherme Duarte Garcia