Wednesday, March 11, 2009

[Linux]Wine的一点使用经验

因为实在受不了Adacious的频繁出问题而分外想念win下的foobar,我装了wine。现在wine加上foobar运行的非常良好。下面记一下安装和使用wine的时候的一些问题。

安装

ubuntu上很简单:
apt-get install wine

中文支持

安装了wine以后,在~/.wine底下会有一个driver_c目录,这里是wine心目中的C盘。你可以之后再映射过来正真的D盘阿E盘阿,但这个C盘无法改变(至少我是没找到)。在这个driver_c目录下, 有一个windows/font 目录。可是刚刚装完的时候这里是空的。你可以把你喜欢的windows字体拷过来或是做上符号连接,比如重要的英文字体tahoma.ttf 以及重要的中文字体simsun.ttf。然后键入"wine regedit"调用wine的注册表,修改[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]。把MS Shell Dlg 以及MS Shell Dlg2的键值由默认的tahoma改为simsun,这样就可以正确的显示中文了

程序中字体过小

这是由于dpi值设置的不够大。可以选择在winecfg的Graphics标签里调整dpi值大小(默认是96)。或者继续wine regedit修改[HKEY_CURRENT_CONFIG\Software\Fonts]里的LogPixels键值。LogPixels默认是60(十六进制,也就是十进制的96)。比如我就调整到了120。这样程序里的对话框以及文件选择框之类的的字就足够大了。

菜单/状态栏/消息框中的字体依然过小

调整过dpi之后,有可能发现程序里的字是大了,但是菜单之类的字体还是很小。这个问题我google了很久 "Wine", "MenuFont","tiny"之类,看到一些人问但是都没有答案。早先版本的wine可以通过设置win.ini里MenuFontSize等来解决。但新版本的不可以。下午参考着wine源码搞定了这个问题。原来wine会从注册表当中直接读取MenuFont/StatusFont/MessageFont信息。比如MenuFont信息既包括了字体也包括了大小。这几个键值在"[HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics"]。但是是用二进制的形式存储的。所以你在user.reg当中可以找到"MenuFont"=hex:f5,ff,ff,ff...这样的字串。如果需要把字体调大,可以把第一个f5弄小一点,比如我调到f2就很好了。

No comments: