
彻底解决Wine中文显示乱码的设想
-
- 帖子: 62
- 注册时间: 2006-04-20 20:32
Re: 彻底解决Wine中文显示乱码的设想
想法不错,支持下


-
- 帖子: 83
- 注册时间: 2008-07-11 11:47
Re: 彻底解决Wine中文显示乱码的设想
顶一下。
一样不怎么懂编程,但希望有高手能来完善wine,毕竟wine是推动linux兼容win的重要工具,兼容性有了也就能更好的去推广linux而不用担心抱怨。
一样不怎么懂编程,但希望有高手能来完善wine,毕竟wine是推动linux兼容win的重要工具,兼容性有了也就能更好的去推广linux而不用担心抱怨。
-
- 帖子: 10
- 注册时间: 2009-01-26 14:49
Re: 彻底解决Wine中文显示乱码的设想
win公布的API太少了
-
- 帖子: 55
- 注册时间: 2009-04-11 12:37
Re: 彻底解决Wine中文显示乱码的设想


看看 wine 到现在都没有完全解决中文就知道 windows 有多乱了。
看起来 windows 的中、英文居然都不是用一套构架来实现的,真是补丁摞补丁,到最后连原样都找不着了。

- 博客教主
- 帖子: 239
- 注册时间: 2009-07-27 11:03
- 来自: 广东 深圳
- 联系:
-
- 帖子: 1
- 注册时间: 2009-08-17 21:39
Re: 彻底解决Wine中文显示乱码的设想

顶一下。
希望有高手能来完善wine,推动linux与win的兼容,更好地去推广linux。
-
- 帖子: 22
- 注册时间: 2009-03-21 0:28
Re: 彻底解决Wine中文显示乱码的设想
非常支持!!!!!!!!
- 功夫小狗
- 帖子: 249
- 注册时间: 2009-08-13 12:15
Re: 彻底解决Wine中文显示乱码的设想
我觉得光有中文显示还是远远不够的,还需要能够完美解决输入问题
- carlself
- 帖子: 49
- 注册时间: 2008-10-17 17:42
-
- 帖子: 14
- 注册时间: 2008-05-16 17:41
Re: 彻底解决Wine中文显示乱码的设想
不是字体的问题,还是和楼猪说的一样,是字符集编码问题。
我手工修改一个文件后,编译(花了很长时间的),安装,最后什么字体都不用管,什么设置也需要,中文已经正常显示,因为wine会去调用系统的字体,并用正确的编码显示。
这个补丁是某位高人写的,比较老的版本了,我对比1.1.43版,还是一样的可用。
只是这个补丁只是针对了中文的,如果能兼容所有国家就好了。wine肯定会接受。
中文补丁:
--- wine.old/dlls/gdi32/freetype.c 2005-01-06 01:12:07.000000000 +0800
+++ wine/dlls/gdi32/freetype.c 2005-01-15 18:30:32.481788272 +0800
@@ -1677,7 +1677,22 @@
if(!strcmpiW(lf.lfFaceName, SymbolW))
lf.lfCharSet = SYMBOL_CHARSET;
- if(!TranslateCharsetInfo((DWORD*)(INT_PTR)lf.lfCharSet, &csi, TCI_SRCCHARSET)) {
+ if( lf.lfCharSet == DEFAULT_CHARSET || lf.lfCharSet == ANSI_CHARSET)
+ {
+ int codepage = 936; /* I'm Chinese. Let me do something selfish. */
+ char *env_wdc = getenv("WINE_DEFAULT_CODEPAGE");
+ if (env_wdc != NULL)
+ {
+ codepage = atoi(env_wdc);
+ }
+ FIXME("Dirty hack. Default and ansi charset is translated to getenv(\"WINE_DEFAULT_CODEPAGE\")\n");
+ if(!TranslateCharsetInfo((DWORD*)(INT_PTR)codepage, &csi, TCI_SRCCODEPAGE)) {
+ FIXME("OMG. Even this dirty hack doesn't work. Let's PRAY.\n");
+ csi.fs.fsCsb[0] = 0;
+ }
+ lf.lfCharSet = csi.ciCharset;
+ }
+ else if(!TranslateCharsetInfo((DWORD*)(INT_PTR)lf.lfCharSet, &csi, TCI_SRCCHARSET)) {
switch(lf.lfCharSet) {
case DEFAULT_CHARSET:
csi.fs.fsCsb[0] = 0;
我手工修改一个文件后,编译(花了很长时间的),安装,最后什么字体都不用管,什么设置也需要,中文已经正常显示,因为wine会去调用系统的字体,并用正确的编码显示。
这个补丁是某位高人写的,比较老的版本了,我对比1.1.43版,还是一样的可用。
只是这个补丁只是针对了中文的,如果能兼容所有国家就好了。wine肯定会接受。
中文补丁:
--- wine.old/dlls/gdi32/freetype.c 2005-01-06 01:12:07.000000000 +0800
+++ wine/dlls/gdi32/freetype.c 2005-01-15 18:30:32.481788272 +0800
@@ -1677,7 +1677,22 @@
if(!strcmpiW(lf.lfFaceName, SymbolW))
lf.lfCharSet = SYMBOL_CHARSET;
- if(!TranslateCharsetInfo((DWORD*)(INT_PTR)lf.lfCharSet, &csi, TCI_SRCCHARSET)) {
+ if( lf.lfCharSet == DEFAULT_CHARSET || lf.lfCharSet == ANSI_CHARSET)
+ {
+ int codepage = 936; /* I'm Chinese. Let me do something selfish. */
+ char *env_wdc = getenv("WINE_DEFAULT_CODEPAGE");
+ if (env_wdc != NULL)
+ {
+ codepage = atoi(env_wdc);
+ }
+ FIXME("Dirty hack. Default and ansi charset is translated to getenv(\"WINE_DEFAULT_CODEPAGE\")\n");
+ if(!TranslateCharsetInfo((DWORD*)(INT_PTR)codepage, &csi, TCI_SRCCODEPAGE)) {
+ FIXME("OMG. Even this dirty hack doesn't work. Let's PRAY.\n");
+ csi.fs.fsCsb[0] = 0;
+ }
+ lf.lfCharSet = csi.ciCharset;
+ }
+ else if(!TranslateCharsetInfo((DWORD*)(INT_PTR)lf.lfCharSet, &csi, TCI_SRCCHARSET)) {
switch(lf.lfCharSet) {
case DEFAULT_CHARSET:
csi.fs.fsCsb[0] = 0;
- zhenghuayi
- 帖子: 5
- 注册时间: 2011-03-12 10:09
Re: 彻底解决Wine中文显示乱码的设想
对,linux系统肯定要考虑到通用性,不能太狭隘。
-
- 帖子: 75
- 注册时间: 2011-01-27 10:45
Re: 彻底解决Wine中文显示乱码的设想
楼上的楼上,如何应用补丁?
- 人间正道-shzsc
- 帖子: 180
- 注册时间: 2010-07-30 22:57
Re: 彻底解决Wine中文显示乱码的设想
要解决那些写的烂的程序的问题,个人认为只有把它作为一个 workaround 的选项用类似 dll 顶替的方式单独设置,毕竟程序写的烂不是 Wine 的错,犯不着 Wine 默认就去跟着混乱纠结。
- 人间正道-shzsc
- 帖子: 180
- 注册时间: 2010-07-30 22:57
Re: 彻底解决Wine中文显示乱码的设想
忽然想到以前在 Win 搞汉化时有这么一个东西,是汉化新世纪的梁利锋大侠在 n 年前用汇编语言写的一个所谓“非标准字体”的展示程序,主要针对的是 CreateFontA、CreateFontIndirectA 和 GetStockObject 三个函数,这个 exe 用 Wine 跑的时候(在字体替换和字体链接完全设置得当的前提下)只有 GetStockObject 的后四行是不乱码的,而在 win 下区域设置正确且不用 GDI++/MacType 的时候所有的行都不乱码,只存在一些中文字有点难看的问题。
[注:我用的 Wine 是一直在用 PPA 源更新的 1.3]
可惜现在貌似很难联系到梁利锋本人;不过好像不少在 Win 下搞汉化的老前辈对这几个函数都比较熟悉的,不知道他们愿不愿意帮忙……
[注:我用的 Wine 是一直在用 PPA 源更新的 1.3]
可惜现在貌似很难联系到梁利锋本人;不过好像不少在 Win 下搞汉化的老前辈对这几个函数都比较熟悉的,不知道他们愿不愿意帮忙……
-
- 帖子: 9
- 注册时间: 2011-10-18 20:39
Re: 彻底解决Wine中文显示乱码的设想
顶起!!!