|
|
monospace字体,即所谓的固定宽度(fixed-width)字体,是我们用在虚拟终端(如gnome-terminal)中以及文本编译器中用来编程的字体。这些字体的每个字符的宽度都是一致的。为了能方便我们的编程的时候区分字母和数字,monospace的字体有一些特性上的要求,比如,1和l要容易区分,0、o、O要容易区分,{}[]()<>也要容易区分,但各种monospace的字体中往往都有这一点或那一点没有达到,怎么办?我们可以自己动手改造一下自己喜欢却有不足的字体。
比如我非常喜欢Lucida Sans Typewriter的字形,它的l和1非常明显,各种括号也一目了然,但不爽的是它的0没有加斜线和O非常接近。所以我的目标就是给它的0加上斜线。
我们需要的工具有两个,一个是fontforge,一个是inkscape。
首先,我们用fontforge打开LucidaSansTypewriter.otf,找到0的字符,双击它,这样就会打开glyph的编辑窗口,此时在glyph窗口的File菜单中有export选项,点击它,选择导出的格式为svg,再点击保存就把0的字形导出为svg了。
为了保持字体原有的风格,我们最好从字体中找到我们需要的斜线的样式,4的斜线是最好的选择,所以把4的字形也导出为svg。
接下来用inkscape打开 导出的0,在我的机子上,导出的svg文件是zero_LucidaSansTypewriterStd.svg。然后在inkscape中按ctrl+i 打开导入的窗口,选择导出的4的svg文件,在我的机子上是four_LucidaSansTypewriterStd.svg,之后确定就把4的字形导入好了。
此时,我们先要把4的斜线给旋转到水平位置以方便我们画出和它粗细一样的长方形。这个可以通过变换得到。先选中4,然后按ctrl+shift+m就可以打开变换的窗口,选旋转(rotate)的标签,在角度中填上一个负值,比如我填上的是-56,然后应用,看看有没有正好把4的斜线转到水平位置上,没有的话ctrl+z恢复,再相应的更改数值,试试。看不清的话,可以用ctrl+鼠标滚轮把图像放大一些。当你试了几次后把4的斜线转到水平位置后,记下你用的数值备用,比如-56。
这时,你就可以轻松地用inkscape左边工具栏上的长方形工具画出和4的斜线粗细一致的长方形了,为了方便对比,你可以把画出来的长方形设为半透明。先选中长方形,按ctrl+shift+f,激活颜色窗口,在色盘中选一个颜色,再从色盘下面的透明度条中间点一个值就OK了。然后把长方形移到水平后的4的斜线上,把长方形的粗细调成和4的斜线一样之后,把长方形的长度拉好,移开。这时4已经完成了它的历史使命了,直接把它delete掉。
需要的斜线已经基本ok了。选中我们画出来的长方形,按 ctrl+shilf+m,在旋转的角度上填上我们之前记下的角度的相反数,应用一下,斜线就OK了。把斜线移到0上看看长度是否合适,不行的话,按几次ctrl+z退回到旋转前,调整一下长度再旋转好。
斜线OK之后,我们就可以把它和0对齐好。首先,选中斜线,再按住shift选中0。然后按ctrl+shift+a,激活对齐窗口,在相对于的选项中选 选择(selection),然后点击第一行的第三个按钮把斜线对齐到0的水平方向的中间,再点击第二行的第三个按钮把斜线对齐到0的竖直方向的中间。
最后,我们就要把斜线和0融为一体了。首先,选中0,按ctrl+shift+g,取消0的编组(因为fontforge导出的时候把整个字形group起来了)。然后把斜线和0一起选中,按 ctrl+shift+=,就把斜线和0一起并起来了。
OK,现在ctrl+s保存svg文件,完成0的改造。
做好了加了斜线的0后,我们需要把它导入到原先的字体中。用fontforge打开原先的字体,选择字符0,再从File菜单中选择import,从窗口中选择我们做好的svg文件,点击导入。导入好0后,我们进行最后一步,生成字体。
在File菜单中有一个生成字体,比如我原先的字体是otf,那就选择OpenType(CFF),如果是ttf的话就选TrueType。输入一下要生成的字体名称,再点击保存就OK了。
还没完,我们还得处理斜体(Oblique)的0。
这个其实非常简单,先导出斜体的0为svg,用inkscape打开斜体的0,再导入我们做好正常的0。其实,斜体只是把相应的正常字形倾斜11.3度而已,所以我们可以直接用正常的0变换。选中正常的0,按ctrl+shift+m,在第四个标签中的水平中填上-11.3,单位是度,应用即可。
接下来,先记下原先斜体的0的坐标,然后把原先斜体的0删掉,选中我们做好的斜体0,输入记下的坐标,回车后就可以把0移到正确的位置,保存svg文件后,导入到相应的斜体字体中就OK了。
上面提供的是处理0的slash问题,希望对有同样想法的兄弟姐妹们有所帮助。
附件中有我处理过的LucidaSansTypewriter和LucidaTypewriter字体,传上来方便大家了  |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|