
GDI++ 是一款日本人设计的字体渲染引擎,能使文字显示得更清晰、更有立体感。
下载后解压缩到任意路径,运行其中的gditray.exe,然后就可以在任务栏中进行各种操作。
比如:你可以直接将IE或者Firefox的快捷方式拖放到GDI++.exe上面就可以体验GDI++的强大了。
详细的说明(有点长了,慢慢看):
简介
把gdi++.dll 的核心引擎(预定取名为“氦/Helium”)フルスクラッチ/Full scratch了——意思不明,请高手指点——70599。
举个例子(下面几项技术含量太高,翻译的相当模棱两可)
* 在SourceMonitor(资源查看器?) 里面 Max Complexity 为30以下。
* 不再使用 FreeType 的内置缓存,降低了内存消耗量。
* 在 FontStream 中使用 MS PGothic(windows里的默认日文字体)等等的粗体和斜体的模拟字体(MS PGothic 不像雅黑/ Tahoma 等等,没有单独的粗体/斜体字体文件)。
* 仅挂钩文字描绘需要的API,其他的直接使用 gdi(这个指的应该是Windows自己的gdi32)的运算结果。
通过使用 Uniscribe ,字体链接/FontLink 的功能他力本愿* 地借助 Win32 的机能来完成。
*注解 - 他力本愿:这是一个日语成语(其实日语里成语也好多的),大致意思是“依靠别人来完成的成就”。本愿一词源自佛教,他力本愿用佛教里本愿的意思来解释就是 “不靠自己的修行,靠阿弥陀佛的本愿之力来成佛”。作者的意思大概是“虽然可以通过配置文件来自定义字体链接,但其实用的都是 Windows 本身自带功能”。
——为的是大家阅读方便,有什么说的不对的地方还请大家海涵/指正。——70599
增强稳定性。
マルチスレッドからの非同期アクセスに耐え得るよう全オブジェクトに参照カウンタを付けている——这句完全看不懂了——70599。
最低运行环境
* Windows 2000 SP4、Windows XP SP2
o 仅在 Windows 2000 SP4 Pro、Windows XP SP2 Home 确认过正常运行。
o 除此之外的 OS 、Service Pack 上既没测试过运行,也无法通过原理推断(保证)可以运行。
o 在一部分 OS 的初始状态下会出错。请参阅「部分 OS 上发生的问题」(附件)。
对应 SSE2 的 CPU
可以在 Pentium 4、Pentium M、Athlon64、etc...或更高的 CPU 下运行。
不对应 SSE2 的 CPU 可以使用 gdi0787 或者 gdi0789 (其中的 SSE 版) ,个人比较推荐gdi0577(P6 版) 。
差不多的内存
比以前的版本节省更多内存
但是通过使用 gdippManager 或 gditray 进行全局渲染的,推荐配备 512MB 或更高的内存 。
请在 Firefox 或 Opera 下使用本说明书。
IE 核心下有可能出现缺损、错位或显示不完整的现象。
INI 的配置方法
今后的版本不再一并打包 INI 了,请参考下面的说明,自己配置好以后重命名为 gdi++.ini 使用。
代码:
[General]
; 自动挂钩子进程
; [0:Disable] 1:Enable
HookChildProcesses=1
[Rasterize]
; 字体微调
; 0:NoHinting [1:Normal] 2:AutoHinting 3:Light+AutoHinting
HintingMode=2
; 抗锯齿方式
; 0:Disable [1:Grayscale] 2:SubPixel(RGB) 3:SubPixel(BGR)
AntiAliasMode=2
; 常规体调整(加粗或减细)
; -32:+32
NormalWeight=4
; 粗体字的调整(加粗或减细)
; -16:+16
BoldWeight=2
; 斜体字的倾斜角度微调
; -16:+16
ItalicSlant=0
; 字体颜色深浅
; -32:+32
Saturation=0
[Misc]
; 交付 gdi++ 处理的最大尺寸(单位为像素)
; 0-2147483647
MaxHeight=72
; Gamma 开关
; [0:Disable] 1:Enable
GammaCorrection=0
; α修正值
; 0-16
Interpolation=0
; 竖向书写开关
; [0:Disable] 1:Enable
VerticalText=0
; 模块优先度列表
; [0:Deny] 1:Allow 2:Allow->Deny
ModuleListOrder=2
[FreeType]
; 液晶显示器的优化配置
; [0:None] 1:Default 2:Light 16:Legacy
LcdFilter=1
; 检查 FreeType 的版本
; [0:Check] 1:Skip
SkipVersionCheck=0
[Cache]
; 缓存
MaxFamilies=8
MaxStyles=12
MaxBytes=8388608
[Individual]
; 单独设置的字体
; 格式: FontName=Hinting,AAMode,NormalWeight,BoldWeight,ItalicSlant,Saturation
Tahoma=0
MS UI Gothic=,,-5
M+2P+IPAG=2
[FontLink]
; 字体链接
; 格式: FontName=Name1,Name2,Name3, ... (Max:16)
Tahoma = MS UI Gothic, SimSun, PMingLiU
MS UI Gothic = SimSun, PMingLiU
Microsoft Sans Serif = MS UI Gothic
[FontOverride]
; 字体替换
; 格式: FontName=Name
;MS Sans Serif = Tahoma
[Exclude]
; 除外的字体(不用氦渲染的字体)
Marlett
[AllowModule]
; 许可模块列表
firefox.exe
[DenyModule]
; 据否模块列表
hogehook.dll
[UnloadDLL]
; 不想载入的进程
Gamma 处理
Gamma 被固定在相当于旧版本中 2.0 的数值。
固定为 2.0 节省了大量的计算,而且 Mac 和 Win 的平均值也是差不多 2.0 ,所以觉得这样就可以了。
配合调整 Saturation 的话应该可以解决黑底白字时不清晰的问题。
运行方式为一像素单位处理+浮点小数变换,所以 off 的时候字体描绘更慢。
α值修正
通过背景色修正α通道的值。背景色越暗,辅助效果越明显。
按 R,G,B 的顺序设置数值。
格式为
o Interpolation=6,5,8 (R=6, G=5, B=8 )
o Interpolation=4 (R=4, G=4, B=4 )
o Interpolation=0 (off)
以此类推。
与 Gamma 修正不同,白底黑字的时候字体也不会变淡。
但是,AntiAliasMode(抗锯齿方式)设为液晶专用的状态下将此值设的过大的时候可能反而会变得五彩、看起来更费劲。
GammaCorrection=1 时(Gamma 打开时)此项设置无效。(优先处理 Gamma)
追加:这里我配图说明。通过图里的“保存 Ctrl+S”大家可以很明显地看出此值设为0(关闭)时和设为14时的区别。——70599
1.png[谁下载了此文件?]
竖向书写
此项值开启时会单独载入 GSUB 和 cmap ,不但字体读取速度会减慢,内存消耗量也会上升。
此功能和字体、系统环境的兼容性一般。基本上就是“显示出字来了!Lucky!”这么个几率。
无特殊要求的话推荐关闭。打开此功能的人也别向别人推荐。
现在也就是通过在字体名前面加个 @ 来把字体竖起来,还做不到支持字体竖向排列。(基本上是个废功能...——70599)
跳过 Freetype 版本检测
调试用。
不是所有版本的 FreeType 都和本程序兼容,所以此项设定最好别碰。
这个版本里设定为跳过也会被无视(无法真正跳过 Freetype 版本的检测)。
缓存
MaxFamilies
缓存指定数量的字体家族。
粗体或斜体也被算作是同一个字体。
MaxStyles
缓存指定数量的字体子风格。
这里说的子风格就是粗体、斜体、尺寸。
MaxBytes
ラスタライズ済みのビットマップデータをキャッシュする容量の閾値(不知道该怎么翻译...——70599)。
比上两项设定优先度高。
比如 AntiAliasMode(抗锯齿模式)设为液晶用时会消耗三倍的内存。
(不要被这个三倍吸引了注意力,这项规则在老版里也是一样的,综合算下来新版也还是比老版节省很多内存——70599)
字体链接
和注册表里的设定方法不同。
当然 Individual(字体单独设置)也是有效的。
gdi++ 本身不会理会注册表里的设定,但是 Uniscribe 应该是一定程度上参考注册表的,所以不把 gdi++ 和注册表设定统一的话有可能出问题。
字体替代
* 就是把原来的 ForceChangeFont(强制替换字体)变成单独有效的功能。
试着做出来了,但是基本没什么用。
模块列表
不是进程名。
ModuleListOrder 可以选择下面三种套路。
o 0: 只使用 Deny
o 1: 只使用 Allow
o 2: 使用 Allow 的同时使用 Deny
本模板的状态下就是载入了 hogehook.dll 的进程不使用 gdi++ ,但是 firefox.exe 可以例外地使用gdi++。
不想载入的进程
写在这里的进程无法载入 gdi++.dll,
通过 gdi++.exe 启动也不会应用 gdi++。
下载:gdi0859.zip
