mactype icon indicating copy to clipboard operation
mactype copied to clipboard

部分字词未由MacType替换/渲染、显示不正常

Open KinComet opened this issue 2 years ago • 4 comments

简述

如图: image

配置文件

MyName.ini
[General]
Name=MyName
Icon=..\mactray.exe,012

HookChildProcesses=1
; 【应用到子进程】——比如你用启动方法1启动了一个winrar,双击里面的一个文本文档,那么下一步被打开的“记事本”程序也会使用gdi++渲染。
; 0:禁用;
; 1:启用。

HintingMode=0
; 0:Normal 1:NoHinting 2:AutoHinting 3:Light+AutoHinting
; 【字体微调】——对字体进行细微调整,以实现比较锐利、不模糊的效果。windows的cleartype就是用的这类技术,弊端是会使字体变形、笔画粘在一起。

; 下面会有两种情况:
; 情况一,当FontLoader=0(在下面)时:
; 0:使用字体内部的微调,字体内部没有微调的话就和选1时的效果一样;
; 1:不使用微调;
; 2:用freetype对字体进行微调。
; (注:1.下面的选了4或5的时候,就算是某个没有内部微调的字体,在此项设定为0时也还是会被应用微调;2.有内部微调的英文字体在下面的AntiAliasMode选择4或5时,推荐将此项设为0。)
; 情况二,当FontLoader=1(在下面)时:
; 0和2完全一样,其他同情况一。

AntiAliasMode=4
; 【抗锯齿模式】
; -1:禁用;
; 0:普通的灰阶渲染;
; 1:Light模式,由freetype的Reference来渲染;
; 2、3:RGB/GBR24位色渲染,转为液晶优化(电浆显示器也能用),2和3的区别在于红绿蓝的排列不同;
; 4、5:就是Light模式下的RGB/GBR24位色渲染,最近版本才加入的新功能,推荐使用!4和5的区别在于红绿蓝的排列不同。


LcdFilter=1
;液晶屏优化,0:None 1:Default 2:Light 16:Legacy

FontLoader=0
; 【字体的载入方法(注意是载入方法,不是渲染方法)】——上面反复提到的一个设置。
; 0:用freetype载入字体;
; 1:用windows的绘图核心载入字体。
; 很多freetype的设置需要此项选0才能生效。

FontLink=1
; 【字体链接】——当FontLoader=0(在下面)时:
; 0:什么都不做;
; 1:使用注册表里的字体链接设置;
; ——当FontLoader=1(在下面)时:
; 会保持启用的状态,但是所有字体链接的处理会交由WIN32API完成。
; 小贴士:字体链接:估计很多朋友都很熟悉了,windows里处理字体的一种技术。拿注册表里的默认设置举个例子,打开注册表的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\FontLink\SystemLink”会发现英文字体Tahoma里链接了一些字体,里面有一些是非英文字体,结果就是系统在调用Tahoma时,遇到Tahoma里没有的字符时就会到被链接的字体里去找。

FontSubstitutes=1
; 【字体替代】——当FontLoader=0(在下面)时:
; 0:什么都不做;
; 1:使用该设置文件最下面的设置;
; 2:该设置文件最下面的设置和注册表里的设置一起启用。
; 当FontLoader=1(在下面)时:会保持启用的状态,但是所有字体替代的处理会交由WIN32API完成

WidthMode=0
; 【字体排列】——字宽设置。
; 0:交还给gdi32.dll处理,有可能出现字体行距过小或者过大的不整齐的现象;
; 1:使用由freetype计算出来的宽度来排列字体,虽然会更美观一些,但是某些程序下可能出现混乱。

BolderMode=0
; 【粗体字的渲染方法】——对象字体是没有单独粗体字文件的字体,有单独粗体字文件的字体(如微软雅黑)此项设置不会生效。
; 0:使用gdi0440以后版本的渲染方式;
; 1:使用gdi0424以前版本的渲染方式;
; 2:使用gdi0347以前版本的渲染方式,也就是freetype本身的粗体渲染。

UseMapping=0
; 【只有在FontLoader=0(在下面)时此项设置才有效。建议选0,选1会占用大量内存,也没看出有什么好处。】

LoadOnDemand=0
RenderSize=10
MaxHeight=120
; 【让freetype处理的最大的字体尺寸,单位是像素,0的话就是全尺寸。】

TextTuning=-1
TextTuningR=3
TextTuningG=3
TextTuningB=3
; 【文字边界设置】——-1时无效(0也是有效的)。TextTuning是RGB三色全局设置,TextTuningR、TextTuningG、TextTuningB是单独设置RGB三色。数字越大越强调背景(类似文字边界被侵蚀的感觉),强调背景会有中字体锐利的感觉。适当降低对比度,提高TextTuning,可以使文字周围的颜色看起来”淡一点“(比如在某些设置下,明明是黑色的字体,看起来却像是”五彩“的)。再加上RenderWeight,把这三个设置的微妙平衡调节好的话,能得到不输给Mac的效果。

CacheMaxFaces=16
CacheMaxSizes=32
CacheMaxBytes=8388608
; 【字体缓存、内存的设置】——同样的设置在不同的机器上效果完全不同,所以没有什么“最合理的设置”。适当设置的话能减少内存占用(当然再怎么少也少不过不用gdi++),并提高gdi++引擎的稳定性。
; 较低配置的机器请不要把LoadOnDemand设为1,有死机的危险。

NormalWeight=2
BoldWeight=1
; 【字体粗细的单独调整】——可以单独设置常规(NormalWeight)、粗体(BoldWeight)状态下的粗细。数字越大越粗,负数也有效,可以使字体更细。

ItalicSlant=0
; 【字形为斜体时的倾斜加角】——可以设置字形为斜体时的倾斜加角。正数为右倾,负数为左倾。数字越大加角幅度越大。此项设置仅对没有单独斜体字形的字体有效。

;Shadow=1,1,9
;字体阴影设置

GammaMode=0
; 【Gamma模式开关】
; -1:关闭;
; 0:使用设置的Gamma值(GammaValue);
; 1:使用sRGB的Gamma值;
; 2:不明

GammaValue=1.2
; 【Gamma值】——只有上面GammaMode=0的时候此项设置才有效。设置的数值可以精确到小数点后面一位。
; *注:windows的cleartype的Gamma值是1.4。

RenderWeight=1.7
; 【字体轮廓】——数字越大字体就越粗越黑(当字体为黑色时,其他颜色时表现出来的是颜色越深)。设置的数值可以精确到小数点后面两位。

Contrast=1.4
EnableKerning=0
Shadow=1,1,0,0x0,0,0x0
MaxBitmap=0
DirectWrite=1
HintSmallFont=0
; 【对比度】——数字越大越锐利,数字越小越发虚。设置的数值可以精确到小数点后面一位。

;单独设置字体格式,=Hinting,AAMode,NormalWeight,BoldWeight,ItalicSlant,Kerning

;除外的字体


[ExcludeModule]
;【除外的程序】——这里设置的程序不使用gdi++渲染。句首加#的行将被注释掉,不会起作用。
fontview.exe


;格式

[Experimental]
ArmBreaker=1

[[email protected]]
ClipBoxFix=1

[UnloadDll]
[exclude]
[FontSubstitutes]
Microsoft JhengHei=Sarasa Gothic SC
Microsoft JhengHei Light=Sarasa Gothic SC Light
Microsoft JhengHei UI=Sarasa UI SC
Microsoft JhengHei UI Light=Sarasa UI SC Light
Microsoft YaHei=Sarasa Gothic SC
Microsoft YaHei Light=Sarasa Gothic SC Light
Microsoft YaHei UI=Sarasa UI SC
Microsoft YaHei UI Light=Sarasa UI SC
Malgun Gothic=Sarasa Gothic SC
SimSun=Sarasa Gothic SC
NSimSun=Sarasa Gothic SC
Tahoma=Sarasa Gothic SC
PMingLiu=Sarasa Gothic SC
Arial=Sarasa Gothic SC
@Microsoft JhengHei=@Sarasa Gothic SC
@Microsoft JhengHei Light=@Sarasa Gothic SC Light
@Microsoft JhengHei UI=@Sarasa UI SC
@Microsoft JhengHei UI Light=@Sarasa UI SC Light
@Microsoft YaHei=@Sarasa Gothic SC
@Microsoft YaHei Light=@Sarasa Gothic SC Light
@Microsoft YaHei UI=@Sarasa UI SC
@Microsoft YaHei UI Light=@Sarasa UI SC Light
@SimSun=@Sarasa Gothic SC
@NSimSun=@Sarasa Gothic SC
[Individual]
[ExcludeSub]
POWERPNT.EXE
WINWORD.EXE
[DirectWrite]

KinComet avatar Nov 23 '22 11:11 KinComet

你替换的字体是一种不完整的字体,例如尝试使用中文字体显示日文或者用日文字体显示中文都会出现这种情况。 在一种对CJK支持不完整的字体中,某些文字是缺失的,例如很多中文字体无法显示日文的“丼”,这时候Windows会使用fontlink技术,使用替代字体来显示那个文字,这时候你就看到字体不一致的问题了

snowie2000 avatar Jan 11 '23 02:01 snowie2000

你替换的字体是一种不完整的字体,例如尝试使用中文字体显示日文或者用日文字体显示中文都会出现这种情况。 在一种对CJK支持不完整的字体中,某些文字是缺失的,例如很多中文字体无法显示日文的“丼”,这时候Windows会使用fontlink技术,使用替代字体来显示那个文字,这时候你就看到字体不一致的问题了

奇怪的是,我没有用fontlink解决,添加了其它的字体替换就解决了

Fixed ini
Malgun Gothic=Sarasa Gothic SC
SimSun=Sarasa Gothic SC
SimSun-ExtB=Sarasa Gothic SC
NSimSun=Sarasa Gothic SC
Times New Roman=Sarasa Gothic SC
Sans Serif Collection=Sarasa Gothic SC
Tahoma=Sarasa Gothic SC
PMingLiU=Sarasa Gothic SC
MingLiU=Sarasa Gothic SC
PMingLiU-ExtB=Sarasa Gothic SC
MingLiU-ExtB=Sarasa Gothic SC
MingLiU_HKSCS-ExtB=Sarasa Gothic SC
MS UI Gothic=Sarasa UI SC
MS PGothic=Sarasa Gothic SC
MS Gothic=Sarasa Gothic SC
@MS Gothic=Sarasa Gothic SC
@MS PGothic=Sarasa Gothic SC
Segoe UI=Sarasa UI SC
Segoe UI Symbol=Sarasa UI SC
Segoe UI Light=Sarasa UI SC Light
Segoe UI Semilight=Sarasa UI SC Light
Segoe UI Semibold=Sarasa UI SC Semibold
Segoe UI Black=Sarasa UI SC SemiBold
PMingLiu=Sarasa Gothic SC
Motiva Sans=Sarasa Gothic SC
Arial=Sarasa Gothic SC
Arial Black=Sarasa Gothic SC
Arial Narrow=Sarasa Mono SC
Malgun Gothic=Sarasa Gothic SC
Malgun Gothic Semilight=Sarasa UI SC Light
@Malgun Gothic=Sarasa Gothic SC
@Malgun Gothic Semilight=Sarasa UI SC Light
Yu Gothic=Sarasa Gothic SC
Yu Gothic UI=Sarasa UI SC
Yu Gothic UI Semilight=Sarasa UI SC Light
@Yu Gothic=Sarasa Gothic SC
@Yu Gothic UI=Sarasa UI SC
@Yu Gothic UI Semilight=Sarasa UI SC Light
@Microsoft JhengHei=@Sarasa Gothic TC
@Microsoft JhengHei Light=@Sarasa Gothic TC Light
@Microsoft JhengHei UI=@Sarasa UI TC
@Microsoft JhengHei UI Light=@Sarasa UI TC Light
@Microsoft YaHei=@Sarasa Gothic SC
@Microsoft YaHei Light=@Sarasa Gothic SC Light
@Microsoft YaHei UI=@Sarasa UI SC
@Microsoft YaHei UI Light=@Sarasa UI SC Light
@SimSun=@Sarasa Gothic SC
@NSimSun=@Sarasa Gothic SC

KinComet avatar Jan 13 '23 17:01 KinComet

很简单,fontlink就是用B字体来显示A字体中缺少的文字,你把ab全替换了自然就解决了。。。。

snowie2000 avatar Jan 14 '23 01:01 snowie2000

很简单,fontlink就是用B字体来显示A字体中缺少的文字,你把ab全替换了自然就解决了。。。。

噢,不过我都是替换成同个字体,为什么替换A字体时会缺少,回滚到B字体,但是B字体替换又不缺少呢...

KinComet avatar Jan 14 '23 10:01 KinComet