gbcbig.shx字体的BUG

1 篇文章 0 订阅
1 篇文章 0 订阅

在解析ACAD中的shx字体文件时,遇到了一点问题,找遍网络也没找到答案,能找到一个帖子也是提问的,如:http://www.cppblog.com/wrhwww/archive/2011/03/23/142544.html?opt=admin

我在autodesk论坛上发过一个求助帖,也是无人回答。

原文是这样的:

------------------------------------------------------------

shx fonts 自定义

自定义shx字体时,对字体的规格说明中 above below两个参数可以决定字体的整体高度,并用此高度确定生成实际文字时的缩放比例。ACAD提供的大部分字体,其above和below都是大于0的数字,这个很容易理解。但是,我发现有的字体(如gbcbig)其above=0,说明,该字体的基线以上部分的高度就是0,这似乎不合常理。我曾经做过测试,使用这种字体,分别改动其below为不同的值,在生成指定高度的文字时,都能生成一样的文字,并不会跟随below的改变而改变,似乎是ACAD忽略了below的值,然而,above=0,那么ACAD是根据什么确定该字体的设计高度呢?也就是说,凭什么来确定缩放比例呢?希望有人能够帮到我解释这个疑问。谢谢。

------------------------------------------------------------

我一度放弃了追索答案,采用一种妥协的办法,对于above=0的字体,在根据设计字高生成字体时,固定了计算比例,显然这是不对的,但是对于gbcbig这种没有答案的字体,也只能这样了。

代码里的注释:

           // gbdbig.shx中,字体的定义为above=0,below=64,与其他的bigfont字体着实不同
            // 经过研究发现:
            // 在AutoCAD中使用这个字体生成的文本,AutoCAD是不考虑below的具体数值是多少的。
            // gbcbig字形定义,开始的子形中,对比例做了调整动作,*9,/102
            // 假设字形的高度为100(一个很可能的数字),
            // 则9/102实际上是对100做了缩小的动作, 设计字高变成了100*9/102
            // 那么生成指定高度为height的文本时,相对设计高度的缩放比例为heihgt/(100*9/102)
            // 即:height*0.1133
            // 此外,并没有发现AutoCAD自带的其他字体有这种设计(above=0)

今天,在网上闲逛,无意中搜到一篇类似的帖子,顿时感觉心中畅快,竟然是gbcbig的bug。RI。呵呵

跨区请教陈老师一个CAD字体的问题

帖子的内容是这样的:

本人是一家工业炉公司的技术人员,从事工业炉的建造施工、工业炉设计制图、房屋建筑的建筑和结构设计制图、钢构件加工详图制图工作。
  一直有一个问题困扰着我,就是"gbcbig.shx”形字体在单行文字使用当中,其对齐方式不能使用“下对齐”,否则文字会跑到相对于基点(或者叫文字基线?插入点?)一个非常离谱的位置,大概是文字高度的十倍吧,然而我在制作某些动态图块时,某些属性定义又需要下对齐。
  为了解决这个问题,本人在网上找了个叫shxviewer的程序,将gbcbig.shx 保存为 shp 文件,想从中找出原因。想到这么做是因为以前为了解决cad字体中许多特殊字符无法输入,用这个办法自己在gbenor.shx中加入了很多自己需要的特殊字符,较好解决了问题,然而这次却没能解决问题。
  之所以跨区来问陈老师,是因为陈伯雄老师原来就是做CAD相关技术工作的,而且我还偶然在某个形字体中看到了一个“陈伯雄”的篆体印章特殊字符,当时我就想这个方面的工作肯定跟您有关,加之上次在一个曲线方程的帖子中请教了陈老师关于3个筒相贯展开的问题,得到了陈老师的专业指点,所以再次怀着不耻“瞎”问的心情,想得到陈老师的解答。

 

Re: 跨区请教陈老师一个CAD字体的问题

楼主很厉害呀,竟然找到了我暗藏的印章“标记”...

事情是这样的:
在1999年,按Autodesk的要求,我做完了GBxxx.SHX的一套矢量字库,并被加入到发行的版本中。
在2000年,您说的Bug被技术部门发现,同年,产生了这个Bug的修正版。这就是说2000年之后的版本,已经没有您说的错误了。
后来又有几个小的Bug被发现(诸如个别字却少笔画),并产生了后来的几个修订版本,最终的版本是2001年12月,后来就没有再修改。

不幸的是,在AutoCAD2002,却有网友告诉我您提交的这个被修正的问题再次出现,我查了一下,原来在发行盘中加入的是1999年的有问题的版本。当即向有关部门报告此事。
因为工作关系,好多年没有关注AutoCAD的事情了,没想到在AutoCAD2011中仍却仍然是有错误的版本(我已经验证了)。
AutoCAD自带的文件是1999年1月生成,882K
正确的最终版本文件是2001年12月生成,876K(因为做了数据优化,字符增加,文件大小却减少了)

请用2001年版本替换您的旧的SHX,应当就好了...

贴中还附上了正确的gbcbig.shx供下载

本想把正确的字体添加过来,但找不到添加附件的地方啊。

 

这里把两个版本字体的0号字形做个对比,CBX 估计是陈伯雄的缩写。

1999年版本:

*BIGFONT 7019,1,0A1,0FE
*0,4,工程汉字字符集 1998.1. FAW/Autodesk CTC CBX(0293)
0,64,2,0

2001年版本:

*BIGFONT 7023,1,0A1,0FE
*0,5,工程汉字字符集 2001.4.27 DHCAD CBX(0293)
48,0,2,48,0

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值