中望cad字体为什么显示问号?

这个问题已经遇到很多次了,前几两天又有网友有遇到类似的问题:打开图纸时提示缺少字体需要替换,但将缺少字体拷进去后一些文字还是显示问号,如下图所示。


显示问号很显然是缺字体,但已经将提示要替换的字体找到并复制到CAD的FONTS目录下后,不再提示要替换字体了,为什么图纸打开仍然显示为问号?
看了图纸后很快找到了问题,这个问题看来很普遍,因此觉得有必要将问题的原因跟大家讲一下。
当遇到这类图纸后,先看一下显示问号的文字使用的文字样式。如果是普通的文字对象,选中文字,直接LI查询或在特性面板(CTRL+1)中查看一下文字样式。如果文字是图块的属性文字,可以双击属性块,在弹出的编辑属性文字对话框中选中属性后,单击“文字选项”选项卡,可以看到使用的文字样式,如下图所示。


CAD的文字样式应该如何设置?
这张图纸中问号用的文字样式是WORD-1。输入ST回车,打开文字样式对话框,查看此文字样式使用的字体,如下图所示。


从文字样式对话框中可以看到确实有字体没有找到,因为这个字体是操作系统的TTF字体,而SHX的小字体或TTF字体默认设置状态下被自动替换成SIMPLEX.SHX,所以没有出现替换提示。
这个字体名字很奇怪:FangSong_GB2312,这是一个什么字体呢?为什么会找不到。
显然此图纸是在XP操作系统上保存的,选择一种XP系统中的字体:仿宋_GB2312,而WIN7以上系统没有的操作系统字体。
如果此图纸在XP操作系统下打开,文字就不会出现问号,因为字体就可以正常读取,XP系统中此样式的字体名显示如下图所示。


在高版本操作系统上不仅没有这个字体,即使从XP系统上将对应的字体文件:simfang0.ttf复制到高版本WINDOWS的FONTS目录下,字体也无法识别,文字仍显示为问号。
如果打开图纸的时候注意看命令行的提示,其实当时就可以知道问题出在哪儿。
上面这张图纸中还用到了楷体_GB2312字体,在打开图纸时,这两种字体都替换成默认字体:simplex了,命令行提示如下图所示。


看到这样的提示,就可以直接到文字样式里去看哪些文字样式使用了这些字体,都不用看哪些文字显示问号、使用的是什么文字样式了。
从XP系统拷字体文件到当前操作系统中也不能解决问题,只能将字体修改成当前操作系统中的字体。
在文字样式对话框中,将字体替换成仿宋或宋体,然后RE刷新图纸,文字就可以显示正常了,如下图所示。

不同版本或不同机器上CAD由于字体不同会导致文字显示问号,操作系统字体也存在兼容的问题,同样也会导致CAD图纸文字显示问号。这种操作系统自带的字体在高版本不兼容的情况不多见,不过在XP系统中选用这些GB2312字体的人还真不少,因此这类图纸比较多。既然使用系统自带字体都有可能有问题,当然更不建议在图纸中使用自己安装的系统字库中的字体。
如果这类图纸比较多,我们可以尝试修改CAD的字体映射ACAD.FMP文件,自动进行字体替换,但图纸换一台机器打开还是会有问题,最稳妥的办法还是像上面这样修改文字样式使用的字体后保存。

安装卸载文件及输入输出异常、退出基本操作设置界面和显示快捷键视图坐标定位捕捉选择及组图块字体和文字布局和视口标注打印填充外部参照光栅图像图层颜色表格线型二维绘图多段线图形修改三维建模复制粘贴查询面积、长度心得及综合技巧 工具及插件图库及相关资源

今天有网友遇到了一个奇怪的问题,图纸在别人机器上打开汉字都显示正常,但到了他的机器上全都显示为问号,如下图所示。

开始以为是缺字体,将字体全部都拷过来,打开的时候也没有提示缺字体,但文字还是显示为问号,如下图所示。

这个确实有点奇怪,我也无法确认具体原因。如果他的CAD版本和字体跟其他人都一样,那问题应该不在CAD上,可能跟系统环境有关系了,只能远程看了一下。

连接后我看了一下,果然图中所有汉字都显示成了问号,之前看他截图中字体设置也没有大的问题,于是我在命令行输入DWGCODEPAGE,返回的是ANSI_1252,很容易找到了问题的根源。如果是简体中文,图纸的代码页应该是ANSI_936,如下图所示。

我新建了一张空图,代码页仍然是ANSI_1252,这个显然是他的操作系统的区域语言设置出了问题。

打开控制面板的区域语言选项,发现果然如此,区域虽然设置的是中国,但语言设置的是英语(英国),如下图所示。

我点“更改系统区域设置”按钮,将语言设置成中文简体(中国)后,关闭并重新启动他的CAD后,文字打开就可以正常显示成中文了。

估计很多人会跟他一样奇怪,为什么CAD的文字显示还会受操作系统设置的影响?DWGCODEPAGE又是什么?

这个问题我也只是大致知道,要给大家解释清楚还真不容易,大家可能听说过UNICODE和非UNICODE,UNICODE可以更好地支持多语言,关于UNICODE如果大家想了解更多,可以搜一下相关介绍。如果是一些非UNICODE的中文版软件,当区域语言设置为英文时,菜单选项可能都会显示问号或乱码,或者打开文件时文件名都会识别成问号,如下图所示。

AUTOCAD 2007版以前就是非UNICODE的,在英文系统下就无法识别中文的文件名,到了AUTOCAD 2007版以后支持UNICODE了,但图纸和文字本身还是跟语言版本有关系的,尤其是CAD中使用的大字体文件跟图纸的代码页是密切相关的。如果是中文图纸使用的中文大字体,可以正常解析并显示为中文,但如果代码页变了,解析出来的字符就变了,如果在字体文件中找不到对应的字符,就显示成问号了,即使找到了对应的字符,也可能是错的,看上去像乱码。

2007或2008对代码页出来得不好会出现这个问题,但我试了一下2018也是如此。看来CAD对图纸代码页的处理策略跟旧版不同了,旧版的代码页是保存在图纸中的,比如一张日文图纸的代码页是ANSI_932,当一张中文图纸在日文系统上打开并保存,导致代码页变成日文后,回到中文系统的中文版CAD上打开代码页仍会是ANSI_932也会显示乱码或问号。但2007以后CAD图纸打开的时候直接根据系统语言来读取代码页。当系统语言改成英文后,所有图纸包括新建图纸的代码页都变成了ANSI_1252,这种情况如果打开图纸,用操作系统的TTF字体书写的中文是可以正常显示的,但用SHX字体写的中文的就是乱码或问号了,如下图所示。

其实不管图纸本身会有代码页,字体或文字对象也会有代码页,例如我们是可以在同一张图纸里既写中文又写日文的,两者都可以正确显示。

在系统语言设置成英文的状态下,我将大字体设置为bigfont.shx或gbcbig.shx,然后RE,中文也是可以正常显示的,如下图所示。

看来SHX字体也有区别,有些字体在图纸文件代码页不对的情况下也可以正常显示文字,有些则不行。

很多人遇到过图纸中其他文字都正常,但其中某一段出现乱码的情况,如下图所示。

换个低版本,如2004打开图纸并查看一下一下文字内容,看到的会不一样,如下图所示。

这种情况多半是这一段文字的代码页或编码错误了,在保存为低版本的时候使用了UNICODE编码来保存这些文字,最终导致出错,如果有办法在低版本中将这些UNICODE编码恢复成2004能识别的字符编码才行,这种情况CAD软件通常无法解决,最好找找找看有没有其他图纸中有相同的文字,复制粘贴过来吧。

出现这种情况原因我也不清楚,我一致以为跟在CAD高版本保存2004及以下低版本图纸有关,因为这类图纸通常都是2004或2000版图纸。不管是不是这个原因,建议大家保存2007版以上的图纸。

我也没有完全弄清楚UNICODE以及CAD的图纸代码页,文字对象、字体的代码页是如何控制和配合的,大家其实也不必知道这些,只需要知道下面两点:

1、如果系统的区域语言设置不对,可能导致图纸代码页错误,文字显示问号或乱码。解决办法就是到操作系统里将区域和语言改过来。

2、不要将默认保存格式设置成2004及以下版本,避免文字在反复的格式转换过程中出错。

我要回帖

更多关于 cad字体放在fonts没用 的文章