使用修饰符查找字体的全名(如fonts文件夹中所示)

时间:2012-08-20 14:37:05

标签: .net windows fonts

我需要能够找到字体的完整文件名,或者只是它的全字体名称,如windows / fonts文件夹中所示。

例如,如果使用“字体”对话框选择“Arial”,则可以选择粗体,斜体或粗体斜体。返回的字体对象只有名称“Arial”,但它将在fonts文件夹中使用的实际Font将是“Arial Bold”,而.ttf将是Arialbd.ttf,而不仅仅是Arial.ttf

作为最终结果,我需要字体的实际文件名,但我可以使用带有全名的注册表来获取。所以我需要能够从选定的字体中获取它。

注意:我知道可以手动将“Bold”或“Italic”附加到最后,但所有字体最后都不会使用这些字体。例如,我有一个instaled字体,而不是斜体,斜体版本的字体的全名以“oblique”结尾。

感谢。

1 个答案:

答案 0 :(得分:0)

我不知道.Net方式。使用GDI,您可以查询所选字体的OUTLINETEXTMETRICS(假设它是TrueType或OpenType字体)。 otmFaceName字段提供全名。然后,您可以在注册表中查询文件名。

如果它不是OpenType字体的TrueType,那么您可以使用GetTextFace并在注册表中查找。我在注册表中看到了一些非轮廓字体,但不是全部。

可能有另一种方式。