昨天有一位朋友问我字体显示为问号的问题,这确实一个非常普遍的问题。现在设计单位的交流越来越多,有单位内部的,也有单位之前的交流,我们收到一张图纸打开后经常会因为没有字体而导致有些字显示为?号。
字体显示问号的这种问题在中国比较突出,主要原因是国内字体比较多,用得也很乱,网上随便就可以搜到两千种CAD字体库的下载。同名的字体有多个不同版本,有时找到同名的字体但因为版本不对替换后仍有问号存在。有些单位和个人还喜欢修改字体名字,于是一个字体就又有了很多不同的名字,最终导致网上根本找不到同名的字体。
在介绍解决方法之前,我们先来了解一些显示问号的原因。下面先介绍一下字体文件的格式。
CAD可以用两种字体文件:
一、操作系统通用的ttf字体,例如宋体、黑体。这些字体不仅可以在CAD里使用,还可以在OFFICE、PS等软件中使用。
二、CAD专用的shx字体,例如txt.shx、hztxt.shx等,这些字体只能在CAD里使用。
而CAD的shx文件分为三种:
1、用于显示数字和英文等单字节符号的小字体,字体类型称为unifont,
2、用于显示汉字、日文、韩文等双字节字符的大字体文件,形文件类型称为bigfont.
3、专门保存用于线型等特殊图形用的一些图形符号的符号形文件,形文件类型是shapes。
出现问号的原因:
如果图中采用的系统字体,如宋体或黑体等,通常不会出现问号,如果某些特殊字符没有的话,会显示为方框。
CAD在打开图的时候如果没有提示缺少字体,打开图中有问号,说明我们使用的字体跟原来图中使用的字体同名但版本不同。
如果CAD没有找到到图中用的字体,会提示忽略或替换字体,无论是忽略或选择替换字体都有可能出现问号。如果选择忽略字体替换,当缺少某种小字体时,字符会用CAD系统默认设置的替换字体文件(在"选项"对话框(OP)中可以设置,通常为simplex.shx)代替,如果替代字体中没有的字符会用问号表示,例如simplex.shx中缺少钢筋符号,钢筋符号就会显示为问号。如果CAD缺的是大字体,如果是多行文字,CAD通常会用宋体替换;如果是单行文字,AutoCAD不会显示这些文字,将会显示为空白,而浩辰CAD会显示问号。如果选择替换成了同类字体,这些字体中缺少的字符就会显示问号。
遇到字体显示为问号怎么办呢?首先想到也是最好的方法就是:找到原来使用的字体!
假如是同事或合作伙伴发给你的图纸,可以让他们将字体一起发过来(用电子传递功能可以直接将图纸所用的字体和外部参照、图像一起打包)。如果你找不到原图的绘制者,可以到网上搜同名的字体,如果搜到多个版本,可以挨个试试,运气好的话应该可以找到相同的字体。
如果实在找不到原字体的话,只能自己想办法了。办法有下面几种:
一、在打开文件时根据提示选择合适的字体文件进行替换。
此时必须合理判断缺少的文字是什么类型的字体,从而选择合适的字体进行替换。小字体通常就那么几种,尤其在国内使用特殊小字体的比较少,常用的有txt.shx和simplex.shx,如果图中钢筋符号显示为问号,你可以在网上找一下tssdeng.shx字体。如果缺失的是大字体文件,大字体文件你可以先统一替换成hztxt.shx或hzfs.txt等这种字体,这种字体一般人都会有。AutoCAD里好像也不带,国产CAD,例如浩辰CAD倒是直接带这样的字体。加入你选择替换成常规的小字体和大字体都提示不是正确的形文件,你注意一下名字是否是:aaa.shx,gdt.shx,ltypeshp.shx,这类文件就是符号形,是无法轻易替代的,这类文件对文字通常不会产生什么影响,只会使有些带符号的线型显示为普通的虚线,如果遇到线型或某些图形显示不正确,你就必须找到合适的形文件了。
二、设置字体映射文件。
如果只是看图,只要求文字能正常显示,而且一批图纸中缺少的字体是相同的,这种情况下可以设置一下字体映射文件,图纸在打开时CAD会将某些字体自动映射成你设置的字体。
CAD的映射文件是*.fmp,AutoCAD的映射文件叫acad.fmp,浩辰CAD的映射文件叫gcad.fmp。
这个文件是一个纯文本文件,可以用记事本打开进行编辑。可以遇到一种添加一种,例如你可以将所有
汉字都映射为hztxt.shx,如下表所示:
hztxto;hztxt.shx
hzdx;hztxt.shx
hztxt1;hztxt.shx
hzfso;hztxt.shx
hzxy;hztxt.shx
fs64f;hztxt.shx
hzfs;hztxt.shx
st64f;hztxt.shx
kttch;hztxt.shx
khtch;hztxt.shx
hzxk;hztxt.shx
Kst64s;hztxt.shx
ctxt;hztxt.shx
hzpmk;hztxt.shx
Pchina;hztxt.shx
ht64s;hztxt.shx
kt64f;hztxt.shx
eesltype;hztxt.shx;
用这种方法并不能保证选择的字体就能完全替代原来使用的字体,因此打开图纸后仍有可能一些文字会显示为问号。
三、修改文字样式。如果要求文字正常显示,但对字体显示要求不高,可以直接修改图中的文字样式。选择有问号的文字,在属性框(CTRL+1)中看一下文字使用的文字样式,然后输入ST(style)打开”文字样式”对话框(格式>文字样式),在对话框调整成其他字体看看。如果图中没有钢筋符号一类的特殊符号,中文可以不用SHX的大字体,而直接使用宋体、黑体等操作系统字体来替换。
如果是自己画的图出现了问号,那可能是我们换了机器或重新系统或了CAD软件,导致我们原来添加的字体丢失了。为了避免出现这种情况,我们最好将自己常用的字体备份起来,放到硬盘或云盘,如果更换了机器和重装了系统或CAD后可以将字体恢复到原始状态。
经常有人问我有没有万能的字体,只用一个字体就可以所有图中所有符号都不显示为问号且显示正确。我要告诉大家的是:不可能有有这种字体!原因很简单,同样的编码在不同字体文件中可能对应的是不同的符号,我找到过两个tssdeng.shx文件,两个文件中的钢筋符号就是不同的,因此,用一个字体可以保证所有字符都不显示为问号,但不能保证所有图中所有字符都显示正确。
有人说找到了原字体,打开时也没有提示缺少字体,打开后还会显示问号,这种情况就得具体问题具体分析了,看看路径配置、文字样式中字体是否正常识别等等。
综上所述,文字出现问号的最佳方法就是找到原字体,找不到再想其他方法。