Once again I got a request from a friend, actually I got the request from two friends but the first one was too sophisticated, they needed to shape Arabic characters to display on Windows Phone 7. However, the second request was to shape and re-order Arabic characters to use them in Expression Design. Microsoft Expression Design is graphic design tool for web images. It is part of the Microsoft Expression Studio suite and focuses on editing XAML and web graphics rather than print graphics (like Photoshop and Illustrator).

So my friend wanted to use Arabic words and use them in Expression Design. She had an easy way to simply use the Arabic words as images, .jpg or .png, then use them in her design. Of course this has many disadvantages, bad scaling & resizing, larger file size, not easy to change the colors or background , among a long list.  I thought there must be a way to use Arabic fonts in these designers.

Windows in general perform the contextual shaping of Arabic characters as we type them, but some application, especially graphic designers apps, perform their own shaping and layout. On the other hand, I knew that the Unicode fonts that are shipped in Windows contain the shaped glyphs for Arabic character.  So I wrote this simple conversion function to convert the Arabic characters from the Unicode 600 range to the shaped glyphs from the Unicode ranges. I thought it would be interesting tool to share with the rest of you Arabic developers\designers.

For simplicity, I assumed a couple of things:

1)      Only Arabic letters

2)      Only accepts one word, having separators

3)      No numbers and No English accepted

I attached the application and you need to have the .NET Framework 2.0 to run it.

How to use it:

1)      Type your Arabic word in the space provided.

2)      Press “Shape”, if you don’t need to reverse the string, then uncheck the Reverse the string

3)      The shaped string will appear in the result... press “Copy”.

4)      Go to your designer, and paste the Text (make sure you select the Text input first).

Sounds easy, go ahead and try it.

I hope you find this useful J