字符和字形
一个字符是带有意义的书面语言的最小单位。 字符可以对应于语言的特定声音,罗马字母的字母也可以; 他们可以代表整个词,如中国表意文字; 或者它们可以表示独立的概念,例如数学符号。 然而,在每一种情况下,一个字符是一个抽象的概念。
虽然字符必须通过可识别的形状在显示区域中表示,但它们与该形状不同。 也就是说,可以以各种形式绘制字符并保持相同的字符。 例如,可以使用不同大小或不同行程厚度绘制“大写A”字符,它可以倾斜或垂直,并且可以在形式上具有某些可选的变体,例如衬线。
字符的这些各种具体形式中的任何一个称为字形。 图2-1显示了所有表示字符“大写A”的不同字形。
字符和字形没有一一对应的信件。 在某些情况下,字符可以由多个字形表示,例如“é”,其可以是“e”与紧急口音字形“´”组合的字形。 在其他情况下,单个字形可以表示多个字符,如在连字或加入字母的情况下。 图2-2显示了单个字符和相邻时经常使用的单字形连字。
连字是上下文形式的示例,其中用于表示字符的字形根据其旁边的字符而改变。 其他上下文形式包括用于开始或结束单词的字符的替代字形。
计算机将字符存储为编码表映射到其相应字符的数字。 OS X原生的编码方案称为Unicode。 Unicode标准为世界上每一种现代书写语言中的每个字符提供了独一无二的数字,与所使用的平台,程序和编程语言无关。 这个通用标准解决了使用数百种冲突编码方案的不同计算机系统的长期存在的问题。 它还具有简化处理双向文本和上下文形式的功能。
字形也由称为字形代码的数字代码表示。 Cocoa布局管理器在组合和布局处理期间选择用于描绘字符的字形。 布局管理器确定要使用哪个字形,以及将它们放置在显示器或视图中。 布局管理器缓存正在使用的字形代码,并提供了在字符和字形之间以及字符和视图坐标之间进行转换的方法。
字体
字体是用于书面语言中的一些或所有字符的视觉相关形状的集合。 例如,“时代”用的是同一种字体,由斯坦利·莫里森(Stanley Morrison)于1931年为伦敦“泰晤士报”报纸设计。 时代中的所有字母形式与外观相关,茎(垂直笔画)和计数器(字体中的圆形)和其他元素之间的比例一致。 当以文本的方式布置时,字体中的形状一起工作以增强可读性。
一种字样,或简单的风格,是字体的独特视觉特征。 例如,罗马类型的特征是直立字母具有比水平线更粗的衬线和茎。 斜体字型,字母向右倾斜,圆形,类似于草书或手写字母形状。 字体通常有几个相关的类型。
一个字体是一系列字形,描述了一致的大小,字体和方式的字符。 字体用于特定的显示环境。 字体包含所有上下文形式的字形,例如连字符,以及正常字符形式。
字体系列是一组共享字体但不同类型样式的字体。 所以,例如,Times是一个字体系列的名称(以及它的字体名称)。 罗马时代和时代斜体是属于“泰晤士报”家族的两种个人字体的名称。 图2-3显示了Times字体系列中的几种字体。
Cocoa中提供的样式,也称为特征,包括粗体,斜体,浓缩,扩展,窄,小帽,海报字体和固定间距等变体。 Cocoa文本系统中的字体描述符提供字体匹配功能,以便您可以通过创建一个字体描述符来部分描述一个字体,例如只有一个姓氏或者重量,然后可以在系统上找到所有的字体 匹配给定的特征。
文本布局
文本布局是在显示设备上,在称为文本视图的区域中排列字形的过程,其表示与传统排版中的页面类似的区域。 字形相对于彼此布置的顺序称为文本方向。 以英文和其他语言派生自拉丁语,字形并排放置形成由空格分开的单词。 单词以从左到右的文本视图的左上角开始,直到文本到达视图的右侧。 然后,文本在上一行开始处的视图左侧开始一行,布局以相同的方式进行到文本视图的底部。
在其他语言中,字形布局可能会有很大的不同。 例如,一些语言从右到左或垂直而不是水平地布置字形。 在同一行中,特别是在技术写作中,将语言与不同的文本方向(如英语和希伯来语)混合是很常见的。 一些书写系统甚至在每隔一行的一个布局方向(一种叫做布氏写作)。 某些语言不会将字形分成空格分开的单词。 此外,一些应用程序需要任意安排字形; 例如,在图形设计上下文中,布局可能需要将字形布置在非线性路径上。
要从字符串创建行,布局引擎必须通过找到结束一行并开始下一个行的点来执行换行。 在Cocoa文本系统中,您可以在任一个字或字形边界上指定换行符。 在罗马文本中,字形之间的字词需要在断点处插入连字符号。
Cocoa布局管理人员沿着一条不可见的线路,绘制了基线。 在罗马文本中,基线是水平的,大部分字形的底边依赖于它。 一些字形延伸到基线以下,包括具有下降字符的“g”或“尾”等字符,以及像“O”这样的大圆角字符必须稍微低于基线,以补偿光学效果。 其他书写系统将字形放在基线的下方或居中。 每个字形包括布局管理器用于将其正确与基准对齐的原点。
默认情况下,在水平文本中,排版器使用前进宽度并排放置字形,导致标准的间隔空间。 然而,在某些组合中,通过字距调整使文本变得更加易读,字距缩小或缩小两个字形之间的空间。 字母间距的一个很常见的例子是在大写字母W和大写字母A之间发生,如图2-5所示。 类型设计师包括字体指标中的字距信息。 Cocoa文本系统提供了关闭字距调整的方法,使用字体提供的默认设置,或者在整个文本选择中收紧或松开字距。
类型系统通常以称为点的单位来衡量字体度量,在OS X中,每单位测量精确到72。 添加上升和下降字体的距离可以提供字体的点大小。
在排版之间添加的空间类型称为引导,在传统金属类页面布局中用于此目的的铅笔。 (行间距有时也称为行缺口)上升加下降加上线的总量提供字体的线高度。
虽然上述类型设计的排版概念可能有些深奥,但大多数在计算机或打字机上创建文档的人都熟悉页面上文本布局的元素。 例如,边距是页面边缘与布局引擎放置字形的文本区域之间的空白区域。 对齐方式描述文本行相对于边距放置的方式。 例如,水平文本可以右对齐,左对齐或居中对齐,如图2-6所示。
文本行也可以是正当的; 对于水平文本,线条通过改变左右边距和间距间隔来对齐左右边距,如图2-7所示。 在文本流被分解成行和连字符之后,如果需要,系统执行对齐,并进行其他字形替换。