GDI+中的字体问题

3

我在GDI+中使用一些ttf字体时遇到了问题。我似乎找不出一些工作和不工作的字体之间的区别。有些字体可以被读取和渲染,没有任何问题。对于一些字体,GDI+报告文件丢失(但实际上并没有)。格式肯定有问题,但我无论如何都找不到问题所在... 有什么指点吗?

3个回答

5

GDI+ 很挑剔,它只能使用真正的 TrueType 字体而不能使用 OpenType 或 PostScript 字体,因此支持程度低于 GDI。

请查看这个链接,或许可以帮助您解决问题。


1
OpenType是一个超集术语,可以应用于CFF或TrueType字形轮廓(分别在“CFF”或“glyf”表中)。因此,TrueType字体是OpenType字体,但并非所有OpenType字体都是TrueType。自Windows 8.1起,GDI+支持OpenType CFF字体。 - Dwayne Robinson

3

我仍然完全不知道这些错误实际上意味着什么,但至少我有一个它们的列表...对于那些无法工作的字体,我可以将它们传递给字体提供商。非常有用,谢谢! - Johan Öbrink
我曾经遇到过类似的问题,其中字体虽然是Opentype格式,但具有TrueType轮廓,但在使用GDI+(System.Drawing)时无法呈现为绘图 - Microsoft字体验证器显示该字体不可调整大小,这就解释了为什么某些字体无法用于我的应用程序。 - Aaron Barker

2
关于字体的问题是编程中最不被理解的方面之一。我曾经遇到过类似的问题(请参见损坏的TrueType字体检测)。请查看我的问题--这可能会有所帮助。
您能否发布更多有关您的问题的详细信息,例如您正在使用的API,有效的字体以及无效的字体等?

我似乎无法获取有关错误的任何信息 - 它似乎深深嵌入了GDI+中。但是,当调用PrivateFontCollection.AddFontFile(string path)时会出现此错误。不幸的是,我无法发布不起作用的字体,因为它们归客户所有。可以正常工作的字体示例是Windows提供的所有标准ttf文件。 - Johan Öbrink
我假设这是一个轮廓字体,请验证。如果是的话,那么您可能需要阅读TTF规范,并尝试查看相关字体文件(通过MS Font Validator或自定义解析器)以找出其中的问题。请注意,您也可能会受到实现错误的影响(即与TTF规范不符的偏差 - 这就是曾经困扰我的问题)。 - dirkgently
很有可能——你的客户字体已经损坏了。一定要与你的客户进行沟通。另外,你的工具箱中有哪些与字体相关的工具? - dirkgently
我坚信我的客户的字体已经损坏了。我的主要问题是他们希望我解释为什么和如何出现这种情况 :(. 我对字体的经验就像我对字体工具集的了解一样糟糕。这就是为什么我喜欢字体验证器的原因。它可以让我向客户发送错误列表,而我的问题也就解决了 :) - Johan Öbrink

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接