• Font
  • Family
  • Foundry
  • Designer
  • Sample
  • Article
  • Help
Fontke.com>Article>Details

FontForge巧用参考的方式来造汉字

Date:2005-04-03 22:23:35| Chinese characters|Browse: 631|Source: http://blog.bs2.to/EdwardLee|Author: EdwardLee
  • Follow FontKe on Wechat to get Zcode
  • Scan the Qrcode to participate in the SVIP lottery
Introduction从无到有的造字,在矢量字体,例如 TrueType 字体,可能对一般人来说会有困难。这里我们以现有的 TTF 来造字,所有的部首及笔画都是取自于原字体,而且利用参考(reference)的方式来组合成字。我们使用的工具是 FontForge。这个工具是自由软件,功能相当不错,应该可

从无到有的造字,在矢量字体,例如 TrueType 字体,可能对一般人来说会有困难。这里我们以现有的 TTF 来造字,所有的部首及笔画都是取自于原字体,而且利用参考(reference)的方式来组合成字。

我们使用的工具是 FontForge。这个工具是自由软件,功能相当不错,应该可以应付一般的字体处理。这里不多说明 FontForge 的使用细节,并且假设你都已经安装好 FontForge。我们就以一个实际的例子来做中学,这样应该会比较容易进入状况,也有趣多了,大家都可以试着替自己的字体加上所需要的字。

使用原字体的笔画及部首,这样比较可以维持原字体的字的风格(style),只要置放的位置拿捏好,和原有的其它字排列在一起时比较不容易有突兀的情形。使用参考的方式,一方面可以节省所占空间,另一方面这些抽取出来的部首、笔画可以重复利用,当然,这些部首组件的置放位置就会比较伤脑筋,要有一个好的事先规画,否则到后来字一多起来,会占用真正有字的位置,而此时一更动部首组件的位置,那将会天下大乱,因为所造的字就会找不到参考位置。

我们就以“酶”这个字为例,它的 Unicode(UCS-2) 码是 U+9176。我们可以从“醋”(U+918B)取出“酉”部,然后从“脢”(U+8122)取出“每”部,两个就可以合成为“酶”了。那,为什么不直接使用“酉”和“每”来合成呢?因为,这样一来合成时必需要去缩小,这样笔画会变细,和原来的其它的字会有不一致的情形。

在这之前,我们先来看一下 FontForge 常要用到的简捷键,以方便往后的操作:

按键 作用
Ctrl-c Copy 拷贝
Ctrl-v Paste 贴上
Ctrl-x Cut 剪下
Ctrl-g Copy Reference 拷贝参考位置
Ctrl-Shift-> 前往所输入的 Unicode 码位置
Ctrl-3 将屏幕显示放大为 36 pixel
Ctrl-k 显示所选取字的 metrics window
Ctrl-s 存盘(sfd)
Ctrl-Shift-g 产生新字体(TTF,pfb)

准备好了吗?那么我们就开始加载字体,且存盘成 sfd 的格式,这是纯文字文件,是 FontForge 的字体原始文件,所有的作业就在这个 sfd 文件来进行,以免更改了原 TTF。在修改满意后,我们再来输出 TTF 的格式出来。这里有一个供练习用的 sfd 文件,以下的说明将会以这个 sfd 文件来做解说:http://edt1023.sayya.org/fonts/FontDIY.sfd

加载字体后,按 Ctrl-3 放大成 36 pixel,不然原来的字太小了(如果是使用这里提供的 sfd,那么它已经放大好了,无需再放大),这不会影响制作出来的 TTF,这只会影响 sfd 文件在屏幕的显示。由于我们需要额外的位置来置放分离出来的部首及笔画,所以要增加字体的字的容量。按 [Elements] => [Font Info] => [Encoding],Encoding 我们选取 ISO 10646-1(Unicode, BMP),然后 Numbers of Glyphs 修改成 68000,这样就可以把我们的部首、笔画,存在 65536 以后的位置。

现在按 Ctrl-Shift-> 然后会弹出一个窗口,在窗口中输入 uni918b 按 Enter 就会跑到 U+918B(醋)的地方,double click 这个字,就会弹出这个字的窗口出来。我们要取的是“醋”的左半边,可以按鼠标左键来选取范围,这时会有反白(黄)的区域出现,如下图:

 

其中会有一些不要的部份,这个等 copy 到新位置后再来处理。现在按 Ctrl-c 就会把反白的部份 copy 到内存中,关闭目前这个窗口,按 Ctrl-Shift->,输入 67393,会跑到新的位置,然后按 Ctrl-v 就会把内存中的内容贴上。重复同样的动作,也把“脢”(U+8122)的“每”,分割出来,copy 至 67399 的位置备用。这里输入数字前没有加上 uni,所以是指字的实际位置,而不是它的 Unicode 码。

Copy 到新位置后,利用鼠标左键来选取不需要的范围,然后按 Ctrl-x(cut) 来把它消除掉,完成后应如下图:

 

现在“酉”是在 67393 的位置,而“每”我们以同样的方法把它置放在 67399 的位置。现在我们就开始来合成“酶”字了。

把位置移到 67393(酉),然后按 Ctrl-g,这是只 copy 它的参考位置,Ctrl-Shit-> 移到 uni9176,然后按 Ctrl-v 贴上,此时只贴上参考位置的数据,并没有把真正的 glyph copy 过去。再把位置移到 67399(每),按 Ctrl-g,再移到 uni9176,双击uni9176 会弹出窗口,此时按 Ctrl-v 贴上“每”的参考位置。但是,会有重叠的地方,如下图:

 

这没有关系,我们可以利用鼠标去调整它的位置及大小,鼠标置于字框本身可以拉动它至适当的位置,鼠标置于字的外方框则可以调字的长宽,例如以下是完成后情形:

 

这里可以看得出来,FontForge 并没有像其它的实体字一样显示,而是只显示字框及其参考位置而已,表示这并不是一个实体字,而是参考某个参考位置的虚拟字。

这样就已经完成八、九分了,接下来是调整和其它字排列时的一致性,先将前景窗口 close 后,把主窗口的一排的字反白,如下图:

 

然后再按 Ctrl-k 会有 metrics 窗口弹出来:

 

这时就可以去移动字的左右位置,并把字宽调整成和其它字一样,在这个例子是 920,但一般的中文字体可能会是 1024。如果看起来上下高低不一致,那么还是要回到主窗口,double click 那个字来重做调整。

好了,调整满意时,就可以存盘(Ctrl-s),存盘后再按 Ctrl-Shift-g 来产生新字体,此时当然我们要选用 TrueType 来产生我们所需要的 TTF。这样新字体就诞生啦!

0
  • Follow FontKe on Wechat to get Zcode
  • Scan the Qrcode to participate in the SVIP lottery
Relevant font foundry
FontForge巧用参考的方式来造汉字 Comments
Guest Please obey the rules of this website. Unclear?
FontForge巧用参考的方式来造汉字 Latest comments
No relevant comments
Recommended comments