《FontForge常见问题FAQ》字王翻译版

《FontForge常见问题FAQ》字王翻译版

首发  (2015-09-09 11:11:24)  字王blog http://blog.sina.com.cn/s/blog_7100d4220102vrww.html 

《FontForge常见问题FAQ》 字王翻译版
翻译: 字王·中国   blog: http://blog.sina.com.cn/zbrow

===============================
FontForge常见问题FAQ
Sir Toby: Thy most exquisite reason, dear knight?
Sir Andrew: I have no exquisite reason for’t, but I have reason good enough.
–Twelfth Night, Shakespeare
托比: 最重要的原因,亲爱的骑士?
安得烈:我没有什么很好的理由,但我有足够的理由。
–《第十二夜》,莎士比亚,
?为什么需要字体编辑软件,现在不是已经有足够多的的字体了吗?
::
但是,Eeyore对自己说,“写作这回事,再多的铅笔什么的,如果你问我。愚蠢的家伙,这些,对于写作,什么用也没有。”
–《小熊维尼》,A.A.米尔恩
好了……,否则我不会编写这个(FontForge软件),而且,更重要的是,不会每个月有几千人下载。
经常有人问我这个错误的问题,你不会去问一位画家,他是不是已经有足够的水彩。
字体是一种艺术作品,代表着创造者的个人天赋,它不再是一种多余的色彩。
然而,这里是我试图解答,隐含再这个问题背后,字体设计,更深层次的价值,
1、的确,目前已经有很多种(超过十万)拉丁字体,但其他类型的字体却很少:希腊、斯拉夫、印度、泰语、中文、日文、韩文,Unicode字库……
2、目前依然缺乏足够多的、优秀的免费字体。
3、许多传统、现代的书写系统,经常需要设计自己的字体。(ps,例如苹果的手机、手表字体,adobe、谷歌、hack的开源编程字体)
4。即使是拉丁文,传统上,每一种新的艺术风格,都需要一种关联的字体。(ps,目前微软、苹果主导的扁平设计风格)。新字体总是被创造出来,反映时代的美学。
5、计算机字体技术不断变化,10年前有用的字体风格,现在也许已经不适合时代。
6、即使你对现存的字体感到满意,它们可能也不完整?例如,却失踪的连字、重音符号;没有匹配的斯拉夫语或希腊符号。。。。。。
7、每个人都想要:一种个人笔迹的字体。
8、玩字体很有趣。
FontForge,已经超越了简单的创建和修改字体。
它可以将字体,从一种格式转换为另一种格式。
它可以从字体文件中提取信息。
或者,它可以轻松显示你尚未安装的字体。
?我为什么要开发FontForge软件呢?
::
为什么不呢?
–《幻象天堂》,加斯特
因为它是有趣的
因为Macromedia公司,已经停止开发fontoGrapher软件,
而且fontoGrapher软件,缺乏很多功能。
因为我喜欢开源、免费的软件日剧,希望提供良好的产品,这将鼓励人们不再使用专有系统。
因为编程比市场营销更有趣,并且把比销售更容易。
因为如果FontForge作为商品软件销售,我要花更多的时间做QA问答(QA非常无趣)。
?FontForge为什么不使用原生的Windows或MAC操作系统?
::
FontForge不是一个商业软件,不受市场约束。
我对这样做不感兴趣。
我没有时间,也没有能力承担那项任务。
我想鼓励人们使用Linux、UNIX
当然,如果我使用GTK、QT的移植困难就会消失。但不幸的是,我不喜欢这些工具集。
现在……如果你想做移植,那将是美好的。我鼓励你这样做。
?为什么FontForge是基于非标准窗口模式?
::
我希望这些窗口部件,可以友好处理Unicode编码。
我特别关注的是,希伯来语和阿拉伯语排版。
由于我不知道有任何类似的窗口软件包,我只能自己开发。
我也想要一个软件工具库,可以找出合适的复选框,在很多情况下,人眼无法解决
目前,有两种免费的软件库:Qt和GTK,对于Unicode支持更加友好。
不过,目前我还没采用,因为:
从一种底层软件库平台移植到另外一种,时间周期很长,期间的bug会分散我的注意力。
如果我花时间做的移植,我没有精力让FontForge增加更多的新功能。
Qt是用C++开发的,我不喜欢C++,所以QT出局。
越看GTK,我越不喜欢它:
对图像的支持很糟糕(这真奇怪,因为它源自著名的图像软件GIMP);
不支持客户端位图(我希望支持位图字体)
还在使用RGB索引颜色系统,而BGR格式才使用24bit颜色系统,而且透明图像模块有缺陷
图像格式不完整,不能通过图像本身,知道它的位图,索引或颜色系统。
这些功能都是必须的能的,但这涉及到一些非常底层的开发工作,我只知道,如何做在X窗口系统进行开发这些。
我找到文件选择对话框真丑,它是如此复杂,以致我不知道如何修改它,使它看起来更加友好很好(按我的标准,即。。。)
我也不知道如何修改文件选择器,目前,FontForge的文件选择器,其行为方式,的确有些古怪。
GTK+2并不运行于MAC OS,目前唯一移植到MAC的GTK模块,似乎还是gtk-1
许多我想要使用的模块库已经过时,我不知道,用什么代替了它们,有时我不得不用一个更复杂的部件来代替。
所以,我倾向于与它进行一段时间的搏斗,然后再决定,采用更加友好的软件库平台。
我目前使用的是一套限制版本的GTK,开开发FontForge,如果有人提供援助,增加更多的权限,我们会非常感谢。
为什么不采用C++开发FontForge?(或,C++为什么不是我最喜欢的编程语言)?
::
对于这个问题,我有点吃惊,我没有意识到,自己还需要选择开发语言。
我这样做,是因为,我无法找到面向对象的编程模式。
在大多数情况下,我发现,面向对象是一种非常复杂的设计模式,我无法轻松地调试软件。
我曾经几年使用Smalltalk,面向对象的方法,虽然似乎很自然,但在大多数情况下,它似乎只是对问题,增加了不必要的复杂性。
C++不能指定一个编译器模板,而C语言,完全没有问题的,而且,在C++中模板、构造函数和析构函数,有无数的副作用。我觉得这非常可怕。
外部构造函数的执行顺序是未指定的。会产生许多令人费解的错误。
我发现很难调试,往往涉及许多意想不到的过程调用。
最后,我发现,c++太复杂,它把各种不同的概念,强行堆砌在一起,每种c++编译器,做的事情似乎都有点不同。
我第一次接触c++,是在1981年的c语言教材上。从1987到1994,我使用的是C++编译器,是绿山软件开发的。每一个版本,都增加了大量新的功能,并没有完善的与旧的。每个版本都不友好,有大量的错误、混乱。
以上是我的个人意见和经验,解释为什么我不使用c++,你的意见可能不同,不过,很少有人,花了5年时间使用“c++编译器”。
?为什么FontForge使用BSD授权模式而不是GPL?
::
我只是不喜欢GPL。部分是偏见,部分是真实的。
我不喜欢强迫限制人,我赠送FontForge,所以我采用(更加宽松的BSD授权模式)
BSD授权模式说,“无需告知告我,无需包含我的版权声明,即使你使用了我的代码”,那是我所关心的全部。
也许我是天真的,但是我不相信任何人会销售FontForge。
为什么会这样?
没有任何意义,尝试出售我免费发布的软件。
如果有人为FontForge添加功能,那么,这是一个不同的问题,或者,他们在自己开发的软件中,添加一些FontForge的代码河模块,如果有人那样做,我的看法是:这样做眼睛,也许有些粗鲁,但我不会说“不”。
我知道,现在一些OpenType代码,已经陷入僵局,例如一些TeX 软件模块。
我很喜欢帮助别人,也有很多人帮助过我。
为什么FontForge在运行时加载库?
::
我不喜欢依赖。我讨厌:当你下载一个软件包,发现它不工作,除非再下载了半打其他软件包。
我想只提供一个软件包,它就可以工作,所以我试着写尽可能多的代码,不强迫人们到处漫游,寻找不同的部分。
必须时,我会使用一个外部的模块库:
如果用户不会看一个SVG字形就不需要安装libxml2。如果用户将不会导入JPEG图像(真的不想这样做),他们不需要安装libjpeg。
这也将加快启动FontForge。
?FontForge有未来的路线图吗?
::
泰森:我不会感到迷惑,我向你保证我不会感到迷惑。事实上,在这一刻,计划几乎会在我的脑海中成形。它甚至可能是足够的。
-《这女人不是为了燃烧》,克里斯托弗弗莱
主要是因为我不认可这种话模式。我不做计划。
例如,我决定为FontForge,添加Python支持。我发现,这意味着它变得更容易设计字体,用户可以创建自己的脚本,添加导入/导出文件格式。可以让用户定义自己的菜单项。然后我想通了:如何添加FontForge Python(而不是相反)。现在我认识到,没有理由,我不能定义一套内置c语言模块,使人们可以使用c语言,为FontForge编写扩展功能。
每一个阶段意味着,我能看到一点点的未来,然后再去完善一点点,然后再看一点点的未来。
而且,想法经常会来自用户,有人会问我没有想到的功能。我发现我写的东西有一半是没有发生过的,大部分时间我都懒得去更新页面。我会忘记它。那是无聊的。我最好是简单地去做,我不喜欢推测。
所以,不要问我:接下来会发生什么,因为我不知道。这是一次冒险。我们只能等着看。
?你开发FontForge,是不是类似烤面包的工作?
::
(这个问题,源自一个开源媒体的采访,LGM2007)
我喜欢做事,我喜欢做一些特别的、美丽的事情。我不知道与烤面包有什么关联,但我觉得我做了漂亮的锅。我真的喜欢装了玻璃窗口。
很难说字体编辑器是美丽的。但我认为,这背后的想法是美丽的,在我的脑海中,在某种意义上,我发现用户界面美观。我不知道世界上还有谁会做,因为这是我想要的,而且我认为它是美丽的。
在做些什么,做些什么,是很有满足感的。
在制作一些我需要的东西时,也有一种满足感(如面包)。我吃我自己做的面包,这就是我吃的面包。
所以我只是喜欢做些漂亮的事情。
?FontForge可以修改字体吗?这是否合乎道德?
::
许多现行的字体,都是以伟大的设计师的作品为基础的,从几百年的历史中来的,因此,利用他人的设计,有着悠久的历史。
另一方面,不管是什么法律,剽窃,对于任何一个设计师,它显然都是不道德的。
法律问题因国家不同而不同(也许是在国家)。你真的应该向律师咨询一个明确的答复。
以下是一些指南:
看看你使用的字体的的许可协议, TrueType(OpenType字体)有个OS/2表,限制哪些字体可以修改。
我对美国法律的理解是这样的:字体设计的法律保护是最小的。以前,法学家称“字母是公开的”,这意味着一种类型的设计不能受版权保护。
然而,(我告诉)一个设计师可以注册(与政府)的设计专利,保护设计14年(如果授予)。我不相信它可以更新,但我可能是错误的。
注册专利是一项昂贵且耗时的过程,往往是超出小型设计公司的能力。据我所知,相关法律从未在美国进行过测试,所以这可能是值得怀疑的。
字体的程序(如PostScript或TrueType字体文件,但不是一个位图字体文件)可能是受版权保护的。这就意味着设计本身没有被保护,但它的机制是创造它。
字体的名称可能是商标,在英国:有一些所谓的“设计权”,有点像版权,对设计作品提供5年的保护。设计师可以注册的多达5次,以延长这种保护到25年(在整个欧盟)。我不知道这些具体的细节,也不知道如何与国家具体的法律(如英国的设计权)。
在加拿大:字体设计可以被注册为一个有限的时间(15年)的“工业设计”,我欢迎任何补充或更正,以及在其他国家的法律法规的信息。
?什么是12点(point尺寸)字体?(如何测量的字体的点?)
::
字体尺寸(pointsize),不是基于任何的字体大小。
12点字体,是指,字体相邻两行文本的基线之间的距离是12点。
过去,字体都是由金属制成,该字体的尺寸,是指用于字体的金属模块的高度。在某种意义上,这是不是一个很好的字体尺寸标准(有些字体可以上升或下降更多的空间,实际的符号高度更小)。
还有一个基于象形文字的高度的测量方案。,在英国和美国,历来是 1/72.27英寸,而在欧洲其他国家,是1/67.54英寸。欧洲版本的尺寸稍大一点,但英国和欧洲的字体符号,实际大小是相同的。因为,英语不使用重音(除了在极罕见的情况下),而大多数欧洲语言有音调符号,所以字体的点尺寸大小略有增加,以允许更多的口音的空间。
(当然,现在大多数欧洲人,可能所以的是桌面软件,多数电脑字体现在包含重音符号,这些区别可能已经消失了)。
? 如何设置字体的行间距?
::
这取决于你设计的字体,你正在运行的操作系统,和运气。
Type1字体无法设置行间距。应用程序通常会使用字体的边界框中指定的值,并使用那些设置的行间距。这是一个非常坏的想法,但这是一个普遍的做法。
对于True/Open Type字体的答案是复杂的。
在MAC系统,行距设置的上升和下降值虽然有”hhea”表,用于设置字体的边框值。另外一个不太好的选择,您可以通过以下菜单进行调整:Element->Font Info->OS/2->Metrics
在Windows中,行间距应该设置在OS/2表,不幸的是,大多数Windows应用程序不遵循这个规则,同样,您可以通过以下菜单进行调整:Element->Font Info->OS/2->Metrics
对于Linux系统,我不知道有一个普遍的共识,一个应用程序可能会使用上述方法之一。
现代字体往往有几种不同的风格,可能有不同的行间距要求。即使在同一种风格,也可能有差异,例如,英国不使用(或极少数)重音符号的字母,而其他大多数欧洲语言有音调符号。
字体的行间距,不是一个全局指标,OpenType允许你,根据脚本,语言和特征,指定范围。
?我的符号是多大?
::
不幸的是,这个看似简单的问题,无法简单地回答。
你可以是任何大小的。轮廓字形可以缩放,而位图字形,将取决于屏幕分辨率大小不同。
假设你有一个轮廓字体,你画为12点。然后我们就可以回答这个问题,假设你有一个500个单位长的划线符号,字体大小为1000个单位。然后你的字形将是500/1000 * 12 = 6点。在72 dpi的屏幕,这将意味着6像素长。
?什么是em单位?(内部单位?)
::
当您创建字体时,您可以使用:lement->Font Info->General,设置字体大小。
对于金属字体,这是排版基线到基线的距离。
一般的em单位,大小是1000或2048。用:内部单位数(也叫EM单元)来表示他们。
?对于开源字体上,什么授权方式更好一些?
::
在开源授权模式下,许多字体已经被发布,但这些都不能满足字体设计师的特定需求。我知道有专门为字体制作的授权模式。
我推荐源自SIL的开源字体授权模式许可,这些授权,虽然没有法律约束力,但可以帮助阐述非英语用户的授权意图。
Vera字体字体采用Bitstream授权模式
GNU授权模式,也经常使用。
?使用FontForge软件的最低要求
::
这很大程度上取决于你想做什么。FontForge主要受限于内存(虽然屏幕尺寸也可能是一个问题)
如果你使用脚本模式,字库不超过几百个简单的符号(如拉丁字母),192MB内存,就绰绰有余。
如果你是做编辑CJK、UNICODE中文、日文字体,最低内存要求是 512MB。
FontForge需要彩色(或灰度)显示器,黑与白是不够的。
?FontForge ,为什么用这么多的内存?
::
字体一般都存储在一个非常紧凑的文件中,字体设计成容易光栅化的格式,它们不是用于被编辑的。
当加载一个字体文件时,FontForge需要把它,扩展成一个更直观的格式,编辑起来更容易。但要大得多。
也许应该改写FontForge,使用更高效的存储表示。但这是一项巨大的工作,对我来说,并不感兴趣。
SFD文件非常大。因为他们是采用ASCII表示同样的扩展格式。他们不是设计得紧凑而清晰可辨。
?如何安装字体?
::
好吧,这取决于你在做什么系统,以及你有什么类型的字体
* UNIX和X 系统 ,
轮廓字体和fontconfig ,很多程序现在使用fontconfig找到字体(包括FontForge)。安装fontconfig字体,简单的复制文件到你的字体目录:~/.fonts,即可。
位图字体,和X11系统的字体安装,建议你看看Linux 字体 HOWTO文件。
基本上,你将一个(或几个)目录指定为“字体目录”。您将您的字体复制到该目录,你需要在你的字体路径中包含这个目录。
可悲的是不同版本的系统,和不同格式的字体,使用略有不同,你可能需要修改这些程序。
** KDE ** ,
(我不知道KDE很好,所以的经验和浅薄)
KDE有个工具叫kfontinst,可以用于安装、配置字体。
** TeX **
TeX有自己的(跨平台)安装字体系统。
* Windows **
你安装的TrueType字体文件,一般保存在:\Windows\Fonts  目录。
在安装之前,您可能需要在字体上设置“执行”权限位。
不要直接复制字体文件到 \Windows\Fonts  目录,这似乎没有作用(至少在我的XP下)。
如果你想使用Type1字体,你需要安装Adobe Type Manager。如果你想安装OpenType字体,在旧的windows系统(在Windows 2000之前,我认为)你需要安装ATM。
* * Macintosh OS 9 * *
哦亲爱的。苹果把字体贴在资源叉上,把它们用在自己的头上。
MAC字体不与其他的兼容,具体请参看系统帮助。
** Macintosh OS X **
在OS X,字体应放在顶层:/Mac OS X/Library/Fonts/ 目录,或用户指定的目录:~/Library/Fonts
? 为什么一些Windows电脑上,无法安装FontForge设计的字体?
::
通常都是字体安装时,出现的操作错误,例如直接复制字体文件,而不是安装字体。
另外,(2009)Windows安全补丁决定:字体的“名字”表大于5K是不安全的,拒绝安装。这是由于在字体中包含的许可证的全文而引起的。
某些老版本FontForge设计的字体,无法安装于Windows 2000(和XP)系统。如果你有一个旧版本,请升级吧。
?如何从我电脑开始编辑字体?
::
** MAC OS / 9(或更低版本)**
传统Macintosh存储字体资源文件,也支持TTF文件。
FontForge知道如何读取这些字体文件,可以从中提取一个PostScript或TrueType字体。
所以,在苹果上编辑字体,步骤如下:
1、在系统文件夹中查找文件:字体文件夹
2、将文件复制到您的电脑吗?使用指定的格式?或使用一些工具如binhex。
3、运行FontForge软件
4、打开字体文件,开始编辑,
5、按系统支持的格式,保存字体文件
6、把字体文件复制到你的电脑上?一般可以自动安装,用其他软件,使用字体。
* MAC OS X *
在MAC OS X系统,可以直接运行FontForge(如果你已经安装X11)。
?如何创建一个苹果字体家族?
::
苹果10.6版本,首选的方法是使用TTC分组字体文件,10.6之前,不支持TTC格式的字体文件,首选的方法是产生MAC字体家族。
** 10.6版本后**,
首先,打开所有的字体,在FontForge设计家族字体,然后选择文件->生成TTC文件。
** 10.5版本前**,
你必须创建一个字体家族。
一个字体家族,所有的字体必须具有相同的开头名称(见字体信息对话框)。
字体家族,它反映了80年代初的电脑字体技术,现代的电脑字体,往往有一系列无法表达的变体,包含以下任何组合:
粗体、斜体、延长、下划线、阴影、轮廓
? 为什么ATM软件,在我的苹果电脑字体上工作?
::
编辑字体时,确保字体编码采用的是Macintosh拉丁格式。
?我生成的OpenType字体无法在Windows安装。为什么?
::
不幸的是,苹果、微软、Adobe不再开放TrueType字体文件格式。
FontForge有一个复选框在生成字体选项对话框标记[苹果]。当你为苹果的字体生成一个字体时,请确保选中此。
我无意中发现的主要区别是:
在NAME表中的名字不同。(这实际上是苹果的版本的规格错误)。
包含位图字体的表格的名称
缩放引用的方式存储
包含的印刷特征表是完全不同的
? 我有一个表格的OpenType/TrueType字体,但Windows显示“TT”(TrueType)图标并不是“O”图标,为什么?
::
据我分析,字体文件,如果包含一个“DSIG”(数字签名)表,Windows将显示“O”图标。FontForge不产生,数字签名(我认为他们是负效用,反正我不知道如何创建它们)。
然而,FontForge可以创建空白的“DSIG”表,这似乎足以使窗户高兴,(而显示“O”图标)。
?如何从一种轮廓格式转换为另外一种格式吗?
::
如果你想快速的话,那简单的回答是:
1.File->Open,打开一个存在的字体文件
2.Element->Generate,生成另外一种格式的字体文件
如果你是从PostScript格式转换到其他格式(例如PFB、OTF),所需做的就是这些。
如果你是在PostScript和TrueType格式间转换,你可以做一点额外的工作,对于样条曲线,进行优化。
1.File->Open 一个存在的字体文件(ttf字体文件)
2.Element->Font Info->Layers 菜单,选择 <*> All layers cubic选取框
3.Edit->Select->Select All
4.Element->Simplify->Simplify,优化样条曲线
5.Hints->Auto Hint,自动调整间距
6.Element->Generate Fonts,生成另外一种格式的字体文件
从 PostScript(otf、pfb)格式字库,转化为ttf字库,步骤如下:
1 .File->Open 一个存在的字体文件(otf、pfb字体文件)
2.Element->Font Info->Layers  菜单,选择 <*> All layers quadratic选取框
3.Edit->Select->Select All,
4.Hints->AutoInstr, 自动调整间距
5.Element->Generate Fonts,生成另外一种格式的字体文件

?如何从一个位图格式转换为另一个?<</div>

::
这很容易,打开一个位图字体,然后使用:Element->Generate,生成所需的输出字体。
? 如何从轮廓格式转换为位图格式?
::
加载轮廓字体。然后使用:Element->Bitmaps Available,即可。
这个过程被称为光栅化,电脑做小像素尺寸,很困难,你或许需要对结果,进行修正:
1,Window->Open Bitmap Window
2,修正字体符号
3,Element->Generate Fonts,生成字体文件,注意关闭轮廓字体生成,并选择所需的位图格式。

? 如何将位图格式转换为轮廓格式?<</div>

::
除非你有一个非常大的位图字体(如TeX字体),下面的过程不会产生好的结果。
1,在你做其他事情之前,确保你的系统已经安装了potrace,或AUTOTRAC矢量化程序
2,创建一个新字体
3,使用File->Importcommand菜单,导入位图字体到新的字体,一定要取消[Background](背景)复选框,
4,菜单 Edit->Select->Select All,
5,菜单 Element->Autotrace,自动矢量化
6,菜单 Element->>Add Extrem,
7,菜单 Element->Simplify,优化曲线,
8,人工审核、修整各个字体曲线河节点
9,Element->Generate Fonts,生成新的字体文件
?如何从苹果的Typography字体转换为OpenType?
::
这些字体格式,有许多相似之处,但重叠不全,大多数转换会丢失一些信息。简单的答案是,这是非常自动的。
你读入苹果的字体,选择等效的[*] OpenType字体复选框选中的选项对话框。
FontForge自动匹配的OpenType特征。
? 如何从OpenType字体转换为AAT格式?
::
这主要是自动的。
读入OpenType字体,并产生一个等效的字体与[*]苹果的复选框选中的选项对话框。
FontForge能够自动转换为AAT格式。
?FontForge如何调整Hints间距?
::
它是自动设置的。
你可以通过选择一个点和选择元素来控制,菜单为:Element->Get Info->Hint Mask.,
?我怎么能让FontForge使用Flex Hints间距?
::
基本上是自动的。FontForge将在适当的时候,自动生成相关的Flex Hints间距。你不需要做任何事。
? 我如何才能告诉你,需要使用UpdateFlex Hints间距?
::
如果你想看看FontForge要使用Flex的提示,打开UpdateFlex菜单和字形。
FontForge会显示一个绿色的光环,围绕一个Flex暗示的中心点。
? 我的符号是所有完美的暗示,为什么有的宽度不同(或出现?蛲耆В?
::
PostScript和TrueType字形绘制要求,以顺时针的方式。一些光栅化程序不在乎。但是其他的光栅化会有困难与逆时针路径产生不同宽度的茎时,他们应该是相同的,或?木ィ蚋久挥小?
解决的方法是,选取菜单:Element->Correct Direction,调整 所有你之前生成的字体。
但有时,穷人就不能做正确的事……
? 我装一个TTF字体,做了一些改变,产生了一个新的字体。新字形看上去远不如原件,为什么?
::
FontForge读取TrueType字体时,它使用的hinting间距(指令),都是原来的字体。但是如果你改变一个字形主体,那些指令不再有效(他们依赖紧密的轮廓细节),所以,需要用FontForge移除它们。结果表明,FontForge改变字形,会降低很多TrueType字体外观(不是全部,有些没有提示)。
FontForge可以生成你自己的TrueType指令,但你必须要这样做,菜单:Hints->AutoInstr
?OpenType和PostScript(TrueType)字体之间有什么差异?
::
PostScript和TrueType字体,使用PostScript式,TrueType使用TrueType,(实际上,OpenType包括TrueType字形格式)。
OpenType字体文件后缀名,略有不同,一般为PFA、PFB文件,一般为Type 1格式,而 OpenType字体使用Type 2格式。
Type 2格式,几乎是一个超集,有一些小的变化和许多扩展型。
OpenType字体还可以包括附加的信息,允许复杂脚本的布局(阿拉伯语,印度,等等)的时候,字形变体和精细排版等方面的支持。
?cidmap文件究竟是什么?我应该关心他们吗?
::
背景材料:
原来,字库中每个符号被赋予一个名称和编码,这些编码是由一个256个元素的数组映射。
回来,然后他们开始字库进行扩展,例如中文GB吗。日文CJK吗,以及Unicode,这些字库有着10000字形、庞大的字符集,
于是,Adobe创建CID系统,每个符号有一个索引(CID),这只是一个数字,这是作为一个名字。然后外部的字体,额外资源(CMAP)为字体的编码序列的输入字节,映射到一个CID。
cidmap文件,在设计GB中文字库、CJK日文字体才有用,通常,欧洲人/美国人不需要他们。
?为什么TeX不能调用我的字体?
::
,我是一个TeX新手,也许是TeX的编码–有时被称为“Adobe标准的TeX文档编码。
所以,如果你有打印问题,失踪的符号,等尝试改变编码字体为TeX base:
1,菜单 Element->Font Info
2,选择“编码”选项卡
3,从下拉列表选择TeX Base。
? 为什么FontForg不让我e编辑“.MF”格式的字体文件?
::
如Knuth说:“(与WSYWYG问题是……),你所看到的就是你得到的。”
? 使用非整数坐标是安全的吗?
::
FontForge允许你非整数坐标编辑。许多字体编辑软件,有些怀疑非整数坐标的使用,光栅化时,它将扭曲自己的字体。
答案取决于字体格式和如何保存字体, TrueType字体只能表示整数坐标。
当FontForge创建TrueType字体,将所有坐标转换为整数,这一点在曲线中会有轻微的变形。
PostScript(type1,type2,OpenType字体等),可以使用非整数坐标,但占用更多的空间。
type1字体往往需要更多的空间,来表达type2型(OpenType字体)字体。
默认情况下,FontForge使用整数坐标,但你可以改变,在生成选项对话框。
如果你的字体是圆形的,那么会有一些失真。如果不是圆形的话,应该就没有失真。
PostScript字体,应使用安全的非整数坐标,当您生成字体,字体文件将更大,但更准确。
如果你觉得需要更准确的TrueType字体,可以改变他们的大小为8096。,你可以在后记Type1字体太大,然而,也有一些应用,假设所有的OpenType PostScript字体有一个EM大小为1000,所以最好不作为 OpenType输出。
?为什么是我的Open Type 字体文件很大?
::
这可能是因为,保存字体之前,你没有将坐标整数化。
FontForge将使用浮点数,保存字体,这会数占用大量空间。
? 当我读入OTF或type1字体,我的大部分的引用被内联副本替换。我如何得到我的资料?
::
加载PostScript字体时,找出老引用非常困难。
相反FontForge有一个特殊的命令,参考 Edit->Replace ,可以搜索字体中的潜在候选。
? FontForge使用旧的 ‘kern’字距调整信息吗?
::
这个问题需要分解为:
** TrueType和OpenType字体**。
字距调整信息是存储在 ‘kern’”或‘GPOS’ 这些字体表中,FontForge可以调用。
** TrueType and OpenType fonts **, Yes. The kerning information is stored in either the ‘kern’ or ‘GPOS’ tables of these fonts and FontForge can read them (Apple has made a number of extensions beyond the original truetype spec, FontForge can read these too).,
? 如何在OS/2 表(或任何其他)设置一个特殊的位元?
::
FontForge无法这样做,但我已经写了一个工具软件,可以编辑相关表单。
? sfd文件是什么?
::
sfd文件是FontForge的数据文件格式,它是一个文本文件,只使用ASCII字符,这意味着它是大的,但可读性强。
?simplify曲线优化命令是否会丢失精度?
::
是的,是的。但不多。它被设计来替换一组与另一个不同的样条曲线。
如果这个效果不够好(在轮廓视图):
1,菜单 Edit->Select->Select All:
2,菜单 Element->Transform->Transform
3,Scale Uniformly: 1000%
4,OK
5,Simplify,曲线优化
6,Scale Uniformly: 10%,
7,OK,
这将用一个样条,来替换一组与原来不同的样条,1个单位。
? 如何将一个cubic三次样条,转换为quadratic二次样条?
::
这可能会有些精度损失。否则FontForge,将原始样条分成更小的部分,并试图找到一套二次样条不同于立方不超过一个单位的任何地方。
(一旦你选择了2个端点,并且在这些端点处了解该斜率,两者之间可能只有一次二次样条)。
? 如何将一个quadratic二次样条,转换为cubic三次样条?
::
这很容易,因为任何二次样条,都可以表示为一个立方体。
控制点会有变化,将有一些精度损失。
?当试图导入图像文件,为什么说“错误加载动态库”?
::
FontForge加载图像,需要使用一些外部的动态模块库,它不检查这些模块库的存在,直到你真的去加载图像。如果你的系统没有安装库,它会给上面的错误(并不能加载图像)。

?为什么FontForge说“EPS文件太复杂无法理解”?<</div>

::
(因为它是一个错误的莎士比亚,我怎么能放弃呢?《无事生非》,V.1.217)
大多数程序,把EPS文件视为黑盒子。他们会读文件到内存,并输出到PostScript打印机,不变。
不幸的是FontForge不能这样做,FontForge需要理解,然后转换成一个简单的EPS文件格式(可以使用更少的操作)。
所以,不像大多数程序,FontForge必须解释每个EPS文件–但解释所有后记是一个巨大的工作,如果是在它所了解的有限。有时它会发现它不能处理的文件。
?如何从Inkscape ,输入符号?
::
用Inkscape设计一个文字,它可以很容易地导入到FontForge。
1,打开Inkscape
2,从“文件”菜单中选择“文档属性”
3,设定单位为像素(PX)和文件尺寸为1000 x 1000,单击“确定”,或如果你的字体有不同的数,他们使用单位,但1000是FontForge 默认的)
4,设置水平导线在200px
5,设计一个glyph,最难的部分!
6,保存的图纸为SVG文件
7,打开FontForge
8,菜单 File –> Import,选择SVG,找到你的图,点击OK
9,菜单 Element –>  Transform,
10,将Y设置为200,单击“确定”
? FontForge的灰色背景让我苦恼。我如何改变它?
::
在×资源网页上,有相关的讨论。
?FontForge ,字体使用其界面太小(太大了)。我如何改变他们?
::
X服务器无法调整屏幕分辨率,当FontForge调整它时,往往会出错。(新版本,已经基本解决了此问题)
? 我如何标记为等宽字体?,
::
你只需确保字体有相同的宽度,然后FontForge会自动标记为等宽。
(如果你标记为等宽,一些光栅化会给奇怪的结果)。
如果你想设置,菜单:Element->Font Info->OS/2->Panose
然后设置比例场等宽,这是必要的但不足以标记字体作为一个整体等宽。
如果你不确定是否所有的符号,你的字体有相同的宽度,使用菜单:Element->Find Problems->Random->Check Advance
当我说“all glyphs“,我真的是说所有字符,甚至符号中的Unicode表示应我0宽度的,都必须有相同的宽度。
?我怎么告诉FontForge新的编码?
::
先问问你自己是否真的需要一个新的编码?
如果你正在使用OpenType字体或字体通常可以得到标准的Unicode编码。
但是,如果你真的需要一个新的,在这里是一个粗略的想法:
弄清楚你的编码是什么样子。通常,这将包括在网络上寻找一个编码的例子。例如,如果你想要一个梵文字母编码,你可以看看网站说明ISCII编码
这些编码只显示前96个字符,大概也像我们一样的ASCII。看图片,找出它们如何映射到Unicode(或者更确切地说,那些人物适当的后记的名字是什么)。
创建一个文件(称之为“梵文。PS”在这种情况下)。它应该从一条线:, \/梵文{ ,这告诉FontForge,编码被称为“天城”,然后按照这个名单的所有角色的名字(之前有一个斜线)。
现在加载此文件为FontForge的编码,菜单Encoding->Load Encoding
?如何添加一个新的名字符号?
::
让我们说你想添加一个“dotlessi”字形的字体(ISO-8859-1编码不包括dotlessi)。
解决这个问题的方法有:
1,菜单 Encoding->Add Encoding Slots,找到你要的号码类型(大概1)
2,按OK键向下滚动到结束的字体,和找到新的符号,菜单:Element->Glyph,键入你的新名字为Unicode名称字段
3,菜单 Encoding->Reencode->ISO-10646-1
4,菜单 View->Goto Type
5,现在开始设计符号
6,菜单 Encoding->Reencode,再次改变编码
? 为什么FontForge给我的一些符号名字错误?
::
FontForge的命名约定是在Adobe的字形的命名约定,指定,不幸的是,有一些问题(一般为旧编码兼容)。
?在我生成的字体和退出,为什么FontForge问我是否要保存的字体?我什么也没变。
::
有两个原因可能发生:
1,即使你没有在这个会议上改变什么,FontForge可能需要(重新)产生暗示在一个或几个符号信息(如,例如那些符号已经改变(在以前的会话)但没有提示已生成他们自)。这些新提示将标志着字体的改变。
2,如果你的字体在字体信息的XUID区,然后FontForge会增值的最终数量在xuid每次PostScript字体生成–,这也算是一个改变。FontForge(为什么这样做?因为它应该说。一个小的烦恼,但它避免了一些问题与字体缓存时,你改变了一个旧版本的字体为一个新的一个)。
? 为什么我的窗口图标化的时候,我想得到缩小视图?
::
一些窗口管理器(gnome)键盘冲突,您必须使用“视图”菜单->缩小相反。
? 为什么在希腊字体里没有一个叫字符“mu”?
::
Adobe想得更多的是,向后兼容,当他们在Unicode编码,分配希腊字母时。因此得名“mu”指的是微信号(U + 00b5),而不是字符“mu”。
?为什么Edit->Copy,不能复制符号名称以及字形信息?
::
首先是因为我相信,任何复制一个字形的名称的尝试,都可以通过定义一个自定义编码来更好地进行。
其次,因为大多数时候你不想被复制的名字。
再次,因为它是审美的,应该只有更好的数据和元数据的工作。
不过……
有足够多的人问这个问题,我已经启用了一种模式,在编辑-复制从- >字符的名称,允许您改变默认的行为。
? 为什么Edit->Paste,名称重复?
::
因为你有:Edit->Copy From->Copy Metadata, 复制元数据检查。选中它。
? 如何设置字体的默认字体?
:: 如果字形命名”。notdef”,包含了一些样条(但没有引用),它将作为默认的符号(即字形时使用非编码符号)。
除了在OpenType字体(即 PostScript,OpenType字体),的”.notdef”字形不用于默认字形,而是“空”字形。(别看我,我没有写规格)
?我看着华文楷体或mingliu.ttf和轮廓看起来像正确的符号。怎么了?
::
有些TrueType字体(如华文楷体或mingliu)不存储正确的轮廓。
相反,他们依靠使用指令移动,产生轮廓。这个轮廓看起来不是很适合网格的,只是位置。
FontForge不会说明,因为它读取字体。在大多数字体中,这将是错误的事情,我不知道:我怎么能告诉什么时候需要做……
?当我使用:Element->Build->Build Accented Glyph ,建立重音符号,来建立一个扩展的希腊铭文(U + 1f00-u + 1FFF),FontForge挑选错误的口音。为什么?
::
因为Unicode统一了希腊语和拉丁语口音,即使他们不一样。
当FontForge遵循简单的Unicode定义,它可能会选择一个希腊符号拉丁口音。
幸运的是Unicode也包含希腊口音大约从U + 1fbd代码点,如果你把这些代码点与适当的口音,然后FontForge将使用这些而不是拉丁口音。
?当我使用: Element->Build->Build Accented Glyph,建立重音字形,“U”或“Y”我的口音不在字形中部。为什么?
::
你的一个笔画比另一个高一点。FontForge口音中心在字形的最高点。如果有几点相同的高度,那么平均使用。
如果你的所有的笔画是相同的高度,那么重音应该是适当的集中。
?我做了所有的字母,但字体仍然是缺失字符言,乱码?
::
一些字体软件(如默认的Ubuntu字体查看器),要求所有的A–Z字母,加上所有的数字和标点符号如“,否则他们就吐出的胡言乱语。
?如何设置空格字符?
::
在感叹号之前,空格字符被找到。
这是用一个黑色菱形标记在里面的问题。你设置的空间宽度,通过拖动预先宽度与任何其他符号。
?欧元符号在哪里?
::
默认情况下,FontForge始于Latin-1编码一个新的项目(ISO 8859-1)。
这套全英文字母,西欧口音,和一些北欧的象形文字,再加上各种符号和分数。欧元符号是在ISO 8859-1被发明,所以他们把它一路下跌在8364位置以及一些其他的货币符号。欧元符号也发现与其他符号正确表示如果你设置的编码模式的latin-0(ISO 8859-15)。
?为什么是字形表这么长时间,当我打开Unicode BMP/Full?
::
因为Unicode长,它包含了超过十万字形。他们中的大多数是中国和日本的文字,还有块希腊,斯拉夫(俄罗斯),切诺基,甚至埃及象形文字。这并不意味着你可以忽略一切后的字符虽然。许多英语标点符号像-,-,?,引号,和数学运算符,如减符号被发现“下方的褶皱”。访问一个简单的方法是设置你的编码方式,像Adobe的标准或Macintosh拉丁。
::为什么ttf2afm会出错,在处理FontForge生成的TTF文件时?
::
我不知道。我的ttf2afm程序,在RedHat 7.3 Linux确实崩溃。当我下载了源从CTAN pdfTeX面积和建造它(调试)生成的程序没有崩溃。因此,我相信这是ttf2afm bug,bug已经修复。
通过ttf2afm产生的AFM文件,不符合Adobe的规格。,
?为什么许多不同的字体名称相同意思吗?
::
菜单:Element->Font Info,显示字体名称窗格与几个不同的领域
为什么会有这么多的人,他们都是什么意思?
名称窗格包含用于PostScript字体名称。还有一个名字窗格包含TTF相似的一套用于sfnts名称(一个sfnt是字体文件的格式,包括字体,字体,和一些比较?淖痔甯袷剑?
字体可以包装在一个sfnt后记。在这种情况下,它可以有一套后记的名字,和一套sfnt(TTF)名称。这些名字可能是不同的(通常不是一个好主意,但他们可能是)。
“人类的名字”是传统与字体关联的名称。它可能是“新世纪教材斜体# 4”。这是一个字符串,应用程序可以用来显示当他们想让人类知道什么是字体。
该字体的存在是因为PostScript是一种编程语言,这是用来确定在PostScript字体名称。它对可能在名称中的字符有限制(没有空格是最大的。但它也不能像一个数字,没有圆括号等)和长度的名称。它可能看起来像“itcnewcenturyschoolbook斜体”。
姓是一个家族的名字。在上面的例子中,“新世纪教材”可能是姓。,”库文件名”是不是一个真正的名字与字体本身相关。它只不过是让你的生活更容易在使用FontForge。当你产生一个字体,FF会为你选择一个默认的文件名(你可以改变它,当然,如果你想使用默认名称是一个很方便的)。
通常情况下,默认名称将只与一个扩展的字体添加。但有时人们想要一个不同的名称为默认,也许只是newcentschlbk-ital.ttf。
因此,控制包含字体文件的默认文件名,并没有直接涉及到字体本身的东西。修饰字符串是“粗”,“黑”,“细”,等,不包括其他文体的变化(你不会把斜体或凝聚在这里)。
版权字符串应该是自解释的。,除了字体信息的“名”窗格中,还有一个TTF名称窗格。
在许多方面,这是一个重复的名称窗格,但有一些差异。它是用来指定名称的sfnts。,这里
更复杂的事情,有例如:WWWS Family, ?WWS SubFamily,我真的不明白为什么这是必要的,但微软认为他们是。据我所能告诉他们应该(在大多数情况下)一样,因此应省略。
CID字体应该是除非你正在建设一个CID键字体忽视(这通常意味着你正在一个CJK字体,)。
这是兼容的另一个名字。我想应该是姓名相同,并应略。, TTF名称可在多个指定语言和书写系统。翻译最频繁的条目是亚族。因此,斜体字体,你会有一个英语入门“斜体”,也许
?我的FontForge不断崩溃,因为保持内存超出。我能做些什么呢?
::
买更多的内存,如果你编辑大字体,FontForge可能耗尽内存。
往往当FF耗尽内存,内核会崩溃而不是错误情况的报告。FontForge不分配失败和尝试释放一些记忆块当系统返回一个错误–我从未见过这个代码激活,虽然检查n次。
FontForge的确提供了一种机制,可以帮助你避免这种。FontForge通常浪费很多记忆保存的撤消左右。
你可以明确的撤销与字形与编辑->删除撤消命令。你也可以限制一些撤消,:File->Preferences->Editing->UndoDepth

?为什么FontForge如此不稳定?<</div>

::
做质量保证,太麻烦。我不喜欢这样做,也没有人付钱让我去做,所以很少有人做。

如果你愿意做质量保证,让我知道(这是一个公共邮件列表)。这是一个吃力不讨好的工作,但很重要!<</div>

?为什么FontForge 在Xgl/Compiz下难看?<</div>

::
我还不知道,但是我告诉你可以把它设置:xlib_skip_argb_visuals = 1
?我为什么不说在会议吗?
::
因为我没有什么话要说,
泰森:我不被发现。我完全占领了其他地方。如果你想找到我,我将在我的书房里。你可以敲门,但我会给你答复的。我希望能和我的信念独处。晚上好。
-《这女人不是为了燃烧》,克里斯托弗弗莱,
对伟大的问题的答案…?
是的…!是……是的…!是……是的…!!!……?
“四零二,”深沉的思想与无限的威严和平静。
“四零二!“
loonquawl喊道,“你得给七个百万年的工作?
“我很彻底地检查了一下,”计算机说,“这很肯定是答案。我认为这个问题,对你很诚实,是你从来没有真正知道的问题是什么。
–《漫游指南银河》,道格拉斯亚当斯,

这都是柏拉图,在柏拉图:保佑我,他们怎么教他们这些学校的?<</div>

–《最后的战役》,路易斯
”我已经回答了三个问题,这就够了,”
父亲说,“别摆架子!你认为我能整天听这些东西吗?下车,否则我就把你踢下楼梯。”
–《你老了,威廉爸爸》,卡罗尔刘易斯
原文:《FontForge常见问题FAQ》
翻译:字王·中国
================
ps:有趣的是,这个FAQ的第一个问题就是,为什么需要新字体
经常有人问我这个错误的问题,你不会去问一位画家,他是不是已经有足够的水彩。
英文毕竟十万种了,设计简单,面临的压力,是创新困难。
与字王blog《没的选择时,存在就是合理的》遥想呼应

发表评论

电子邮件地址不会被公开。