Khmer script breaks your design tools
A practical account of setting Cambodian type in software that was never built for it.
By Sovandarapor (James) Kong · · Craft
A line of Khmer set in most professional design software goes wrong in places. A subscript consonant renders as a small plus sign, or a floating box, or it detaches and sits beside the letter it belongs under.
Someone who does not read Khmer will not see it. The line looks like Khmer. It has the right density and rhythm. In places it is simply not words.
Khmer letters do not sit in a row. Consonants stack. A subscript form tucks under the character before it, vowels attach above, below, before and after the consonant they modify, and the correct result depends on rules the software has to apply. Latin typesetting is mostly a matter of putting shapes next to each other with the right gaps. Khmer typesetting is a computation. If the layout engine is not running the right one, it puts shapes next to each other, which is the wrong answer rendered confidently.
In Adobe tools this comes down to which composer the text frame is using. The default one does not do complex script shaping. There is a world composer that does. Switching it is a single setting, and until it is switched, everything exported is subtly broken.
The software gives no warning. It has no idea it is producing nonsense. It thinks it drew the glyphs it was asked for, and technically it did.
It bites first at design time. A Khmer string is typed or pasted, it renders wrong, and an hour goes on assuming the font is broken when the font is fine.
It bites again at handoff. The file opens on another machine, without the fonts, and the substitution collapses the stacking. This one is vicious because the file was correct when it was sent.
The worst is print. The type is outlined to make the file printer-safe, and outlining freezes whatever was on screen into vector shapes. If it was wrong on screen, it is now permanently, unfixably wrong, and it is going to plate.
Design tools encode assumptions about whose language matters. Latin script gets decades of refinement, hinting, kerning tables and a support ecosystem. Khmer gets a checkbox in a dialog you have to know exists, and a default setting that produces broken output. So a huge amount of Khmer-language packaging in this market carries small typographic errors. Nobody was careless. The tools shipped with the wrong default and nobody told the person using them. A bag with those errors is using somebody's alphabet as a texture.
The working discipline is short. The composer is set before a single character is typed. The text comes from the client as text, because a screenshot of Khmer is a picture of a decision nobody can verify. Both versions are kept, live text for editing and outlined for output, and neither overwrites the other.
Before outlining, a Khmer reader checks the artwork by reading it aloud. Reading aloud catches stacking errors that the eye passes over. After outlining, it is checked again against the original text, character by character. The outlined file is the only file the printer sees, and it is the last moment the error is free to fix.