Unicode to FM Abhaya Converter (Sinhala, and FM to Unicode)
Unicode to FM Abhaya (and FM Malithi), or FM fonts back to clean Sinhala Unicode. Paste either direction, copy the result for Facebook, WhatsApp, government eServices, MS Word, or print layouts that still need the FM font. Runs in your browser. Nothing is uploaded.
How it works
For roughly two decades before Unicode adoption, almost all digital Sinhala was typed in font-encoded “legacy” fonts, the FM and DL families, Kaputa, Bhashitha and the rest. In those fonts each Sinhala glyph occupies a Latin or ASCII code position, and the text is stored in visual order (the order glyphs appear left-to-right on screen). On any device without that exact font installed, the same bytes render as Latin gibberish such as Y%S ,xld instead of ශ්රී ලංකා.
Sinhala Unicode (the Unicode block U+0D80–U+0DFF) instead stores text in logical order, pronunciation/typing order, and lets the system shape it at render time. Because there is one standard code point per character, Unicode displays identically on every modern device with no special font. Conversion between the two is a deterministic, two-stage transform, not a guess:
- Glyph substitution. Each legacy code unit (and known multi-glyph ligature, longest match first) is replaced with its target Unicode code point using the per-font mapping table. Longest-match-first scanning means a two-key sequence such as
wd→ ආ is matched before the singlew→ අ. - Visual-to-logical reordering. Several dependent vowel signs, the kombuva family ෙ ේ ෛ, are drawn before their consonant in legacy fonts but must follow it in Unicode. So legacy visual ෙ + ක becomes logical ක + ෙ = කෙ. The reverse direction inverts both stages.
The table covers the FM-Abhaya / FM-Malithi character set: all 18 independent vowels අ … ඖ, all 41 Sinhala consonants of the U+0D9A–U+0DC6 range (including the prenasalised ඟ ඬ ඳ ඹ and the rare ඞ ඦ ඤ ඥ ඣ), every dependent vowel sign, and the FM touching-letter ligature positions, the single keys the font uses for a consonant already carrying a sign, such as õ for ව් or È for දි. Each of those, and each of the 246 consonant-plus-kombuva combinations ෙ ේ ෛ ො ෝ ෞ, is checked to survive a full round trip in both directions.
The mapping points and ordering rules come from the Unicode Standard Sinhala chart, the SLS 1134 national standard for Sinhala character coding, and the University of Colombo School of Computing (UCSC) Language Technology Research Laboratory legacy-font research. A code position is listed only where two independent published readings of that research agree on it; the handful where they disagree are deliberately left out and reported as unmapped. Every mapping in this build is checked to round-trip losslessly, converting FM Abhaya → Unicode → FM Abhaya returns the original text, which is how the tool earns its “round-trip verified” badge. Glyphs outside the verified FM-Abhaya core set are never guessed: they pass through unchanged and are counted for you as unmapped, so a partial conversion is always visible rather than silent.
Worked examples
Frequently asked questions
Sources & references
- The Unicode Standard: Sinhala block U+0D80–U+0DFF (code chart)
- SLS 1134: Sri Lanka Standard for Sinhala Character Code (SLSI)
- UCSC Language Technology Research Laboratory: legacy-font research
- UCSC LTRL: the lab's own live Sinhala Unicode converter
- ICTA: Sinhala Unicode / locale resources
The mapping tables on this page were last cross-checked against the Unicode Sinhala chart and the cited references on 2026-09-28. Coverage of additional FM, DL, Kaputa, and Bhashitha glyphs expands as each is verified against the LTRL reference, a mapping is added only once it is confirmed, because a wrong mapping produces silently-incorrect text.
Related tools
Comments & feedback
Spotted a bug or want an improvement? Tell us, our team reviews every comment, and good ideas get built. Comments are public and anonymous.
Found a glyph that didn't convert, or want another legacy font added?
Email me at [email protected] , most fixes ship within 24 hours.