zoukankan      html  css  js  c++  java
  • Wine的中文显示与字体设置

    Wine的中文显示与字体设置

    字无法显示

    注意字无法显示和显示为乱码是不同的症状,如果看到乱码,请确保系统语言和运行Wine时的语言环境一致。如果有汉字丢失或显示为方框,请继续阅读本文。

    中文

    解决中文无法显示问题有三种思路:字体链接、字体替换或直接提供相应字体。其中“字体链接”方案解决的效果最好,推荐使用。其它两种仅做参考。

    字体链接

    Windows支持字体链接:[1]当一种字体中不存在某个字时,可以尝试从另一个字体文件中寻找相应的字形。所以只要把当前系统中的中文字体设为"fallback"字体,汉字通常就能正确显示了。方法也很简单,只需创建一个文本文件,如chn_font.reg如下[2]

    REGEDIT4
     
    [HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionFontLinkSystemLink]
    "Lucida Sans Unicode"="wqy-microhei.ttc"
    "Microsoft Sans Serif"="wqy-microhei.ttc"
    "MS Sans Serif"="wqy-microhei.ttc"
    "Tahoma"="wqy-microhei.ttc"
    "Tahoma Bold"="wqy-microhei.ttc"
    "SimSun"="wqy-microhei.ttc"
    "Arial"="wqy-microhei.ttc"
    "Arial Black"="wqy-microhei.ttc"

    注意请将wqy-microhei.ttc替换为你系统中的字体文件名,如文泉驿正黑是wqy-zenhei.ttc(请在/usr/share/fonts及其子文件夹中寻找相应字体文件)。

     
    提示:
    如果想使用其它字体,也可直接将相应的ttf或ttc文件复制到 ~/.wine/drive_c/windows/Fonts/,再用其文件名替换上面的wqy-zenhei.ttc即可。

    最后,打开注册表wine regedit,导入上面的注册表文件即可。中文应该都能完美显示了(包括Picasa中文显示为方框、软件安装程序汉字无法显示等问题均可被解决)。

     
    注意:
    注意上面的注册表键值只能使用字体的文件名,而不能使用字体名,这是由“字体链接”本身的特性决定的。

    使用原装库

    由于 Wine 的字体渲染仍有缺陷,安装相应的 Windows 原装库可以解决上步无法解决的某些罕见问题:[3]

    winetricks gdiplus riched20 riched30
    

    字体替代

     
    提示:
    该方法仅可部分解决中文无法显示问题(完整解决请见上节“字体链接”)。但当第一种方法无效时,可尝试使用该方法做补充。

    方法是打开regedit,找到 [HKEY_CURRENT_USERSoftware\Wine\Fonts\Replacements],添加一个键,键名为现缺少的字体,如宋体,字符串值为你想用做替代的字体,如文泉驿微米黑。[4]

    另一处可以进行字体替代的位置在 [HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionFontSubstitutes],方法同上。不过上面这个方法在字体已经存在时不会进行替代,而这个方法即使有对应字体存在也有效。[5]

    提供缺少的字体

     
    提示:
    该方法同样仅可部分解决中文无法显示问题(完整解决请见“字体链接”一节)。但当第一种方法无效时,可尝试使用该方法做补充。

    把Windows中的simsun.ttc复制到~/.wine/drive_c/windows/Fonts/,可以解决宋体显示问题。

    英文

    安装微软的英文字体即可。如果有winetricks,也可:[6]

    winetricks allfonts
    

    如果不想安装英文字体,也可参考该文[7],设定相应的字体替换。

    其它

    如果感觉字体太小,可以在winecfg中设置(“显示”标签中选择适当的dpi即可)。

    如果需要字体相关的调试信息,可以用

       env WINEDEBUG=+font wine <program>
    

    来启动程序。

     
    注意:
    以下信息不知是否过时,欢迎确认

    另外,运行一些软件时可能发现菜单的字体仍不是我们所期望的,此时可以修改~/.wine/drive_c/windows/win.ini,在文件中加入:[8]

    [Desktop]
    IconTitleFaceName=SimSun
    

    参考资料

    1. MSDN: Globalization Step-by-Step
    2. wine中文字体设置及字体美化
    3. Ubuntu 中文论坛讨论: wine的2个世纪难题,普通高手都解决不了(附乱码图片了)
    4. 让 wine 中文程序不依赖 simsun
    5. Useful Registry Keys - The Official Wine Wiki
    6. MS Fonts
    7. 分享: wine20050628 設定字型
    8. http://www.linuxdiyf.com/viewarticle.php?id=80877
    一键三连呀!
  • 相关阅读:
    Toast的替代者Snackbar
    SnappyDB—Android上的NoSQL数据库简介
    ButterKnife使用小结
    The following classes could not be found:
    asp.net后台解析JSON,并将值赋给对象
    .NET4.0的listview与DataPager的结合使用时的模板编辑
    ASP.NET 后台页面无法识别服务器控件ID
    Asp.net中判断是否是指定页面请求的代码示例
    ASP.NET中修改从数据库获取的datatable中的值
    GridView自定义分页样式(上一页,下一页,到第几页)
  • 原文地址:https://www.cnblogs.com/jee-cai/p/14095217.html
Copyright © 2011-2022 走看看