THE PROBLEM
I wish to develop a small desktop publishing application for the Urdu language. This is a right to left language but the typography can be very complex.
At its simplist one can use a Unicode font and this is the approach used by the BBC here: http://www.bbc.co.uk/urdu
However, the Unicode approach is essentially forcing all letters to firmly sit on a common baseline and have the same letter-height. The text looks more like arabic and this is acceptable for say business documents, but the beauty of Urdu is in its free form calligraphic style. An example of which can be seen here:
http://upload.wikimedia.org/wikipedia/commons/9/94/Urdu_couplet.svg
I wish to write an Urdu font rendering engine that gives a lot of control for rendering Unicode Urdu text in the calligraphic style. Creating a separate font file (assuming the circa 18,000 combinations of letter glyphs would fit in it) would not quite address the problem. For example, I would like to increase the "kerning" (letter spacing) and this would need to fluidly extend the lines connecting the letters while retaining a smooth curve.
THE QUESTION
My initial approach was to only target Windows and use C++ and MFC. But these are very old technologies and although may stil solve the problem I wanted to ask what would be a more modern approach. The following are options I have explored:
- As font rendering is a low level activity, presumably C#/WPF would not be appropriate
- I would like to avoid just targetting Windows and so perhaps C++/Qt might be an option
- Given the cloud computing trends the ideal would be to deploy this through the browser but I assume it would be impossible to get a consistent experience. Then again, I havent properly explored GDI and DirectWrite
- Perhaps something can be leveraged from DirectX / OpenGL gaming