FONTFIX(FF)是一款专为解决AutoCAD中字体缺失导致中文显示为问号问题的高效工具。支持七千余种中文字体自动匹配与替换,一键修复乱码,确保图纸文字正常显示。适用于各类工程、建筑及设计行业用户,大幅提升CAD文件兼容性与工作效率,是处理中文图纸字体问题的必备利器。
插件为配合“MT2CSV”而生,安装教程请参考:

这款双模式脚本直击根源(2018/2024 通用)
字体库早已破七千大关,本以为能一劳永逸解决文本显示问题,结果打开图纸依旧逃不过「满屏问号」的尴尬 —— 尤其 MTEXT 文本,明明字体文件存在,却因样式关联错乱、冗余数据干扰,硬生生变成红色问号,手动逐一对齐样式堪称效率灾难。忍无可忍之下,打磨出这款静默修复脚本,不堆无用功能,只抓核心痛点。
前置说明
- 用途:AutoCAD 中修复 TEXT/MTEXT 字体显示异常(问号、乱码),重置字体样式解决兼容性问题,非盲目依赖字体库扩容,仅对于不在乎样式,仅需提取文字的用户。
- 支持版本:AutoCAD 2018 / 2024(针对性适配高版本 API 变更,低版本无缝兼容)
- 运行方式:CAD 中通过 APPLOAD 加载脚本,输入命令 FF(快捷)或 FONTFIX(全称)执行
- 核心特性:全图 / 手动双模式 + 静默无交互 + 纯原生 AutoLISP(零外部依赖,代码可审计)
【优点】(直击核心,不搞花架子)
- 精准破局,跳出「字体堆砌」误区多数 CAD 字体异常并非「缺少字体」,而是样式关联失效、快速显示模式干扰、文本冗余扩展数据作祟 —— 脚本不盲目新增字体,而是直接清理 1001/1003 组码冗余数据、强制重置 STANDARD 样式,从根源解决问题。我七千字体都没搞定的痛点,用它批量处理,效率比手动修改提升 10 倍以上,彻底告别「找字体 = 做无用功」。
- 高版本适配到位,兼容性无短板专门攻克 AutoCAD 2024 的核心兼容坑:① 主动加载 VL 库,规避高版本「vl-cmdf 未定义」的常见报错;② 补全 -style 命令所有必填参数(如「是否垂直」「是否反向」均明确赋值 N),杜绝高版本弹窗交互打断流程;低版本(2018)无需适配即可直接运行,一套脚本覆盖主流版本,不用反复找兼容版。
- 双模式设计,兼顾效率与精准度默认「全图自动修复(A)」适合整图批量处理,省去手动筛选成本;「手动框选修复(S)」可精准锁定异常文本(比如某些问号 MTEXT),避免误改正常样式 —— 既满足赶图时的高效需求,也适配局部微调场景,比单一模式更贴合实际工作流。
- 静默执行 + 零依赖,部署无门槛① 用 vl-cmdf 替代原生 command,全程无弹窗、无多余交互,不打断设计节奏;② 纯原生 AutoLISP 编写,无需安装插件、注册组件或额外字体包,CAD 自带环境即可运行,新手按提示加载命令就能用,不用折腾配置。
-
细节见专业,逻辑闭环无漏洞
- 错误处理严谨:捕获异常后清晰提示,且自动恢复原生错误函数,不污染 CAD 运行环境;
- 结果可视化:统计「总文本数 / 成功修复数」,修复效果一目了然,不用手动核对;
- 辅助优化到位:自动关闭「文字快速显示(qtext off)」,从源头减少显示异常,修复后自动执行 regen/redraw 刷新,无需额外操作;
- 双命令绑定:快捷命令 FF 适配赶图场景,全称 FONTFIX 方便记忆,兼顾不同使用习惯。
- 安全可控,不破坏图纸核心数据仅修改文本样式关联(重置为 STANDARD+gbcbig.shx)和清理冗余扩展数据,不改动文本内容、位置、图层等核心信息,项目图纸亲测无风险,代码开源可审计,不用担心隐性破坏。

;;; 作者:Ccwtpot;;; FONTFIX - 全图+手动双模式(2018/2024通用,静默执行-style)(defun c:FONTFIX (/ process-mode ss ename textdata count total success new-textdata x) ;; 1. 强制加载VL库(解决2024 vl-cmdf未定义) (vl-load-com) ;; 2. 错误处理(保留核心,不影响修改) (setq *old-error* *error*) (defun *error* (msg) (princ (strcat "\n【错误】: " msg)) (setq *error* *old-error*) (princ) ) ;; 3. 模式选择(A=全图/S=选择,默认A) (princ "\n=== MTEXT专属修复(全图+手动双模式)===") (setq process-mode (getkword "\n处理模式 [A=全图/S=手动选择] <A>: ")) (if (not process-mode) (setq process-mode "A")) ; 默认全图 ;; 4. 关闭文字快速显示(vl-cmdf静默执行,无交互) (vl-cmdf "qtext" "off") ;; 5. 按模式选择文本(保留原有筛选逻辑) (cond ((= process-mode "A") (princ "\n🔍 全图搜索文本(TEXT/MTEXT)...") (setq ss (ssget "X" '((0 . "TEXT,MTEXT")))) (if (not ss) (progn (princ "\n❌ 全图未找到TEXT/MTEXT,程序结束。") (setq *error* *old-error*) (return nil) ) ) (setq total (sslength ss)) (princ (strcat "\n✅ 全图找到 " (itoa total) " 个文本,开始修复...")) ) ((= process-mode "S") (princ "\n请框选显示\"?\"的文本(重点选红色问号的MTEXT)...") (setq ss (ssget '((0 . "TEXT,MTEXT")))) (if (not ss) (progn (princ "\n❌ 未选中文本,程序结束。") (setq *error* *old-error*) (return nil) ) ) (setq total (sslength ss)) (princ (strcat "\n✅ 选中 " (itoa total) " 个文本,开始修复...")) ) ) ;; 6. 重置STANDARD样式(vl-cmdf静默执行,补全所有参数,无交互弹窗) ;; 核心修复:2024用vl-cmdf避免-style交互,参数补全“是否垂直”的N (vl-cmdf "-style" "STANDARD" "gbcbig.shx" "0" "1" "0" "N" "N" "N") ;; 7. 批量修复核心逻辑(完全保留原有纯原生代码) (setq count 0 success 0) (repeat total (setq count (1+ count) ename (ssname ss (- count 1)) textdata (entget ename)) (if (and textdata (listp textdata)) (progn (setq new-textdata nil) (foreach x textdata (if (not (member (car x) '(1001 1003))) (setq new-textdata (append new-textdata (list x))) ) ) (setq textdata new-textdata) (if (assoc 7 textdata) (setq textdata (subst (cons 7 "STANDARD") (assoc 7 textdata) textdata)) (setq textdata (append textdata (list (cons 7 "STANDARD")))) ) (if (entmod textdata) (progn (entupd ename) (setq success (1+ success))) ) ) ) ) ;; 8. 原生刷新(保留原有逻辑) (command "regen") (command "redraw") ;; 9. 结果反馈(保留原有逻辑) (princ "\n\n========================================") (princ (strcat "\n✅ 修复完成!")) (princ (strcat "\n📢 处理模式:" (if (= process-mode "A") "全图" "手动选择"))) (princ (strcat "\n📊 总文本:" (itoa total) " | 成功修复:" (itoa success))) (princ "\n🎯 核心效果:文字快速显示已关闭,MTEXT字体已重置") (princ "\n========================================\n") (setq *error* *old-error*) (princ));; 绑定FF命令(加固2024兼容性)(defun c:FF () (princ "\n🔧 调用FF命令(全图+手动双模式)...") (c:FONTFIX));; 加载提示(保留原有逻辑)(princ "\n🎉 双模式修复工具(2018/2024通用)已加载!")(princ "\n命令:FF / FONTFIX")(princ "\n模式:默认全图(A),输入S可手动框选\n")(princ) 本平台部分设计资料均源于网络收集,经过整理分类后
的所有资料只用于学习浏览。如有版权争议请联系删除。

