MacType 字体渲染排障指南:Win11 注册表模式、WPS 冲突与源码编译 4 大坑一次讲清
【免费下载链接】mactypeBetter font rendering for Windows.项目地址: https://gitcode.com/gh_mirrors/ma/mactype
把最新版 MacType 装到 Win11 上,字体纹丝不动;WPS 里的效果用着用着自己没了;杀软隔三差五弹窗。字体渲染工具的兼容性问题大多出在注入方式、软件对抗和编译依赖这三处,下面按你看到的症状逐个定位。
MacType 装完没效果:Win10/11 手动开启注册表模式的 3 个步骤
现象装完跑完向导,桌面和其他程序的字体毫无变化,像没装一样。
原因MacType 需要把渲染库注入目标进程,才能接管 GDI 和 DirectWrite 的绘制。从 Win10 起,向导已无法直接开启注册表模式(Registry Mode),项目 README 专设 How to get registry mode back 一节说明这一点,必须手动配置。
修复
- ⚠️ 以管理员身份打开命令提示符,执行开启测试签名的命令,然后 ⚠️ 重启系统(桌面右下角出现"测试模式"水印即已生效):
bcdedit /set testsigning on- 按项目 wiki 中的手动注册表模式指南,补齐对应的注册表项。
- 重新运行 MacType 向导,选择注册表模式,重启后观察是否生效。
如果不想动系统全局,也可以让托盘程序以 Service Mode(服务模式)运行注入;64 位系统上这也是 README 推荐的姿势。
WPS 自动卸载 MacType 怎么修:杀软冲突与 Office 的边界情况
现象WPS 里的渲染效果时有时无,重启 WPS 后 MacType 像被卸掉;64 位系统上杀软频繁弹窗,个别程序偶发崩溃。
原因WPS 内置的防御机制会主动卸载 MacType 的注入(README 原话是 "UNLOADS MacType automatically")。64 位系统上,杀软会把"修改正在运行的软件"识别为威胁行为。
修复
- 升级到最新 MacType,新版已包含针对 WPS 防御的绕过方案
- 杀软告警的,改用 Service Mode 运行(README 推荐),或把 MacType 相关文件加入杀软白名单
- 在 MacType.ini 中关闭子进程挂钩:
[FreeType] HookChildProcesses=0- Office 要单独说明:Office 2013 走自研渲染,不用 GDI 也不用 DirectWrite,MacType 对它无效;2010 走 GDI、2016 及以后走 DirectWrite,都能正常增强。
从源码编译 MacType:v142 工具集与定制 FreeType 补丁
现象按老教程编译,SDK 报错、链接失败;或者编出来一运行字体就花屏。
原因依赖版本不匹配。FreeType 必须使用定制版本并打补丁;工具集低于 v120、或带_xp后缀时,会拒绝 Windows 10 SDK,细节见 构建指南。
修复
- 拉取源码:
git clone https://gitcode.com/gh_mirrors/ma/mactype- 准备 VS2019(v142 工具集已验证可用)+ Windows SDK 10.0.14393.0 及以上;安装 SDK 时把组件列表全部勾上,否则会卡在莫名的依赖缺失上。
- 定制版 FreeType 编译前先应用仓库自带的 glyph_to_bitmapex.diff 补丁,多线程 release 模式编译,产出 freetype.lib(x86)与 freetype64.lib(x64);静态库优先,并把 FREETYPE_PATH 环境变量指向 FreeType 源码根目录。
- 同理构建 iniparser.lib(配 INI_PARSER_PATH)与 wow64ext.lib;EasyHook 只需 EasyHookDll 工程,DLL 起个特殊文件名避免与自带 freetype 的程序冲突,并同步修改 hook.cpp 里的文件名。
- 按 Detours 官方指南构建 detours.lib 与 detours64.lib 放到 MacType 根目录,最后把所有 .lib 放入根目录的 lib 文件夹,直接构建。
自己排查 MacType 问题:MacType.ini 关键配置与事件日志
现象改了参数没反应,也不确定注入到底生效没有。
原因配置的生效范围容易搞混:MacType 读取与注入 DLL 同目录的 MacType.ini,[General] 与 [FreeType] 段共享大部分键,还支持 段名@程序名 形式的按进程覆盖。
修复(自查顺序)
- 打开 MacType.ini,对照 settings.cpp 注释里列出的合法键名改参数,常用的有 HookChildProcesses、DirectWrite、AntiAliasMode、HintingMode、TextTuning、LcdFilter。
- 某个程序单独异常时,用 段名@程序名 覆盖,例如在 FreeType@wps.exe 段里单独调参。
- 与 MacType-patch 混用时,profile 里记得加 DirectWrite=0,否则 README 提示会出现"mysterious problems"。
- 升级前先备份 profile,这是 README Known issues 的第一条。
- 打开 Windows 事件查看器的应用程序日志,筛选来源为 MacType 的条目——EventLogging.cpp 通过 RegisterEventSource 注册的事件源就在这里输出。
动手前先过一遍这份行动清单
- 系统位数与 MacType 版本匹配,64 位系统优先 Service Mode
- Win10/11 已按指南手动开启注册表模式并完成重启
- 杀软白名单已配置,或已写入 HookChildProcesses=0
- 升级前已备份 MacType.ini profile
- 编译环境已使用定制 FreeType 并打好 glyph_to_bitmapex.diff 补丁
- 事件查看器里检查过来源为 MacType 的日志
清单解决不了的新症状,直接到项目 Issue 区反馈:附上 Windows 版本、MacType 版本和 MacType.ini 内容,能显著加快定位速度。
【免费下载链接】mactypeBetter font rendering for Windows.项目地址: https://gitcode.com/gh_mirrors/ma/mactype
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考