关于如何在Wine里面配置字体,特别是中文字体。

调试信息

要看调试信息,跑

   env WINEDEBUG=+font wine <program>

具体WINEDEBUG可以参见[1]

相关注册表位置

基本上在[2]里面说了。

HKEY_CURRENT_USER\Software\Wine\Fonts

这里底下有几个:

  • Cache

底下有各个字体的信息的缓存,删掉这个分支也会自动重建,最多能暂时解决问题,没啥用。

里面可以查到各个字体名字。如果有English Name属性那也能作为名字用。

  • External Fonts

字体列表,应该也是自动产生的

  • Replacements

第一个可以用于替换字体的位置,在里面弄个字符串值,<要替换的>=<替换为>,就可以了。

据说如果能找到要替换的字体这个就不起作用,所以这也就是个 fallback 而已。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion

这里有另外几个相关的键值[2]

  • FontLink/SystemLink

这里可以把字体和字体文件对应起来。

目前尝试貌似只能找到不带路径的字体,在Windows\Fonts目录里。也是字符串值,格式是<字体名>=<字体文件>。

例如,如果要让MS Sans Serif用微米黑,写

   name: “MS Sans Serif” value: “wqy-microhei.ttc”

并把wqy-microhei.ttc放到windows的fonts目录就可以了。

  • Fonts

系统级的字体列表,和上面的External Fonts貌似类似,可能也是自动生成的。

  • FontSubstitutes

另一个可以替换字体的地方,格式和上面的Replacements一样。不过这里貌似不管实际字体存不存在都会替换。

另外,如果这里作为被替换的字体出现的话,上面SystemLink就会失效(废话……)。

Wine的默认字体

wine(版本1.6.2)在系统界面,会根据不同LOCALE设置不同的默认字体。 具体表现为修改HKLM下面FontSubstitute主键下面的相关键值。

  • en_US: Tahoma
  • ja_JP: MS Gothic
  • zh_CN: 宋体

配置方法

看了上面的可以知道,基本上只要搞SystemLink和FontSubstitutes就可以了。

SystemLink关联到字体文件,FontSubstitutes把别的字体替换成这个。

其实只要把要搞的字体都在SystemLink里关联了就完了。FontSubstitutes里有一堆系统默认搞了的。

貌似要搞的字体有:

  • Arial
  • Arial Black
  • Microsoft Sans Serif // 可能不需要
  • MS Sans Serif // 需要
  • SimSun
  • System // 谁知道呢……
  • Tahoma
  • Tahoma Bold

参见