【问题标题】:how to write programs using advanced OpenType features?如何使用高级 OpenType 功能编写程序?
【发布时间】:2011-01-31 22:49:44
【问题描述】:

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

请回答:

  • 程序集、C、C++、C#、java 或 Python(还有一点 WPF:-)

或介绍它们的库。

欢迎大家解答常见操作系统的文本渲染系统,或者设计兼容unicode 5.02协议的文本引擎。

【问题讨论】:

  • 我不确定; if (Exists(anySuchAPI) && i.KnowOf(noSuchLibrary));

标签: c# java c++ fonts opentype


【解决方案1】:

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

支持 .NET >=20

访问一般字形数据,

并访问高级版式数据。

(如GDEF、GSUB、GPOS)等


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

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

  1. (左):来自库的字形,没有提示

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

  3. (右):带有 True Hinting 的库中的字形


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

对其进行测试,并随时发表评论、分叉、讨论。


snap 3:亚像素渲染

【讨论】:

  • 鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。
【解决方案2】:

FreeType 仅提供基本渲染功能,不支持高级 OpenType 功能。许多年前,FreeType 1.x 包含一个提供 OpenType 功能的模块,但这变成了它自己的项目:HarfBuzz。如果您需要可以在任何地方(每个操作系统/平台)工作的东西,它应该是最好的解决方案。出色的 pango 库为 HarfBuzz 等提供了高级接口。

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

我希望这应该让你开始。

【讨论】:

    【解决方案3】:

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

    【讨论】: