KANONARA

Writing fiction in Thai

Writing fiction in Thai: vowels and tone marks stacked on consonants, no spaces between words, line breaking by segmentation, leading, fonts, what to test.

Published 27 Sept 2026 · 4 min read

Thai fiction has a deep serial tradition and a healthy present across reading apps and web platforms, but writing it online means negotiating with the script itself. Thai stacks vowel and tone marks on top of its consonants, writes its words with no spaces between them, and hands the hard parts of typography to whatever engine renders the text. A writer who understands those three facts can pick tools that cope and avoid the ones that quietly mangle the page.

How the script works

Thai is an abugida: each consonant carries an inherent vowel, and vowel signs modify it. Some of those vowels are spacing letters typed before or after the consonant, and some are combining marks; in the W3C's summary, "only the vowel sign components that appear above or below the consonant are combining marks; the others are ordinary, spacing letters". The vowels wrap around the base in every direction. Omniglot describes Thai vowel diacritics as appearing "in front of, above, below or after the consonants they modify", and the W3C notes that composite vowels "can involve up to 4 glyphs (plus a tone mark), and glyphs can surround the base consonant(s) on up to 3 sides".

Thai is also tonal, and tone is written: a tone marker "is placed on the last initial consonant" of the syllable (Omniglot), while the W3C adds that the realized tone depends on the consonant's class, the syllable type, live or dead, "plus any tone mark". Put an upper vowel under a tone mark and one consonant carries a small tower of marks, which is exactly where leading and font problems come from.

No spaces between words

Omniglot states it plainly: "There are no spaces between words, instead spaces in a Thai text indicate the end of a clause or sentence." The W3C's Thai resources agree: "Spaces separate phrases, rather than words", and as a result "it can therefore be difficult to algorithmically detect syllable boundaries". Unicode's line-breaking specification files Thai alongside Lao, Khmer and Myanmar as "Complex Context Dependent": finding break opportunities "requires morphological analysis", typically dictionary lookup.

For the author:

  • Count length in characters. Word counters split on spaces and report nonsense for Thai, so a chapter's natural unit is the character. Judge your targets that way (see serial chapter length).
  • Treat spacing as rhythm. Because a space means clause or sentence, not word, your spacing choices read as punctuation. Readers feel uneven phrase spacing even when they cannot name it, so be consistent.
  • Let the engine break lines. Never insert manual line breaks or hyphen-like hacks to fix a wrap; segmentation is the renderer's job, and manual breaks fossilize badly on other screen sizes.

Leading and alignment

Because marks stack above and below the base consonant, Thai needs more interlinear room than Latin; at tight line heights, tone marks over upper vowels collide with the line above or clip. Give Thai generous leading and test the tallest syllables, not the average line. On alignment: browsers justify text poorly compared with professional layout engines, so ragged-right, left-aligned text is the safe default for Thai on the web, the same choice Kanonara applies to every script it renders.

Digital fonts

  • Use a font actually designed for Thai, not a Latin family with Thai bolted on. Mark positioning, or shaping, is where cheap fonts fail first.
  • Check the tall stacks. A consonant with an upper vowel and a tone mark should show clean separation and correct order. Test with real sentences from your own manuscript, not sample pangrams.
  • Check for true bold. Synthesized bold on Thai fonts smears the loops; if the family has no real bold weight, use emphasis sparingly.
  • Test on the devices readers use. A phone with a weak system font is where your story actually lives.

Publishing notes

Platforms differ in whether their reading surfaces handle Thai segmentation and fonts well, so post a test chapter and read it in the app before committing a serial. If you publish across platforms, keep the manuscript in one place and syndicate from it: rendering quality is out of your hands, source quality is not. The tooling question is the same as in any language, how to choose novel-writing software, now with one extra filter: the tool must render Thai correctly at every step, editor, preview and export. For where to post, start from the serial platform landscape and verify Thai support on each platform yourself.

Sources

  1. W3C: Thai Script Resources Combining marks, glyph stacking, phrase spacing.
  2. Omniglot: Thai script No spaces between words; tone mark placement.
  3. Unicode Standard Annex #14: Line Breaking Property Thai in the SA class; dictionary-based breaking.

Craft claims above trace to these sources. Where a point is practitioner consensus rather than settled fact, the text says so.

Keep reading