Latin is the easy case
In Latin, a string of characters maps almost one-to-one onto a string of glyphs, left to right. Almost every text engine gets it right.
Most of the world’s scripts do not work that way, and the failures are specific and recognisable.
What shaping means
Between “the user typed these characters” and “draw these glyphs here” sits a shaping engine, which consults the font’s GSUB and GPOS tables and applies rules. For Devanagari the rules include:
- Conjuncts. क + ् + ष becomes क्ष: one glyph, not three. There are hundreds of these and the font must contain them.
- Reordering. The vowel sign ि is typed after its consonant and drawn before it. कि is stored as क then ि and rendered with the matra on the left.
- Matra positioning. Vowel marks attach above, below, left or right, and their exact position depends on the consonant’s width and on whether a conjunct formed.
- Reph. र followed by a virama moves to the top right of the following cluster as a small hook.
Arabic adds contextual forms (each letter has isolated, initial, medial and final shapes) plus right-to-left order and vertical stacking in some styles. Tamil, Kannada, Telugu, Bengali, Khmer and Thai each have their own rules.
HarfBuzz is the open-source shaping engine that does this correctly, and it is what LibreOffice, Firefox, Chrome, Android, Scribus and Inkscape 1.x use. Applications that use an older engine, or their own, get it wrong in visible ways.
The failures you will see
- Boxes (
□) or the missing-glyph rectangle: the font has no glyph for that character. Change the font. - Conjuncts split into separate letters with a visible virama: the shaping ran but the font lacks the conjunct, so it fell back to the explicit half-form. Change the font.
- Matras in the wrong place, or detached: the engine did not reorder. This is an application problem, not a font problem.
- Correct on screen, wrong in the PDF: the export path used a different engine from the editing view. This is the one that costs money, because it is invisible until the proof arrives.
The test you must actually run
Never test a complex script with placeholder text. Type the client’s real name, the real address, the real headline, in the real font, at the real size, and look at it.
Build a test string that exercises the hard cases. For Devanagari:
क्ष त्र ज्ञ श्री हिन्दी कार्यालय द्वितीय पुस्तकThose cover a three-consonant conjunct, a reph, a left-side matra and a below-base form. If all of them render correctly, the combination of font and application is sound. If any of them is wrong, you have found it in thirty seconds rather than after printing.
Outlining a complex script
This is where jobs are lost. Converting to curves freezes whatever the shaping engine produced. If the engine was wrong, you have now made the error permanent and undetectable: the file no longer contains characters anyone can proofread, only shapes.
So the order is:
- Render it.
- Have a native reader check it on screen, at size, before you outline anything.
- Outline.
- Check the outlined version against the live version, side by side, letter by letter.
Step 2 is not optional and it is not something you can do yourself unless you read the script. A wrong matra is not a typo a non-reader can see.
Font sources that work
- Noto: Google’s family, covering essentially every script in Unicode, OFL, well-shaped.
- Ek Type: Mukta, Baloo and others, designed for Devanagari and Gujarati first rather than Latin-first.
- Indian Type Foundry / Fontshare: high-quality Indic and Latin.
- Google Fonts’ Indic section: Hind, Rozha, Yantramanav, Tiro Devanagari.
Avoid legacy non-Unicode fonts entirely: Kruti Dev, Chanakya, Shree-Lipi and similar map Devanagari shapes onto Latin codepoints. Text set in them is not Devanagari at all; it is Latin letters wearing a costume. It cannot be searched, spellchecked, copied into anything, or converted without a mapping tool. A great deal of Indian government and legal material is still typed this way, and converting it is real paid work; tools like the free Unicode Converter scripts and several web converters handle the common mappings.
In each program
Inkscape 1.x and Scribus use HarfBuzz and are dependable. LibreOffice is dependable. Illustrator needs the World-Ready Composer enabled: Paragraph panel menu ▸ Middle Eastern & South Asian Composer; without it, Indic text will not shape. CorelDRAW’s support varies markedly by version and is the single most common source of broken conjuncts in Indian print work. Test your own version with the string above before you promise anybody anything.
Every lesson here is open. Your progress is recorded once you pass the Editing an Image exam.
Check your understanding
A Hindi wedding card renders correctly in the designer’s editing window, but the exported PDF shows the ि matra after its consonant rather than before it. The font contains every required glyph. Where is the fault?
Pick the one you would defend. Your answer stays private.
Stuck on something?Ask Nazia, your AI tutor