葡萄酒中的字体识别?

时间:2015-03-13 09:38:46

标签: fonts wine

我目前正在开发一个应用程序,在linux下使用wine运行,需要使用CJK字体显示(仅显示,无输入)文本。令我感到有趣的是Microsoft字体以某种方式相互链接的方式,例如: 如果我使用winetricks只安装Tahoma,并运行它,它显示无法显示的字符框,然后当我安装所需的字体,例如:MingLiu,文本呈现正确,即使我只选择Tahoma作为默认字体

我认为的结论是,当一个人尝试渲染它无法渲染的角色时,某种方式微软字体相互链接,不知何故,就像这样的逻辑: "尝试使用Tahoma,如果它不能渲染一些字符,使用其他字体(例如:MingLiu)渲染它们,同时仍使用Tahoma"渲染拉丁字符。奇怪的是,当我使用其他不是微软的CJK字体时就不会发生这种情况,例如:Hanazono(http://fonts.jp/hanazono/),尽管Hanazono可以渲染一些需要显示的字符。如果我选择Tahoma或任何其他字体,它将永远无法呈现CJK字符,即使Hanazono存在于当前wineprefix中。

我用来重现这种"现象的步骤":

  1. 从干净的wineprefix开始(我使用winetricks删除所有wineprefix)
  2. 来自winetricks,安装Tahoma
  3. 运行应用
  4. 注意无法呈现的乱码或框字符
  5. 关闭应用程序,将所需字体(例如:MingLiu)复制到wineprefix目录中的windows / Fonts目录
  6. 重新运行应用
  7. 注意完美呈现的字符
  8. 重复步骤1-4
  9. 关闭应用程序,复制应该能够正确呈现文本的替代字体(例如:Hanazono)到wineprefix目录中的windows / Fonts目录
  10. 重新运行应用
  11. 请注意仍有乱码或方框字符
  12. 我真的不知道从哪里开始找到关于此问题的解决方法,无论是某种葡萄酒专长,还是某些字体特定的琐事。最简单的解决方案是嵌入Microsoft字体,但由于它会引发法律问题,我更喜欢使用我能够自由使用的第三方字体。任何信息都会有所帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

今天谷歌搜索然后我发现了这篇文章:https://msdn.microsoft.com/en-us/library/ms901083.aspx

似乎"字体链接" (用于定义我查找的特征的术语)通过定义一些注册表值来工作,并且在试验regedit之后,添加名为" DejaVu Sans"的新的MultiString值。在HKLM-Software-Microsoft-WindowsNT-FontLink-SystemLink中,值为:

HanaMinA.ttf, HanaMinA
HanaMinB.ttf, HanaMinB

我可以将DejaVu Sans与Hanazono字体链接起来,以呈现DejaVu Sans无法呈现的CJK字符。

应该注意的是,这个实验只适用于葡萄酒,因为在Windows中,某种程度上字体链接可以自动生成"无需手动定义注册表,这可能会导致错误的方向,相信相同的文本呈现在wine下运行时看起来是相同的。

答案 1 :(得分:0)

如果上述方法无效,请尝试此操作。

wine regedit

导航至:

HKEY_CURRENT_USER\Software\Wine\Fonts

查看您是否有一个名为Replacements的子项

如果是这样-您可以安全地仅删除该子项