公司OA有了自动识名字后加入签名的功能,而我的名字中有一个生僻字“珽”,在CAD里面使用矢量字体文件不显示这个生僻字,导致名字中间出现“?”号。为了解决这个烦人的问题,需制作一个带这生僻字的字体文件。鉴于网上找到的是通过CAD生成SHP的方案,生成的字体实在难看,要求做到跟原生字体一样质量的效果,还得认真了解SHP的数据构造才行。

  • 准备修改的目标矢量字体文件为“HZTXT.shx”,从网上搜索下载SHX2SHP.exe,把“HZTXT.shx”反编译为“HZTXT.shp”,然后用文本编辑器打开。

用记事本打开后的样子

android 生僻字 下载生僻字_lisp

  • 找“珽”字的GKB码,然后找“挺”和“玖”的GKB码,这两个字可以拼接成“珽”字。珽[44101]挺[52646]玖[48833](我是通过访问这个网址来在线找码的: http://www.mytju.com/classcode/tools/encode_gb2312.asp)
  • android 生僻字 下载生僻字_文本编辑器_02


  • 在“HZTXT.shp”中通过GBK码可以找到“挺”和“玖”对应的数据内容

下面是“挺”字的数据

android 生僻字 下载生僻字_lisp_03

 下面是“玖”字的数据

android 生僻字 下载生僻字_lisp_04

 数字看起来很复杂,其实就是字体笔画的XY坐标,括号里面为笔尖从一个点移动到下一个点的相对坐标值,把它们排列一下就清楚了。
*48833,118,0(玖)
7,1,8,

(14,92),1,9,(37,7),(0,0),2,8,

(-18,-5),1,9,(-1,-58),(0,0),2,8,                         (第2笔)

(-24,-11),1,9,(45,17),(0,0),2,8,                         (第3笔)

(-39,22),1,9,(37,7),(0,0),2,8,                                 (第4笔)

(22,55),1,9,(3,-6),(-2,-10),(-4,-12),(-3,-11),(-3,-11),(-5,-8),(-3,-8),(-2,-5),(0,0),2,8,         (第5笔)

(14,28),1,9,(5,-2),(25,8),(-2,2),(-6,-12),(-5,-12),(-5,-10),(-6,-11),(-8,-10),(-7,-9),(-8,-8),(-9,-6),(-7,-5),(-11,-6),(0,0),2,8,                 (第6笔)

(55,51),1,9,(22,-45),(17,-2),(-17,3),(-2,2),(0,0),                 (第7笔)

7,2,0

内容分析:

*48833 = 字体的GBK码

118 = 字体绘画数字总数(增加一个坐标数字加2,增加“1,9”或“2,8”数字也加2)

0 = 没什么用,可忽略

(14,92),1,9,  = 从(0,0)开始偏移(14,92)然后落下笔尖,准备划线

(37,7)  =  笔尖从一个点偏移(37,7) 到下一个点

(0,0),2,8,  =  抬起笔尖,停止划线

...数据最后

7,2,0  =  还不知道什么意思,反正每个字都有。

  • 然后就可以以“挺”字的数据为基础,将前面三个笔画删除,添加“玖”字的前面四个笔画,并把前面的GBK码改成“珽”的GBK码44101

*44101,156,0

7,1,8,

(14,92),1,9,(37,7),(0,0),2,8,                         (玖字第1笔)

(-18,-5),1,9,(-1,-58),(0,0),2,8,                          (玖字第2笔)

(-24,-11),1,9,(45,17),(0,0),2,8,                         (玖字第3笔)

(-39,22),1,9,(37,7),(0,0),2,8,                          (玖字第4笔)

(5,18),1,9,(16,5),(-3,1),(-3,-7),(-11,-31),(-2,1),(20,6),(-2,1),(-2,-5),(-1,-9),

(-2,-8),(-2,-7),(-3,-7),(-3,-7),(-3,-7),(-4,-6),(-4,-5),(-4,-2),(0,0),2,8,         (挺字第4笔)

(4,40),1,9,(54,-35),(22,3),(-22,-1),(-6,3),(0,0),2,8,

(9,97),1,9,(3,-3),(-2,1),(-6,-4),(-7,-5),(-15,-8),(0,0),2,8,

(1,-22),1,9,(1,0),(38,8),(-3,1),(-5,-2),(0,0),2,8,

(-32,-36),1,9,(36,6),(0,0),2,8,

(-21,51),1,9,(0,-53),(0,0),

7,2,0

注意(挺字第4笔)开头原来的偏移坐标是(9,1)我改成了(5,18),是因为提手旁的起笔处与王字旁的起笔处不一样,这个需要自己研究怎样设定合理的偏移值。

另外原来“挺”字的笔画总数是“168”,现在改成“珽”字后变成“156”,需要数一数减少的提手旁减少了多少数字,增加的王字旁加回了多少数据,把它修正进去。

注意SHP内文本一行字不要太长,注意换行,否则编译也会不通过。

  • 将以上内容复制到在“HZTXT.shp”最后面,保存。
  • 在CAD中,命令行输入“COMPILE”,然后选中“HZTXT.shp”,将其编译为“HZTXT.shx”。关闭CAD,将文件拷贝回CAD的FONT文件夹中,启动CAD。
  • 大功告成。

android 生僻字 下载生僻字_命令行_05