AttributedString’s Codable Format
The problem is that the character offsets that define the runs aren’t guaranteed to be stable. The definition of what constitutes a
Character
, i.e. a user-perceived character, or a Unicode grapheme cluster, can and does change in new Unicode versions.[…]
The people on the Foundation team know all this, of course, and chose a better encoding format for
Attributed String
.[…]
This is an array of runs, where each run consists of a text segment and a dictionary of formatting attributes. The important point is that the formatting attributes are directly associated with the text segments they belong to, not indirectly via brittle byte or character offsets.