|
UsageZhCN
字体工业使用手册.
我写我字体,我写我个性,写出自己的个性字体。 简介这里我们说“写”一个字体,而不说制作一个字体,是因为使用字体工业来制作一个字体,也就是写几千个字而已,没什么难度。 首先,本程序的命令行是 fontin 。 基本步骤就是: 先写字: 打印或手绘一张格子纸,做为模板,在上面拓着写字。字的次序,可以根据国标的 GB2312, GBK, 或者 GB18030 的次序来书写,也可以直接根据统一码 (Unicode) 的次序来书写。 下载网页提供几种格子纸模板的 PDF 文件可供参考。 再电脑处理: 扫描写好的字 (300dpi,600dpi 或以上) -> 用字体工业打开扫描好的图像 -> 在图像上打格子 -> 对格子进行编码 -> 储存生成的字体 -> 输出 .sfd 格式字体。 .sfd 格式的字体是用来最终生成我们应用程序可以使用的矢量字体,例如 TTF, OTF 格式,需要用 fontforge 这个程序打开 .sfd 文件,然后生成 TTF, OTF 等矢量字体就可以了。 视频演示
这个演示生成的TTF字体质量较差,因为从屏幕上截下来的图像解析度很低,使得自动描线时可利用的信息量太少。使用3厘米见方的字模,用300dpi或600dpi的解析度扫描的图像,效果应该好很多。这里自动描线使用的程序是 potrace 。 演示中使用的图像是从一个网络图书馆上的一本书里摘的,书名为《六百字粤语杂句》。字样使用毛笔书写,黑白临界值设为46%时,笔画上有不少白点。处理前使用 Gimp 手工把白点补齐,在边界处比较浪费时间。也许使用更低的黑白临界值会更好些,但不能完全避免手工活儿。字样质量很重要啊。 具体步骤
提示: 技巧:先调整右线和底线,让它们尽量处于两字之间;然后再调整左线和顶线,让这个字的上下左右的留白尽量对称。 可以直接输入汉字或者它的十六进制编码 (0xA1A2 ...)。 字体文件的后缀是 .fontin 更多关于自动描线功能,参见Fontforge 的相关说明。 提示: 虽然未必就真能发达,不过多写几种字体,四处传播,成名是有可能的。名成自然利就,发达也未必只是梦。 要走20多步才能显出个性,看起来复杂,其实就是用鼠标这儿点一下,那儿点一下,再打一个字而已。上手后,飞快。 其他功能,留待使用者自己发掘。 字体后期处理
图像预处理如果图像质量一般,在使用字体工业处理图像之前,最好先用 mkbitmap 这个程序进行预处理。mkbitmap 是 potrace 里的一个工具。例如: convert image.png ppm:- |mkbitmap -n -s 3 -t 0.52 |convert pbm:- -type Palette -quality 0 blackwhite-image.png 它的意思是用 mkbitmap 先关闭高通滤波器(-n),再把图像放大3倍(-s 3),然后把图像转换成黑白图像,以52%黑度做为黑白分割点(-t 0.52)。 如果完全关闭高通滤波器,那么可以只用 convert 达到同样的效果: convert -resize 300% -threshold 52% -type Palette -quality 0 image.png blackwhite.png convert 是 ImageMagick 这套程序里的一个图像转换工具,它可以做很多其他图像预处理的工作;因为 mkbitmap 只认 ppm,输出 pbm,所以需要进行格式转换。 批处理一脚踢: #!/bin/sh
for i in "$@" ; do
outname="bw-${i}.png"
echo "Saving to ${outname}..."
convert "$i" ppm:- | mkbitmap -n -s 3 -t 0.52 | convert pbm:- -type Palette -quality 0 "${outname}"
#convert "$i" -resize 300% -threshold 52% -type Palette -quality 0 "${outname}"
done使用: blackwhite *jpg 如果图像质量好,当然这步就没有必要了。而如果质量太差,可能还需要先在 gimp 里,描漂亮了再辨认。 提示:在 gimp 里描线,先把图像显示放大个4到8倍,会更顺手。可以同时开两个窗口,一个正常显示,一个8倍显示。 (gimp 菜单: View->New View 或者 View->Navigation Window) 祝你大肆张扬自己的个性,把自己的快乐,建筑在恶心别人之上。毕加索就是这么干的,他、他、他就成名了! 字符集编码表写字时,可能需要参考到的编码表:
|
Sign in to add a comment
哈哈,"黑暗势力",这个名词真有意思... 能向你讨教一些问题吗? ################################
"写字时,可能需要参考到的编码表"
我有个疑问:如何把字体形状和编码映射起来?用打印的格子纸限定吗,按照"GB2312"或者"GBK"的格子排列吗? 做好了之后,写字,扫描到软件里面,不用手工映射字符吧?
"问题二"
如何解析ttf等字体文件?有没有开源的库或者代码示例. 如何解析之后如何显示字形?有没有组件(C,cpp,java的组件) 无中文字符集的手机上面,有没有可能写个程序显示中文?