生僻字的分类
我们知道中亚的电子书特别喜欢做生僻字的图片补丁,在分析归类之后,从易到难可以分为下面几类:
- 字符属于GBK区,只是看起来陌生,例如觺这个字(u89FA),中亚照样是做了图片的,可能kindle的字库连GBK都没有达到;
- 字符属于扩充A区。之前我说过了,安卓的系统字体是18030-2000的,也就是说支持GBK+A,只不过多看内置的字体只有GBK,那么这些字符就会以系统字体的黑体显示(如果你换了系统字体,那就可能不显示或者显示别的字体)。
- 字符属于扩充B区。其实这种情况也还算方便,毕竟支持扩充B区的超大字符集很多,可以方便的借用整个字符过来,
- 字符属于扩充C—F区。这种情况,只有宋体的两个超大字符集可以用(花园体也是宋体的),对于楷体而言,就得拼部首造字了;
- 字符属于手写字或者图片字,反正不是国标确定的码区,这种情况就得多一个步骤,除了造字,还需要分配一个自定义码位给你的新字。
输入字符
在造字成功之后,就要输入这个字符到sigil中了。
以前大家可能听过windows中按住alt键输入内码松开alt键输出文字的方法,但是内码和unicode之间还是要进行转换的,比较麻烦。之前我走了点弯路,找了个网页进行unicode到字符的转换,其实还有个更简单的办法,就是利用html实体。
sigil对html实体支持良好,而且保存文件时,它会自动将实体代码转换为字符。举个例子,要输入觺这个字,只需在html中输入觺
即可,保存时会自动转换为觺。如下图:
扩充AB区造字
第一种情况,直接将图片字替换一下就可以了,这里就不多说了。扩充AB区的字符可以直接借用,步骤如下:
启动fontstudio,打开rsong.ttf(这是拿多看的方正书宋_GBK.ttf改的,去掉了大部分GBK的汉字以减小体积)
现在我要借用大字符集中的𠂤字(通过汉字宝典搜索到u200A4),打开方正超大字符集,按
ctrl+f
打开搜索界面,左边选择Unicode index,右边填写200A4,回车就可以跳转到𠂤字符处。此时已经选中𠂤字符,底色是蓝色,按下
ctrl+c
。将rsong.ttf的界面调出来,不要选中任何字符,拉到最下面,按下
ctrl+v
即可粘贴刚才的𠂤字符这样就完成了字符的借用,对比书宋现有的字符,这个字符显得字重太小,笔画太细了,需要进行修饰。双击该字符就可以打开字形(Glyph)修改界面,如下图:
这里的字形实质上是个矢量图,与PS中钢笔工具的使用差不多,简单介绍一下:
我们可以看到,字形矢量是由不同的点和线构成的,上图放大了可以看到方形的点是连接线条的“锚点”,十字型的点则是调整线条曲率的“辅点”。鼠标选中一条线段(或者锚点)之后,可以拖动,或者用方向键像素级微调位置,从而调整了笔画的粗细,选中辅点拖动,就可以调整对应线段的曲率。
- 如果一条直线,想将其弯曲怎么办?按住
alt
键选中线段拖动即可。 - 按住
shift
键可以多选点或者线,可以框选,框选会切换选中的状态。 - 双击一条线段,会自动选中该线段所在的封闭区域。
- 锚点选中为蓝色,黄色说明有多个锚点重合。选中后按
delete
键就可以删除点或者线,但它不会“断开”,而是继续保持封闭区域。 -
如果想将两个区域合并或者分割,要使用左上角的工具栏。
工具栏
工具栏从左向右简单介绍一下:
- 选择工具,一般在此状态下进行编辑。
- 橡皮擦,擦除字形的点和线,用得很少,因为选择时按
delete
更精确。 -
小刀,可以在线上创建锚点,在锚点上切开,切开后会显示×图标,线头会分割开,用于和别的笔画拼合。如果存在未闭合的锚点或线段,生成字体时会警告。
小刀 - 测量模式,进入后不会对字形做修改,鼠标按住拖动会显示像素值,用来测量笔画粗细。
- 绘制孤立锚点,再次点击会删除这个点,与PS钢笔工具类似。
- 绘制直角锚点,继续在别的地方点击形成直角线段。
- 绘制圆角锚点,继续在别的地方点击形成曲线线段。
- 绘制切线锚点(没看出来有什么作用)。
- 绘制一个矩形,4个锚点。
- 绘制一个圆形,4个锚点。
- 旋转所选部分。
- 缩放所选部分,在拼部首时很有用。
- 斜切所选部分。
-
自由变换(与PS中差不多)
后面两个我们暂时用不着。现在我们选中线段进行加粗即可,最终效果如下:
加粗之后
关闭后,file-generate font即可生成新的字体,按照前一帖子将新字体加入sigil后,再按上面的方法输入html实体,即可正常显示AB区的字体。
扩充C—F区造字
这种情况的造字稍微麻烦一点,同样从开心宋体等大字符字体借用字符和码位之后,如果你要造楷体字,那字形就得重新设计,例如造[南殳]字(u2C1A9),同样搜索到开心宋体的对应字符,复制到楷体字中,如图:
双击后将其清空,然后从楷体字中搜索“献”和“殷”来拼部首就行了,根据上面所说的工具,可以略微调整部首宽度,最后效果如下:
之后的步骤都是一样的。
生造字
这种情况的造字又要多一个步骤,也就是确定一个编码区来放你的生造字,例如从F0000开始放生造字,那么从开心宋体复制了对应字符后,先清空字形,然后右键点击该字符:
在弹出的重命名对话框中,将下面unicode改为F0000,上面的name也必须要改为uF0000,否则调用可能出问题。只要点击一下name最右边的钻石按钮就会自动更改了,别的选项不用改动:
接下来的步骤与上面的是一样的。