问题
我希望为乌尔都语开发一个小型桌面出版应用程序。这是一种从右到左的语言,但排版可能非常复杂。
简单来说,可以使用 Unicode 字体,这是 BBC 在这里使用的方法: http ://www.bbc.co.uk/urdu
但是,Unicode 方法本质上是强制所有字母牢固地位于一个共同的基线上并具有相同的字母高度。文本看起来更像阿拉伯文,这对于商业文件来说是可以接受的,但乌尔都语的美在于其自由形式的书法风格。一个例子可以在这里看到:
http://upload.wikimedia.org/wikipedia/commons/9/94/Urdu_couplet.svg
我希望编写一个乌尔都语字体渲染引擎,它可以为以书法风格渲染 Unicode 乌尔都语文本提供大量控制。创建一个单独的字体文件(假设它可以容纳大约 18,000 个字母字形组合)并不能完全解决问题。例如,我想增加“字距”(字母间距),这需要流畅地延伸连接字母的线条,同时保持平滑的曲线。
问题
我最初的方法是只针对 Windows 并使用 C++ 和 MFC。但这些都是非常古老的技术,虽然可能仍然可以解决问题,但我想问什么是更现代的方法。以下是我探索过的选项:
- 由于字体渲染是一种低级活动,因此 C#/WPF 可能不合适
- 我想避免只针对 Windows,所以也许 C++/Qt 可能是一个选项
- 鉴于云计算趋势,理想的做法是通过浏览器进行部署,但我认为不可能获得一致的体验。再说一次,我还没有正确探索 GDI 和 DirectWrite
- 也许可以从 DirectX / OpenGL 游戏中利用一些东西