FontMod是修改老win32系統(tǒng)應(yīng)用程序字體的dll文件,win32上的一些老應(yīng)用程序沒(méi)有對(duì)中文進(jìn)行「特色優(yōu)化」,這會(huì)導(dǎo)致系統(tǒng)將中文等CJK字符渲染為萬(wàn)惡的「中易宋體」,使用FontMod可以避免出現(xiàn)這個(gè)問(wèn)題!
軟件介紹
事實(shí)上,F(xiàn)ontMod 的工作原理非常簡(jiǎn)單易懂,和一些游戲外掛的原理類似。我們可以這樣理解:FontMod 就是一個(gè)專門(mén)修改應(yīng)用程序字體「外掛」,都是利用在原有程序的執(zhí)行的基礎(chǔ)之上,加載我們自己的 DLL。那么,這樣的話,我們就可以在 DLL 中將應(yīng)用程序字體渲染的部分邏輯進(jìn)行修改,使得應(yīng)用程序使用我們指定的字體進(jìn)行顯示。
FontMod 的大致工作原理
不過(guò),值得注意的是,DLL 注入和「游戲外掛」一樣,實(shí)際上都非常危險(xiǎn),能夠?qū)⒃劝踩膽?yīng)用程序核心數(shù)據(jù)進(jìn)行篡改。如果 FontMod 不是一款開(kāi)源軟件,那么我是不會(huì)使用它,也不會(huì)推薦給大家使用。
使用方法
Mendeley 是一個(gè)學(xué)術(shù)文獻(xiàn)的管理應(yīng)用,其客戶端 Mendeley Desktop 應(yīng)該是直接利用 Qt 編寫(xiě)的。另外,Mendeley 也不負(fù)眾望,其客戶端就連英文字體都渲染成了「中易宋體」… ??? 我們以 Mendeley 為例子,具體介紹如何將 FontMod 掛載到主應(yīng)用程序上,使之生效。
找到目標(biāo)程序的安裝目錄
首先,我們需要找到 Mendeley 的安裝目錄。在 Windows 的開(kāi)始菜單,右鍵點(diǎn)擊 Mendeley,選擇「更多 ? 打開(kāi)文件位置」,在打開(kāi)的目錄下選擇 Mendeley 的快捷方式,再次右鍵,選擇「打開(kāi)文件所在位置」,不出意外的話,我們就進(jìn)入了 Mendeley 的安裝目錄。
找到 Mendeley 的安裝目錄
仔細(xì)觀察,我們可以看到 MendeleyDesktop.exe 這一可執(zhí)行文件,也就是我們 Mendeley 客戶端的本體。另外,下方還有一些帶有 Qt 字樣的 DLL 文件的蛛絲馬跡,這些線索表明 Mendeley 客戶端很大可能是直接使用跨平臺(tái) UI 框架 Qt 編寫(xiě)的,驗(yàn)證了我們的猜想。
接下來(lái),我們拿到剛剛下載好,并更改名稱為 winmm.dll 的 FontMod 文件,進(jìn)行掛載的工作。
讓 FontMod 掛載目標(biāo)程序
我們將 winmm.dll 直接復(fù)制進(jìn)入剛剛的 Mendeley 安裝目錄下,這一步驟可能需要「管理員權(quán)限」,如果提醒我們,點(diǎn)擊授權(quán)即可。此時(shí),如果我們嘗試雙擊 MendeleyDesktop.exe 打開(kāi) Mendeley 客戶端,很可能出現(xiàn)報(bào)錯(cuò),提示你未找到一個(gè)名叫 FontMod.yaml 的文件。不必?fù)?dān)心,這是正?,F(xiàn)象。
Mendeley 默認(rèn)安裝位置位于 Windows C 盤(pán)的 Program Files 目錄下,這一目錄需要管理員權(quán)限才能創(chuàng)建文件,因此上一步中 FontMod 沒(méi)有將自己的配置文件在第一次運(yùn)行時(shí)成功創(chuàng)建,導(dǎo)致報(bào)錯(cuò)。我們需要在 Mendeley 的這一安裝目錄下手動(dòng)創(chuàng)建一個(gè)名為 FontMod.yaml 的文件作為配置文件。
另外,如果你打開(kāi)之后發(fā)現(xiàn)沒(méi)有什么問(wèn)題,那么很可能就是 FontMod 為我們創(chuàng)建好了這一文件,我們繼續(xù)接下來(lái)的工作即可。