王朝百科
分享
 
 
 

gdi++

王朝百科·作者佚名  2010-04-11  
宽屏版  字体: |||超大  

     

gdi++
对比图

介绍

           GDI++是一个开源项目,它能接管Windows系统的GDI字体渲染功能,实现比Mac系统更华丽的字体渲染效果!使用PC的朋友再也不需要羡慕Mac上清晰的中文字体了,  因为GDI++是有过之而无不及

            GDI++和微软的ClearType其实是相类似的技术,都是24位字体渲染技术 ,在支持灰阶显示的字体边缘加上阴影,但GDI++的强大的可定制性和灵活性足以令ClearType无地自容,GDI++可精细定制到字体的粗细、色深,阴影的方位、长度,字体代换,排除列表等等相当多的自定义选项。

使用技巧

    GDI++的精髓在于它的配置文件的编写,不同的系统环境、显示器类型及使用者的视觉习惯都需要不同的配置文件来实现最后实际输出效果的最优化。

使用GDI++的前提是你使用的是支持灰阶渲染的字体,除了系统自带的几个中文字体不支持灰阶之外,现在较为流行的方正、华文、华康和汉仪等等中文字体都支持灰阶渲染。不要用着宋体却问我为什么效果没变!下文如无特别说明所指均为老版(Freetype版)的GDI++,并非新的“氦”版。

GDI++的安装这里就不多讲了,下载文末附件里的自动安装版双击就自动安装好并设为开机自动加载了。GDI++的安装唯一要注意的一点是要尽量安装在靠 近系统核心的地方,即靠近system32文件夹的地方(附件中的自动安装版安装在windowssystem32GDI++目录下,以下内容也以此 文件夹为例。),虽然官方的文档并没有特别说明这一点,但根据网友使用的反馈来看安装在靠近核心的地方会相对较为稳定,不知道是什么原因。

GDI++的加载方式共有三种:第一种是手动将要渲染的程序拖到GDI++安装文件夹中的gdi++.exe上,这样这个程序的字体就被GDI++所渲染 了。第二种方法是先创建一个gditray.exe的快捷方式,然后把快捷方式中的目标部分改为C:WINDOWSsystem32gdi++gditray.exe "-on",即在原来目标的后面加个空格,然后是"-on"就可以了,把这个快捷方式放到开始菜单的启动文件夹里,这样开机的时候GDI++就会自动开始 渲染了。最后一种方法是注册表加载法,也是我最推崇的方法,将以下内容写入记事本:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows]

"AppInit_DLLs"="C:\WINDOWS\system32\GDI++\gdi++.dll"

并保存为GDI++.reg,双击导入即可。第一种是为临时想用用试试的人准备的,无法渲染系统字体。第二种是全局加载,即整个系统都会被 渲染,而且系统托盘中有图标,可以轻易地停用或者启用GDI++,随意地切换多个配置文件或者重新渲染。但由于启动文件夹的优先级较低,所以往往要到进入 桌面后才启动,桌面字体会经历一次由难看到清晰的转变,当然,在这之前弹出的所有对话框也不会被渲染。那为什么要推崇用注册表加载呢?注册表法也是属于全 局加载,但他的优先级极高,WindowsXP的“欢迎使用”界面还没出现它就已经加载了,而且稳定性相当好,当你配置文件已定,要准备进入长期使用的时 候这种方法是首选。不过缺点是这个键值也较为容易被病毒木马所利用,所以大部分杀毒软件都会对这个键值有监控,甚至没有任何提示直接阻止,像瑞星2008 那个LJ。而且更换配置文件或者修改配置后像查看效果较为不便,想查看效果需要重启的软件。

接下来讲GDI++配置文件的编写,这是我当前所用的Freetype版的配置文件:

[General]

;配置文件名

Name=fonlan

; 自动挂钩子进程

; [0:Disable] 1:Enable

HookChildProcesses=1

; 字体微调

;情况一,当FontLoader=0(在下面)时:

;0:使用字体内部的微调,字体内部没有微调的话就和选1时的效果一样;

;1:不使用微调;

;2:用freetype对字体进行微调。

;(注:1.下面的选了4或5的时候,就算是某个没有内部微调的字体,在此项设定为0时也还是会被应用微调;2.有内部微调的英文字体在下面的AntiAliasMode选择4或5时,推荐将此项设为0。)

;情况二,当FontLoader=1(在下面)时:0和2完全一样,其他同情况一。

HintingMode=2

; 抗锯齿方式,将此值设的过大的时候可能反而会变得五彩、看起来更费劲,GammaCorrection=1时无效。

; -1:Disable [0:Normal] 1:Light 2:LCD(RGB) 3:LCD(GBR) 4:Light-LCD(RGB) 5:Light-LCD(GBR)

AntiAliasMode=4

; 交付 gdi++ 处理的最大尺寸(单位为像素)

; 可调范围0~2147483647,0表示全尺寸

MaxHeight=300

;只有在FontLoader=0(在下面)时此项设置才有效。建议选0。

UseMapping=0

;字体链接

; 0:Disable 1:Enable

;当FontLoader=0(在下面)时:

;0:什么都不做;

;1:使用注册表里的字体链接设置;

;当FontLoader=1(在下面)时:

;会保持启用的状态,但是所有字体链接的处理会交由WIN32API完成。

FontLink=1

;字体替代

; 0:Disable 1:ini Only 2:ini+Registry

;当FontLoader=0(在下面)时:

;0:什么都不做;

;1:使用该设置文件最下面的设置;

;2:该设置文件最下面的设置和注册表里的设置一起启用。

;当FontLoader=1(在下面)时:

;会保持启用的状态,但是所有字体替代的处理会交由WIN32API完成

FontSubstitutes=2

;字宽设置

; 0:GDI32 1:FreeType

WidthMode=0

;字体载入方法

; 0:FreeType 1:WIN32

FontLoader=1

;粗体字的渲染方法(只对没有单独粗体字文件的字体有效)

; 0:New 1:Old 2:Original FreeType Algorithm

BolderMode=0

;Gamma模式开关

; -1 = Disabled 0 = Use "GammaValue" 1 = sRGB 2 = Aternative

GammaMode=0

;Gamma值(只有上面GammaMode=0的时候此项设置才有效。精确到小数点后一位。)

GammaValue=1.4

;字体轮廓

;数字越大字体就越粗越黑(当字体为黑色时,其他颜色时表现出来的是颜色越深)。精确到小数点后两位。

RenderWeight=1.5

;对比度

;数字越大越锐利,数字越小越发虚。精确到小数点后一位。

Contrast=1.5

;RGB三色全局设置

; 取值范围0~12,-1时无效

TextTuning=0

TextTuningR=-1

TextTuningG=-1

TextTuningB=-1

;字体粗细的单独调整,数字越大越粗,负数也有效,可以使字体更细。

NormalWeight=0

BoldWeight=4

;取值范围-16~+16

;字形为斜体时的倾斜加角

;可以设置字形为斜体时的倾斜加角。正数为右倾,负数为左倾。数字越大加角幅度越大。

;此项设置仅对没有单独斜体字形的字体有效。

ItalicSlant=0

;液晶显示器的优化配置

;0:None 1:Default 2:Light 16:Legacy

LcdFilter=2

;阴影设置

Shadow=1,1,6

;字体缓存、内存的设置

LoadOnDemand=1

CacheMaxFaces=32

CacheMaxSizes=32

CacheMaxBytes=10485760

;强制使用以下字体为系统界面字体

#ForceChangeFont=SIMSUN

[Individual]

;顺序格式=Hinting,AAMode,NormalWeight,BoldWeight,ItalicSlant,Kerning

Tahoma=1

MingLiU=1

PMingLiU=1

微软雅黑 = 3

Lucida Grande = 1

MS Shell Dlg = 1

MS Shell Dlg 2 = 1

[Exclude]

;不渲染的字体列表

FIXEDSYS

Marlett

[ExcludeModule]

;排除的程序列表(gdi++.dll依然会注入以下进程,但不会生效)

imejpmgr.exe

msdev.exe

devenv.exe

winlogon.exe

fontview.exe

SREngPS.EXE

cstrike.exe

xdict.exe

CppIDE.exe

nvsvc32.exe

services.exe

csrss.exe

lsass.exe

svchost.exe

wmiprvse.exe

Safari.exe

spoolsv.exe

ctfmon.exe

scardsvr.exe

conime.exe

SynTPEnh.exe

RTHDCPL.exe

smss.exe

agrsmsvc.exe

oobechk.exe

jqs.exe

[FontSubstitutes]

;字体替换

Microsoft Sans Serif=SimSun

System=SimSun

在实际的调校过程中主要就是GammaValue、RenderWeight、Contrast和Shadow这四个参数最为重要,他直接决定了Freetype版GDI++在你的电脑上的表现,而我们的微调也主要是调这几个参数。

---------------------------------------很重要的,不得不看---------------------------------------

下面我来说说使用GDI++过程中的一些需要注意的地方:GDI++,尤其是Freetype版,虽然字体渲染效果较为出色,但兼容性较差,和很多软件都有兼容性问题。首 先和IE的兼容性问题就不小,使用IE内核的浏览器时,遨游和遨游2开启后进入选项没多久就程序崩溃,世界之窗可以正常运行,但主界面菜单字体会变得比较 大(这点其实可以通过把配置文件中的FontLink值改为0来修正),但可以在设置中制定主界面所用字体及字 号。Firefox和Opera与GDI++完全兼容。所以在GDI++环境下浏览器最好选择非IE内核的,如果一 定要使用IE内核建议使用世界之窗2.0。

GDI++和魔兽世界的小地图有冲突,因为魔兽的字体也使用了同样的字体渲染方式。解决方法是使用gditray加载方式,在启动魔兽世界之前关闭GDI++渲染即可。

还有一个比较严重的问题是QQ比较容易崩溃,操作的时候一不小心QQ可能就崩溃了,解决的方法要么把QQ加入GDI++的排除列表,要么把 FontLoad改为1,但全局渲染效果会变差,要么就小心使用,忍受这颗不定时的炸弹,但最彻底的解决方案还是使用氦版的GDI++,QQ不会出现崩溃的情况。

GDI++对迅雷的支持也有限,虽然不会造成迅雷的崩溃,但迅雷一旦开始下载,GDI++便无法渲染迅雷的界面了,不知是什么原因。

GDI++工作的方式是注入到所有正在运行的进程下,拦截所有原本由系统的gdi32完成的字体渲染工作。这两个行为都是极有可能被杀毒软件所误报的,所 以请务必把gdi++添加到杀毒软件的可信任程序列表,否则他是无法工作的。还有通过注册表全局加载的时候,由于使用的是 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows项下的AppInit_DLLs来实现开机自动加载,但由于这个键也是病毒木马常用的启动项,所以几 乎所有的安全软件都会对这个键有所监控,请在安装前先关闭安全软件,否则可能出现无法导入注册表的情况。

GDI++的配置文件有两种放法:一种是把配置文件直接保存成gdi++.ini,放在GDI++的安装目录下,优点是目录结构简单、清晰,建议使用注册 表全局渲染时使用。缺点是只能使用一种配置文件,使用Gditray加载时无法在右键中切换配置。另一种方法是在GDI++的安装文件夹中新建一个名为 ini的文件夹,将所有的配置文件放在此文件夹下,然后GDI++安装文件夹下的gdi++.ini按如下格式编写:

[General]

AlternativeFile=.ini蓝枫冰月.ini

[GdiTray]

MultiINISelector=1

RedrawDelay=50

CoolMenu=1

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有