說實話, 一直使用GVIM, 但是沒能找到一個在GVIM中能用的好看的字型, 不是因為沒有字型, 而是在GVIM不能使用,
GVIM預設在執行:set guifont=*選擇字型時只支援等寬字型(貌似也並不是所有的等寬字型都能選擇), 這導致很多的字型
不能使用, 而能使用的字型卻又顯示效果非常差, 很不好看, 反正我是這樣覺得, 在Ubuntu下面顯示效果很好...
於是乎, 想修改一下GVIM實現選擇所有字型,... 當然, 很容易想到的就是修改參數,修改傳遞給comdlg32.ChooseFontA
函數的參數(可以自己使用depends或od斷查看調用的函數), 我得到了這個結果:
其中:0x00004000位為:CF_FIXEDPITCHONLY, 表示只能使用等寬字型,............
於是手動在OD中修改其為0x00000041即可, 測試可以選擇絕大多數字型(沒數)....
修改前後, 看捲軸長度就知道了:
經測試, 不使用等寬字型,GVIM也能正常工作, 但是這麼久以來, 作者為什麼沒有作修改? 明顯, 並不是所有時候都要使用等寬字型.
好了, 現在回到OD中, 找到為Flags賦值為那條語句:
004C3126 |. 8B35 F4E75E00 MOV ESI,DWORD PTR DS:[5EE7F4]004C312C |. 8B0D F8EA5E00 MOV ECX,DWORD PTR DS:[5EEAF8] ; gvim.00400548004C3132 |. 83C4 0C ADD ESP,0C004C3135 |. C74424 14 3C000000 MOV DWORD PTR SS:[ESP+14],3C004C313D |. 894C24 18 MOV DWORD PTR SS:[ESP+18],ECX004C3141 |. C74424 28 41400000 MOV DWORD PTR SS:[ESP+28],4041004C3149 |. 85F6 TEST ESI,ESI004C314B |. 74 0C JE SHORT gvim.004C3159004C314D |. B9 0F000000 MOV ECX,0F004C3152 |. 8BFB MOV EDI,EBX004C3154 |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]004C3156 |. 8B7D 08 MOV EDI,DWORD PTR SS:[EBP+8]004C3159 |> 8D4424 14 LEA EAX,DWORD PTR SS:[ESP+14]004C315D |. 33D2 XOR EDX,EDX004C315F |. 50 PUSH EAX ; /pChooseFont004C3160 |. 895C24 24 MOV DWORD PTR SS:[ESP+24],EBX ; |004C3164 |. 66:895424 48 MOV WORD PTR SS:[ESP+48],DX ; |004C3169 |. FF15 54805900 CALL DWORD PTR DS:[<&COMDLG32.ChooseFontA>] ; \ChooseFontA
在16進位編輯器搜尋C744242841400000即可找到該語句, 修改成C744242841000000就行啦!
GVIM的字型比原來更好看了~~~
gvim有點大, 不便上傳, 如需要修改後的版本, 請聯絡我就行了.
女孩不哭 @ 2013-06-14 05:33:08 @ http://www.cnblogs.com/nbsofer