简介:面向建筑、机械、测绘、电力等专业制图场景,这套CAD专用SHX字体合集覆盖中文简体、繁体以及工程符号类字体,可解决打开图纸时常见“缺少字体”、文字显示为问号或乱码等问题。整包共360个文件,核心为351个标准SHX字体,另含font.rsc、internat.rsc等字符映射增强文件及少量说明文档,压缩包整体83.01MB;复制至CAD的Fonts目录后即可通过文字样式调用,兼容AutoCAD 2007至2024。包内既有HZXK、HZWB、HZKT、CADHZF等常用中文字体,也有宋体big.shx、HMKXST.SHX、XYF.SHX等风格化字体,以及AMDTSymbols、AMGDT、ARCH系列、CBS_COMPLEX等工程制图符号字体,可满足标题栏、尺寸标注、技术说明等不同注写需求。已有2394人学习下载,对经常处理外部图纸、需要快速统一字体环境的制图员尤为实用,能避免逐个下载字体或反复调整文字样式的麻烦,也适用于图纸交换、归档及打印前的字体替换场景。
1. 图纸一打开全是问号?CAD专用SHX字体合集解决的就是中文显示这件事
甲方下午三点半传过来一张总平面图,打开一看标题栏、说明、桩号标注全是?????,提示框写着“无法找到形文件”。查文字样式,原图用的是某个第三方hztxt.shx,本机字体库里恰好没有。这种场景在结构、建筑、市政图纸流转里几乎是日常。CAD专用SHX字体合集,就是把中文简体、繁体以及工程符号所需的形字体文件按类别收齐,统一装进CAD的字体目录,让缺字、乱码、符号丢失这类问题从源头减少。适合经常打开外部图纸的设计师、驻场绘图员,也适合维护大量历史图纸的工程师。
2. SHX字体选型:中文简体、繁体与工程符号字体文件的分类与混用规则
2.1 SHX与TTF的本质差异:为什么CAD里中文更依赖SHX字体
SHX文件在CAD里叫“形文件”。形文件里的每个字符,不是点阵也不是曲线轮廓,而是一组向量指令:从当前点画线到哪个点、画多大弧、抬笔还是落笔。这种定义方式在打印高倍率图纸时不会糊,文件体积也比TrueType小得多。TTF是贝塞尔曲线轮廓字体,显示效果好、字符集全,但在CAD里用有几个不稳定因素:宽度因子计算、多行文字对齐、打印样式裁剪,以及中文字符映射对系统代码页的依赖。跨机器打开同一张图,字体版本稍不一致,TTF很容易出现字号漂移或显示成方框。
工程设计场景里,标注、引线说明、标题栏这些位置要求的是清晰、统一、可复现。SHX矢量字体打印出来细线均匀,制图标准里的字高控制也更直接。所以我的习惯是:所有标注样式和块属性一律用SHX,只有封面和大段说明文字才考虑TTF。SHX字体合集之所以值得专门维护,是因为在CAD图纸流转的世界里,SHX才是那个绕不开的基础件。
有个概念要先分清:CAD文字样式对话框里字体分两个栏位。一个是普通字体,放西文字体如txt.shx、simplex.shx;另一个是大字体(Big Font),放中文字体如gbcbig.shx。没有勾选“使用大字体”时,普通字体可以直接选一个支持双字节的SHX,但传统国标图纸最稳的组合是“西文SHX + 中文大字体SHX”双栏位搭配。汉字数量远超单字节形文件的能力边界,所以中文走大字体栏位,西文和符号走普通字体栏位,两者通过文字样式绑定在一起。理解这个结构,后面替换字体时才知道该改哪个位置。
2.2 简体、繁体与符号字体各在哪个“栏位”干活
拿到一套SHX字体,第一件事是分类。分错类比缺字体还麻烦。下面的表是我自己整理的一套对应关系,按CAD文字样式的栏位来分:
| 字体类别 | 放置栏位 | 典型用途 | 主要编码对应 |
|---|---|---|---|
| 中文简体 | 大字体栏位 | 国标图纸注释、施工说明、标题栏 | GB2312 / GBK |
| 中文繁体 | 大字体栏位 | 港台项目图册、繁体版图纸说明 | Big5 |
| 工程符号 | 普通字体栏位 | 直径、角度、公差、焊接、剖切符号 | 单字节符号映射表 |
为什么工程符号要单独占一套文件?因为内置的txt.shx里直径符号、正负号、度数符号并不全,不同专业还有自己的特殊符号:焊接符号、粗糙度符号、电气元件代号。把这些符号集中进一个SHX文件后,标注时不需要切换输入法,直接按对应编码插入就能显示。合集的精髓就在这里:同一张图里,普通字体管西文字母和常见符号,大字体管中文,各司其职,互不干扰。
需要注意,简体与繁体的边界不是“字体不一样”这么简单。有些中文字体同时包含GB2312和Big5两段字符映射,文件名里也会体现出来。但很多来源不明的字体只做好了其中一种编码表。如果一张图纸同时存在简体和繁体文字,我更建议建两个文字样式:一个用简体大字体,一个用繁体大字体,而不是赌某个字体两头通吃。赌输的结果就是半边正常半边问号。
2.3 从文件名判断字体类型:识别合集构成的第一道工序
拿到一套SHX合集,先按文件名粗筛。命名有规律可循:文件名里带gb、hz、c的,大概率是简体国标字体;带big5、tai、tc的,大概率是繁体;带gdt、sym、mod、ce的,一般是符号或特殊字符字体。但这是第一层猜测。同名文件在不同网站、不同合集里可能内容完全不一样,某个hztxt.shx在一个版本里支持GB2312,在另一个版本里支持Big5,这种事我踩过不只一次。
所以正经做法是:装完字体后,用CAD或专用查看器逐一预览字形,确认汉字覆盖范围。尤其警惕“同名不同源”的坑。合集里如果放了多个版本的同名字体,千万不要全部堆进Fonts目录互相覆盖,要先比文件大小、比修改时间,确认哪个是目标编码再部署。这个动作省掉的是后面所有替换乱码的麻烦。
2.4 简体、繁体混合图纸的字体搭配建议
内地设计院出的港资项目,经常一张图里既有简体说明又有繁体图号。此时最忌讳的做法是拿一个简体大字体硬套所有文字:繁体内码会按GBK映射成简体字形,含义可能直接改变。推荐做法是明确拆分样式,简体文字走“简体大字体样式”,繁体文字走“繁体大字体样式”,两套样式用统一的前缀命名,比如GB-标注、BIG5-标注。这样在CAD里切换字体样式时不会误用。
如果遇到的是历史遗留图纸,原图本身只有一种字体,但内容混杂繁简体,那就要看文字本身是用什么输入法写进去的。用Big5输入法写进图里的文字,在GBK字体下必然乱码;反过来也一样。这种情况没有一键修复的后悔药,只能把乱码文字选中后重新指定对应样式的字体,或者用文本替换工具按段落重排。这也说明为什么部署字体合集时,尽量保留一个“双编码兼容”的备用字体在目录里,比到处找原版字体更现实。
3. 把SHX字体合集装进CAD:安装路径、字体映射表与批量替换实操
3.1 字体文件安装路径:应用级与系统级的取舍
CAD读取SHX字体时,优先查找程序安装目录下的Fonts文件夹,然后才查系统字体目录。工程上把全套SHX放进应用级Fonts目录是最省心的。操作步骤很简单:找到CAD安装目录下的Fonts文件夹,把合集里所有.shx文件复制进去。以Windows环境为例:
# Windows PowerShell: 把合集里的SHX批量复制到CAD字体目录 $cadFonts = "C:\Program Files\Autodesk\AutoCAD 2025\Fonts" $srcDir = "D:\shx-font-collection" Copy-Item "$srcDir\*.shx" $cadFonts -Force Get-ChildItem $cadFonts -Filter *.shx | Select-Object Name, Length代码先定义目标字体目录和源目录两个变量,Copy-Item用-Force参数覆盖同名文件,最后用Get-ChildItem列出Fonts目录下的SHX文件,确认复制数量。如果你的CAD装在D盘或者用的是绿色版,路径要按实际安装位置修改。复制后必须完全关闭并重新打开CAD,字体下拉列表才会刷新。旧版本CAD开了多个会话时,只重启当前会话有时不够,要全部退出再启动。
系统级字体目录不是不能用。TTF字体放系统Fonts目录比较合理,SHX如果也放系统目录,CAD有时会因为缓存读旧文件而加载不到新放进去的同名字体。这部分属于玄学范畴,但确实常见。所以我的规矩:SHX一律进应用级Fonts目录,TTF才考虑系统目录。安装完毕后,可以故意打开一张引用旧字体的图纸,看CAD是否还会弹出“缺少形文件”的提示,不再弹就说明字体已经就位。
3.2 用字体映射表把缺失字体指到合集内的替代方案
没有原始字体文件,又不想一张张改样式时,就轮到字体映射表出场。CAD启动时会读取acad.fmp文件,把图纸中缺失的字体名映射到本机已有字体。文件里每行格式是“原始字体名; 替代字体名或路径”。我一般在文件末尾追加几行映射,把常见的老第三方字体指到合集里验证过可用的替代品:
hztxt.shx; gbcbig.shx st64f.shx; gbcbig.shx tssdeng.shx; simplex.shx第一行表示原图引用的hztxt.shx找不到时,用gbcbig.shx顶替。这对历史老图特别有用。很多老设计院图纸用的是第三方字体,网上来源混乱,与其到处找原版,不如映射到合集里确认过可用的替代品。映射表解决的是“不让CAD报缺字”,但它改变的是显示所用字体,不改图纸内部数据。注意:acad.fmp修改前先备份一份,CAD升级时可能覆盖这个文件,有备份方便恢复。
还有一点容易被忽略:添加映射不是改完就立即生效。要么重启CAD,要么在命令行执行“redefine”相关操作强制刷新字体缓存。更省事的做法是直接打开一张缺字体的图纸,触发CAD自动读取映射表,看看命令行有没有提示“已使用字体映射替代xxx”。如果没看到提示,检查fmp文件各行的分隔符是不是半角分号,全角分号会导致整行失效。
3.3 用AutoLISP脚本批量刷新文字样式的字体引用
字体映射表适合打不开图时的兜底,真正要让图纸文字样式的字体永久改过来,还是得逐个样式替换。图纸多了以后挨个改太慢,我常用的一段批量替换脚本贴在这里。逻辑很简单:遍历当前图纸所有文字样式,遇到旧字体名就替换成新字体名。
;; 批量替换文字样式中的SHX字体 ;; 用法: 加载本LSP后在命令行执行 QFONT (defun c:QFONT ( / oldName newName doc tstyles doneCnt) (setq oldName (strcase (getstring "\n输入要替换的字体文件名(含扩展名): " T))) (setq newName (strcase (getstring "\n输入目标字体文件名(含扩展名): " T))) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq tstyles (vla-get-textstyles doc)) (setq doneCnt 0) (vlax-for st tstyles ;; 主字体栏位和大字体栏位都要比较 (if (or (= (strcase (vla-get-fontfile st)) oldName) (= (strcase (vla-get-bigfontfile st)) oldName)) (progn (if (= (strcase (vla-get-fontfile st)) oldName) (vla-put-fontfile st newName) ) (if (= (strcase (vla-get-bigfontfile st)) oldName) (vla-put-bigfontfile st newName) ) (setq doneCnt (1+ doneCnt)) (princ (strcat "\n已更新样式: " (vla-get-name st))) ) ) ) (vla-regen doc acAllViewports) (princ (strcat "\n完成, 共更新 " (itoa doneCnt) " 个样式。")) (princ) )脚本先用getstring交互接收新旧字体文件名,strcase统一成大写比较,避免大小写不一致导致漏替换。vlax-for遍历的是当前图纸的TextStyles集合,比较fontfile和bigfontfile两个属性,分别对应主字体栏位和大字体栏位。匹配成功后写回,末尾执行vla-regen刷新视图,让替换效果立刻可见。参数里doneCnt是计数器,最后用itoa转成字符串输出。
这个脚本只处理文字样式层面的引用,够覆盖九成以上的场景。但记住一个细节:有些多行文字或属性块,在实体级别单独指定了字体,不走样式。那种情况要另外用脚本遍历实体属性来改,要复杂得多,多数情况下不用碰,除非你确认某张图大量使用了实体级覆盖。
3.4 替换完怎么验证:从样式列表到图面抽查两步走
替换完后别急着关图。先用一段短LISP把结果列出来核对:
(defun c:LISTFONT ( / doc tstyles) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vlax-for st (vla-get-textstyles doc) (princ (strcat "\n样式: " (vla-get-name st) " | 主字体: " (vla-get-fontfile st) " | 大字体: " (vla-get-bigfontfile st))) ) (princ) )运行LISTFONT,屏幕输出每个文字样式的两个字体栏位名称。对照合集清单,确认有没有遗漏的样式。接着在图面上随机缩放几个标注区域,重点看直径符号、正负号、度数符号和中文引线注释。文字比例、排列方向、字符间距都可以肉眼判断,确认这些元素没有变成问号,再保存图纸。
如果面对的是几十张图纸,把这套LISP加载到CAD的启动组里,用Script脚本或批处理方式逐张打开DWG执行QFONT,就能把整套图纸的字体问题扫干净。扫描前全部图纸做好备份。批量跑完后抽查三到五张,重点看那些原来报缺字最多的图纸,确认命令行不再提示“无法找到形文件”。
4. SHX字体使用避坑:乱码、问号、丢字的排查清单与修复路径
4.1 替换后所有文字变成问号:先查编码不匹配
现象:用新字体替换旧字体后,整张图纸的中文全部变成?????,西文字母和数字正常。
原因:最常见的是编码表不一致。CAD里的中文字体不是按Unicode标准存储字符的,而是按GB2312或Big5编码定义字形。原图纸里的文字内码是GBK,新换上去的大字体只支持Big5,两边的字符位置对不上,每个字都映射到了空字形,就输出问号。另一个可能是替换时把主字体栏位和大字体栏位搞混了,中文内容被当成西文字体渲染,自然全错。
解决:先确认原图纸的中文是用什么编码写入的。查看方式是在CAD里选中一个乱码文字,打开属性面板看“文字”内容,如果显示的是乱码但能复制出来一串十六进制值,就用十六进制值反查编码。更快的办法是换一个大字体试试:把文字样式的大字体改回国标体系(GB系列),如果恢复显示,说明原来的字体编码不同。合集中同名字体有多个版本时也一样,逐个替换并用LISTFONT确认。
4.2 简体正常但繁体乱码:GBK与Big5的边界问题
现象:一张图纸里简体文字显示正常,繁体文字全部变成无规律的乱码,有时还会出现简体字形但含义完全不对。
原因:简体大字体按GB2312/GBK编码索引字形,繁体文字输入时的内码是Big5。两个编码体系对同一个十六进制数值对应的汉字完全不同,套到简体字体上就映射到别的字形,看起来像乱码。这个坑在港资项目图纸里很常见,不是字体文件坏了,是编码体系本身就不同。
解决:给繁体文字单独指定一个支持Big5的大字体样式。操作上先新建一个文字样式,大字体栏位选繁体合集里的字体,再把乱码文字选出来改成这个样式。如果图纸里繁体文字分散在多行文字里,建议用查找替换功能先按文字内容过滤,再批量改样式属性。这里有个经验:不要试图用一个字体同时显示两套编码,除非你确认某个大字体内部确实包含双编码映射表,这种文件通常体积明显偏大。
4.3 工程符号显示正常但中文丢字:字形覆盖范围不够
现象:直径符号、度数符号、公差符号都显示正常,但某些生僻汉字显示成空白或者方框,其他汉字没事。
原因:SHX字体是按形定义组织的,每个字体文件能容纳的字形数量有限。很多中文字体只收录了GB2312的一级汉字和常用二级汉字,冷门地名用字、人名用字、古建筑专用字没被定义。CAD渲染时在该字形表里找不到这个内码,输出空白或占位框。工程符号正常是因为符号段通常被单独定义了,和汉字字形池互不影响。
解决:先确认那个字在GBK编码里的区位,再用合集中的扩展字体替换。有些字体宣称支持GB18030,收录了两万多个汉字,能覆盖绝大多数生僻字。如果合集里没有,就把这个字所在段的文字单独设置成TTF字体,TTF走Unicode,字符集完整,显示上是唯一可靠的兜底。注意这种字在图纸里可能出现在图纸标题、人名签章栏,数量不多,单独处理比换整套字体划算。
4.4 团队多人打开同一张图字体不一致:版本和目录的双重统一
现象:同一张DWG,在自己电脑上显示正常,发给同事后打开,部分文字变了样子,个别符号位置偏移。双方用的字体文件名一样,但显示效果不同。
原因:文件同名但版本不同。CAD字体目录里有同名SHX文件时,CAD按加载顺序读取,先找到哪个就用哪个。不同来源的同名hztxt.shx,字形定义和字符间距参数可能完全不同。版本高的可能修正过某个字符的宽度,版本低的没有。这属于典型的“黑匣子”问题,文件名相同并不能保证字形相同。
解决:团队内部统一字体合集版本。具体做法是把一套确认过的SHX字体合集放到共享服务器,每人本地的CAD字体目录只保留这套合集的固定版本,通过字体映射表把其他字体名全部指到这套字体。有条件的话,用脚本在CAD启动时校验字体目录下关键SHX文件的MD5值,不一致时给出警告。这个习惯看起来很重,但对几十人协作的图纸流转来说,省掉的是大量的“在我这是好的”来回扯皮。
5. SHX字体合集的进阶验证:从字体替换到字形检查与定制
5.1 用预览工具核对字形覆盖范围
批量替换只能解决“字体对不对得上”,解决不了“字体里的字形够不够”。我现在的习惯是,合集中的每个核心中文字体装完以后,都做一次字形覆盖检查。Excel里列一份常用字表,包含国家标准里最常见的3500个汉字,再补上直径、正负号、度数等符号,生成DWG后在CAD里用该字体逐个输出,肉眼扫一遍有没有空白字符。虽然没有自动化工具能一步到位,但这个验证动作值得做一次,做完就对合集心里有底。
5.2 字符确实缺时,从SHP到SHX的定制补字流程
发现某个生僻字在所有SHX字体里都没有,可以走一遍补字流程。CAD支持把SHX反编译成SHP文本文件,也支持用COMPILE命令把SHP编译回SHX。SHP文件里每个字符是一个带编号的向量定义块,照着已有字形的格式,用直线和圆弧描绘出目标字形,写一行形定义,再编译回去覆盖原字体。这个操作不复杂,但属于药方级操作,改完必须验证宽度因子和偏置是否正确,否则可能拖累整个字体文件的排版。我不建议在项目正忙时做,只作为摸底后的选项。每次拿到新合集,我也会先比一次关键文件的MD5,确认是同一套,再推给团队。这个习惯帮我挡掉了后面很多“图纸到别人手里变样”的麻烦。希望帮到你。
本文还有配套的精品资源,点击获取