Wine中文显示

突然发现wine的中文显示其实很简单
从1.1.4开始wine的界面就已经支持中文了,但是对于软件中的中文支持并不太好,主要原因。还是字体。。。
Let's go
首先,copy一下字体:把simsun.ttc (即宋体)复制到 ~/.wine/drive_c/windows/fonts
然后:

XML/HTML代码
  1. [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]  
  2. "Arial"="simsun"  
  3. "Arial CE,238"="simsun"  
  4. "Arial CYR,204"="simsun"  
  5. "Arial Greek,161"="simsun"  
  6. "Arial TUR,162"="simsun"  
  7. "Courier New"="simsun"  
  8. "Courier New CE,238"="simsun"  
  9. "Courier New CYR,204"="simsun"  
  10. "Courier New Greek,161"="simsun"  
  11. "Courier New TUR,162"="simsun"  
  12. "FixedSys"="simsun"  
  13. "Helv"="simsun"  
  14. "Helvetica"="simsun"  
  15. "MS Sans Serif"="simsun"  
  16. "MS Shell Dlg"="simsun"  
  17. "MS Shell Dlg 2"="simsun"  
  18. "System"="simsun"  
  19. "Tahoma"="simsun"  
  20. "Times"="simsun"  
  21. "Times New Roman CE,238"="simsun"  
  22. "Times New Roman CYR,204"="simsun"  
  23. "Times New Roman Greek,161"="simsun"  
  24. "Times New Roman TUR,162"="simsun"  
  25. "Tms Rmn"="simsun"  
当然,你也可以COPY其他字体,然后替换掉这上面的simsun。把这 段内容保存成一个reg文件,例如:fonts.reg
最后,到命令行下支持wine regedit fonts.reg,OK,你现在重新打开记事本,是不是发现可以输入中文了?

<think>我们正在解决Wine环境下中文乱码问题。根据之前的引用和用户需求,需要配置字体和注册表。引用[1]提到了需要复制字体到Fonts目录并修改system.reg,引用[2]也有类似操作。结合常见的解决方案,我们可以分步骤进行:步骤1:准备中文字体(如微软雅黑msyh.ttc,或simsun.ttc)步骤2:将字体复制到Wine容器的Fonts目录步骤3:修改注册表(system.reg),设置字体替代和默认字体注意:用户可能有多个Wine容器,需要指定WINEPREFIX。如果未指定,则默认是~/.wine。具体步骤:1.获取中文字体(在离线环境下,用户需要自己准备好字体文件,比如从Windows系统中提取,或者使用开源字体)这里假设用户已经有一个中文字体文件,例如msyh.ttc(微软雅黑)或simsun.ttc(宋体)。2.复制字体到Wine容器的Fonts目录:```bash#假设字体文件在当前目录,且Wine容器前缀为~/.winecpmsyh.ttc~/.wine/drive_c/windows/Fonts/```3.修改注册表文件(system.reg),在注册表中添加字体关联和默认设置。有两种方式:直接编辑system.reg文件,或者使用regedit命令导入。这里我们编辑~/.wine/system.reg文件(注意先备份),在文件末尾添加以下内容(以微软雅黑为例):```[Software\\Microsoft\\WindowsNT\\CurrentVersion\\FontLink\\SystemLink]"LucidaSansUnicode"="msyh.ttc""MicrosoftSansSerif"="msyh.ttc""MSSansSerif"="msyh.ttc""Tahoma"="msyh.ttc""TahomaBold"="msyh.ttc""SimSun"="msyh.ttc""Arial"="msyh.ttc""ArialBlack"="msyh.ttc"[Software\\Microsoft\\WindowsNT\\CurrentVersion\\FontSubstitutes]"MSShellDlg"="MicrosoftYaHei""MSShellDlg2"="MicrosoftYaHei"```注意:如果使用其他字体,将"msyh.ttc"替换为对应的字体文件名。或者,也可以使用reg文件然后导入:创建一个fix_font.reg文件,内容如上,然后执行:```bashREGEDIT4[HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\FontLink\SystemLink]"LucidaSansUnicode"="msyh.ttc""MicrosoftSansSerif"="msyh.ttc""MSSansSerif"="msyh.ttc""Tahoma"="msyh.ttc""TahomaBold"="msyh.ttc""SimSun"="msyh.ttc""Arial"="msyh.ttc""ArialBlack"="msyh.ttc"[HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\FontSubstitutes]"MSShellDlg"="MicrosoftYaHei""MSShellDlg2"="MicrosoftYaHei"```然后执行:`wineregeditfix_font.reg`4.设置环境变量(可选,但推荐):在运行Wine程序时,可以设置语言环境为中文,以避免乱码:```bashexportLANG="zh_CN.UTF-8"```5.重启Wine容器:执行`wineboot-r`或重启应用。注意:如果用户使用的是DeepinWine(如引用[2]中的Deepin-WeChat),那么WINEPREFIX可能是~/.deepinwine/Deepin-WeChat/,步骤类似,只需调整路径。如果用户没有中文字体,可以从Windows系统或网上下载(但要注意版权),或者使用开源中文字体(如文泉驿等)。另外,对于非Unicode程序,可能需要设置模拟的Windows系统区域为非Unicode程序使用中文,这可以通过winecfg的“区域”设置来实现,选择“中文(简体,中国)”。但是,在命令行下,我们可以通过修改注册表来实现:在注册表项`[HKEY_CURRENT_USER\ControlPanel\International]`中,将"Locale"="00000804"。我们可以创建一个reg文件(如locale.reg):```REGEDIT4[HKEY_CURRENT_USER\ControlPanel\International]"Locale"="00000804"```然后执行:`wineregeditlocale.reg`综合以上,我们可以为用户提供两种方法(具体步骤):方法一:通过修改现有容器(以默认容器~/.wine为例)步骤:1.复制字体到Fonts目录2.修改注册表(字体关联和区域设置)3.设置环境变量4.重启容器方法二:创建新容器时就配置好(如果用户还没创建容器)步骤:1.初始化容器:`WINEPREFIX=~/.wine-newWINEARCH=win64wineboot-u`2.复制字体到新容器的Fonts目录3.导入注册表修改4.设置环境变量考虑到用户可能已经有一个容器,我们以修改现有容器为例。注意:如果用户没有指定容器,我们默认使用~/.wine。如果用户使用的是DeepinWine,则WINEPREFIX需要根据实际情况调整(例如~/.deepinwine/Deepin-WeChat/)。最后,我们建议用户运行winecfg,在图形界面中查看字体设置是否生效,并测试中文显示。根据引用,用户可能遇到不同Wine应用(如微信)的乱码,但方法类似,只需定位到对应的容器路径。由于用户提到的是离线环境,所以字体文件必须提前准备好。下面将步骤整理为详细的解决方案。</think> ### 💻 Wine中文乱码解决方案 Wine环境下出现中文乱码的核心原因是缺少中文字体配置,以下是完整解决步骤(兼容离线环境): #### 🔧 一、字体配置(关键步骤) 1. **获取中文字体**: ```bash # Windows系统字体路径 (需提前离线复制) C:\Windows\Fonts\simsun.ttc # 宋体(推荐) C:\Windows\Fonts\msyh.ttc # 微软雅黑 ``` 2. **复制到Wine字体目录**: ```bash # 复制字体到Wine容器 (需替换实际路径) cp /path/to/simsun.ttc $WINEPREFIX/drive_c/windows/Fonts/ ``` 3. **修改注册表**: ```bash # 编辑容器注册表 wine regedit ``` 添加以下注册表项: ```reg [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink] "Lucida Sans Unicode"="simsun.ttc" "Microsoft Sans Serif"="simsun.ttc" "MS Sans Serif"="simsun.ttc" "Tahoma"="simsun.ttc" "Arial"="simsun.ttc" [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes] "MS Shell Dlg"="SimSun" "MS Shell Dlg 2"="SimSun" ``` #### 🌐 二、区域设置 1. **配置系统区域**: ```bash winecfg ``` ▶ 在"区域"选项卡中选择 **中文(简体,中国)** 2. **设置语言环境**(终端层面): ```bash # 添加到.bashrc或.zshrc export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8" ``` #### 🔍 三、验证与调试 1. **测试字体渲染**: ```bash wine notepad ``` 输入中文测试是否正常显示 2. **查看字体映射**: ```bash cat $WINEPREFIX/system.reg | grep -A 10 'FontSubstitutes' ``` #### ⚠ 四、针对Deepin-Wine的特殊处理 当使用Deepin-Wine(如微信客户端)时: ```bash # 容器路径替换为实际路径 cp msyh.ttc ~/.deepinwine/Deepin-WeChat/drive_c/windows/Fonts/ # 编辑容器注册表 nano ~/.deepinwine/Deepin-WeChat/system.reg ``` 添加相同注册表项,重启应用生效[^2] #### 📦 五、离线部署要点 | 组件 | 离线获取方式 | 目标路径 | |-------------|------------------------------|----------------------------------| | 中文字体 | 从Windows系统提取 | `$WINEPREFIX/drive_c/windows/Fonts/` | | 注册表配置 | 预先生成.reg文件 | 导入到`system.reg` | | 容器模板 | 在线环境配置后打包 | 解压到目标机器 | > 📌 **关键提示**:若使用非SimSun字体,需将注册表中的`simsun.ttc`替换为实际字体文件名 #### 🚨 常见问题解决 1. **部分文字仍是方框** ⇒ 检查字体文件完整性:`fc-list | grep -i simsun` 2. **界面字体模糊** ⇒ 在winecfg显示设置中调整屏幕分辨率 3. **终端中文乱码** ⇒ 确保主机系统已安装中文字体:`sudo apt install fonts-wqy-microhei` --- ### ❓ 相关问题 1. 如何解决Wine环境下Qt应用的中文显示问题? 2. Wine容器迁移后字体配置失效如何修复? 3. 开源中文字体能否替代SimSun(如文泉驿)? 4. 如何批量修改多个Wine容器的字体配置?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值