Delphi - 从指定文件中检索.Fon字体名称

时间:2014-11-12 13:27:22

标签: delphi fonts

我想要的是一个从.fon字体文件中检索名称的Delphi代码, 我进行了谷歌搜索,但是它的搜索结果为0。

要明确: 示例:我有字体: 文件名+路径:C:\ joker_let.fon 字体真名是:' Joker LET 1.0'

到目前为止我做了什么:

Function GetFONFontName(FontFile: String): String;
var FS : TMemoryStream;
    FontName: Array of Char;
Begin
  Result:= '';
  FS := TMemoryStream.Create();
  Try
    FS.LoadFromFile(FontFile);
    SetLength(FontName, FS.Size);
    FS.ReadBuffer(FontName[0], FS.Size);
    Result:= String( FontName);
    Result:= Copy(Result, Pos('FONTRES', Result)+8, 250);
    Result:= Copy(Result, Pos(':', Result)+141, 60);
    Result:= Copy(Result, 1, Pos(#0, Result)-1);
    Result:= Trim(Result);
  Finally
    FS.Free;
  End;
End;

但是这个功能不能正常工作, 因为字体名称并未存储在所有.fon文件中的相同位置。 如果我在示例中给出字体,我会得到它的名字;但如果我只是给另一种字体 我没有正确地得到它的名字,或者它只是''。 所以我需要其他东西来检索每个文件中的.fon名称。

  • 我做了另一个Google搜索以获取.fon文件结构,但我找不到有用的东西 我发现只有两种类型:PE和ZE。 要指定我想要PE类型(Portable Executable = MZ)。 因为我没有找到关于.fon PE类型的详细信息,所以我做了
  

函数GetFONFontName(FontFile:String):String;   做临时解决方案。

希望我很清楚。 对不起我的英文。

1 个答案:

答案 0 :(得分:0)

此问题在此之前提出:How do I get the font name from a font file?。看起来您可以使用GetFontResourceInfo Win API。