如何使用高级OpenType功能编写程序?

时间:2010-03-25 21:31:24

标签: c# java c++ fonts opentype

如何使用OpenType表编写一个简单的程序来动态呈现文本?

请回答:

  • 汇编,C,C ++,C#,java或Python(以及一点WPF :-)

或介绍它们的库。

关于常见操作系统的文本渲染系统的评论和答案,或者设计与unicode 5.02协议兼容的文本引擎都是受欢迎的。

3 个答案:

答案 0 :(得分:2)

FreeType仅提供基本的渲染功能,不支持高级OpenType功能。很多年前,FreeType 1.x包含一个提供OpenType功能的模块,但这成了它自己的项目:HarfBuzz。如果您需要能够在任何地方运行的东西(每个OS /平台),它应该是最好的解决方案。优秀的pango库为HarfBuzz提供了一个高级界面。

Windows提供了一个名为Uniscribe的OpenType引擎。 OS X也是如此,它有ATSUI。

这应该让你开始,我希望。

答案 1 :(得分:1)

我不知道这是否能满足您的需求,但我过去使用FreeType库来渲染TrueType文本。它非常灵活,可以在各种平台(Linux,Windows,OSX等)之间轻松移植。此外,许可(BSD风格)使得在商业应用中使用它不是问题。

答案 2 :(得分:1)

纯C#https://github.com/LayoutFarm/Typography

支持.NET> = 20

访问一般字形数据,

并访问高级排版数据。

(例如GDEF,GSUB,GPOS)等。

下图显示了一些屏幕快照,

snap1: 然后比较lib的渲染字形' B'

  1. (左):lib中没有提示的字形

  2. (中):Windows的GDI类型清晰(来自记事本)

  3. (右):来自lib的字形,带有True Hinting

  4. enter image description here

    快照2: 我正在开发自动提示和网格拟合。

    测试一下,随意评论,分叉,讨论。

    triangulate1

    捕捉3:子像素渲染

    subpixel_rendering