分页: 2 / 8
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-11-28 15:19
由 xrfang
阅读代码的时候看到2个函数:GetACP()和GetOEMCP()。查了半天msdn也没有看出这两个函数的区别。我用google搜索了一下,很少有解释这个的。找到一个博客上面说:
GetACP 判断目前正在生效的ANSI代码页
GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页
我不知道说的对不对,即使对,我还是不理解这两个函数的区别。请大家指教。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-11-30 8:45
由 tm0je
斯待大师们完成这个通用,可自动识别语种的wine
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-06 21:02
由 xrfang
hzhr 写了:什么脏不脏,这个补丁没有找到问题的所在,肯定不会被接受。
需要修正的函数是 GdiGetCodePage,当用DEFAULT_CHARSET或ANSI_CHARSET创建字体、GDI选择这个字体后,GdiGetCodePage应该返回的codepage是936,而现在的返回codepage是有问题的。
等有时间了我来提交一个补丁吧。
以上这段话是有一定问题的。当用DEFAULT_CHARSET创建字体,确实应该返回936, 这个好像目前的wine也是对的。就是当用ANSI_CHARSET创建字体的时候,按照MSDN的说法,就是应该返回1252。所以说问题不在为什么codepage返回错误,而是为什么会lfCharset=ANSI_CHARSET的??
MSDN上说,创建字体的时候尽量不要用DEFAULT_CHARSET,而是要指明,比如英文要用ANSI_CHARSET,中文就用GB2312_CHARSET。如果是这样,而飞狐之类的软件用的是ANSI_CHARSET,那么WINDOWS是怎么知道应该用中文字体来显示的?这个里面有猫腻,可能windows的做法就是把ANSI_CHARSET映射到了GetACP这个页面。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-06 22:49
由 hzhr
看清楚点,是
GdiGetCodePage ,这个函数不是用来创建字体的。用ANSI_CHARSET创建字体返回1252是没有问题,问题是此时在中文环境下,GdiGetCodePage应该返回936
xrfang 写了:hzhr 写了:什么脏不脏,这个补丁没有找到问题的所在,肯定不会被接受。
需要修正的函数是 GdiGetCodePage,当用DEFAULT_CHARSET或ANSI_CHARSET创建字体、GDI选择这个字体后,GdiGetCodePage应该返回的codepage是936,而现在的返回codepage是有问题的。
等有时间了我来提交一个补丁吧。
以上这段话是有一定问题的。当用DEFAULT_CHARSET创建字体,确实应该返回936, 这个好像目前的wine也是对的。就是当用ANSI_CHARSET创建字体的时候,按照MSDN的说法,就是应该返回1252。所以说问题不在为什么codepage返回错误,而是为什么会lfCharset=ANSI_CHARSET的??
MSDN上说,创建字体的时候尽量不要用DEFAULT_CHARSET,而是要指明,比如英文要用ANSI_CHARSET,中文就用GB2312_CHARSET。如果是这样,而飞狐之类的软件用的是ANSI_CHARSET,那么WINDOWS是怎么知道应该用中文字体来显示的?这个里面有猫腻,可能windows的做法就是把ANSI_CHARSET映射到了GetACP这个页面。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-07 10:33
由 xrfang
GdiGetCodePage好像不是windows api。
我已经看到hzhr在wine-devel里面的发言了。谢谢大师指点。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-10 1:00
由 gcell
果然都有这个通病,看到问题就想要解决!
楼主这招“指鹿为马”成功的引出了hzhr高人,期待尽快搞定,呵呵!
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-10 1:41
由 sfbi
就怕没有下文了哦,那些开发者似乎都不太好沟通的样子。。。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-15 7:40
由 xrfang
sfbi 写了:就怕没有下文了哦,那些开发者似乎都不太好沟通的样子。。。
下文有了。由一个韩国老兄发现了这个问题的核心。希望patch能够被官方接受。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-15 10:42
由 linxyz
完整的patch在哪,我们先用。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-15 12:41
由 xrfang
linxyz 写了:完整的patch在哪,我们先用。
谢谢你的热心。附件是这个韩国程序员提供的patch。但它是针对GIT的格式。我还不是很清楚如何使用。不过这里高人不少,希望大家实验并反馈。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-15 14:19
由 lifefx
高手整理下用法,我负责测试。我对wine还是很关注的。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-15 15:24
由 xrfang
这样patch:
1)最好是安装git并且下载wine的git仓库,见此:
http://wiki.winehq.org/GitWine
如果看不懂这个git,也可以直接下载wine1.1.10的源代码。但官方要求测试patch在git的最新代码上测试。
2)进入wine的本地目录,比如 ~/wine-git,执行如下命令
代码: 全选
wine-git $ patch -p1 < patch-file
patch file 就是我上面贴的包里面的一个个patch文件,对每个patch都执行一次上述命令。
3)编译安装wine
代码: 全选
wine-git $ ./configure --prefix=/usr/local/wine
wine-git $ make depend && make
wine-git $ sudo make install
我建议设定一个固定的根目录,上面是/usr/local/wine,这样目录结构有一点类似windows,没有包管理也可以干净的删除。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-15 15:35
由 Shadow.net
个人认为最好的解决方法就是在winecfg中增加code的相关选项……
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-15 16:00
由 lifefx
呵呵,我很菜,看不太懂。只会安装那种操作。看来只有等1.1.11再测试了。
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
发表于 : 2008-12-15 16:33
由 xrfang
Shadow.net 写了:个人认为最好的解决方法就是在winecfg中增加code的相关选项……
同意。等这个patch搞定,以后再说font-link的事情。