【教學】Gdi++入門-進階一次完成 @ 桌面翻玩秀 :: 隨意窩 Xuite日誌
  • 現役のデスクトップ
    1. 沒有新回應!
  • 關鍵字
  • 平均分數:0 顆星
    投票人數:0
    我要評分:
  • 2007-12-19 19:06 【教學】Gdi++入門-進階一次完成
    平均分數:0 顆星    投票人數:0
    我要評分:



    相信每個玩桌面的人或多或少都有聽過這一個名詞.

    但是真的了解或者是使用過它的人並不多.

    簡單來說GDI++就是XP系統下的CLEARTYPE(桌面右鍵內容-外觀-效果)

    至於為什麼不使用XP內建宣染呢?看下圖即可明白

    RGB渲染(GDI++)與灰階渲染(XP)的區別 BY 70599



    os:其實版主本身也不是電腦相關科系出身,只不過是對於桌面美化有著一股興趣,所以我希望能透過許多高手的經驗及教學整理讓大家了解罷了!

    進入正題

    以下文章轉載於對岸極限論壇會員70599,ptt網友windwofswold,delphinus.

    一:前言

    70599給大家的建議:

    大家在用gdi++的時候有一個前提一定要明白,這是一個免費的尚在開發中的軟件,有很多原因不明的、不完善的地方,嚴重的可能導致不可逆轉的系統崩潰。作者沒有能力也沒有可能做徹底、完美的測試/調試。使用者完全是自己負責的前提下使用這個軟件,出現任何問題作者都沒有義務為你解決。接受不了的最好盡快放棄gdi++。

    我半年前就開始使用gdi++了,這是一個日本人開發的免費開源軟件,官方版本在2006年8月29日公佈了最後一個穩定版後就停止了更新。(官網:http://drwatson.nobody.jp/gdi++/)官方版本的gdi++只能對字體進行256(8位)階段的灰度渲染,雖然windows在標準清晰模式下用的也是8位灰階渲染,但是明顯gdi++要強過它好多(當然這也是見仁見智,這裡僅代表個人觀點)。(這裡,圖裡面的iTunes。是官方gdi++的效果圖)
    ・後來又有一些日本的有志者,他們免費地開發了freetype版的gdi++,可以說這才是gdi++真正的飛躍。用linux的朋友對 freetype一定很熟悉,它能對字體進行RGB(24位)渲染,雖然windows的cleartype也是24位,但是效果和freetype版 gdi++比起來說它慘不忍睹真的一點也不過分。
    開發者非常勤奮,這個軟件在半年間更新了好幾十個版本(當然都是比較小的更新),現在一些明顯的問題已經基本被修整完畢,最近一直沒有什麼更新。所有打算使用這個軟件的朋友都應該感謝他/她們!

     二:設置

    delphinus提供的GDI++配置下載

    chick

    下載後解壓縮至C:中(最好是在C:\GDI++)

    裡頭我們會動到的只有.ini檔(也是最重要的設置檔)及gdi++.dll檔

    首先在INI資料夾中分別有0,1,2.ini三個設定檔

    在這邊70599先為大家說明ini檔中所有參數所代表之意思

    -----------------------------------------------------------------------------

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

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

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



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

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

    下面會有兩種情況,

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


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

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

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

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

     

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

     

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

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

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

     

    ・小貼士:字體鏈接:估計很多朋友都很熟悉了,windows里處理字體的一種技術。拿註冊表裡的默認設置舉個例子,打開註冊表的「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink」會發現英文字體Tahoma里鏈接了一些字體,裡面有一些是非英文字體,結果就是系統在調用Tahoma時,遇到Tahoma里沒有的字符時就會到被鏈接的字體里去找。


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

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


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

    ——字寬設置。


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

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


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

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


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

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

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


    RenderWeight=1.0
    【字體輪廓】

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


    Contrast=1.0
    【對比度】

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


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

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


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

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


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

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


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

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


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

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


    #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 ゴシック
    【字體替代】

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

     

    -----------------------------------------------------------------------------

     

    以上或許大家有看沒有董,但是沒關係貼心的delphinus已經幫大家設置好

    0,1,2.ini分別代表字體 粗,中,細三種版本了!

    接著把時間交給windwofswold來教大家如何設定吧!

    在Windows Registry裡面的Font SubStitues裡面

    我有設定 細明體、新細明體、PMingLiu 替代成 iLiHei-Trebuchet
    然後在FontLink/SystemLink裡面有在前面插入iLiHei-Trebuchet.otf,iLiHei-Trebuchet

    然後我拿delphinus大大分享的2.ini(細)改成自己想要的

    [General]
    Name=細
    Icon=..\gditrayicon.icl,3

    HookChildProcesses=1
    HintingMode=1
    AntiAliasMode=4
    ;上面那行改了會有差 每台顯示器都不一樣
    MaxHeight=150
    FontLoader=0
    FontSubstitutes=2
    ;我交給GDI++來處理字形取代,WIN32API我不知道為什麼會把我的系統的字黏在一起
    GammaMode=0
    GammaValue=1.8
    ;我去查Apple電腦預設的Grammar值來套用(求心安?)
    RenderWeight=1.8
    Contrast=1.2
    TextTuning=0
    TextTuning=0
    TextTuningR=0
    TextTuningG=0
    TextTuningB=1
    ;真正在調整有差別的是上面6行,數值要一直去嘗試...我調了一個多小時
    NormalWeight=6
    BoldWeight=0
    ItalicSlant=0
    LcdFilter=2
    LoadOnDemand=1
    CacheMaxFaces=16
    CacheMaxSizes=16
    CacheMaxBytes=4194304
    ForceChangeFont=iLiHei-Trebuchet
    FontLink=1

    [Individual]
    標楷體=0,0
    ;有的時候標楷體會拿來印報告 所以...

    [Exclude]
    細明體
    新細明體
    華康少女文字W3
    華康少女文字W5
    華康少女文字W7
    ;上面的要設定才會看起來正常 少女體我拿來打B(羞)

    [ExcludeModule]
    fontview.exe
    gditray.exe
    fterm.exe
    mplayer.exe
    mplayerc.exe
    utorrent.exe
    gom.exe
    ;msnmsgr.exe
    Rainlendar.exe
    kmplayer.exe
    MsgPlusLive.dll
    AcroRd32.exe

    [FontSubstitutes]
    ; 書式1: ????=代替????
    ; 書式2: ????,CHARSET=代替????,CHARSET
    標楷體=iLiHei-Trebuchet
    新細明體=iLiHei-Trebuchet
    細明體=iLiHei-Trebuchet
    細明體 & 新細明體 (TrueType)=iLiHei-Trebuchet
    標楷體 (TrueType)=iLiHei-Trebuchet
    PMingLiU=iLiHei-Trebuchet
    Tahoma=iLiHei-Trebuchet
    Verdana=iLiHei-Trebuchet
    System=iLiHei-Trebuchet
    MingLiU=iLiHei
    ;這邊發狂似的取代字體 XD

    然後我還用StyleBuilder把自己用的布景主題裡面字形都換成iLihei-Trebuchet

    然後就到處都漂漂亮亮啦XD

    三:GDI++啟動設定

    要開機啟動GDI++的方法有兩種

    1:在C:\Documents and Settings\Administrator\「開始」功能表\程式集\啟動 放入

    gditray.exe的捷徑便會在開機時啟動

    2:登錄編輯程式中編輯以下項目

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
    "AppInit_DLLs"="C:\\...路逕自己改...\\gdi++.dll"

    四:後記

    不知道大家看完之後有沒有感到頭昏眼花呢?

    其實gdi++設置可以說難,但是了解後也可以說不難.

    真的喜歡的人花點時間研究一下,所得到的代價是值得的!

    最後還是再一次感謝70599,windwofswold,delphinus

    MR.霖 / Xuite日誌 / 回應(1) / 引用(0) / 好文轉寄
    回應