終極GDI++使用方法 - 桌布

Sarah avatar
By Sarah
at 2008-04-02T16:09

Table of Contents

[前言]

大家好久不見A_A..研究GDI++有一小段時間..

在這邊把自己的心得打出來一起共同分享

或許我的方法不是最好 也希望一起研究討論(禁止轟炸)

[GDI++介紹] BY 70599

一:什麼是GDI++?有什麼功能?

日本人開發的免費軟體,官方版本在2006年8月29日公佈了最後一個穩定版後就停止了更新。
官網:http://drwatson.nobody.jp/gdi++/
官方版本的gdi++只能對字體進行256(8位)階段的灰度渲染,
後來有一些日本人繼續開發出freetype版的gdi++,它能對字體進行RGB(24位)渲染。
雖然windows的cleartype也是24位,但是真的不能比ˊˋ。

二:GDI++詳解心得

這邊我們就以freetype版來做解說(雖然現在又出了更新版氫版,但我還是用這版本沒
有什麼大問題),先到這裡下載http://free.flop.jp/gdi++/oldsrc/
下載裡面的gdi0717.zip。解壓到一個資料夾裡面,記住資料夾的位置(後面要用到)。

啟動方法:
1.把應用程式或者快捷方式拖曳到gdi++.exe中。(單純測試用)
2.通過修改登錄檔的方法使全系統應用gdi++。
3.將gditray.exe設成開機啟動。(建議)

三:GDI++.ini中的數值解說(不想研究的人可以跳過這部分,或者直接用別人設定好的)

在GDI++資料夾中,最重要也是唯一要設定的就是GDI++.ini(直接用記事本開啟)。
以下對freetype版各數值做一些說明,句首加#的數值會被註釋掉,不會起作用。

============================================================================
; GDI++の設定ファイル
; 保存時の文字コードはANSI(ShiftJIS)かUnicode(BOMつきUTF-16LE)で。
; Unicodeの方が読み込みが速いかも。

[General]
; 0:Disable 1:Enable
HookChildProcesses=1
【應用到子進程】

——比如你用啟動方法1啟動了一個winrar,雙擊裡面的一個文本文檔,那麼下一步被打
開的「記事本」程式也會使用gdi++渲染。

・0:禁用;
・1:啟用。

; 0:Normal 1:NoHinting 2:AutoHinting
HintingMode=1
【字體微調】

——對字體進行細微調整,以實現比較銳利、不模糊的效果。windows的cleartype就是用
的這類技術,弊端是會使字體變形、筆畫粘在一起。

下面會有兩種情況,

——情況一,當FontLoader=0(在下面)時:

・0:使用字體內部的微調,字體內部沒有微調的話就和選1時的效果一樣;
・1:不使用微調;
・2:用freetype對字體進行微調。
(註:1.下面的選了4或5的時候,就算是某個沒有內部微調的字體,在此項設定為0
時也還是會被應用微調;2.有內部微調的英文字體在下面的AntiAliasMode選擇4或5時,
推薦將此項設為0。)

——情況二,當FontLoader=1(在下面)時:

・0和2完全一樣,其他同情況一。

; -1:Disable 0:Normal 1:Light 2:LCD(RGB) 3:LCD(GBR) 4:Light-LCD(RGB)
5:Light-LCD(GBR)
AntiAliasMode=2
【抗鋸齒模式】

・-1:禁用;
・0:普通的灰階渲染;
・1:Light模式,由freetype的Reference來渲染;
・2、3:RGB/GBR24位色渲染,轉為液晶優化(電漿顯示器也能用),2和3的區別在
於紅綠藍的排列不同;
・4、5:就是Light模式下的RGB/GBR24位色渲染,最近版本才加入的新功能,推薦使
用!4和5的區別在於紅綠藍的排列不同。

; 0-∞
MaxHeight=150
【讓freetype處理的最大的字體尺寸,單位是像素,0的話就是全尺寸。】

; 0:Disable 1:Enable
UseMapping=0
【只有在FontLoader=0(在下面)時此項設置才有效。建議選0,選1會佔用大量內存,也
沒看出有什麼好處。】

; 0:Disable 1:Enable
FontLink=0
【字體鏈接】

——當FontLoader=0(在下面)時:

・0:什麼都不做;
・1:使用註冊表裡的字體鏈接設置;

——當FontLoader=1(在下面)時:

・會保持啟用的狀態,但是所有字體鏈接的處理會交由WIN32API完成。

; 0:Disable 1:ini Only 2:ini+Registry
FontSubstitutes=0
【字體替代】

——當FontLoader=0(在下面)時:

・0:什麼都不做;
・1:使用該設置文件最下面的設置;
・2:該設置文件最下面的設置和註冊表裡的設置一起啟用。

——當FontLoader=1(在下面)時:

・會保持啟用的狀態,但是所有字體替代的處理會交由WIN32API完成


; 0:GDI32 1:FreeType
WidthMode=0
【字體排列】

——字寬設置。

・0:交還給gdi32.dll處理,有可能出現字體行距過小或者過大的不整齊的現象;
・1:使用由freetype計算出來的寬度來排列字體,雖然會更美觀一些,但是某些程
序下可能出現混亂。


; 0:FreeType 1:WIN32
FontLoader=0
【字體的載入方法(注意是載入方法,不是渲染方法)】

——上面反覆提到的一個設置。

・0:用freetype載入字體;
・1:用windows的繪圖核心載入字體。
*很多freetype的設置需要此項選0才能生效。

; 0:New 1:Old 2:Original FreeType Algorithm
BolderMode=0
【粗體字的渲染方法】

——對象字體是沒有單獨粗體字文件的字體,有單獨粗體字文件的字體(如微軟雅黑)此
項設置不會生效。

・0:使用gdi0440以後版本的渲染方式;
・1:使用gdi0424以前版本的渲染方式;
・2:使用gdi0347以前版本的渲染方式,也就是freetype本身的粗體渲染。

; -1 = disabled 0 = use "GammaValue" 1 = sRGB 2 = alternative
GammaMode=1
【Gamma模式開關】

・-1:關閉;
・0:使用設置的Gamma值(GammaValue);
・1:使用sRGB的Gamma值;
・2:不明

; sRGB ≒ 2.2 CT-Default = 1.4
GammaValue=1.0
【Gamma值】

——只有上面GammaMode=0的時候此項設置才有效。設置的數值可以精確到小數點後面一
位。

*註:windows的cleartype的Gamma值是1.4。

RenderWeight=1.0
【字體輪廓】

——數字越大字體就越粗越黑(當字體為黑色時,其他顏色時表現出來的是顏色越深)。

・設置的數值可以精確到小數點後面兩位。

Contrast=1.0
【對比度】

——數字越大越銳利,數字越小越發虛。

・設置的數值可以精確到小數點後面一位。

; 0-12
TextTuning=0
TextTuningR=-1
TextTuningG=-1
TextTuningB=-1
【文字邊界設置】

——-1時無效(0也是有效的)。

TextTuning是RGB三色全局設置,TextTuningR、TextTuningG、TextTuningB是單獨設
置RGB三色。
數字越大越強調背景(類似文字邊界被侵蝕的感覺),強調背景會有中字體銳利的感
覺。
適當降低對比度,提高TextTuning,可以使文字周圍的顏色看起來」淡一點「(比如
在某些設置下,明明是黑色的字體,看起來卻像是」五彩「的)。
再加上RenderWeight,把這三個設置的微妙平衡調節好的話,能得到不輸給Mac的效
果。

; -32:+32
NormalWeight=0
; -16:+16
BoldWeight=0
【字體粗細的單獨調整】

——可以單獨設置常規(NormalWeight)、粗體(BoldWeight)狀態下的粗細。

・數字越大越粗,負數也有效,可以使字體更細。

; -16:+16
ItalicSlant=0
【字形為斜體時的傾斜加角】

——可以設置字形為斜體時的傾斜加角。正數為右傾,負數為左傾。

・數字越大加角幅度越大。
 此項設置僅對沒有單獨斜體字形的字體有效。

; 0:None 1:Default 2:Light 16:Legacy
LcdFilter=2
【液晶顯示器的優化配置】

——不同顯示器效果也不一樣,需要自己調試。

*只有freetype.dll是2.3.0以後的版本此項設置才生效。

LoadOnDemand=0
CacheMaxFaces=16
CacheMaxSizes=16
CacheMaxBytes=5242880
;CacheMaxBytes=10485760
【字體緩存、內存的設置】

——同樣的設置在不同的機器上效果完全不同,所以沒有什麼「最合理的設置」。
適當設置的話能減少內存佔用(當然再怎麼少也少不過不用gdi++),並提高gdi++引擎的
穩定性。

較低配置的機器請不要把LoadOnDemand設為1,有死機的危險。

#ForceChangeFont=メイリオ
#ForceChangeFont="M+2P+IPAG circle Regular"
#ForceChangeFont=id-懐映體
#ForceChangeFont="SH G30-P"
#ForceChangeFont="SH G30-M"
#ForceChangeFont="ヒラギノ角ゴ6等幅-AquaKana"
#ForceChangeFont="ヒラギノ明朝 Pro W3"
#ForceChangeFont=S2GPうにフォント
#ForceChangeFont="S2G らぶ W4x1"
#ForceChangeFont="S2G らぶ"
【強制使用某一個字體】

——無視所有其他字體,全系統的字體都會被這裡設置的字體代替。

・句首加#的行將被註釋掉,不會起作用。

Individual]
;書式: フォント=Hinting,AAMode,NormalWeight,BoldWeight,ItalicSlant,Kerning
メイリオ=0,
SH G30-AA=,,-16,-4
S2G らぶ=,,+32,+4
S2G らぶ W4x1=,,+12,+4
【單獨設置某字體】

——格式如上,用逗號隔開,逗號間什麼都不寫的話就用上面設置好的數值。


[Exclude]
#Marlett
#MS Pゴシック
【除外的字體】

——這裡設置的字體不使用gdi++渲染。

・句首加#的行將被註釋掉,不會起作用。

[ExcludeModule]
fontview.exe
【除外的程序】

——這裡設置的程序不使用gdi++渲染。

・句首加#的行將被註釋掉,不會起作用。

[FontSubstitutes]
; 書式1: フォント=代替フォント
; 書式2: フォント,CHARSET=代替フォント,CHARSET
#Arial,0=Times New Roman,0
#MS 明朝=MS ゴシック
【字體替代】

——系統在調用「=」前面的字體時會忽視「=」前面的字體,而去直接調用「=」後面的
字體。

・逗號後面的數字是字符編碼。

*附:字符編碼:
ANSI 0
DEFAULT_CHARSET 1
Symbol 2
MAC 77
日文 128
Hangul 129
JOHAB_CHARSET 130 ※可能是韓文
簡體中文 134
繁體中文 136
希臘文 161
土耳其文 162
越南文 163
西不來文 177
阿拉伯文 178
波羅的海地區 186
俄文 204
泰文 222
東歐 238
OEM/DOS 255

=============================================================================

以上解說感謝對岸網友70599研究分享(要轉載請告知)
頭痛了嗎?不要懷疑 剛開始是這樣的XD..

三:個人設定心得

相信很多網友看到上面這麼一大串,心都冷了一半了吧。
沒關西,前人種樹我門來乘涼。

這邊我只要簡單三步驟,就幾乎能搞定GDI++(視個人電腦顯示卡,螢幕而定)

1:先下載我設定好的GDI++(取自版上前輩分享再加以修改研究版)。
http://www.badongo.com/file/8589555

2:修改登錄檔
(local_machine\software\microsoft\windows NT\CurrentVersion\Font SubStitues)
在這字串中加入下列三個數值
新細明體=ILIHI
細明體=ILIHI
PMingLiu=ILIHI
(local_machine\software\microsoft\windows NT\CurrentVersion\GRE_Initialize)
這邊將"GUIFont.Facename=新細明體"改成如下
GUIFont.Facename=ILIHI

3:設定開機啟動GDI++
把GDI++中的gditray.exe放到"啟動"中即可

最後還是得要說明一些問題

1:卡巴確定會"管"GDI++,我的做法是開機卡巴跳出警告後選擇"套用到全部->略過"

2:許多網友都會去Exclude,去ExcludeModule,其實這些是都不必的,我這邊只用
FontSubstitutes。(如我所設定的ini)

3:個人的螢幕顯示器都不同,所以效果還需要微調,之前WINDWOFSWOLD大已經有分享過
如何微調。請版友搜尋一下他的文章吧。

4:如果有使用VS佈景(使用SFC),WB佈景(使用SS),來編輯把所有字體改成ILIHI,會更好
。當然大小也能改變。


以上是個人這幾個月研究出來的心得,如果有任何更方便的方法可以一起討論分享^^

ps:差點忘記沒圖沒真相=_=補上幾張圖吧..
http://7.blog.xuite.net/7/5/4/2/16863244/blog_773843/txt/16506739/0.jpg
火狐網頁
http://7.blog.xuite.net/7/5/4/2/16863244/blog_773843/txt/16506739/1.jpg
一些視窗
http://7.blog.xuite.net/7/5/4/2/16863244/blog_773843/txt/16506739/2.jpg
PCMAN

最後最後恭喜阿民勝投!!阿民向前行!阿民一定贏!!(因為我下注很大阿T-T)


--
http://blog.xuite.net/a12040409/meilin
桌面翻玩秀

--
Tags: 桌布

All Comments

Zora avatar
By Zora
at 2008-04-06T11:22
推一下 這個程式真的每試每失敗 不過主要是我沒空仔細研究
Jacob avatar
By Jacob
at 2008-04-07T18:33
圖會模糊是因為圖檔的關西,實際很清晰低XD
Carol avatar
By Carol
at 2008-04-11T11:34
太強了 推一個
Joe avatar
By Joe
at 2008-04-12T19:50
已收錄精華
Kelly avatar
By Kelly
at 2008-04-16T16:57
我用了大大的後人乘涼壓縮包後 BBS字型變很瘦==
Poppy avatar
By Poppy
at 2008-04-17T07:21
http://www.badongo.com/pic/3271358
Frederica avatar
By Frederica
at 2008-04-17T10:22
GDI++要把PCMAN排除,不然就是把你BBS用的字型排除
Quintina avatar
By Quintina
at 2008-04-21T05:41
@@ 怎樣把BBS用的字型排除?
Freda avatar
By Freda
at 2008-04-22T07:21
可以把PCMAN字體換成華康
Caroline avatar
By Caroline
at 2008-04-22T11:45
我的pcman很奇怪,中文都只有新細明題跟標楷體可以選@@
Valerie avatar
By Valerie
at 2008-04-23T21:51
但我已經裝了十幾款中文字型了== (OS為vista...)
Suhail Hany avatar
By Suhail Hany
at 2008-04-26T15:52
是指在GDI++中把PCMAN的字型排除
另外PCMAN用的是等寬字,除非你把PCMAN中的選項"不使用逐字."
Damian avatar
By Damian
at 2008-04-28T18:33
謝謝~我剛剛排除了 但這樣我的pcman又只能選新細跟標楷
Harry avatar
By Harry
at 2008-05-03T17:47
另外PCMAN用的是等寬字,除非你把PCMAN中的選項"不使用逐字."
輸出打勾取消,就會有一堆可選了
Una avatar
By Una
at 2008-05-06T11:58
!!!原來奧妙在這裡喔~ 感謝wujr大大~可以了^^
Puput avatar
By Puput
at 2008-05-10T14:07
強者文大推!

四月桌布:)

Emma avatar
By Emma
at 2008-04-02T07:03
不想昨天放上來是因為怕大家說抓到空的XD 其實是昨天還沒做完 總之 這個月的月曆桌布是昨天才去拍回來的 熱呼呼的(?) 但是怕大家看到我的照片會暈XD 抱歉我抓角度都很奇妙這樣 ---------------------------以上是廢話-------------------------- 桌布在 ...

戶田惠梨香自製桌面

Ida avatar
By Ida
at 2008-04-02T02:27
http://blog.yam.com/speed2/article/14527904 參加比賽的作品 試試反應如何XD -- 2007 MLB 另類傳奇 年度最佳中繼 紅襪出賽最多投手 投球不看捕手手套 讓每個播報的MLB主播嘖嘖稱奇 還有個超可愛的老婆 國家體育場→Baseball棒球→MLB→ ...

有關工具列的問題 小時鐘旁邊的圖示

Steve avatar
By Steve
at 2008-04-02T02:13
我想請問各位朋友 因為我想把工具列隱藏 但是小時鐘旁邊的圖示 也會跟著隱藏 但我有時候會用到那邊的圖示 我知道pc本身就有隱藏的功能但我用後覺得怪怪的 用ObjectDock有功能可打勾讓工具列可以隱藏起來 但想用小圖示時又要把打勾取消 很麻煩 有甚麼辦法能解決呢? 或有甚麼程式能解決呢? - ...

宮崎あおい Tokyo Metro Tokyo heart系列桌布

James avatar
By James
at 2008-04-02T00:44
剛剛想要連到Tokyo Heart的舊網站抓桌布 http://www.tokyometro.jp/tokyoheart/wallpaper/index.html 沒想到網站已經關掉了 不知道有沒有大大可以提供之前Tokyo Heart系列的八張桌布呢? 解析度是1280x960的 謝謝~ - ...

東京Metro宮崎あおい壁紙第1弾 DO!副都心線

Caitlin avatar
By Caitlin
at 2008-04-02T00:03
800x600 1024x768 1280x960三種版本 http://www.do-tokyoheart.jp/download/01_1280/index.html http://www.do-tokyoheart.jp/download/01_1024/index.html http://www.do ...