汉字单线体大字库补充稀缺字教程
本帖最后由 wharan 于 2022-11-8 20:35 编辑AutoCAD从诞生以来,就支持单线体字库。单线体字库以显示速度快见长,但其字库一般仅包括常用汉字,偏僻字、罕见字往往缺少。有时候图形、签名等又会用到这些稀缺汉字。现在就给大家一种补充稀缺偏僻汉字的方法。
平台AutoCAD中文版及自带的扩展工具包ExpressTools(本人使用的是AutoCAD2023及Express Tools),字形反编译工具SHX2SHP。
教程:
1、首先将自己需要扩充的字库(shx文件)反编译成SHP源文件。如HZTXT.shx,反编译成HZTXT.shp。
2、根据自己扩充的字库风格,选择参考字库。如自己使用的是仿宋体,则使用仿宋体.tff大字库。定义字型,宽高比设置成1。
3、使用DTEXT书写需要的稀缺汉字,用Express Tools中的文本工具,将写好的稀缺汉字分解成线。然后以此轮廓,描出自己需要的汉字单线体(也可以将已有的单线体字分解后,组合而成)。
4、建立一个16x16的方格网,颜色任意,复制成块(便于后续操作)。
5、将描出的线性稀缺字,放到方格网中,缩放调整大小(以每边留一格为宜)。然后用CAD自带的JOIN命令,将”字线”合并,以减小自造字的字节。
6、使用Express Tools中定制工具,制作形,如“崁”,形文件名任意,建议为“崁.shp”,形名称为"崁",插入点为网格左下角,形尺寸为64*64。然后就会生成一个shp文件。
7、用文本编辑器打开刚生成的shp形文件,在第二行前插入“7,1,5,8,(5,0),”,在结尾的“0”前插入“6,7,2,”。把第一行的第一个数字换成该汉字的Unicode,如“崁”的编码是23809,注意保留前面的*号,把第一行的第二个数字+9,如原来是201,则变成210。然后全部选择,复制。
8、用文本编辑器打开步骤1生成的shp文件,拖到最后,粘贴刚才修改的文件内容,然后保存成shp文件。
9、命令行键入“compile”编译最后生成的大字体源文件。如没有错误,则会生成同名的SHX字形文件,复制到AutoCAD的FONTS下,即可。
注意:
1、步骤6制作形时,仅支持线段和多义线;
2、步骤7中,括号内的(5,0),不同的字体文件可能会是不同的值,根据需要调整。
3、步骤3,可以通过描、绘、组合等手段生成“线性字”
本帖最后由 e2002 于 2022-11-9 19:57 编辑
得到shp后,能在最前面看到字形定义的高度值,按这个值设置方格网的高度(不是每个字体都是 64x64)。
其他的一些描述(例如第7步),最好说清楚每个操作是什么意义,初学者才能理解。
如果大家对文字形定义有兴趣,可以打开帮助文档/自定义参考/形定义 部分, 完整学习。 本帖最后由 e2002 于 2022-11-9 20:03 编辑
用革天明 ttf 文字外轮廓工具,得到ttf字符的高精度轮廓线,然后再有个工具,能解析并获得对应的 shp 定义数据就好了。
最后就是遍历全部编码的中英文字符... 就是在版权法律上似乎有问题,有知识产权方向的律师能咨询吗? 本帖最后由 wharan 于 2022-11-10 10:05 编辑
e2002 发表于 2022-11-9 20:02
用革天明 ttf 文字外轮廓工具,得到ttf字符的高精度轮廓线,然后再有个工具,能解析并获得对应的 shp 定义 ...
你这个建议也是有问题的:shx大字库支持的文字个数有限,好像是6763个,只能收入基本常用汉字。 感谢分享,授人以鱼不如授人以渔。 wharan 发表于 2022-11-10 09:35
你这个建议也是有问题的:shx大字库支持的文字个数有限,好像是6763个,只能收入基本常用汉字。
自定义参考中的相关内容:
关于定义大字体
大字体文件第一行中的特殊代码指定如何读取双字节十六进制代码。
包含成百上千种字符的字体,其处理方式与包含最多 256 个字符的 ASCII 字符集字体处理方式不同。除了使用较为复杂的文件搜索技术之外,程序还需要用双字节代码和单字节代码表示字符的方法。这两个条件可用大字体文件开始部分的特殊代码来满足。
大字体形定义文件的第一行必须如下所示:
*BIGFONT nchars,nranges,b1,e1,b2,e2,...
nchars 表示集合中近似的字符定义数量。如果此数值过大,且误差超过百分之十,则速度或文件大小就会受到影响。可以用行中余下的空间标识双字节代码开始区域的特殊字符代码(换码代码)。例如,在日语计算机上,Kanji 字符以 90-AF 或 E0-FF 范围内的十六进制代码开始。当操作系统读到这些代码之一时,将继续读取下一字节,并将这两个字节组合成一个代码,以表示一个 Kanji 字符。在 *BIGFONT 行中, nranges 指出有多少个连续区间中的数字用作换码代码; b1 、 e1 、 b2 、 e2 等定义了每个区间的开始和结束代码。因此,日语大字体文件的开始可能如下所示:
*BIGFONT 4000,2,090,0AF,0E0,0FF
在 *BIGFONT 行后,除字符代码(形编号)最大可以为 65535 之外,字体定义与常规字体相似。
这个厉害了!~
页:
[1]