Android feature graphic example


Khmer Unicode Language support for Android devices


1. Concept

You can add Khmer language support to Android OS in 2 stages.

Stage 1: Basic Khmer Unicode support (Font rendering and Keyboard) to Android OS

– Modify Khmer Unicode font to work with Android OS, and Replace Android UI System fonts with Khmer Unicode support fonts.

– Add Khmer Unicode support to Android OS Unicode rendering engine (, &

– Create Khmer Keyboard layout and input method

For more details about Khmer Unicode & Andorid OS go to in depth section 4 below.

Stage 2: Translate Foreign language Andoid System files and Apps into Khmer language.

– decompile apk file to modify resource such as xml, jpg, png or smali code files (translate into Khmer)

– recompile the apk and put back into your phone.

Do it at your own risks. I am not liable for anything.
Software and documents used in this tutortial are from Internet, please let me know if you think any material used in this tutorial infringe our copyrights.
All copyrights belong to its’ original owner(s).Thanks.


2. What do you need?

Hardware: A computer running MS Windows XP or newer and a rooted Andorid Phone (In our example, Samsung Galaxy S2 running Galnet Scotland MIUI 2.3.2b )

+ MIUI 2.3.2b for Samsung galaxy s2:

– How to root Samsung Galaxy S2

– Galnet MIUI stable ROM

– How to install MIUI ROM on a supported root phone

Software for stage 1:

+ Nokora font:
Nokora font package

Nokora font (Credit: Mr Danh Hong)
Modified Khmer unicode font to work with

+ Rendering Engine & libskia for Samsung Galaxy S2 MIUI 2.3.2b ARMv7

Khmer hack version of & libskia (Credit: Chanrithy Thim)

Software for stage 2:

+ Apk decompile and recompile tool

Apktool 1.4.3 and ICS mod Apktool

+ Winrar

+ AndroidSuite

v115.exe (ICS support)

A GUI version of apktool, come with apk signer very handy.

+ Notepad++
Version 6

xml editor.

+ File Manager with root access for Android

Your choice

Root Explorer for android

ES File Explorer

Super Manager

(all can be downloaded from Google Play market or just google it,)

+ Android software to delete stock app


+Java Runtime Evironment


you need this to run the AndroidSuite and apktool, type java -version in your command promt to check if you have it installed)

+ Document:
English Khmer Glossary of Computer terms

3./ Let’s do it

Before we start playing, I just want to make sure that you have:

– a rooted android phone. In here, we use Samsung galaxy s2 MIUI 2.3.2b, if you dont’ have it go here.
– a BACKUP of your important data (Use ROM manager from Google Play android market to this for you)
– all the required software and documents listed above.

Stage 1:

WARNING: You may brick your phone. Once again, please double check that you have a backup of your ROM using Clockwork Mod/ROM manager.
3.1.1./ Install fonts

copy DroidSansArabic.tts, DroidSans.ttf and DroidSans-Bold.ttf from to /system/fonts/ on your phone using Root Explorer (or any other file exporer that support root function)

Common Error: “Cannot paste her because the file system is read-only”

– You need to mount the system/fonts folder in R/W mode
click [Mount R/W] on the top right corner of the screen.
– You haven’t given root access root to the program yet.
Exit the program, it will prompt you to allow root access.

3.1.2/ install rendering engine

Copy and to /system/lib

Now, restart your phone, if everything go right, it will pass the boot screen.

Common Error:
– If your phone hang in the boot loop, it means something’s gone wrong.
You need to restore your phone from your backup from boot recovery (hold Volume up + Home key + Power key).

3.1.3/ install Khmer Keyboard

Your choice
– Phum Keyboard (download from Google Play market)
– MultiLing Keyboard (download from Google Play market)
– Khmer IM ( )

All Done! for stage 1. :)

Now you can go to Stage 2 or if want to know how does Khmer Unicode works on Android OS check out below

4. Khmer Unicode support for Android OS In Depth

As far as I know, Android doesn’t officially support Khmer Unicode at the time of this writing.

There are a couple of geniuses out there have found a way to make Khmer Unicode works on Android OS.

How Khmer Unicode works

When you type ខ + ្ + ម + ែ + រ -> ខ្មែរ the rendering engine rearrange the characters based on a set of substitution rules (table). Without the knowledge of Khmer substitution rules, the rendering engine won’t be able to display Khmer Unicode correctly.

Example: ្ (Choeung, Unicode 17D2 ) + ម Mor ( Unicode 1798) -> ្ម (Choeung Mor, not in normal Unicode range)

Problem: The problem is that Android OS rendering engine SKIA, originally, doesn’t support complex script rendering nor the substitution outside Unicode range yet (correct me if i am wrong). And all Khmer subscripts (Choeung) are not in normal Unicode range u+0000 to u+FFFF (0-65535).

Solution: A group of genius solved this problem by hard code the Khmer Unicode substitution rules into SKIA library.

They puts Khmer subscripts and other characters in Arabic Unicode range (it doesn’t have to be Arabic range, you can choose other ranges), that is why we need to replace or delete DroidSansArabic.ttf. Create gsub file subtitution code for a Khmer unicode font. And last recompile SKIA library files.

Conclusion: In order to get Khmer Unicode to work on Android.

1. modify a Khmer Unicode font (move all subscripts and other characters into Unicode Range) using FontForge

2. obtain original SKIA library (and/or Webcore library) source code for your particular phone and hard code the Khmer substitution rule into the SKIA lib (and/or Webcore library).

3. replace Android system fonts with Khmer Unicode supported fonts.

4. replace Android original Skia library ( & and/or Webcore library ( with the Khmer hack files.

For more details check out Stephen Gibberd’s instruction on how to hard core Khmer Substitution rules into SKIA library from the scratch.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>