当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 18 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-02-25 20:40 

注册: 2008-10-21 8:39
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
对 wine 支持中文的问题,大伙把注意力大部分集中到补丁、注册表字体替换上,忽视了字体本身。

wine 源码中附带字体
代码:
聚焦深空@localhost:~/wine-1.1.15$ ls fonts
courier.sfd  marlett.sfd        small_fonts_jp.sfd  system.sfd    tahoma.sfd
courier.ttf  marlett.ttf        small_fonts_jp.ttf  system.ttf    tahoma.ttf
genttf.ff    ms_sans_serif.sfd  small_fonts.sfd     tahomabd.sfd
Makefile.in  ms_sans_serif.ttf  small_fonts.ttf     tahomabd.ttf


wine 提供的字体
代码:
聚焦深空@localhost:~/wine-1.1.15$ ls /usr/share/wine/fonts
coue1255.fon  hvgasys.fon   smalleg.fon   sserifeg.fon  vgas874.fon
coue1256.fon  jsmalle.fon   smaller.fon   sserifer.fon  vgasyse.fon
coue1257.fon  jvgasys.fon   smallet.fon   sserifet.fon  vgasys.fon
couree.fon    marlett.ttf   ssee1255.fon  svgasys.fon   vgasysg.fon
coure.fon     smae1255.fon  ssee1256.fon  tahomabd.ttf  vgasysr.fon
coureg.fon    smae1256.fon  ssee1257.fon  tahoma.ttf    vgasyst.fon
courer.fon    smae1257.fon  ssee874.fon   vgas1255.fon
couret.fon    smallee.fon   sserifee.fon  vgas1256.fon
cvgasys.fon   smalle.fon    sserife.fon   vgas1257.fon


wine 没有提供源码中提到的一个中文字体文件 vga936.fon
代码:
聚焦深空@localhost:~/wine-1.1.15$ grep vga936.fon * -r
dlls/gdi32/freetype.c:    { 936, 936, "vga936.fon", "svgafix.fon", "svgasys.fon",

阅读 wine 源码,我们发现 wine-x.x.x/fonts 下缺少 vga936.sfd、对应的中文字体 xxx.ttf、及 Makefile.in 中相应的处理。

CJK 部分均有此问题,J 稍强点提供了部分字体。

由于历史问题,中文有多种编码,简体中文也有多种编码,对中文的处理也就复杂起来。
我们 wine 一个中文程序,其内部使用的中文编码可能是一种,也可能是多种,视软件维护者水平而定。

当前,不打补丁的 wine 能支持大部分中文软件,有些则部分正常显示、部分乱码。
从中文显示效果看,貌似使用 *.ttf 字体的部分显示正常(强制使用SimSun、NSimSun的例外),使用 *.fon 的显示一定乱码(貌似对应字体列表中的System)。

wine 中文支持问题 解决方案新方向:
依靠 fontforge、开源中文字体,补齐 wine 源码中字体缺失部分(vga936.sfd、vga936.fon 及其它语种缺失部分)。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-02-26 10:16 

注册: 2009-02-18 20:47
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
好贴,顶上去


页首
 用户资料  
 
3 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-02-26 20:44 
头像

注册: 2007-01-26 22:06
帖子: 236
地址: 南宁 杭州
送出感谢: 0 次
接收感谢: 0 次
关注,明天我也看看:)


_________________
open,free,share
http://blog.csdn.net/hongmy525/
Linux兼容内核 Longene


页首
 用户资料  
 
4 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-02-26 21:46 

注册: 2008-10-21 8:39
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
相关链接
http://wiki.winehq.org/CreateFonts

http://www.procon.com.au/FontsFAQ.htm#Win-q2
http://www.procon.com.au/FontsFAQ.htm#Win-q4
http://www.procon.com.au/FontsFAQ.htm

*.sfd 字体例子
https://fedorahosted.org/lohit/browser/trunk?order=size

vga936.fon?
http://www.bleepingcomputer.com/filedb/app936.fon-3783.html

http://read.pudn.com/downloads59/sourcecode/others/207770/bitfont.c__.htm
http://www.pudn.com/downloads59/sourcecode/others/detail207770.html


最后由 聚焦深空 编辑于 2009-02-26 22:02,总共编辑了 1 次

页首
 用户资料  
 
5 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-02-26 21:55 

注册: 2008-10-21 8:39
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
*.sfd
http://fontforge.sourceforge.net/sfdformat.html


页首
 用户资料  
 
6 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-02-27 9:01 

注册: 2007-01-06 10:42
帖子: 88
送出感谢: 0 次
接收感谢: 0 次
俺是外行,不过看你说得头头是道的,应该没错,支持一下希望能彻底解决这个wine中文的问题


页首
 用户资料  
 
7 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-02-27 10:11 
头像

注册: 2008-07-14 22:42
帖子: 8078
地址: Beijing
送出感谢: 0 次
接收感谢: 0 次
很专业。。。不过一直就没有出现什么乱码的问题,直接调用宋体,得了 :em06


_________________
Ubuntu User


页首
 用户资料  
 
8 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-02-27 14:19 

注册: 2008-10-21 8:39
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
fontforge 可以直接转换字体格式、encoding等。

1、打开 wqy 点阵字体 wenquanyi_12pt.pcf,默认 encoding iso-10646-1,
选择菜单 Encoding->Reencode->GB 2312,
选择菜单 File->Generate Fonts->选择格式 Win FON、修改文件名 vga936.fon->Save,
得到 vga936.fon。
附件:
文件注释: 步骤一生成文件的压缩版
vga936.fon.gz [1.4 KiB]
被下载 43 次


但问题是这样得到的 vga936.fon 只有 3392字节,这不可能覆盖 GB2312 的汉字。
用 fontforge 打开 vga936.fon 发现其 encoding 为 Windows Latin(ANSI)。
看来 fontforge 处理 *.fon 有 bug。

2、使用 wqy 中文字体 wqy-zenhei.ttf,用 fontforge 转换其 encoding 为 GB2312,另存为 zh_CN.sfd,并重新生成 ttf 字体 zh_CN.ttf,
把 zh_CN.sfd zh_CN.ttf 添加到 wine-x.x.x/fonts,修改 Makefile.in 添加 vga936.fon 规则,
发现貌似 wine 提供的工具无法处理中文 *.fon 文件。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-02-27 23:48 

注册: 2008-10-21 8:39
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
原来的理解有些错误:

错误一、源码 dlls/gdi32/freetype.c 中有这么一段
引用:
/****************************************
* Notes on .fon files
*
* The fonts System, FixedSys and Terminal are special. There are typically multiple
* versions installed for different resolutions and codepages. Windows stores which one to use
* in HKEY_CURRENT_CONFIG\\Software\\Fonts.
* Key Meaning
* FIXEDFON.FON FixedSys
* FONTS.FON System
* OEMFONT.FON Terminal
* LogPixels Current dpi set by the display control panel applet
* (HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\FontDPI
* also has a LogPixels value that appears to mirror this)
*
* On my system these values have data: vgafix.fon, vgasys.fon, vga850.fon and 96 respectively
* (vgaoem.fon would be your oemfont.fon if you have a US setup).
* If the resolution is changed to be >= 109dpi then the fonts goto 8514fix, 8514sys and 8514oem
* (not sure what's happening to the oem codepage here). 109 is nicely halfway between 96 and 120dpi,
* so that makes sense.
*
* Additionally Windows also loads the fonts listed in the [386enh] section of system.ini (this doesn't appear
* to be mapped into the registry on Windows 2000 at least).
* I have
* woafont=app850.fon
* ega80woa.fon=ega80850.fon
* ega40woa.fon=ega40850.fon
* cga80woa.fon=cga80850.fon
* cga40woa.fon=cga40850.fon
*/


中文环境下有下面默认注册表项
代码:
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Hardware Profiles\Current\Software\Fonts]
"FIXEDFON.FON"="svgafix.fon"
"FONTS.FON"="svgasys.fon"
"LogPixels"=dword:00000060
"OEMFONT.FON"="vga936.fon"

所以,中文环境下,
wine 字体 System 对应的应是 svgasys.fon,(系统默认的这个文件只有 ASCII 编码)
wine 字体 Terminal 对应的应是 vga936.fon。

错误二、源码 fonts 目录下的 *.sfd 可有可无,其是相应 *.ttf 源文件,*.ttf 才是需要的。

PS:fonts/system.ttf 可以直接替换为开源中文字体,但 wine 提供的工具 tools/sfnt2fnt 不能合理处理中文。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-03-13 13:35 
头像

注册: 2005-03-30 0:27
帖子: 3294
送出感谢: 0 次
接收感谢: 2
代码:
for i in symbol.ttf tahoma.ttf simsun.ttf  svgasys.fon  vga936.fon; do sudo ln -sfv /usr/share/fonts/truetype/arphic/uming.ttc  /usr/share/wine/fonts/$i ; done

可用


_________________
跃过无数的时间断层,只为了在


页首
 用户资料  
 
11 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-03-17 17:00 
头像

注册: 2006-12-08 10:21
帖子: 1116
送出感谢: 0 次
接收感谢: 0 次
我感觉还是不是字体问题。而是wine的一个bug。这个bug已经是作为1.2 release criteria之一了。


_________________
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。


页首
 用户资料  
 
12 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-03-17 17:38 
头像

注册: 2005-03-30 0:27
帖子: 3294
送出感谢: 0 次
接收感谢: 2
问题是 1.2 遥遥无期


_________________
跃过无数的时间断层,只为了在


页首
 用户资料  
 
13 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-03-18 9:55 
头像

注册: 2007-01-26 22:06
帖子: 236
地址: 南宁 杭州
送出感谢: 0 次
接收感谢: 0 次
huangjiahua 写道:
代码:
for i in symbol.ttf tahoma.ttf simsun.ttf  svgasys.fon  vga936.fon; do sudo ln -sfv /usr/share/fonts/truetype/arphic/uming.ttc  /usr/share/wine/fonts/$i ; done

可用


这个办法是个好办法,但是我的机器上的winecfg还是乱码(在fc上的机器)。


_________________
open,free,share
http://blog.csdn.net/hongmy525/
Linux兼容内核 Longene


页首
 用户资料  
 
14 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-03-18 9:58 
头像

注册: 2007-01-26 22:06
帖子: 236
地址: 南宁 杭州
送出感谢: 0 次
接收感谢: 0 次
还有最近发现中文字体ukai 和 uming导致wine运行某些程序的时候崩溃,卸载掉就好了。

我不知道具体的原因,搜索到下面的连接提到这两个字体有变化,不知道是否有帮助:

http://www.linuxfans.org/bbs/viewthread ... pid4884352

想着好好看看这个地方的,这几天一忙,又耽搁了 :em06 ,原来一直比较闲的


_________________
open,free,share
http://blog.csdn.net/hongmy525/
Linux兼容内核 Longene


页首
 用户资料  
 
15 楼 
 文章标题 : Re: wine 中文支持问题 解决方案新方向(您使用 M$ 提供的字体的话,请无视本帖)
帖子发表于 : 2009-03-18 13:22 
头像

注册: 2005-03-30 0:27
帖子: 3294
送出感谢: 0 次
接收感谢: 2
那俩字体我是直接咔嚓掉的
代码:
sudo rm -rf /usr/share/fonts/truetype/arphic


在以前没别的字体的时候, 新文鼎字体确实很不错。

可是现在我们有了文泉驿正黑,
再看文鼎宋体就很那啥了,
于是就通通删掉,只使用文泉驿正黑。


_________________
跃过无数的时间断层,只为了在


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 18 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Yahoo [Bot] 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译