2

我想在安装我制作的软件期间在主机(运行 Windows)上安装 TTF 字体。在 Windows 上安装字体意味着两件事:

  • 复制 c:\windows\fonts 中的 TTF 文件。这很容易做到。
  • 注册字体是:更新 Windows 注册表以更新其字体列表。我的问题是:如何使用 install4j 做到这一点?

提前感谢您的帮助!

4

2 回答 2

2

好吧,我已经“艰难地”做到了,但它确实有效。这是我的代码:

String fontRegKey;
if (Util.isWindows9X())
{ fontRegKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Fonts"; }
else
{ fontRegKey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts"; }
String [] fontFilesNames = new String[]
    {"braille_tbfr2007_b-2.ttf","BrailleTBFr2007INSHEAb_thermo.ttf","LouisLouis.ttf","LouisLouisThermo.ttf"};
String [] fontNames = new String[]
    {"Braille TBFr2007 INS HEA (TrueType)","Braille TBFr2007 INS HEA thermo (TrueType)",
    "LouisLouis Braille (TrueType)","LouisLouis Braille Thermo (TrueType)"};

for (int i=0 ; i<fontNames.length ; i++)
{
    boolean write = WinRegistry.setValue(RegistryRoot.HKEY_LOCAL_MACHINE, fontRegKey,fontNames[i], fontFilesNames[i]);
}

if (Util.isAtLeastWindowsXP()) //security : delete system font cache
{
    File sd = WinFileSystem.getSystemDirectory();
    File f = new File (sd.getAbsoluteFile()+"\\FNTCACHE.dat") ;
    if (f.exists()) {f.delete();}
}
return true; //mandatory for the script

最后三件事:

  • 这是脚本是我在安装程序的完成屏幕中放置的运行脚本操作

  • 请务必仅在 Windows 环境中运行此脚本,因为您的安装程序会在其他系统下崩溃。

  • 这对于 WinXP来说似乎是不必要的,但对于 Win7 来说是必不可少的,因为安装后可以在字体列表中访问字体。

于 2013-02-05T15:46:56.493 回答
1

请参阅此博客文章,了解如何以编程方式安装字体。您将使用“运行可执行文件”操作执行上述“fontinst.exe”可执行文件。

于 2013-02-04T09:49:22.250 回答