AFR 项目图标 AFR — CAD 缺失字体自动替换工具
减少缺失字体导致的文字不显示、乱码和反复手动指定字体
GitHub · Gitee(国内镜像) · Releases · 提交 Issue
📥 补充下载链接:123网盘
- 缺失字体自动替换:AFR 会自动处理图纸中的缺失字体,避免打开图纸因为字体问题造成字符显示不全或乱码。
- 字体缺失场景全覆盖:同时处理 SHX 主字体、SHX 大字体、TrueType 字体,以及多行文字中的内联字体缺失。
- 安装和卸载无残留:部署工具/单DLL会自动识别 AutoCAD 2018–2027,完成安装、卸载、字体释放和插件状态检查全流程。
- 支持人工复核:通过
AFRLOG查看每个缺失字体的替换情况,并对当前图纸逐条或批量调整。
一般用户只需要下载并运行 AFR-Deployer_vX.Y.Z.exe;AFR-DLL_vX.Y.Z.zip 主要用于维护、测试或受限环境下的手动 NETLOAD。
- 在 Releases 下载最新发行包。
- 先关闭所有 AutoCAD 进程(部署工具会在检测到 CAD 运行时禁用安装/卸载按钮)。
- 双击运行
AFR-Deployer_vX.Y.Z.exe,工具会自动扫描本机已安装的 AutoCAD 版本。 - 勾选需要安装的项目,确认"部署路径"(默认会选中首个非系统盘下的
\CADPlugins\),点击"安装"。 - 工具会自动完成:
- 将对应版本 DLL 复制到部署路径;
- 在注册表写入自动加载项;
- 释放内嵌默认 SHX 字体到各 CAD 的
Fonts目录; - 写入
FixedProfile.aws以抑制"缺少 SHX 文件"弹窗。
- 启动 AutoCAD 后,插件自动生效。
部署工具会实时监听注册表变化:后续安装/卸载新的 CAD 版本或修改配置文件后,无需手动"刷新",列表会自动更新。
卸载同样在部署工具中完成:勾选已安装的项目点击"卸载",工具会同步还原注册表与
FixedProfile.aws中由本插件写入的节点。
部署工具是推荐方式;如果只需要单 DLL 场景(例如维护、测试、受限环境),可以手动 NETLOAD:
- 在 Releases 下载
AFR-DLL_vX.Y.Z.zip并解压。 - 按 AutoCAD 版本选择对应 DLL,例如 AutoCAD 2026 使用
AFR-ACAD2026.dll。 - 在 AutoCAD 命令行输入
NETLOAD,选择该 DLL。 - 首次
NETLOAD会完成默认字体部署、配置初始化与自动加载注册;按命令行提示重启 AutoCAD 后生效。
单 DLL 卸载时,在 CAD 命令行完整输入 AFRUNLOAD。该命令会卸载当前会话中的插件事件/Hook,并清理 AFR 自动加载注册表项和由插件写入的配置节点。AFRUNLOAD 是维护入口,不参与自动补全和动态输入建议,必须完整输入命令名。
- 首次安装后启动 AutoCAD,插件会自动将内置默认字体释放到 CAD 的
Fonts目录。 - 插件会自动写入默认配置:
- SHX 主字体:
ming.shx - SHX 大字体:
tssdchn.shx - TrueType 字体:
宋体
- SHX 主字体:
- 如需修改默认配置,可在 AutoCAD 中输入
AFR,重新配置三类替换字体。
字体精简建议:
- 建议将 CAD 安装目录
Fonts中 SHX 字体精简至 100 个以内;- 保留
sas_____.pfb、MstnFontConfig.xml、internat.rsc、font.rsc等非 SHX 文件;- 字体过多会导致插件界面加载明显卡顿。
打开有缺失字体的 DWG,看到类似日志即说明插件已执行:
====================================================================================
AFR 缺失字体自动替换 v9.1.0
项目地址GitHub(国外):github.com/splrad/CADFontAutoReplace
项目地址Gitee(国内):gitee.com/splrad/CADFontAutoReplace
命令: AFR(配置) AFRLOG(日志) AFRUNLOAD(卸载命令)
====================================================================================
[字体修复]已替换缺失字体 3 个(SHX主字体:1,SHX大字体:1,TrueType:1) | MText内联字体映射:0
如果自动替换结果不理想:
- 输入
AFRLOG - 查看缺失字体与当前替换目标
- 逐条调整或使用批量填充
- 点击"应用替换"写入当前图纸
AFRLOG每次打开都会重新读取图纸实时状态(含STYLE修改结果)。MText 内联字体采用运行时映射自动处理,不支持手动替换。
| CAD 版本 | DLL 文件名 | .NET |
|---|---|---|
| AutoCAD 2018(R22.0) | AFR-ACAD2018.dll |
.NET Framework 4.6.2 |
| AutoCAD 2019(R23.0) | AFR-ACAD2019.dll |
.NET Framework 4.7.2 |
| AutoCAD 2020(R23.1) | AFR-ACAD2020.dll |
.NET Framework 4.7.2 |
| AutoCAD 2021(R24.0) | AFR-ACAD2021.dll |
.NET Framework 4.8 |
| AutoCAD 2022(R24.1) | AFR-ACAD2022.dll |
.NET Framework 4.8 |
| AutoCAD 2023(R24.2) | AFR-ACAD2023.dll |
.NET Framework 4.8 |
| AutoCAD 2024(R24.3) | AFR-ACAD2024.dll |
.NET Framework 4.8 |
| AutoCAD 2025(R25.0) | AFR-ACAD2025.dll |
.NET 8.0 |
| AutoCAD 2026(R25.1) | AFR-ACAD2026.dll |
.NET 8.0 |
| AutoCAD 2027(R26.0) | AFR-ACAD2027.dll |
.NET 10.0 |
| 命令 | 说明 |
|---|---|
AFR |
打开字体配置界面,选择 SHX 主字体、大字体和 TrueType 替换字体 |
AFRLOG |
打开替换日志,查看检测结果,支持手动调整和批量填充 |
AFRUNLOAD |
维护用卸载入口;需完整输入,不参与 CAD 自动补全或动态输入建议 |
如何修改替换字体配置?
随时输入 AFR,重新选择字体并确认即可。新配置会立即对当前图纸生效。
替换后文字显示异常怎么办?
**不要保存图纸。** 使用 `AFRLOG` 重新选择替换字体,直至显示正常。如何卸载插件?
使用 AFR.Deployer 执行卸载:勾选已安装项后点击"卸载",工具会同步清理自动加载配置与由本插件写入的 FixedProfile.aws 节点。
单 DLL / NETLOAD 场景可在 CAD 命令行完整输入 AFRUNLOAD 执行卸载维护。命令不会出现在自动补全列表中,输入 AFR、AFRU 等前缀不会触发,必须完整输入 AFRUNLOAD。
为什么 AFR 能处理多行文字(MText)内联字体缺失?
AFR 不改写 MText.Contents。当前流程会先修复样式表缺失字体,再通过 Regen 让 AutoCAD 原生展开和绘制 MText;内联字体在运行时文件加载阶段映射,AFRLOG 中的内联映射记录只来自真实运行时命中结果。
更具体的 Hook 边界和验收证据见 字体 Hook 证据与边界。
注意:若图纸正文字符已经被错误编码保存(文字数据已损坏),字体替换无法恢复原文。
如果使用插件后仍出现"字体不显示"或"乱码",欢迎提交 Issues。
为便于快速定位,请尽量附上:
- 脱敏后的问题图纸(可最小化为单个问题区域)
- 同一图纸中"正常显示部分"截图
- 同一图纸中"不正常显示部分"截图
- AutoCAD 版本 + 插件 DLL 版本 + 插件配置
信息越完整,定位越快。
QQ:1186191934 微信:splrad 电子邮箱:alearner@splrad.com
欢迎提交 Issue 和 PR,一起完善 AFR。
- 拉取仓库
main最新代码。 - 从
main切出功能分支并完成修改(本仓库禁止直接向main分支推送)。 - 本地构建:
# 构建某个 CAD 版本适配壳 dotnet build src/AutoCAD/AFR-ACAD20XX/AFR-ACAD20XX.csproj # 构建部署工具 dotnet build src/AFR.Deployer/AFR.Deployer.csproj # 一次构建所有项目 dotnet build CADFontAutoReplace.slnx
将
20XX替换为当前目标版本(例如2027)。插件统一版本号集中在根目录的Version.props(发版时仅修改这个文件)。
- 验证关键命令(
AFR/AFRLOG,Debug 下可验证AFRVIEW)。 - 推送分支后,流程会自动创建/更新
你的分支 -> test的 PR。 test合并后,流程会自动创建/更新test -> main的 PR。- 提交说明与 PR 描述会自动生成;不准确时请在 PR 评论补充。
- 核心开发者(
TRUSTED_DEVELOPERS)提交的 PR 会自动审批授权。 - 非核心开发者提交到
main的 PR,需要至少 1 位核心开发者有效审批。 - 非核心开发者向
test提交 PR 时,禁止修改.github/workflows/下文件。 main仅允许test分支发起合并,且禁止外部 Fork 直接向main提 PR。
- 遵守分层依赖方向:
AFR.Core/AFR.UI不引用 AutoCAD SDK;AFR.HostIntegration由部署工具与 CAD 插件共用,不反向依赖其中任一方。 - 新增常规命令必须在
PluginEntry.cs注册,否则 CAD 无法识别;隐藏维护入口需避免进入 CAD 命令补全体系。 - 仅调试使用的功能请用
#if DEBUG包裹(并在命令注册处同步控制)。 - 发版需要修改版本号时,仅修改根目录
Version.props文件。 - 聚焦当前问题,避免无关重构。
| 库名 | 版本 | 作者 | 用途 | 许可协议 |
|---|---|---|---|---|
| CommunityToolkit.Mvvm | 8.4.2 | Microsoft / .NET Community Toolkit | 部署工具的 MVVM 属性通知、命令生成与 ViewModel 基础设施 | MIT |
| WPF-UI | 4.2.1 | lepoco | 部署工具的 WPF 现代化界面控件与窗口样式 | MIT |
| System.Management | 10.0.7 | Microsoft | 部署工具中用于 WMI 进程监听与系统管理查询 | MIT |
| AutoCAD.NET | 22.0.0 ~ 26.0.0 | Autodesk / 社区封装分发 | 各版本 AutoCAD 托管 API 引用,供插件适配壳编译使用 | 依发布源约定 |
| System.ValueTuple | 4.5.0 | Microsoft | 兼容 AutoCAD 2018 对应的 .NET Framework 4.6.2 目标 | MIT |
| HandyControl | 3.5.1 | NaBian | 插件侧 WPF UI 控件库,用于字体配置窗口、日志窗口等界面能力 | MIT |
本项目提供的 CAD 字体包中,部分字体来自互联网整理。为尊重原作者知识产权,现将可追溯来源列出如下:
| 字体文件 | 来源 / 作者 | 备注 |
|---|---|---|
| AutoCAD 原版字体清单 | Autodesk | 基于 CAD 初始安装释放的 SHX 清单 |
tssdchn.shx tssdeng.shx cadzxw.shx |
探索者软件 (TSSD) | 探索者结构设计字体 |
cadzxw-e.shx |
ChenYong (longfly199@sina.com) | 探索者英文字体,基于 ROMANS 修改 |
whgdtxt.shx whgtxt.shx whtgtxt.shx whtmtxt.shx |
天正建筑 | 天正系列中文大字体 |
yjkeng.shx |
盈建科 (YJK) | 基于 TSSD 英文字体修改 |
CDM_NC.shx Cdm.shx |
CDM 软件 | 工程设计字体 |
ming.shx ming1.shx ming2.shx |
淘宝店铺:CAD专家 Q421259113 | 基于 tssdeng / Roman Simplex 修改 |
⚠️ 若你是某款字体原作者,且认为收录方式不当,请通过 Issues 联系,我会第一时间处理(移除或补充署名)。本项目字体包仅供学习与辅助使用,不以任何形式进行商业销售。
如果本插件对你有帮助,欢迎请开发者喝杯咖啡 ☕