iOS

CoreText(一) 准备知识

2015-04-29  本文已影响236人  张周择
字形(Character)和字符(Glyphs)

排版系统中文本显示的一个重要的过程就是字符到字形的转换,字符是信息本身的元素,而字形是字符的图形表征,字符还会有其它表征比如发音。 字符在计算机中其实就是一个编码,某个字符集中的编码,比如Unicode字符集,就囊括了大都数存在的字符。 而字形则是图形,一般都存储在字体文件中,字形也有它的编码,也就是它在字体中的索引。 一个字符可以对应多个字形(不同的字体,或者同种字体的不同样式:粗体斜体等);多个字符也可能对应一个字形,比如字符的连写( Ligatures)。

字形度量(Glyph Metrics)

字形度量是对应每一个字形的特定距离,以此描述如何对文本排版。

和CoreText相关的参量

坐标系

CoreText 使用的坐标系是传统的原点(0,0)在左下角的坐标系;UIKit 中使用的坐标系是原点(0,0)在左上角的坐标系

下面是一种转换方式:

CGContextTranslateCTM(context, 0, self.frame.size.height);
CGContextScaleCTM(context, 1, -1);

更多关于坐标系仿射变换的内容可以参考

Toll-Free Bridged Types

CoreText 中需要渲染的字符串类型是 CFMutableAttributedStringRef 是CoreFoundation中得类型,而我们常用的类型是NSMutableAttributedString是FoundationKit中的类型。关于这两种类型的转换Apple 提供了一中Toll-Free Bridged Types机制,即Core Foundation和Foundation中的有些数据类型只需要简单的强制类型转换就可以互换使用这样的类型被称为Toll-Free Bridged Types。

NSMutableAttributedString 和 CFMutableAttributedStringRef就是一对TFB 更多的Toll-Free Bridged Types可以参看DeveloperLibrary -Toll-Free Bridged Types

CoreText 对象模型

参考


FreeType 管理字形

Core Text Tutorial for iOS: Making a Magazine App

DeveloperLibrary - Typographical Concepts

上一篇 下一篇

猜你喜欢

热点阅读