我正在开发一个字体识别工具,它可以在Windows XP / 7 / Vista和Mac OS X上本地运行,并且需要对Outline字体进行高速质量渲染。
因为我们需要高性能和高性能在多平台开发环境中,我们选择了Qt4 / C ++组合,我们使用freetype2进行字体渲染。 顺便说一句,我对稳定性,性能和安全性印象深刻。 freetype2库的代码质量,我强烈推荐它! 当我们从Qt4内部字体渲染切换到freetype2时,产品性能提高了约300%,而由于字体错误导致应用程序崩溃的概率从1:10.000降低到1:200.000。
我们的产品目前支持OpenType(OTF)和TrueType(TTF)字体,我们即将添加对Postscript Type 1(PS1)字体的支持。
事实上,我们已经添加了对Windows Type-1字体的支持,但是我很难找到处理Mac OS Type-1字体所需的信息。 你可以在这里看到一些平台依赖的Type-1字体差异: http://www.asy.com/fonts.htm
在Windows上,每个Type-1字体包含在2个文件中:font-name.pfb(字体轮廓)和font-name.pfm(字体指标,字距等)
要使用freetype2打开Type-1字体+指标,您只需执行以下操作:
ftError = FT_New_Face(&ftLibrary, "font-name.pfb", ftFaceIndex, &ftFace);
if (ftError)
(...)
ftError = FT_Attach_File(ftFace, "font-name.pfm");
if (ftError)
(...)
我有以下有关Mac OS X的问题:
1)是否有相应的* .pfm(指标)文件?如果答案是肯定的,它是否总是存在于任何给定的Mac-Type-1字体上?
编辑/答案: Mac Type-1字体中没有* .pfm文件。 font-metrics存储在存储在同一Font-Suitcase中的位图字体中。请参阅以下有关在Windows和Windows之间传输字体的链接。 Mac,解释了Win-Type-1和Mac-Type-1字体之间的许多差异:http://www.macdisk.com/fontsen.php3
2)是否有相应的* .pfb(大纲)文件? 到目前为止,我的信息是存在一个轮廓文件,它没有扩展名(pfb),而是LWFN的“Mac类型”。在扫描给定目录中的所有此类Type-1文件时,如何读取与文件关联的“LWFN”类型? 一般来说:如何使用Qt& amp处理Mac数据/资源文件和文件类型C ++?
3)这些文件(1),(2)是否始终存在于同一目录中?
编辑/答案:此问题不再有意义,因为asnwer(1)[= Mac-Type-1字体中没有* .pfm文件]。
4)如果我知道(1),(2)的特定字体的文件路径,是否可以通过将文件复制到用户的字体库文件夹(这是对于OTF / TTF字体是真的)或者我必须使用其他一些特殊的安装方法吗?
编辑/答案: Mac-Type-1字体位于Font-Suitcase中。正确的安装方法是将整个Suitcase安装到用户的字体库。
5)是否可以使用Windows-Type-1字体(pfb / pfm)并在Mac OS X计算机上安装/使用它而不进行任何转换?
编辑/答案:答案是否定的。 pfb / pfm需要在Mac OS X中安装/使用转换,但如果将它们复制到这些应用程序的某些特殊字体文件夹中,则可以使用Photoshop / Indesign等Adobe应用程序。
我会非常感谢任何指向正确方向的答案或链接,因为到目前为止我所做的任何搜索都指向了另一个复杂程度而没有得到任何明确或有用的答案。
由于
菲沃斯
PS:我试图回答我的大部分问题,并且还会发布一些我找到的代码片段的链接。
答案 0 :(得分:1)
我通过编辑原帖来回答大部分问题。对于未来的读者:我找到了一些开源C代码,解决了处理Mac字体手提箱和从中提取OTF / TTF / Type-1字体的问题。
这是George Williams编写的一套工具(见下文说明)。 开源项目的链接:http://fondu.sourceforge.net/#Fondu
Fondu - 一组程序,用于在Unix字体格式和unix上的pfb,ttf,otf和bdf文件之间进行互换。
在其他操作系统上处理mac字体很难,因为mac字体存储在资源分支中,而其他操作系统不支持此概念。 Fondu将从macbinary文件或binhex文件中提取资源分支。 Ufond将在macbinary文件中创建一个资源派生。