"Can JavaFX speak my language?"


An attempt to answer two simple questions...
  • Can JavaFX speak my language?
  • How to load custom fonts in JavaFX?

There are many languages for which Java does not provide built-in support. Also you may want to use some nice custom font instead of the logical font. You may also want to ensure that the application looks fine across platforms and does not render boxes or look ugly on some platforms.

JavaFX allows you to package your font along with the application. So that you can use the font with your application and its guaranteed that the application looks fine on all platforms. Here I'll try to render some characters using my mother tongue - Malayalam. Oh! Yes! its a palindrome.

First I downloaded Malayalam font from Indix website. I'll use RRRaghuMalayalam.ttf in my application.

I copied the RRRaghuMalayalam.ttf font file under src/fontttf/fonts/ directory. fontttf is package name of the application. Next I created a mapping file - fonts.mf under src/META-INF/. In mapping file I specified a name for the font and the location of font as shown below. I named the font as Malayalam Font.

Malayalam\\ Font = /fontttf/fonts/RRRaghuMalayalam.ttf

Now the directory structure looks as shown below.

Now lets use this new font in our application. That is simple!. We can just specify the font name as "Malayalam Font". No additional settings required.

Text {
    font: Font {
        name: "Malayalam Font"
        size: 40
    }
    content: "\\u0d2e\\u0d32\\u0d2f\\u0d3e\\u0d33\\u0d02"
}

<script src="http://dl.javafx.com/1.2/dtfx.js"></script><script src="/rakeshmenonp/resource/FontTTF/FontTTF.js"></script>

For Applet mode, click on above image

For standalone mode

Cool! Now JavaFX can speak my language! Can it speak your language?
You need to try it out!

Source:

<script type="text/javascript">var dzone_url = "http://blogs.sun.com/rakeshmenonp/entry/javafx_custom_fonts";</script> <script type="text/javascript">var dzone_style = '2';</script> <script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script>
<script type="text/javascript"> digg_skin = 'compact'; digg_window = 'new'; </script>

Comments:

Thanks Rakesh great work..
Another question i hope u donot mind..
How to open web page in browser in JavaFX..
there is method AppletExtension.browse() this doesnot work.. it is doable in java class by using Desktop d=Desktop.getDesktop() and then d.browse(URL) it works... but can we do this in javaFX

Posted by Farrukh Obaid on March 20, 2009 at 08:47 PM IST #

AppletStageExtension.showDocument(url, target) API will work only if the application is deployed in browser mode. So I think for now Desktop.browse(URI) is better alternative.

Posted by Rakesh Menon on March 23, 2009 at 09:25 AM IST #

I am getting square boxes.... Please tell about how to configure manifest. I am using netbeans 6.5.1. I did all that above, but not getting. I dont know where i did mistake. Please help me. I is needed in my project.

Posted by Jothi Prem Sanker on May 17, 2009 at 08:09 AM IST #

@Jothi Prem Sanker Manifest file is here http://blogs.sun.com/rakeshmenonp/resource/FontTTF/fonts.mf Are you using new set of font and text? Are you able to run above sample?

Posted by Rakesh Menon on June 11, 2009 at 08:18 AM IST #

Thank you for this, Rakesh. I would also like to be able to download and use a user-selected font from a large collection on the server. However I cannot seem to get JavaFX to allow me to use registerFont() on the downloaded font. Is this possible? Or is there some other way to do it?

Thank you!

Ernie

Posted by Ernie Kent on August 28, 2009 at 10:07 PM IST #

@Ernie Kent I haven't tried using registerFont (JDK 1.6 API), will check with other engineers and get back to you. Can you file an issue at http://javafx-jira.kenai.com/ and let me know ID?

Posted by Rakesh Menon on September 04, 2009 at 10:52 AM IST #

Thanks, Rakesh. I posted it as RT-5606

Ernie

Posted by Ernie Kent on September 04, 2009 at 05:43 PM IST #

@Ernie Kent Thanks.. I have outlined a solution here, let me know if this works for you..
http://blogs.sun.com/rakeshmenonp/entry/javafx_register_font

Posted by Rakesh Menon on September 07, 2009 at 10:14 AM IST #

Looks like a great solution, Rakesh!
Many thanks!

Ernie

Posted by Ernie Kent on September 07, 2009 at 07:13 PM IST #

my question is,

why sun is not implementing the above code in
netbeans to display property files ??

you can not view Malayalam in property files created by netbeans even though java is a Unicode language.

see the link
http://www.netbeans.org/issues/show_bug.cgi?id=173656

Posted by Sony George on October 04, 2009 at 11:42 AM IST #

@Sony George May be netbeans must provide option to specify the font to be used, or it must automatically detect the unicode range and select font automatically. Anyway I think you can try Font2DTest which comes with JDK to view the files (for now) $JAVA_HOME/demo/jfc/Font2DTest/Font2DTest.jar

Posted by Rakesh Menon on October 26, 2009 at 02:03 AM IST #

Post a Comment:
Comments are closed for this entry.
About


The views expressed on this blog are my own and do not necessarily reflect that of my organization

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today