snowie2000 / mactype

Better font rendering for Windows.
https://mactype.net
GNU General Public License v3.0
9.92k stars 441 forks source link

为何微信中FontSubstitutes替换雅黑后字体会直接失去所有渲染呢? #976

Closed rebron1900 closed 5 months ago

rebron1900 commented 8 months ago

如果热替换雅黑为其他字体,在微信中输入框位置的文字会变成没有任何渲染效果的状态。 如果不替换雅黑则可以正常渲染。

image

我的配置文件如下:

[Preview]
Font=Maple UI
Color=$990088
Text=The quick brown fox jumps over the lazy dog 天地玄黄宇宙洪荒日月盈仄辰宿列张
Size=12
Align=Center

[General]
Name=SFPro-PingFang

;【自动挂钩子进程】
;[0:Disable]  1:Enable
HookChildProcesses=1

;【字体微调】
;0:Normal 1:NoHinting 2:AutoHinting 3:Light+AutoHinting
HintingMode=1

;【抗锯齿方式】 ◆◆
;-1:Disable 0:Normal 1:Light 2:LCD(RGB) 3:LCD(GBR) 4:Light-LCD(RGB) 5:Light-LCD(GBR)
AntiAliasMode=2

;【常规体调整】
;-32:+32
NormalWeight=24

;【粗体字的调整】
;-16:+16
BoldWeight=-6

;【斜体字的倾斜角度微调】
;-16:+16
ItalicSlant=0

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

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

;【Gamma值】 ◆◆
;GammaMode=0的时候此项设置才有效
;Windows的ClearType的Gamma值是1.4
;OSX标准级Gamma值是1.8,电视级Gamma值是2.2
GammaValue=1.3

;【对比度】 ◆◆
;数字越大越锐利,数字越小越发虚
Contrast=1.47

;【字体轮廓】 ◆◆
;数字越大字体就越粗越黑
RenderWeight=1.3

;【文字边界设置】
;数字越大越强调背景(类似文字边界被侵蚀的感觉),强调背景会有中字体锐利的感觉。适当降低对比度,提高TextTuning,可以使文字周围的颜色看起来“淡一点”
;再加上RenderWeight,把这三个设置的微妙平衡调节好的话,能得到不输给Mac的效果
;取值范围:0~12

;当AntiAliasMode=1时,通过TextTuning分量来调节
TextTuning=2
;当AntiAliasMode=2时,通过TextTuningR/G/B三个分量来调节
TextTuningR=2
TextTuningG=2
TextTuningB=2

;【字体加粗模式】
;对NormalWeight和BoldWeight有效
;0:Weight值大时横向加粗,值小时双向加粗,主要是避免Weight值过大时,模式3中在小字号时加粗过度出现斩头的现象;
;1:总是横向加粗;
;2:总是双向加粗,也就是freetype本身的粗体渲染。
;注意:通过加大GammaValue、TextTuning的值,可以减少Weight值过大的造成的效果问题,即可以在BolderMode=2时也可以避免斩头
BolderMode=0

;【字体的加载方法】
;(注意是加载方法,不是渲染方法)
;0:用freetype加载字体
;1:用windows的绘图核心加载字体
;很多freetype的设置需要此项选0才能生效
FontLoader=0

;【字体链接】
;当FontLoader=0时
;0:什么都不做;
;1:使用注册表里的字体链接设置,通过FreeType的字符表进行查找
;2:使用注册表里的字体链接设置,使用Windows的转换函数直接查找
;当FontLoader=1时
;会保持启用的状态,但是所有字体链接的处理会交由WIN32API完成。
FontLink=1

;【字体替代】
;当FontLoader=0时
;0:什么都不做;
;1:安全替换方案(兼容性较好),根据以下FontSubstitutes的配置进行替换;
;2:完全替换方案(效果较全面,如替换后出现乱码,请尝试使用1),根据以下FontSubstitutes的配置进行替换;
;当FontLoader=1时
;会保持启用的状态,但是所有字体替代的处理会交由WIN32API完成
FontSubstitutes=1

;【让freetype处理的最大的字体尺寸,单位是像素,0的话就是全尺寸】
;交付 gdi++ 处理的最大尺寸(单位为像素)
;0-2147483647
MaxHeight=0

;【阴影设置】
;格式:水平偏移,垂直偏移,阴影深度(值越大,越浅)
Shadow=1,1,60,FFFFFF,35,000000

;【液晶显示器的优化配置】
;[0:None]  1:Default  2:Light  16:Legacy
LcdFilter=2

;【微调LcdFilterWeight】
;LcdFilter>0,且AntiAliasMode>-1时,该微调才生效
;这5个值分别代表文字笔划中从左到右的笔划浓度,最小为0,最大为255
;注释掉这个参数则恢复使用
LcdFilterWeight=8,77,86,77,8

;【字体缓存、内存的设置】
LoadOnDemand=1
CacheMaxFaces=256
CacheMaxSizes=33554432
CacheMaxBytes=67108864
EnableKerning=1

;【强制使用某一个字体】
;无视所有其他字体,全系统的字体都会被这里设置的字体代替
;ForceChangeFont=华文中宋

;【优先使用点阵】 ◆◆
;小于指定字号的文字将优先使用内嵌点阵
MaxBitmap=12

;【强制对小字体使用Hinting】 ◆◆
;对9号以下字体自动施加Hinting,使小字体更清晰
;此参数仅在AntiAliasMode=1、4、5时有效
;0:关闭,1:开启。默认开启
HintSmallFont=1

;【对硬件加速的渲染支持】
;对使用DirectWrite作为硬件加速技术的软件(如IE和firefox的硬件加速)提供渲染支持开关
;0:关闭,1:开启。默认开启
DirectWrite=1

[DirectWrite]
;渲染模式,0=默认,1=锯齿,2=经典,3=经典自然,4=自然,5=自然对称,6=字体原型
RenderingMode=5
;Gamma值,不写则根据上面的GammaValue自动计算
GammaValue=2
;对比度,默认为1
Contrast=1.234
;抗锯齿程度,默认1
ClearTypeLevel=1.0

[Experimental]
ColorFont=1

[Experimental@Firefox.exe]
InvertColor=1

[Experimental@edge.exe]
InvertColor=1

[Experimental@chrome.exe]
InvertColor=1

[Experimental@code.exe]
ClipBoxFix=1

[Experimental@devenv.exe]
ClipBoxFix=1

[Experimental@studio64.exe]
ClipBoxFix=1

[FontSubstitutes@devenv.exe]
Tahoma=Maple UI
Calibri=Maple UI

[FontSubstitutes@code.exe]
Tahoma=Maple UI
Calibri=Maple UI

[ExcludeModule]
;【不渲染的程序,但仍会加载DLL】

[Exclude]
;【除外的字体】,会与MacType.ini中的同名配置共同生效

[FontSubstitutes]
;【字体替代】
;系统在调用“=”前面的字体时会忽视“=”前面的字体,而去直接调用“=”后面的字体
Arial=Maple UI
Arial Black=Maple UI
Arial Narrow=Maple UI
Arial Unicode MS=Maple UI
acumin-pro=Maple UI
Calibri=Maple UI
Calibri Light=Maple UI
Courier=Maple UI
Courier New=Maple UI
Helv=Maple UI
Helvetica=Maple UI
Helvetica Neue=Maple UI
Helvetica Neue LT Std=Maple UI
Heiti SC=Maple UI
Heiti TC=Maple UI
Hiragino Sans GB=Maple UI
MS Sans Serif=Maple UI
MS Serif=Maple UI
MS Shell Dlg=Maple UI
MS Shell Dlg 2=Maple UI
sans=Maple UI
Sans Serif=Maple UI
sans serif=Maple UI
Sans-Serif=Maple UI
sans-serif=Maple UI
Segoe UI=Maple UI
segoe UI=Maple UI
segoe ui=Maple UI
Segoe=Maple UI
segoe=Maple UI
SEGOEUISL=Maple UI
serif=Maple UI
system-ui=Maple UI
System-UI=Maple UI

SimSun=Maple UI
NSimSun=Maple UI
SimSun-ExtB=Maple UI
FangSong=Maple UI
KaiTi=Maple UI

;Microsoft Yahei=Maple UI
Microsoft Yahei UI=Maple UI
DengXian=Maple UI

XXX=Maple UI
XXX Bold=Maple UI Bold
XXX Mono=Maple Code Vivid
XXX Mono Bold=Maple Code Vivid
XXX SimSun=Maple UI
XXX NSimSun=Maple UI

Lucida Grande=Maple UI
Lucida Sans Unicode=Maple UI
Fixedsys=Maple UI

Segoe UI Variable=Maple UI
Segoe UI Variable Small Light=Maple UI
Segoe UI Variable Small Semilight=Maple UI
Segoe UI Variable Small=Maple UI
Segoe UI Variable Small Semibold=Maple UI
Segoe UI Variable Small Bold=Maple UI Bold
Segoe UI Variable Text Light=Maple UI
Segoe UI Variable Text Semilight=Maple UI
Segoe UI Variable Text=Maple UI
Segoe UI Variable Text Semibold=Maple UI
Segoe UI Variable Text Bold=Maple UI Bold
Segoe UI Variable Display Light=Maple UI
Segoe UI Variable Display Semilight=Maple UI
Segoe UI Variable Display=Maple UI
Segoe UI Variable Display Semibold=Maple UI
Segoe UI Variable Display Bold=Maple UI Bold

[Individual]
;格式=Hinting, AAMode, NormalWeight, BoldWeight, ItalicSlant, Kerning
Times New Roman=,,10,0,,
Segoe UI=,,10,0,,
Tahoma=,,10,0,,

[UnloadDll]

[ExcludeSub]
chrome.exe
digiant commented 8 months ago

微信PC新版本用的skia渲染了,很垃圾,不支持mactype渲染了,可以用老版本。

rebron1900 commented 8 months ago

微信PC新版本用的skia渲染了,很垃圾,不支持mactype渲染了,可以用老版本。

我用的就是支持GDI的老版本,不替换雅黑的话是能渲染上的

wpv-chan commented 7 months ago

微信PC新版本用的skia渲染了,很垃圾,不支持mactype渲染了,可以用老版本。

请教一下是从哪一个版本开始更换为skia渲染的呢

rebron1900 commented 7 months ago

微信PC新版本用的skia渲染了,很垃圾,不支持mactype渲染了,可以用老版本。

请教一下是从哪一个版本开始更换为skia渲染的呢

我目前用的3.8.1.26

rickblue commented 5 months ago

image

rebron1900 commented 5 months ago

image

可以分享一下配置文件吗。

rickblue commented 5 months ago

我配置文件搞得乱起八糟就不贴了,主要配置跟你差不多:https://github.com/snowie2000/mactype/issues/971#issuecomment-2067661786 另外建议关闭secure boot试试。

rebron1900 commented 5 months ago

我配置文件搞得乱起八糟就不贴了,主要配置跟你差不多:#971 (comment) 另外建议关闭secure boot试试。

谢谢,解决了大部分问题。

另外,不要大量替换字体,否则微信字体渲染会出问题。

我目前的配置:

; ----------------------------------------------------------------------
; XMac
; (Only for MacType, NOT SUPPORT THE OLD VERSION OF GDI++/HE)
;
; maxchow@qq.com
; QQ Group: 18988755
; ----------------------------------------------------------------------

[Preview]
Font=XHei iOS
Color=$990088
Text=卍 HotShift →XHei.iOS
Size=11
Align=Center

[General]
Name=iOS - Maple
Icon=XMac\XMac.ico,0

;【自动挂钩子进程】
;[0:Disable]  1:Enable
HookChildProcesses=1
hintsmallfont=0
;【字体微调】
;0:Normal 1:NoHinting 2:AutoHinting 3:Light+AutoHinting
HintingMode=1

;【抗锯齿方式】
;-1:Disable 0:Normal 1:Light 2:LCD(RGB) 3:LCD(GBR) 4:Light-LCD(RGB) 5:Light-LCD(GBR)
AntiAliasMode=4

;【常规体调整】
;-32:+32
NormalWeight=14

;【粗体字的调整】
;-16:+16
BoldWeight=2
directwrite=1
;【斜体字的倾斜角度微调】
;-16:+16
ItalicSlant=0

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

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

;【Gamma值】
;GammaMode=0的时候此项设置才有效
;Windows的ClearType的Gamma值是1.4
;OSX标准级Gamma值是1.8,电视级Gamma值是2.2
GammaValue=1.4

;【对比度】
;数字越大越锐利,数字越小越发虚
Contrast=1.2

;【字体轮廓】
;数字越大字体就越粗越黑
RenderWeight=1.0

;【文字边界设置】
;数字越大越强调背景(类似文字边界被侵蚀的感觉),强调背景会有中字体锐利的感觉。适当降低对比度,提高TextTuning,可以使文字周围的颜色看起来“淡一点”
;再加上RenderWeight,把这三个设置的微妙平衡调节好的话,能得到不输给Mac的效果
;取值范围:0~12

;当AntiAliasMode=1时,通过TextTuning分量来调节
TextTuning=0
;当AntiAliasMode=2时,通过TextTuningR/G/B三个分量来调节
TextTuningR=0
TextTuningG=0
TextTuningB=0

;【字体加粗模式】
;对NormalWeight和BoldWeight有效
;0:Weight值大时横向加粗,值小时双向加粗,主要是避免Weight值过大时,模式3中在小字号时加粗过度出现斩头的现象;
;1:总是横向加粗;
;2:总是双向加粗,也就是freetype本身的粗体渲染。
;注意:通过加大GammaValue、TextTuning的值,可以减少Weight值过大的造成的效果问题,即可以在BolderMode=2时也可以避免斩头
BolderMode=0

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

;【字体链接】
;当FontLoader=0时
;0:什么都不做;
;1:使用注册表里的字体链接设置,通过FreeType的字符表进行查找
;2:使用注册表里的字体链接设置,使用Windows的转换函数直接查找
;当FontLoader=1时
;会保持启用的状态,但是所有字体链接的处理会交由WIN32API完成。
FontLink=2
;【字体替代】
;当FontLoader=0时
;0:什么都不做;
;1:安全替换方案(兼容性较好),根据以下FontSubstitutes的配置进行替换;
;2:完全替换方案(效果较全面,如替换后出现乱码,请尝试使用1),根据以下FontSubstitutes的配置进行替换;
;当FontLoader=1时
;会保持启用的状态,但是所有字体替代的处理会交由WIN32API完成
FontSubstitutes=1

;【让freetype处理的最大的字体尺寸,单位是像素,0的话就是全尺寸】
;交付 gdi++ 处理的最大尺寸(单位为像素)
;0-2147483647
MaxHeight=0

;【阴影设置】
;格式:水平偏移,垂直偏移,深色文字的阴影透明度(0-100),深色文字的阴影颜色,浅色文字的阴影透明度(0-100),浅色文字的阴影颜色
;阴影透明度值越低,则越透明
;颜色值格式:BBGGRR
;Shadow=1,1,10

;【液晶显示器的优化配置】
;[0:None]  1:Default  2:Light  16:Legacy
LcdFilter=2

;【微调LcdFilterWeight】
;LcdFilter>0,且AntiAliasMode>-1时,该微调才生效
;这5个值分别代表文字笔划中从左到右的笔划浓度,最小为0,最大为255
;注释掉这个参数则恢复使用
;当LcdFilter=1,默认值为“16,64,112,64,16”
;当LcdFilter=2,默认值为“0,85,86,85,0”
;LcdFilterWeight=0,80,128,80,0

;【字体缓存、内存的设置】
LoadOnDemand=1
CacheMaxFaces=256
CacheMaxSizes=33554432
CacheMaxBytes=67108864
EnableKerning=0

;【强制使用某一个字体】
;无视所有其他字体,全系统的字体都会被这里设置的字体代替
;ForceChangeFont=华文中宋

;【优先使用点阵】
;小于指定字号的文字将优先使用内嵌点阵
MaxBitmap=0

;【对9号以下字体自动施加hinting】
;对内置hinting字体使用内置hinting,不内置的使用auto hinting
;0:禁用,1:启用。默认为1

[Individual]
;【单独设置的字体】
;格式=Hinting, AAMode, NormalWeight, BoldWeight, ItalicSlant, Kerning
XHei=,,12,4,,,
XHei iOS=,,12,4,,,
XHei OSX=,,12,4,,,
XHei Mono=,,12,4,,,
XHei Mono.Xihei=,,12,4,,,
XHei SimSun=,,12,4,,,
XHei NSimSun=,,12,4,,,
XHei SimSun.Xihei=,,12,4,,,
XHei NSimSun.Xihei=,,12,4,,,

XSong=,,24,0,,
XSong SimSun=,,24,0,,
XSong NSimSun=,,24,0,,
XSong Sharp=,,24,0,,
XSong Sharp.SimSun=,,24,0,,
XSong Sharp.NSimSun=,,24,0,,
XSong Harmony=,,24,0,,
XSong Harmony.SimSun=,,24,0,,
XSong Harmony.NSimSun=,,24,0,,
XSong Classical=,,24,0,,
XSong Classical.SimSun=,,24,0,,
XSong Classical.NSimSun=,,24,0,,
XSong Tradition=,,24,0,,
XSong Tradition.SimSun=,,24,0,,
XSong Tradition.NSimSun=,,24,0,,

宋体=,,20,0,,
新宋体=,,20,0,,
SimSun-ExtB=,,20,0,,
仿宋_GB2312=,,20,0,,
仿宋=,,20,0,,
华文仿宋=,,20,0,,
华文宋体=,,20,0,,
华文中宋=,,20,0,,
Batang=,,24,0,,
MingLiU=,,24,0,,
MingLiU-ExtB=,,24,0,,
PMingLiU=,,24,0,,
PMingLiU-ExtB=,,24,0,,
PMingLiU_HKSCS=,,24,0,,
PMingLiU_HKSCS-ExtB=,,24,0,,
MS Mincho=,,24,0,,
MS PMincho=,,24,0,,

[Experimental@browser]
clipboxfix=1

[Exclude]
;【除外的字体】,会与MacType.ini中的同名配置共同生效

[ExcludeModule]
;【不渲染的程序,但仍会加载DLL】,会与MacType.ini中的同名配置共同生效

;【不渲染的程序,同时完全不加载DLL】,会与MacType.ini中的同名配置共同生效

[FontSubstitutes]
;【字体替代】
;系统在调用“=”前面的字体时会忽视“=”前面的字体,而去直接调用“=”后面的字体
SimSun=Maple UI
NSimSun=Maple UI

Segoe UI Variable=Maple UI
Segoe UI Variable Small Light=Maple UI
Segoe UI Variable Small Semilight=Maple UI
Segoe UI Variable Small=Maple UI
Segoe UI Variable Small Semibold=Maple UI
Segoe UI Variable Small Bold=Maple UI Bold
Segoe UI Variable Text Light=Maple UI
Segoe UI Variable Text Semilight=Maple UI
Segoe UI Variable Text=Maple UI
Segoe UI Variable Text Semibold=Maple UI
Segoe UI Variable Text Bold=Maple UI Bold
Segoe UI Variable Display Light=Maple UI
Segoe UI Variable Display Semilight=Maple UI
Segoe UI Variable Display=Maple UI
Segoe UI Variable Display Semibold=Maple UI
Segoe UI Variable Display Bold=Maple UI Bold

[general@browser]
FontSubstitutes=1

[general@iexplore.exe]
Alternative=browser

[general@chrome.exe]
Alternative=browser

[general@firefox.exe]
Alternative=browser

[general@thunder.exe]
Alternative=browser

;===== 标识为Office的通用配置组 =====
[General@Office]
shadow=0,0,0,0,0,0
FontSubstitutes=1

;===== 标识为NoShadow的通用配置组 =====
[General@NoShadow]
shadow=0,0,0,0,0,0

;>>>>> 对特定EXE程序的配置,使用指定标识的配置组配置覆盖默认的同名配置 >>>>>
[General@EXCEL.EXE]
Alternative=Office
[General@POWERPNT.EXE]
Alternative=Office
[General@WINWORD.EXE]
Alternative=Office
[General@et.exe]
Alternative=Office
[General@wps.exe]
Alternative=Office
[General@wpp.exe]
Alternative=Office

[General@tdxw.exe]
Alternative=NoShadow

[IncludeModule]
SRSSSC.exe

[ExcludeSub]
EXCEL.EXE
POWERPNT.EXE
et.exe
wps.exe
wpp.exe
webkit2webprocess.exe
WINWORD.EXE

[UnloadDll]
age2_x1_1.0c_1280x800.exe
avgnt.exe
AxureRP.exe
bleachbit.exe
dwm.exe
FontCreator.cn.exe
FontCreator.exe
Fontforge_EN.exe
Fontforge_SC.exe
Fontforge_TC.exe
fontview.exe
gnucash-bin.exe
KuGou.exe
MainType.exe
NexusFont.exe
notecase.exe
notecaselauncher.exe
OllyICE.exe
PlantsVsZombies.exe
ProcessGovernor.exe
ProcessLasso.exe
wmiprvse.exe