Core Text 原理浅谈

iOS 开发中经常会遇到一些文字排版或者图文混排的需求,在 iOS7 以前一般都使用 CoreText 来处理这样的需求,iOS7 之后可以使用系统的 TextKit ,TextKit 是对 CoreText 的封装。
CoreText 是用于处理文字和字体的底层技术,它直接和 Core Graphics 交互;它真正负责绘制的是文本部分,如果要绘制图片,可以使用 CoreText给图片预留出位置,然后用 Core Graphics 绘制。

底层结构图

在这里插入图片描述

字形度量

在这里插入图片描述
在这里插入图片描述

  • bounding box(边界框),是一个假想的框子,它尽可能紧密的装入字形。
  • baseline(基线),一条假想的线,一行上的字形都以此线作为上下位置的参考,在这条线的左侧存在一个点叫做基线的原点。
  • ascent(上行高度),从原点到字体中最高(这里的高深都是以基线为参照线的)的字形的顶部的距离,ascent 是一个正值。
  • descent(下行高度),从原点到字体中最深的字形底部的距离,descent 是一个负值(比如一个字体原点到最深的字形的底部的距离为4,那么 descent 就为-4)。
  • linegap(行距),linegap 也可以称作 leading(其实准确点讲应该叫做External leading)。
  • leading,其实是上一行字符的 descent 到下一行的 ascent 之间的距离。
  • 因此字体的高度是由三部分组成的:leading + ascent + descent。

字形和字符 可以参考本文的详解,苹果官方文档:Querying Font MetricsText Layout

CoreText 对象模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值