Delphi Firemonkey无法正确显示字体

时间:2014-07-22 07:56:05

标签: windows delphi firemonkey delphi-xe4

我正在使用其他字体(Abilene)构建跨平台桌面应用。在启动时我检查是安装的字体,如果不是,我安装并使用它。对于Mac,一切似乎都很好,但Windows版本(和IDE !!)不能正确显示字体。这是字体安装过程:

procedure InstallFont;
const
  REG_NT = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts';

var
  Reg: TRegistry;
  res: Boolean;
  installName,FileName: UnicodeString;

begin
  Reg := TRegistry.Create(KEY_ALL_ACCESS);
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    res := Reg.OpenKey(REG_NT, False);
    if not Res then Exit;

    installName := 'Abilene Regular (TrueType)';
    FileName:=ExtractFilePath(ParamCount(0)+'\Abilene.ttf';
    Reg.WriteString(installName, FileName);
    Reg.CloseKey;
  finally
    Reg.Free;
  end;

  AddFontResourceW(PWideChar(FileName));
  SendMessage(HWND_BROADCAST, WM_FONTCHANGE,0,0);
end;

安装字体后,它在“控制”面板中显示为快捷方式,但所有其他程序都可以使用它。即使是Delphi,也可以使用VCL,而不是FMX应用程序(参见附图)。我已经从IDE附加了图片。在运行时它是一样的。

对于字体安装,特别是对于FMX应用程序,是否还有其他必须做的事情?或者这只是一个必须向Embarcaderro QC报告的错误?

FMX IDE

VCL IDE

编辑:添加一些细节:如果我通过下载来安装字体,请单击鼠标右键并选择“安装”字样。一切都好。如果我通过我的proc安装它,那么除了Delphi FMX之外,该字体是可见的并且可用于整个世界。 Delphi VCL也可以使用它。为了测试这个,我在我的%APPDATA%文件夹中安装了带有proc的字体。 Word,Excel,Delphi VCL都可以使用它。德尔福FMX不能。

Edit2:添加了SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0)。没有变化。

Edit3:在“字体”对话框中,字体显示正确(图3) enter image description here

1 个答案:

答案 0 :(得分:0)

显然这是某种错误,因为我找到了一个解决方法:如果我先将字体复制到%windir%\ Fonts文件夹,那么一切正常。即使我创建了\ windows \ fonts文件夹的子文件夹并复制其中的字体一切也很好。

为什么Firemonkey不想在该文件夹外显示我不知道的字体。而且,正如我所说,这仅适用于Windows。 Mac OS没问题(我使用〜/ Library / Fonts)。