CoreText 预备知识点 1

文字排版的基础概念

字体(Font):
和我们平时说的字体不同,计算机意义上的字体表示的是同一大小,同一样式(Style)字形的集合。从这个意义上来说,当我们为文字设置粗体,斜体时其实是使用了另外一种字体(下划线不算)。而平时我们所说的字体只是具有相同设计属性的字体集合,即Font Family或typeface。

字符(Character)和字形(Glyphs):
排版过程中一个重要的步骤就是从字符到字形的转换,字符表示信息本身,而字形是它的图形表现形式。字符一般就是指某种编码,如Unicode编码,而字形则是这些编码对应的图片。但是他们之间不是一一对应关系,同个字符的不同字体族,不同字体大小,不同字体样式都对应了不同的字形。而由于连写(Ligatures)的存在,多个字符也会存在对应一个字形的情况。

8369_140521152404_1.png

字形描述集(Glyphs Metris)
即字形的各个参数。如下面的两张图:

8369_140521152502_1.png
8369_140521152528_1.gif

边框(Bounding Box):
一个假想的边框,尽可能地容纳整个字形。

基线(Baseline):
一条假想的参照线,以此为基础进行字形的渲染。一般来说是一条横线。

基础原点(Origin):
基线上最左侧的点。

行间距(Leading):
行与行之间的间距。

字间距(Kerning):
字与字之间的距离,为了排版的美观,并不是所有的字形之间的距离都是一致的,但是这个基本步影响到我们的文字排版。

上行高度(Ascent)和下行高度(Decent):
一个字形最高点和最低点到基线的距离,前者为正数,而后者为负数。当同一行内有不同字体的文字时,就取最大值作为相应的值。如下图:

8369_140521152601_1.png

红框高度既为当前行的行高,绿线为baseline,绿色到红框上部分为当前行的最大Ascent,绿线到黄线为当前行的最大Desent,而黄框的高即为行间距。由此可以得出:lineHeight = Ascent + |Decent| + Leading。

更加详细的内容可以参考苹果的这篇文档: 《Cocoa Text Architecture Guide》。当然如果要做到更完善的排版,还需要掌握段落排版(Paragragh Style)相关的知识,但是如果只是完成聊天框内的文字排版,以上的基础知识已经够用了。详细的段落样式相关知识可以参考: 《Ruler and Paragraph Style Programming Topics》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.iOS中的round、ceil、floor函数略解 round如果参数是小数,则求本身的四舍五入.ceil如果...
    K_Gopher阅读 4,930评论 1 0
  • 文字排版的基础概念 字体(Font):和我们平时说的字体不同,计算机意义上的字体表示的是同一大小,同一样式(Sty...
    iOS白水阅读 3,899评论 0 0
  • 文字排版的基础概念 字体(Font):和我们平时说的字体不同,计算机意义上的字体表示的是同一大小,同一样式(Sty...
    jobs_chen阅读 5,241评论 0 0
  • 野航旧诗集自序 选梦无端,此生何似?撄兹浊缚,哪便灵飞?嘤嘤在耳,犹绕频伽之音;滔滔满目,方革文化之命。影幻菱花,...
    李野航阅读 3,352评论 3 3
  • [行者无疆]《与孩子共享自然》D3(唤醒计划D5/23)画好游览地图。第三天带读里提到探索大地之心,可以把经过的地...
    wxgcgb阅读 1,531评论 0 0

友情链接更多精彩内容