The architecture of the CFString type is based on two overriding goals. The first is to use an internal encoding scheme that makes it possible to represent almost all known scripts. The second is to be fast and efficient. These goals would seem to conflict, but the architecture of CFString takes advantage of optimizations that limit the cost of Unicode storage. The following sections describe how this is done. They also describe the supported CFString encodings and explain the notions of external representation and character sets.