以编程方式将CFF字体转换为OpenType字体

问题描述 投票:2回答:4

有没有人有任何指针,我可以找到有关如何围绕CFF字体创建一个opentype包装的额外信息?

目前我有一个CFF文件的解析器,所以我可以从中获取各种信息(cmap,字形名称,宽度,名称等)。鉴于此信息,我无法创建一个Opentype(truetype格式)包装器,所以我可以使用GDI在Windows上使用该字体; GDI不会加载Opentype字体,我唯一知道的是它无法加载字体。

有没有人知道任何其他信息,验证应用程序,示例代码,获取其他信息为什么不从Windows加载等字体?

注意:我正在寻找有关如何操作的信息,而不是实用程序和/或转换工具。

windows fonts gdi opentype compact-font-format
4个回答
1
投票

现在,我有3个库作为参考:

  1. FreeType:主要在cff包中,主条目是cff \ cffload.c,现在在github中
  2. FontForge:fontforge \ parsettf.c,仍然在sf.net中
  3. fonttools:fonttools \ cffLib.py,在sf.net中
  4. ots工具:http://code.google.com/p/ots/source/browse/trunk/src/cff.cc

在parsettf.c中,George Williams写道:True Type是一种非常狡猾的格式。 ...现在我理解它似乎设计得更好,但文档仍然存在冲突。有时候非常糟糕。

IMO,cff doc同样糟糕。也许它设计得更好。也许,如果我有时间:)我会确认也许。为什么?看看那些东西的创作时间,太旧了。

只有年纪大了才更好?家长,数学和哲学:)其他任何人都必须推进!


1
投票

CFF(压缩字体格式)主要用于PDF文件中的嵌入式PostScript字体。您还可以在OpenType字体文件中找到基于PostScript轮廓的CFF。

如果从PDF的嵌入字体文件中获取CFF,则可以从CFF的NameIndex获取PostScript名称。您应该通过PostScript名称找到相应的OpenType文件。

如果您从OpenType文件获得CFF,为什么要问这个问题? :-D


0
投票

我引用这个链接:Raster, Vector, TrueType, and OpenType Fonts

...字体的字形存储在font-resource文件中。 ...

因此,Windows从具有其理解格式的文件加载字形,而不是CFF文件,而不是内存中的结构。如果你想在不使用文件转换工具的情况下绘制CFF文件,我认为你需要加载CFF并自己绘制字形。

要加载CFF并确定字形,可以使用FreeType Project。这是SO上的一个链接,解释了如何从FreeType源构建Win32 DLL:Compiling FreeType to DLL (as opposed to static library)

要绘制字形,您可以从gdipp project获得一些灵感,它是Windows文本渲染器的替代品,并包含显示从FreeType加载的字形的Win32 C / C ++示例代码。


0
投票

看起来CFF格式被直接嵌入到OpenType文件中。 Microsoft对OpenType文件有一个很好的概述:http://www.microsoft.com/typography/otspec/otff.htm

© www.soinside.com 2019 - 2024. All rights reserved.