Half Characters and Conjuncts Breaking After Conversion
क्षेत्र comes back as three loose letters. विज्ञान loses its join and reads as two syllables that never belonged apart. Half-forms turn into full consonants trailing a small slanted mark. The words are recognisable but wrong, and a document full of them cannot go to a court, a publisher, or an examiner. The cause is nearly always one specific thing, and it is testable in about a minute.
What a half character is made of
Every Devanagari consonant carries a built-in "a" sound. क is not just the k shape, it is "ka". Writing a consonant without that vowel needs an explicit instruction to remove it, and that instruction is a character called the virama.
So the half form of क is two characters: क followed by the virama at U+094D. On screen the pair draws as a partial क joined to whatever comes next. The virama is doing two jobs at once, cancelling the vowel and signalling the join.
KrutiDev takes a different route. It gives each half-form its own single code, because a legacy font has no concept of combining characters and only knows how to draw glyphs. Its D is the half क, L is half स, U is half न, R is half त.
Conversion has to translate one model into the other: a single legacy code becomes a consonant plus a virama, and a code the other way around collapses two characters back into one.
Ligatures are sequences, not characters
This part surprises people who assume क्ष is a letter in its own right. It is not. It is stored as three characters: क, virama, ष. The joined shape you see is the font recognising that sequence and drawing a single ligature for it.
| Looks like one letter | Stored as |
|---|---|
| क्ष | क + virama + ष |
| त्र | त + virama + र |
| ज्ञ | ज + virama + ञ |
| श्र | श + virama + र |
The consequence matters. If the virama goes missing, or a stray character lands between the two consonants, the font has nothing to recognise and draws each piece separately. Nothing is corrupted in the sense of being unreadable, and every character may be individually correct. The sequence just stopped being a sequence the font knows.
A broken conjunct is usually three right characters that are no longer adjacent, or two right characters with the joiner missing between them.
The prefix collision that breaks converters
Here is the failure that explains why a document can be ninety-five percent correct and wrong in specific words.
Legacy fonts assign codes freely, and some codes are prefixes of others. In KrutiDev the code { produces the half form of क्ष, while {k produces the full क्ष. One is a single character; the other is that same character with a k after it.
A converter walks the text and swaps codes for Unicode. If it handles { before it handles {k, then on reaching {k it matches the shorter code first, emits क्ष्, and moves on to the k, which on its own means the long-a vowel sign. The word ends up carrying a half-form followed by a stray vowel instead of the ligature that belonged there.
The fix is that longer sequences must be attempted before any shorter code that starts with the same characters. This site's engine walks its mapping table in a fixed reference order that satisfies that constraint, which is why the table must never be re-sorted by length or alphabetically as a tidying exercise. Reordering it looks harmless and silently breaks conjuncts.
Why the damage is uneven
Only words containing an overlapping code are affected. Everything else converts cleanly. That is what makes this failure mode hard to catch by skimming: the document reads fine until you land on one of the affected words, and there may be only a handful in twenty pages.
Testing a converter in one minute
Four words exercise the paths that fail. Convert them and read the output.
- क्षेत्र puts two ligatures in one word.
- विज्ञान combines a ligature with a short-i vowel sign.
- संस्था stacks a half-form against a following consonant.
- प्रस्ताव runs two half-forms in one word.
A converter that returns all four intact is unlikely to be wrong on simpler input. One that breaks any of them will break the same pattern throughout a long document, so it is worth finding out before converting the whole thing rather than after.
If your text came out broken, the free KrutiDev converter here handles the ligature codes and stacked half-forms. Convert from the legacy original rather than trying to repair the output, for the reason in the next section.
Why repairing broken output rarely works
Once a conjunct has come apart, the information that told you those consonants belonged together is gone. Looking at क, ष sitting separately, nothing in the text records whether they were meant to be a cluster or two ordinary letters in sequence, since both are legitimate Hindi.
The legacy original still holds that information in its single ligature code. Going back to it and converting again with a tool that handles the ordering gives a correct result in one pass. Find-and-replace over broken Unicode means guessing, and the guesses compound across a document.
Edge cases
A dotted circle appears in the output
The rendering engine is reporting a combining character with nothing valid to attach to, usually a virama or a vowel sign that ended up stranded. It confirms a sequencing problem rather than a wrong character.
Half-forms are fine but vowel signs are misplaced
A different failure with a shared root, since both depend on the converter tracking cluster boundaries. The vowel side is covered on the page about matras and ikar in the wrong position after conversion, and a tool that fails one often fails the other.
Output looks right on your screen and breaks elsewhere
Fonts differ in which ligatures they draw. A sequence can be stored correctly and still render as separate letters in a font with limited coverage, which is a display issue rather than a conversion one. Checking the same text in two fonts separates the two cases.
Only some KrutiDev files are affected
Numbered KrutiDev variants assign codes differently, so a converter tuned for one can mishandle another. Identifying which variant a file uses is covered on the page about Kruti Dev 010 and its variants.
Conjunct damage and matra displacement are the two conversion faults that survive into shipped tools. Both, plus the display problems, are indexed in Hindi font resources.