正如标题所暗示的,我想构建一个可以读取 .ttf 和 .otf 文件的软件,然后允许用户调整字距、字符宽度和字符间距。我知道项目 freetype,但它是用 C 编写的,我只能用 C# 和 Python 编写代码。编写 .otf 和 .ttf 逻辑有多难?
谢谢变形
正如标题所暗示的,我想构建一个可以读取 .ttf 和 .otf 文件的软件,然后允许用户调整字距、字符宽度和字符间距。我知道项目 freetype,但它是用 C 编写的,我只能用 C# 和 Python 编写代码。编写 .otf 和 .ttf 逻辑有多难?
谢谢变形
您问编写软件来读取 TrueType (.ttf) 和 OpenType (.otf) 文件有多难,从而可以调整字距调整、字符宽度和字符间距表。好吧,我会告诉你的。它很难。
Microsoft Typography 的OpenType 字体文件很好地介绍了 TrueType 和 OpenType 字体文件的高级结构。内部结构是一些全局索引和校验和字段,然后是一些“表”,每个“表”都有自己的内部结构。您将需要编写代码来解压缩此全局结构,解析和修改您要更改的表,然后重建全局结构并重新计算校验和。
要让您的用户修改字距调整、字符宽度和字符间距,您可能至少需要修改kern
、hmtx
和gpos
表。对这些表的更改可能会影响其他表中的值。
此外,文本引擎和应用软件对 OpenType 或 TrueType 字体的内容有自己的期望。这些交互是复杂的,并不总是有据可查。我希望所有能够与要求苛刻的文本布局软件一起使用的可靠字体都有关于其内容的详细信息,这反映了大量的专业知识和痛苦的经历。
如果您认为学习 C 语言以使用现有的 freetype 代码很困难,请等到您尝试调试为什么您的工具修改的字体在您的文本布局软件中不起作用。
你没有说你想对字体做什么样的修改。为什么不购买现有软件,而不是自己制作?有一些应用软件,比如FontLab 的TypeTool,它可以让你完成所有你需要的字距、字符宽度和字符间距的编辑。当然,这需要花钱,但请考虑您的时间价值多少,以及您需要多少时间才能使您的代码充分运行以满足您的需求。
如果您真的想继续编写自己的代码,您可能会发现Adobe Font Development Kit for Opentype (AFDKO)很有用。祝你好运。