Why Tibetan Needs
Purpose-Built Fonts.
A documented account of the rendering failures, educational gaps, and engineering requirements that make original Tibetan typefaces an urgent cultural and technical necessity — not a luxury.
Tibetan is spoken by over 6 million people across 40 countries and carries a literary tradition spanning 1,400 years — yet in the digital era it appears to be served by over sixty publicly available fonts. That number is an illusion. Once you filter for Unicode compliance, correct OpenType stacking tables, and professional rendering on both iOS and Windows, fewer than a dozen survive. None were designed for children. None were designed for digital interfaces. Most look like 18th-century woodblock prints, because they are. Terma Foundry is building three original Tibetan typefaces: a scholarly serif, a screen-optimised sans-serif, and a child-friendly display face. Each will ship with complete Unicode coverage, full OpenType engineering for consonant stacking, and cultural authenticity verified by master calligraphers and Tibetan language educators. All three will be released under the SIL Open Font License — free for everyone, forever.
The Rendering Crisis.
Six documented failures affecting every piece of Tibetan digital text — from apps to scripture to children's e-books.
Ghost Circles
When a font lacks a pre-composed glyph for a stacked consonant cluster, the Unicode shaping engine inserts a dotted circle (◌) as a placeholder. This circle appears inside the word, fracturing syllables that any literate Tibetan reader immediately recognises as broken. It is not a rendering quirk — it is a visible declaration that the font is incomplete.
Ghost circles appear most commonly with Sanskrit-origin consonant stacks used in mantras and dharanis, but depending on the font, common everyday clusters can also trigger them.
blws, abvs, vatu). Estimated 1,800–2,400 unique stacked glyph forms required. CSS cannot fix this — only a complete font can.
ཨོཾ་ཨཱཿཧཱུྃ་བཛྲ་གུ་རུ་པདྨ་སིདྡྷི་ཧཱུྃ།
Mid-Syllable Line Breaks
Tibetan separates syllables with a dot called the tsheg (་). Unicode classifies U+0F0B as a valid line-break opportunity, so web browsers break lines at every tsheg — including inside multi-syllable words. The result is the Tibetan equivalent of breaking an English word between individual letters at random points.
For a language used in scripture, education, and formal writing, this is a profound usability failure. Children learning to read encounter fractured words; adults read text that any literate reader recognises as typographically broken.
word-break: keep-all prevents some breaks.Full fix: Inject U+200B (Zero Width Space) after valid tsheg break points.
terma.prepare() in termaUI's JS utility does this. Perfect word-boundary breaks require a Tibetan dictionary segmenter — an active research area.
Tall Stack Clipping
Tibetan stacked consonants extend significantly above and below the baseline. Sanskrit-origin mantras and dharanis use particularly tall stacks — sometimes three or four consonants high. At default browser line-heights, the tops and bottoms of these stacks are clipped by adjacent lines.
This is both an aesthetic and legibility failure. The tops of letters are literally invisible, cut off by the line above. The problem is worst on mobile, where OS-level line-height defaults are even tighter.
line-height: 1.5 was designed for Latin scripts. Tibetan normal text requires at minimum line-height: 1.8; mantra/dharani text with complex stacks requires line-height: 2.2–2.4.
.tr-guard sets safe Tibetan defaults. .tr-stack-safe adds extra line-height and padding-block for complex mantra contexts. Font designers must also correctly set ascender/descender metrics in the OS/2 and hhea tables.
མགྲོན། སྒྲུབ།
བརྒྱད། སྤྲུལ།
མགྲོན། སྒྲུབ།
བརྒྱད། སྤྲུལ།
Justification Failure
Tibetan body text is traditionally set justified — scripture and formal documents use full-width lines. But CSS justification works by expanding inter-word spaces (U+0020). Tibetan has no word spaces; syllables are separated only by tsheg. Browsers treat entire paragraphs as single "words" and either fail to justify at all, or produce ragged-right text regardless of the declared alignment.
When zero-width spaces are injected at syllable boundaries (as a workaround), justification "works" — but spaces are inserted at every tsheg boundary, creating ugly gaps inside words rather than between them.
.tr-justify-bo applies slight word-spacing reduction to improve appearance.Full fix: Requires word-boundary-aware segmentation and selective zero-width space injection — currently an active research problem in Tibetan NLP.
Double-Shad Splitting
The double shad (། །) is Tibetan's paragraph marker — it signals the end of a major textual unit and must always appear as a visual unit. When it falls near a line end, browsers can break between the two shad characters, leaving one on each line. To any reader of scripture or formal Tibetan, this is immediately wrong.
<span class="tr-shad-pair">, which applies white-space: nowrap. termaUI provides this utility class. For programmatic content, terma.prepare() applies this automatically.
.tr-shad-pair — double shad stays together.Glyph Fallback Chaos
When a font lacks a glyph for a Unicode code point, the browser silently falls back to the next font in the stack — or, failing that, any system font that has the glyph. In Tibetan text, syllables within a single word can render in visually incompatible fonts, with mismatched weight, stroke style, and proportions. The degradation is invisible to non-Tibetan readers but immediately jarring to any literate user.
The Cultural & Educational Gap.
The sixty-plus fonts you find in repositories collapse quickly under scrutiny. Half are legacy fonts — pre-Unicode, ASCII-encoded typefaces from the 1990s whose characters map to English keyboard positions, not Unicode code points. They are invisible to search engines, unreadable by screen readers, incompatible with social media, and non-functional on any modern mobile OS. They look like Tibetan. They are not, by any digital definition, Tibetan text.
Of the Unicode fonts that remain, most have broken OpenType tables. Tibetan is a vertically composed script — vowels sit above the consonant, subscript consonants stack below it. This vertical composition requires pre-computed glyph sequences registered in a font's GSUB table. When those tables are incomplete, the shaping engine inserts a dotted circle placeholder ◌ inside the word — a visible declaration of failure. Filtering for fonts where complex consonant stacks render without ghost circles, without clipping, and consistently across both iOS (CoreText) and Windows (Uniscribe) leaves fewer than a dozen.
Of those twelve, none were designed for children. Every one is scriptural in aesthetic register — built to evoke 18th-century woodblock prints and formal government documents. This is not a trivial observation. Typography shapes how learners perceive a language. A script that only appears in solemn, classical forms is unconsciously filed away as formal, religious, and not for me. The diaspora community has no equivalent of the rounded, approachable letterforms that made Latin literacy feel welcoming to generations of children. We lack a Tibetan Comic Sans — and that is not a joke. The absence of a child-friendly Tibetan font is a structural obstacle to intergenerational language transmission, documented by educators in every diaspora community we spoke with.
Children's Books & Apps
Rounded, warm letterforms that feel inviting. Currently impossible without commissioning bespoke lettering for every single project at prohibitive cost.
Digital Interfaces
A geometric sans-serif optimised for small screen sizes, UI labels, and both dark and light mode. The Tibetan equivalent of a system UI font. It does not exist.
Creative Content
Comics, posters, social media, merchandise, video games. The diaspora community has no expressive typographic palette to draw from when making modern cultural content.
Academic Publishing
A scholarly serif that works in footnotes, parallel-text layouts, and interlinear glossing — while remaining elegant at display sizes. Not yet built.
The Existing Font Landscape.
What exists, what's missing, and why nothing currently available solves the problem.
| Font | Style | ~Glyphs | License | Children | Variable | Screen-opt. | Ghost-free |
|---|---|---|---|---|---|---|---|
| Jomolhari | Classical Uchen | 3,333 | SIL OFL | ✗ | ✗ | ~ | ✗ |
| Noto Serif Tibetan | Modern Serif | 1,891 | SIL OFL | ✗ | ✗ | ✓ | ~ |
| Tibetan Machine Uni | Bold Display | 5,110 | GPL v2 | ✗ | ✗ | ✗ | ~ |
| Monlam Bodyig | Elegant Literary | ~2,500 | Open | ✗ | ✗ | ~ | ✗ |
| Qomolangma-Drutsa | Cursive Drutsa | ~2,000 | Open | ✗ | ✗ | ✗ | ✗ |
| In Development — Terma Foundry | |||||||
| Terma Serif | Scholarly Serif | 5,000+ target | SIL OFL | ✗ | planned | ✓ | ✓ goal |
| Terma Sans | UI Sans-Serif | 5,000+ target | SIL OFL | ✗ | planned | ✓ | ✓ goal |
| Terma Lotsawa | Child-Friendly Display | 3,000+ target | SIL OFL | ✓ | ✗ | ✓ | ✓ goal |
What a Complete Tibetan Font Requires.
The engineering specifications for a font that eliminates all six rendering failures described above.
Glyph Coverage
Complete coverage of the Unicode Tibetan block (U+0F00–U+0FFF) plus all valid multi-codepoint composite sequences — base consonant stacked with every valid subjoined consonant. Estimated 5,000+ total glyphs for full coverage including Sanskrit-origin stacks used in mantras and dharanis.
OpenType GSUB Tables
Correct substitution rules for: blws (Below Base Substitution), abvs (Above Base Substitution), vatu (Vattu Variants), liga (Standard Ligatures). These rules map base consonant + combining marks → pre-composed stacked glyph, eliminating ghost circles at the source.
Metric Engineering
Ascender/descender metrics in the OS/2 and hhea tables must accommodate the tallest valid Tibetan stack — typically 3–4 consonants high. Advance widths must correctly reflect tsheg-based syllable spacing. Line-height recommendations must be documented with the font and verified on real text.
Hinting
PostScript or TrueType hinting aligns stems and strokes to pixel boundaries for screen rendering at small sizes (9–14px). Tibetan's complex stacked forms require hinting decisions for each level of the stack — the most labour-intensive part of font production, and the most commonly skipped.
Cross-Platform Testing
Tibetan shaping is handled differently by HarfBuzz (Linux, Chrome, Firefox), Uniscribe (Windows legacy apps), and CoreText (macOS/iOS). Fonts must be tested against all three shaping engines using dedicated test suites covering every valid Unicode Tibetan sequence.
Cultural Verification
Every stroke decision — the angle of a hairline, the weight of a headstroke, the proportions of a three-consonant stack — must be verified against traditional calligraphic models by qualified practitioners. Technical Unicode compliance without cultural accuracy does not produce a legitimate Tibetan typeface.
Our Solution.
Three typefaces being built from zero — with the full specification above applied to each.
Terma Serif
Rooted in classical Uchen manuscript tradition and re-engineered for the 21st century. Optimised for long-form reading, academic publishing, parallel-text layouts, and interlinear glossing. Complete Unicode coverage with a planned variable weight axis — from Light for body text to Bold for headings.
Terma Sans
The first Tibetan sans-serif designed from the ground up for digital interfaces. Geometric proportions, optical corrections for small sizes, dark-mode tested, accessible contrast ratios. Designed to sit naturally alongside Latin, Chinese, and Devanagari in multilingual products. The UI font Tibetan app developers have never had.
Terma Lotsawa
Rounded terminals, open counters, generous proportions — designed alongside educators to feel approachable to young learners while remaining typographically authentic. Developed in direct response to the single most-reported barrier to Tibetan language transmission in diaspora communities: "the writing looked too hard."
These fonts will be free — forever.
All three typefaces will be released under the SIL Open Font License — free for personal and commercial use, open to the entire Tibetan-speaking world. To get there, we need funding for master calligraphic originals, glyph drawing, OpenType engineering, cross-platform testing, and educator review cycles. Every contribution directly funds a glyph that doesn't yet exist.