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);
网友评论