CoreText (一、基础概念篇)

CoreText (一、基础概念篇)

前言:最近因为需要对工作原因,需要对 UITableView 进行优化,用到了 CoreText 框架,所以学习了下。

CoreText 框架结构:

1、CTFont
作用:向应用程序提供字体
2、CTFontCollection
3、CTFontDescriptor
4、CTFrame
5、CTFramesetter
6、CTGlyphInfo
7、CTLine
8、CTParagraphStyle
9、CTRun
10、CTRunDelegate
11、CTTextTab
12、CTTypesetter

基础知识的准备:

1、字体(Font)

和我们平时说的字体不同,计算机意义上的字体表示的是同一大小(Size),同一样式(Style)字形的集合。而平时我们所说的字体只是具有相同设计属性的字体集合,即Font Family或typeface。


文字基础知识0.gif
2、字符(Character)和字形(Glyphs)

排版过程中一个重要的步骤就是从字符到字形的转换,字符表示信息本身,而字形是它的图形表现形式。

字符一般就是指某种编码,如Unicode编码,而字形则是这些编码对应的图片。但是他们之间不是一一对应关系,同个字符的不同字体族,不同字体大小,不同字体样式都对应了不同的字形。而由于连写(Ligatures)的存在,多个字符也会存在对应一个字形的情况。

3、CoreText 坐标系问题

在 iOS UIKit 中,坐标系原点都是屏幕的左上角,X轴正方向向右,Y轴正方向向下;而 CoreText 在使用 Core Graphics 绘制时,坐标系原点是屏幕的左下角,X轴正方向向右,Y轴正方向向上。

// 获取当前上下文
CGContextRef context = UIGraphicsGetCurrentContext();
// 变换矩阵
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
// 沿Y轴正方向偏移
CGContextTranslateCTM(context, 0, self.bounds.size.height);
// 反转Y轴正方向
CGContextScaleCTM(context, 1.0, -1.0);

你可能感兴趣的:(CoreText (一、基础概念篇))