明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1120|回复: 9

[经验] 汉字单线体大字库补充稀缺字教程

[复制链接]
发表于 2022-11-8 20:26 | 显示全部楼层 |阅读模式
本帖最后由 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,可以通过描、绘、组合等手段生成“线性字”


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

36224是GBK的编码  发表于 2022-11-9 15:24
好吧,我的算法不对(vl-string->list "崁")->(141 128)->转16进制"8D80"->转10进制36224  发表于 2022-11-9 15:15
崁的编码是36224吧  发表于 2022-11-9 15:10

评分

参与人数 1明经币 +1 收起 理由
ssyfeng + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-11-9 10:55 | 显示全部楼层
本帖最后由 e2002 于 2022-11-9 19:57 编辑

得到shp后,能在最前面看到字形定义的高度值,按这个值设置方格网的高度(不是每个字体都是 64x64)。
其他的一些描述(例如第7步),最好说清楚每个操作是什么意义,初学者才能理解。

如果大家对文字形定义有兴趣,可以打开帮助文档/自定义参考/形定义 部分, 完整学习。
发表于 2022-11-9 20:02 | 显示全部楼层
本帖最后由 e2002 于 2022-11-9 20:03 编辑

用革天明 ttf 文字外轮廓工具,得到ttf字符的高精度轮廓线,然后再有个工具,能解析并获得对应的 shp 定义数据就好了。
最后就是遍历全部编码的中英文字符... 就是在版权法律上似乎有问题,有知识产权方向的律师能咨询吗?
 楼主| 发表于 2022-11-10 09:35 | 显示全部楼层
本帖最后由 wharan 于 2022-11-10 10:05 编辑
e2002 发表于 2022-11-9 20:02
用革天明 ttf 文字外轮廓工具,得到ttf字符的高精度轮廓线,然后再有个工具,能解析并获得对应的 shp 定义 ...

你这个建议也是有问题的:shx大字库支持的文字个数有限,好像是6763个,只能收入基本常用汉字
发表于 2022-11-10 14:48 来自手机 | 显示全部楼层
感谢分享,授人以鱼不如授人以渔。
发表于 2022-11-10 16:41 | 显示全部楼层
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 之外,字体定义与常规字体相似。
发表于 2022-11-30 21:27 | 显示全部楼层
这个厉害了!~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 21:32 , Processed in 1.816523 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表