文字处理

本文探讨了iOS中的文本处理技术,包括Unicode编码、字体管理、文本布局引擎等方面,并介绍了UILabel等UI控件背后的实现原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iOS 文字处理相关
转载http://ios.jobbole.com/90856/
在 iOS 开发中,文字处理可以说是最基础常见的一部分内容,系统控件例如 UILabel、UITextField、UITextView 等帮我们做了很多工作让我们可以很方便地展示一段文本。但是当我们要做更深入的定制展示时,系统提供的这些控件就无法满足需求了,这时候就要深入去了解一下系统是如何处理文本展示的。
以下内容是我在探究 iOS 系统对文字处理时做的一些记录,主要是一些概念性的内容,让大家对 iOS 文字处理有一个大概了解,涉及到具体需求时知道查找哪方便的资料,包括了 Unicode、UIFont、TextKit、CoreText、Unicode双向算法等。
Nsstring 和 Unicode
(一)历史
计算机没法直接处理文本,它只和数字打交道。为了在计算机里用数字表示文本,指定了一个从字符到数字的映射。这个映射就叫做编码(encoding)。最开始的映射是 ASCII 编码,但是能表示的字符有限,因此后来用 Unicode 统一编码。
(二)Unicode概要
Unicode 可以看做是对各编码系统的统一,但不通用,有一些很古老的编码系统无法兼容。
(三)Unicode特性
Unicode 以抽象的方式代表一个字符,而不规定这个字符如何渲染(render)。
组合字符序列,有些字符可以由单一码点或由多个码点组成,虽然外观和意义相同,在 Unicode 语境下并不相等,但符合 canonically equivalent

(四)Unicode格式转换
UTF(Unicode Transformation Formats)
(五)NSString
关于 NSString,最需要记住的是:NSString 代表的是用 UTF-16 编码的文本,长度、索引和范围都基于 UTF-16 的码元。对于这一点要是不注意会有以下一些陷阱:
长度

我们经常用 NSString 的 length 方法来获取一个字符串的长度,在大多数情况下这个方法都没有问题,但是当一个字符串中包含 emoji 时,这个返回的长度值并不准确,以下是具体例子:

NSString *s = @"\U0001F30D"; // earth globe emoji

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值