Sign in to follow this  
openglinator

BitmapFont with right-to-left direction (Arabian)

Recommended Posts

Hello,

 

I just made a font that also supports Arabian symbols.

As most people know, they read from right-to-left, not left-to-right.

The NetBeans-IDE for example supports this, but my fnt. renderer (jMonkeyEngine) doesn'nt do it somehow.

Even when I ead the unicode marks (0x200F, 0x200E), there doesn't seem to change anything.

The two unicode symbols are in the font (id=8207, id=8206) descriptor file.

 

Since I have no other possibility to test .fnt files, I just wanted to ask, if someone could test my font with right-to-left Arabian language.

I want to confirm, that this occurs on other render engines too.

 

I plan to modify the engine I use, to support right-to-left / left-to-right switching, when I have time.

Another workaround is, to invert the char array counting order in the string before sending it to the renderer.

As before, the workaround seems to be the better solution.

Share this post


Link to post
Share on other sites

I wish I could help you. Implementing support for rendering the text right-to-left shouldn't be too difficult. But I don't know Arabian so I wouldn't be able to validate the result. :)

Share this post


Link to post
Share on other sites

I don't know Arabian either - here is how I work with it:

I open a Wikipedia-article, for example the one about "Morocco".

There are some arabian texts - copy,paste them into a modern Code-IDE like NetBeans.

Render the text - compare it to the Wiki article and to the IDE text.

Funny thing: NetBeans inserts new space characters to the left and editing the string becomes a strange thing.

cool.png

Share this post


Link to post
Share on other sites

In the meantime I found out, that there is a c'tor parameter for right-to-left like so: new BitmapText(rightToLeft)

 

Also I've been busy and created several support functions that fix numbers and company names in Arabian text.

Usually your text with numbers will look like that:

 

"I didn't want my Robotto for 2000 dollars, i wanted it for 1000 dollars."

 

" ? ? ??? ???? ?????? ??? ??? ???? 2000? ???? ???? ?? ??1000?  ????.Robotto ???? "

 

So I utilized the Regex capabilities of the Java standard library and replaced the reversed things.

 

I'm also now capable of rendering bi-directional text, which is arabian embedded in latin language.

This is still a little cumbersome to handle, but it works in principle.

 

cool.png

Share this post


Link to post
Share on other sites

Google Translator helps a lot too.

Too bad that the translated sentences have poor grammar and many errors.

 

Problem is to make the Right-To-Left and Left-To-Right flags visible.

At runtime, I can make them visible (of course), but editing text with these flags is quite difficult.

 

And the next problem is to build a good editor for those not technically skilled and writing the text content for my game.

I have support for flags like "<arabic></arabic>" and "<hebrew></hebrew>", but that's quite useless for these people.

I thought about a parser that can parse OpenOffice Writer documents (.odt files).

Or maybe spreadsheets via OpenOffice Calc - I need that capability anyhow.

Maybe .csv export/import...

 

Still a long way until the text workflow is defined and up and running.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this