mac osx wine 1.7.5 源碼編譯方法及中文亂碼的解決

源碼編譯

1、先安裝apple-gcc42,Mac osx自帶的 llvm-gcc,編譯後,無法運行wine。

1
sudo port install apple-gcc42

2、下載wine源碼

1
2
git clone git://source.winehq.org/git/wine.git ~/wine-git
cd ~/wine-git

3、安裝 X11/XQuartz ,官網下載 XQuartz

4、我是用的是1.7.5編譯的

1
git checkout -b 1.7.5 wine-1.7.5

5、切換編譯工具爲 apple-gcc42

1
2
sudo port select gcc apple-gcc42
hash gcc

如果想恢復蘋果默認的llvm-gcc:

1
2
sudo port select gcc none
hash gcc

6、編譯源碼

1
2
./configure --verbose --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib
make

7、安裝

1
2
3
4
make install
 
# 卸載
make uninstall

中文亂碼解決

1、參考下面的文章:

http://linfan.info/blog/2012/03/01/wine-mac/

字體最好是用 SimSun.ttc,宋體,可以從windows 中提取。

2、通過以上註冊表中的方式,仍然會存在亂碼,是字符集的問題,可以參考下面文章:

http://forum.ubuntu.org.cn/viewtopic.php?t=291611&p=2719632

dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c 源碼中添加一句,最新源碼中的位置有所變化,如下:

1
2
3
4
5
6
7
8
9
10
11
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index fb4f2af..5bc1393 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -5073,6 +5073,7 @@ static HFONT freetype_SelectFont( PHYSDEV dev, HFONT hfont, UINT *aa_flags )
 
     GetObjectW( hfont, sizeof(lf), &lf );
     lf.lfWidth = abs(lf.lfWidth);
+    lf.lfCharSet = GetTextCharset(dc);
 
     can_use_bitmap = GetDeviceCaps(dev->hdc, TEXTCAPS) & TC_RA_ABLE;

通過以上努力,基本可以解決亂碼問題,當仍會有部分字體亂碼,主要原因是相關程序的字體,無法找到,如果知道程序使用的字體,可以通過 #1 中提到的註冊表的方式,添加。


歡迎轉載:http://www.yinqisen.cn/blog-293.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章