丁祥欢
造字并用自己的笔迹作为文本签名的小技巧
2022-5-25 09:25
阅读:1944

罕用字与Unicode标准

用电脑处理文字,以前经常碰到的一个问题就是,这个字在系统中没有,用输入法怎么也无法输入,怎么办呢? 比如说我伯父的名字中有一个字,左边是三个火字构成了“焱”,右边是“欠”,这就是一个典型的罕用字,连新华字典里都查不到,那时候,大多数输入法支持的GB2312字符集,收字不过几千个。几乎所有的输入法里都没有这个字。这时候怎么办呢?

Windows上有一个不太常用的工具就是“造字程序”,让你在一个画板上写出来这个字,再把这个字存到一个特定的字体文件中就可以用了。不过如果在其他的电脑上没有这个字体,需要把字体复制过去,要不是显示不出来的。

后来Unicode标准流行之后,由于收录的字符越来越多,很多特殊符号、罕用字、古汉字甚至二简字,都能在不断更新的Unicode标准中找到。只要电脑上提供了支持Unicode标准的字体,程序本身也支持Unicode字符显示,各种奇怪的特殊的字符大都可以显示和打印出来。因此造字程序用得越来越少了。

2021年9月发布的最新Unicode 14.0中,已经收集了144697 个字符,绝大部分汉字和特殊符号,都可以在Unicode标准中可以找到。比如上面说的这个字,它还有一个简化一点的同义字“”,在支持Unicode标准的大字库中,都能找到并打出来。我们老家表示“没有”意思的"冇有",冇字以前打不出来, 现在没问题了.又如陕西的"Biang Biang面"的Biang字,在Unicode13.0中就收录了。Unicode的这个完善程度,已经大大超过了著名的《康熙字典》和《中华大字典》等以收字量著称的辞书,更何况它覆盖的全世界的各语种用到的字符。

歘.png

欻.png

顺便说一下,上面6B58是字符的Unicode码值,76.12表示偏旁的编码是76(欠字旁),剩下的笔画是12画,所以也很容易理解下面的是76.8。以上来自Unicode14的标准。

当然,Unicode标准也收录了大量的各类特殊符号甚至是特殊的图案,比如:

麻将牌的字符.png

原因可以理解,汉字也好,图像也好,对计算机来说,显示它们的方法是一样的:或者是点阵图,或者是矢量图,或者是其它方法,只要统一就好。造字本质就是就是将字的图案存到一个特定的文件中,给它规定特定的编码,让你需要它时通过这个编码把它找到并显示出来 。

不过,支持Unicode标准的字体的更新,总是跟不上Unicode标准更新的速度, 到目前为止,我还没看到能够完全支持Unicode 14.0所有字符的字体, 另外,平面设计中也经常需要一些具有特殊风格的字体,或新的书写字体, 因此还是需要不断造字, 只是Windows自带的那个小程序功能较弱,不能满足设计和生产字体的需要,因此也诞生了更强大的字体设计和管理的程序.

Window造字程序

这个程序很早就有,在Win10或Win11中,按Win+R调出"运行",输入命令eudcedit再回车,就会跳出系统自定的造字程序,其界面如下。这个程序用法比较简单,字形的编辑与处理就是这个正方形的网格中,修改好后保存即可。不过它不适合批量处理很多字符。

Windows造字程序.png

FontCreator(以下简称FC)

优点与大概流程

FC的 优点是可以导入或粘贴位图,并将其转化为字体所需要的曲线构成的图形(本质是矢量化,之后字体显示就变成了根据参数来绘图显示指定的图形,因此其本质上与SVG文件又变得相同了)。另外还可指定编码,字符的内部名称,设置字体文件(即多个字符图形的集合,外部看来就是一个TTF或OTF等后缀的文件)的一些信息。FC涉及的字符设计的知识很专业,可以慢慢摸索学习. 为了熟悉操作,我之前处理了从网络上收集来的Biang字,在一个比较小的字体文件JBMono.ttf中加入了私有区, 将几个Biang字放在一起,通过特定的Unicode码值来调出这些字符.

AllBiangs.png

上面BiangE000就是我指定的字符的内部名称,后面的E00x是它的编码。一共有9种.

处理大概的流程就是, 收集或誊写图形或汉字, 将它转化成黑白的清晰的图片,去除斑点,修饰完美之后,复制粘贴到新增加的字符(Glyph),指定它的Unicode码值,内部名称,大小尺寸等信息,保存之后,导出字体并安装就可以使用了. 如果这个字体之前被系统使用占住了,还要重新启动电脑再使用,否则看不到修改过的效果.

由于字体对电脑来讲,不过是用方程来画图(针对内部用曲线来描述的,可无级缩放的字体来讲),因此, 本质上来讲, 一幅图片也好,一个签名也好,还是一个写好的汉字也好,它们都能够存入字体之中,当成字体来用(当然有存贮量的限制,不能指望每个字体能够存贮过于精细的大图).如果我把自己的手写体签名变成一个字符一样存入到字体, 需要时按特定的编码输出,就可以实现一种特别的签名方法了.

将签名转化为字符

先挑选了一个自己比较喜欢的签名,用手机拍照,发到电脑上用图形软件处理, 剪切签名,处理成黑白片,去除斑点修补不完美的地方,调整大小,最后在FC中新增一个字符(我选择放在私用区,如E000开始的一些Unicode编码区域),粘贴处理好的图形, FC将它转化成矢量图.我移动或缩放图形的位置, 保存就可以了.

解释几个术语

LSB, RSB, AW(AW=LSB+RSB+字符的宽度,会自动变化)

Glyph Name 字符的名称,对每个字符,可以指定一个名称

Code-points. 码点, 指定字符的Unicode码值.

Left Side Bearing (LSB)  字符图案的起始位置.(每个字符都有一个自己的小框,针对这个小框内部设定的相对位置,从左边开始到字符显示的距离,单位:像素)

Right Side Bearing (RSB)字符图案的水平末尾位置.从该字符占用区域从最右侧往左,到字符图形的最右侧的距离,单位: 像素.

Advance Width (AW) 字符的宽度和它包围的空间,数值上等于LSB+RSB+字符宽度.

之前不懂得这几个参数时,造出来的图形显示时,光标指示与实际字符的宽度不一致,与其它不是自定义的文字编辑时效果很差, 有时选中字符看起来只选定了一点点宽度,达不到字符的外观所看到的宽度,比如只选中了三分之一的宽度,看起来很不协调。调整LSB和RSB之后,再看效果就很理想了。

字符设置.png

调整好之后,文字混排的效果不错,签名字符就与常规字符一样参与排版,间距也正常。

混排效果withMask.png

使用签名。

在Word之中通过输入编码来插入特殊字符(码值设定在私有区),选中编码(如E000)再按Alt+X激活转化为Unicode字符,由于Alt+X转换之后的默认字符不是我指定的特定字体,它只显示一个空框.  我们再选中这个空框后,选择正确的字体,签名就出来了。可以看到,光标的竖线正好落在签名的右边一点点,就是因为设置的RSB值仅仅有15个像素的原因。

以下是在Word中混排的效果,因为是签名,中间部分我遮盖了一下。

实际效果withMask.png

如果该字体用于Word文件或Markdown文件,可以通过另存或虚拟打印机打印PDF,将之转化为只读的PDF文件。选择嵌入特殊字符的字体,即使用户手头没有这个字符,也可以查看签名了。

细心的朋友可能注意到,我导入的签名中还有红色字与蓝色字,这在FC中也是可以设置的。不是我选中这个字符设置了红色或蓝色,而是字符在字体中本来设计的就是红色或蓝色的。如何做的我就不讲了,简单摸索一下就会。

为了让使用者的电脑上也能看到我自定义的手写体签名,可以将文件转存为只读的PDF格式传递给对方,并且转存时将所需的字体也嵌入到PDF文件中,否则对方也只能看到一片空白或框框。或者将文件存为图片进行传递。关键的包含签名的字体不能共享,否则谁都可以替你签名了。(这个方法严格来讲不安全,不能替代严格的电子签名要求,算是一种有意思的小创意吧)

使用特殊字符的快捷方法

方法1. Word使用中,将要嵌入的签名选中,按Alt+F3生成一个基块(以前叫自动图文集),再通过自定义菜单,将它做成快捷方式在菜单上,点击一下就可以插入该签名。我现在用的就是 这种方法

自动图文集的菜单withMask.png

方法2.  利用Word的自动更正功能,把特殊字符当成更正后的内容,也可以实现替换。

方法3. 把这种特殊字符做到输入法中,通过输入编码来实现,通过修订输入法的码表,或者自己造词(一个字的词),也可以达到目的。

其它方法还有很多,在Word的字符映射表或查找特殊符号中查找;比如放在某个模板或网页中,用的时候复制一下;编码器允许代码的,将它放在代码中需要时运行一下;使用AHK等快捷键工具,把输入特殊的某个字符做成通用快捷键等,不一而足。

转载本文请联系原作者获取授权,同时请注明本文来自丁祥欢科学网博客。

链接地址:https://wap.sciencenet.cn/blog-1213210-1340101.html?mobile=1

收藏

分享到:

当前推荐数:6
推荐到博客首页
网友评论8 条评论
确定删除指定的回复吗?
确定删除本博文吗?