Unicode and custom input methods in Wunderkammer (#2: Font)

Step 1: Font

You need to have a font with all the necessary characters as single glyphs. The reason is that the dictionary theme file in LWUIT (step 2) uses a bitmap font which cannot use combining characters (LWUIT creates such a font for you from any font available on your system). Thus, the character <à>, latin small letter a with grave, must be represented by a glyph with unicode point U+00E0 and not as a combination of two glyphs, viz. one with U+0061 for <a> and one with U+0300 for the combining grave accent. This single glyph requirement was problematic for the Tura script because it contains a range of characters, viz. some IPA characters with tone diacritics, that Unicode fonts render only by means of a combination of a glyph for the respective letter with a combining glyph for the diacritic, such as <ɔ̀> latin small letter open o with grave.

To get around this problem, I created a new Unicode TrueType font software, TuraGSM Sans Condensed, that contains the necessary accented characters as single glyphs in the Private Use Area range (U+E000 – U+F8FF). I did this by modifying DejaVu Sans Condensed, a free Unicode font, using FontForge, a free font editor application. DejaVu Sans Condensed font makes part of the DejaVu family. DejaVu fonts are TrueType fonts that contain glyphs of most Unicode characters, including all the IPA characters and diacritics used in the Tura script. I chose the Sans Condensed version of DejaVu as a basis for the Tura font because it produces particularly compact lines which normally still remain well legible even at a small font size, such as 10 points, the size that I used for the indexes and entries in the Tura mobile phone dictionary. This is an obvious advantage when rendering characters on mobile phone screens. Besides creating new single glyphs for some of the accented characters, I also had to modify a few glyphs used for the Tura script to enhance their visual distinctiveness on a mobile phone screen.

Step 1 will probably be the most time consuming part of the process of tweaking WK for your language.

Leave a Reply