Tuesday, 9 September 2008

How To Add Unicode Fonts to Symbian

[Update 2009-02-17]: Fontrouter project has been open sourced. Some of the download URLs in this post may have been changed. See here for more details.

If you are like me, who got a Nokia N95 with only English but wants to view contents in other languages - e.g. Chinese, Japanese, Korean (CJK), Russian, Hindi, etc. then you will be in a bit of strife.

According to Nokia forum, there is no way that you can install an extra language package on Nokia. You'd have to go to Nokia Care to have them install it for you, for a fee! Well, from my previous encounters with Nokia Care (here in Sydney), they are bunch of slow, bureaucratic, idiotic waste of space. So that option is a no-no for me.

Fortunately, the Symbian guru oasisfeng has created a wonderful software called FontRouter. The latest incarnation of the software is the FontRouter LT. Because the software is in testing stage, there is no full documentation on how to install and use it. There are pieces of information everywhere in the forum and mostly in Chinese. It took me a day to figure out the end-to-end process of getting it to work on my N95. So I feel that I should record it down and share it. I believe it should work for all S60 v3, S80 and S90 Nokia phones.

Step 1 - Downloading the Software

There are many versions on the oasisfeng web site, the version that I used was the FontRouter LT for Symbian 9 Beta (Build 20071109) Open Signed Online测试版.

Also download the TrueType font from the same web site: 【TrueType】方正隶变 GBK字体. This contains all the CJK characters(should contain other european characters too). Note that I tried using other Chinese TrueType fonts and my handset failed to start. So experiment with other .ttf files only after you have successfully installed and tested with this one. I am currently using the 方正准圆(FZY3JW.TTF) which is a Chinese true type font and its English characters are very close to the original font on my Nokia N95.

Notice that all Nokia phones belong to a certain profile (to make it easy for software developers to select and test the target platform/handsets). The N95 is an S60 3rd edition phone and runs on Symbian version 9. You can find this out from the phone: Tools -> Utilities -> About. Also notice that the version of FontRouter that I used was "Open Signed Online". What does this mean? Read on...

Step 2 - Signing the Software

Symbian is pretty rigorous when it comes to security. Software needs to be digitally signed before installing onto the phone. You can try installing the .sis file just as it is and your phone will reject it and complain that the digital certificate/signature is invalid or something of that nature. To sign the file you just downloaded, you will have to go to www.symbiansigned.com. On its front page, there is a URL for Open Signed Online (Beta). Click this URL and fill in the form on the following page. Note:

  • The IMEI number uniquely identifies your handset (e.g. if your phone is stolen, you can report it to the carrier and they can bar the IMEI from the network so that the thief cannot use it). You can find it out by 'dialing' *#06#
  • Email - make sure you use a valid email address because you will need to retrieve email from Symbian to carry out the next steps.
  • The Application is the .sis file you just downloaded from FontRuter.

Upon successful submission of the form, Symbian will send you an email with a URL to confirm the submission. Click it.

Then Symbian will send you another email with a URL to download the signed version of the .sis file. Just click the URL and save the file.

Step 3 - Installation

Now you can install the signed version of the software that you just downloaded from Symbian using PC Suite. Make sure you install it on the Memory Card, NOT on the Phone Memory (otherwise, if it hangs your handset, you will not be able to bring your phone back to life). During installation, it will warn you that your phone is incompatible with the software, just ignore it and continue.

Then copy the fzlb_gbk.ttf file downloaded in Step 1 into the Memory Card's \data\Fonts directory. You will notice that the file FontRouter.ini has also been created in this directory by the software installation process.

Now it is time to modify the FontRouter.ini file. You can use the Windows Nodepad to edit a copy of the file and then copy it onto the handset using PC Suite. Modify the two lines of the .ini file as following:

FixFontMetrics=0
FixCharMetrics=0
changed the values from 0 to 1 like this:
FixFontMetrics=1
FixCharMetrics=1
and leave everything else the same. If you don't make the changes, the fonts will be curtailed either from the top or bottom.

That's it. Phew! Now it's time to test it - bounce the phone (i.e. switch it off then on).

Euphoria!

There are a few must-read guides that I highly recommend:

  1. Test Guide
  2. Font Location
Related posts: Turn N95 Into Ping-Pong Bat

36 comments:

Xathish said...

Thanks for the info... Does this font work for Tamil(An indian language)?

Romen said...

Xathish,

The FontRouter driver should work with Tamil fonts, as long as its unicode true type fonts. You can try the true type fonts that come with Miscrosoft Windows. They should generally work.

cheers
romen

Xathish said...

I tried to add windows truetype fonts. Its working but its not perfect, and its very irritating in the long run.

Romen said...

Xathish,

I am guessing you are experiencing the problem of fonts getting displayed either too high or too low so that the top/bottom of the characters got truncated. If that is the case, experience with the FixFontMetrics and FixCharMetrics settings (using 0 or 1).

Alternatively, you can fine tune the display position of the characters by using FontName[@Height][:FontParameter] setting to move the fonts vertically up or down by certain pixels. For example, Arial:Y-1A will move the characters up by 1 pixel and enable Anti-aliasing. Currently, the FontParameter only supports Y and A (or a). There are some more examples from FontRouter Forum.

cheers
romen

kaifu said...

Excellent info romen. I received my E71 today and tne procedure worked flawlessly. Now we just need a way to add IMEs :)

A note on the suggested font: it looks very good for the most part, but has two problems. The link border doesn't circle the links properly on some pages, and it can't seem display characters ñ and ç (this is a US version of E71).

Romen said...

Kaifu

Yes, you are right. The suggested font is not perfect. I found it a bit too high in N-Gage (in the menus, not in games).

If you are not after CJK characters, then it's better to copy a true type font from your desktop (e.g. from MS Windows) and use that.

cheers
romen

gc said...

hi, can you elaborate on the FontName[@Height][:FontParameter] part. i'm having trouble with font truncated at the bottom. i have tried to use the command Sans MT 936_S60=FZLiBian-S02:Y+5 and also alternating the values of FixChar/FontMetrics.

Romen said...

Hi gc,

If the font is truncated at the bottom, you need to move it higher. On computer (and mobile phone) screens the origin is the top-left corner, the Y-axis points down, i.e. as you move down the Y-value gets higher.

So to move the fonts up, you need to reduce the Y-value. So try with smaller or negative Y-values, e.g. Y-1.

cheers
romen

gc said...

hi romen,

thanks, but i am not sure why it doesn't work either.

however, it seems to respond to the command of *=FZLiBian-S02:Y+5

whatever the asterisk represents, that did the trick. and it's still a positive value behind that moves the font upwards.

Romen said...

Hi gc,

That's great.

The * is simply a wildcard meaning any font. So you are effectively applying that rule to any font, which works.

So the problem you had before was because the font Sans MT... was not actually the name of the font on your phone.

I use the wildcard myself, since I could not be bothered to figure out the exact font names used by my phone. :)

cheers
romen

kaifu said...

Hi Romen

Actualy, what I wanted was a perfect font that supports ALL languages! :) Joking aside, my original intention was indeed to get CJK support. I'll experiment around to see if a truly 'universal font' exists. Thanks again for providing the ONLY instruction available for FontRouter in English!

geng said...

Works perfectly!thanks a lot

Coco said...

i followed everything 'til the installation part. i installed the .sis on the phone, but i don't get how to copy the fzlb_gbk to the phone memory ' data directory? in the pc suit 's apps installer under memory card it doesn't show anything and the computer list (on the left) doesn't show the gbk thing either, so... what am i suppose to do?

ps: im a noob at working w/ a n95

Romen said...

You don't use the software installer to copy the font file to the phone. Instead, you should use the PC Suite's file manager.

cheers
romen

Mittens said...

Thank you so much for your info, FZY3JW.TTF is great but can you recommond a traditional Chinese true font type that is also close to the original English font on Nokia N95. Thanks.

Anonymous said...

Dude, you are a god amongst men. I am in Japan, no money for a denchi jisho, so figured I'd download the trial of the Oxford Japanese/English Dictionary and see if that worked. They totally didn't tell you that you need Japanese fonts installed, let alone mention what a royal pain in the arse it would be to do that. I have spent a few days trawling through various longwinded tutorials (including one that said the font you needed was in the 500meg Symbian Dev Kit) and they were all bollocks. This worked first time. Font is a little small (on an N95) but it looks kinda funky and it's a price I am more than willing to pay.

Thanks very much!

(Now I just need to figure out how to input Japanese characters into my new toy ;)

Coco said...

umm..where do you find the PC suit's file management? i can't find it...救命...orz

Romen said...

Coco

In PC Suite, just click the 1st icon on the second row (looks like a file draw with a folder sticking out). That is your file manager.

cheers
romen

Romen said...

mittens

Just google for '方正准圆 繁体' and you should find heaps. Try them and you will eventually find something you like.

cheers
romen

coco said...

[IMG]http://i38.tinypic.com/f3wfwh.jpg[/IMG] <--screen shot

i don't see it, am i using like a totally different program? o.O

Romen said...

Coco

Looks like you have an old or strip-down version of PC suite. Just goto Nokia and download PC Suite 7.0.

cheers
romen

Coco said...

ah i knew it. thank you so much for all the help =D

Viper said...

Romen, thanks man! I have been searching for this for about 1 month. Lots of tutorial out there but yours is the most easiest to follow (especially helpful for the OPEN SIGN SYMBIAN) Thanks again for you and oasisfeng.

Anonymous said...

HELP!! I can't access the mass memory on my N95 8GB after installing the font! How do I fix it without stuffing it up?

Romen said...

Hi Anonymous

Can you be a little more specific about your problem?

Did you install FontRouter on your memory card or phone memory? If you installed it on memory card, then it's as simple as pulling out the memory card and restart your phone to disable FontRouter.

If you installed it in phone memory, then you can disable FontRouter by editing FontRouter.ini (using PC Suite and Notepad) to change Enable=0 then restart the phone.

cheers
romen

Anonymous said...

Hi Romen,

I am using N95, and followed the instructions. The system font has been changed for sure, but it was not able to see Korean SMS. Am I missing something?

Anonymous said...

Dear Colleagues! I applied all instructions and I am experiencing a problem with digits. In Converter (Office) (Nokia e51) all display text is fine but digits are truncated. Also in text messages the upper part of digits and letters are truncated. I guess it indicates that fixed text is fine but anything I want to write in the phone uses larger fonts. Any ideas where I could change that? Thanks in advance!

Romen Law said...

Hi Anonymous

Regarding the truncated fonts, please have a look at the above comments and try to shift the letters up or down by pixels.

cheers
romen

Jithin V Mohan said...

Some might find this also useful.

http://kasimachi.co.cc/blog/index.php/2009/11/22/how-to-view-malayalam-or-any-indian-language-web-pages-in-your-nokia-mobile-n70-s60-v2/

dekyi said...

it works great thanks for this post :-)

Anonymous said...

Hey tried to use your tutorial for my N95 8GB but when I try to sign the .sis it says :FAILURE: Submitted .sis file uses a UID that is in protected range and is not allocated to the account holder matching this email address (0x20009f35)
I have absolutely no idea what it means, but can you please help me?!

Thanks.

The Ancient Mariner said...

Guess Nokia has changed the policies for signing up new applications (open sign up online)..the process says its a failure as the UID on the application file is different.

Svante said...

Yes, I have the same problem. Any ideas on how to solve it?

Romen Law said...

For those who had trouble signing, I have not visited that signing web site for ages for 2 reasons: I had hacked my phone early one, so no need to have someone else to sign it for me; also, Symbian is a dead platform.

If you want to hack your phone as well, prepare to get technical - go to google and search for Drakkarious, helloCarbide, CapsOnOff, helloOX, SignTool, Trk SecMan RootSign, etc.

cheers
romen

Prakash said...

Opera Mobile 11 browser for symbian with Asian language support has inbuilt unicode font to view asian languages. It is very good and flawless.

Romen said...

HI Prakash

Thanks for the hint. Does it let you view Asian font files outside the browser - e.g. PDF file, or text file, or SMS in Chinese?

Regards
Romen Law