CJK Fonts, Character Sets & Encodings. All CJK. #AllOfTheTime.

CMap Resource Updates & Change Policies

For those font developers who are not aware, the official CMap resource repository for our public ROSes is the CMap Resources open source project at Open @ Adobe, which is hosted by SourceForge. When CMap resources are updated, in addition to providing the updates through this portal, an announcement is made in the CMap Resources Forum.

The UTF-16 and UTF-32 CMap resources were introduced in August of 2001, beginning with Adobe-CNS1-4. Those for Adobe-Korea1-2 and Adobe-Japan2-0 followed in January of 2002, followed by those for Adobe-GB1-4 in June of the same year. The UTF-16 and UTF-32 CMap resources for Adobe-Japan1-5 were not released until November of 2002. From that point, the UCS-2 CMap resources were deprecated, and were no longer updated. Clients that used the UCS-2 CMap resources were encouraged to use the UTF-16 or UTF-32 ones instead. For OpenType font development, in terms of building the Unicode (Format 4 and 12) ‘cmap‘ subtables, the UTF-32 CMap resources are recommended.
When the UTF-16 and UTF-32 CMap resources for Adobe-Japan1-5 were developed, the following mappings changed when compared to the now-deprecated UCS-2 versions:

Mapping

Explanation

U+007C → CID+99

Was CID+93; error; swapped with U+00A6; NOTE: CIDs 93 and 99 have the same widths in all Morisawa and Adobe fonts

U+007E → CID+100

Was CID+95; error; U+02DC and U+0303 map to CID+95

U+00A6 → CID+93

Was CID+99; error; swapped with U+007C; NOTE: CIDs 93 and 99 have the same widths in all Morisawa and Adobe fonts

U+0127 → CID+15816

Was CID+12092; primary is U+210F, and maps to CID+12092

U+01C0 removed

Was CID+99; primary is U+007C, and maps to CID+99

U+0361 → CID+15845

Was CID+758; primary is U+2312, and maps to CID+758

U+045B removed

Was CID+12092; primary is U+210F, and maps to CID+12092

U+2018 → CID+98

Was CID+670; U+2018 is for Latin text, and CID+98 is better

U+2019 → CID+96

Was CID+671; U+2019 is for Latin text, and CID+96 is better

U+201C → CID+108

Was CID+672; U+201C is for Latin text, and CID+108 is better

U+201D → CID+122

Was CID+673; U+201D is for Latin text, and CID+122 is better

U+203E → CID+226

Was CID+325; should have been CID+226 from the beginning

U+20DD → CID+16328

Was CID+779; primary is U+25EF, and maps to CID+779

U+2195 removed

Was CID+12215

U+2225 → CID+15489

Was CID+666; primary is U+2016, and maps to CID+666; CID+15489 better matches CID+15490, which maps from U+2226

U+223C → CID+100

Was CID+665; primary is U+301C, and maps to CID+665

U+229D removed

Was CID+12186; primary is U+2296, and maps to CID+12186

U+229E → CID+15906

Was CID+12190

U+22EE removed

Was CID+7897; vertical variant of U+2026

U+22EF removed

Was CID+668; primary is U+2026, and maps to CID+668

U+2300 removed

Was CID+12184; primary is U+2205, and maps to CID+12184

U+244A removed

Was CID+12116; error

U+2612 → CID+16233

Was CID+12185; primary is U+22A0, and maps to CID+12185

U+2EAC → CID+19130

Was CID+2260; primary is U+793A, and maps to CID+2260; U+2F70 also maps to CID+2260

U+5002 → CID+20299

Was CID+13383; for JIS X 0213:2000 compatibility

U+51DE → CID+20300

Was CID+14352; for JIS X 0213:2000 compatibility

U+5307 → CID+20301

Was CID+8404; for JIS X 0213:2000 compatibility

U+5561 → CID+20308

Was CID+14393; for JIS X 0213:2000 compatibility

U+5BEC → CID+20302

Was CID+8436; for JIS X 0213:2000 compatibility

U+5DB2 → CID+15405

Was CID+15269; for JIS X 0213:2000 compatibility

U+5ECB → CID+15390

Was CID+14510; for JIS X 0213:2000 compatibility

U+661E → CID+20304

Was CID+8476; for JIS X 0213:2000 compatibility

U+6677 → CID+16889

Was CID+14609; for JIS X 0213:2000 compatibility

U+6801 → CID+14066

Was CID+8494; for JIS X 0213:2000 compatibility

U+69EA → CID+13329

Was CID+13679; for JIS X 0213:2000 compatibility

U+6C3A → CID+20309

Was CID+14690; for JIS X 0213:2000 compatibility

U+6FF9 → CID+15395

Was CID+14741; for JIS X 0213:2000 compatibility

U+704A → CID+20306

Was CID+14744; for JIS X 0213:2000 compatibility

U+71B3 → CID+15397

Was CID+14766; for JIS X 0213:2000 compatibility

U+7462 → CID+16977

Was CID+8561; for JIS X 0213:2000 compatibility

U+7626 → CID+13893

Was CID+7725; for JIS X 0213:2000 compatibility

U+7934 → CID+17014

Was CID+14904; for JIS X 0213:2000 compatibility

U+7A60 → CID+20310

Was CID+14926; for JIS X 0213:2000 compatibility

U+7D5C → CID+17041

Was CID+8592; for JIS X 0213:2000 compatibility

U+8803 → CID+20312

Was CID+15107; for JIS X 0213:2000 compatibility

U+8FC6 → CID+18759

Was CID+15185; for JIS X 0213:2000 compatibility

U+9365 → CID+17168

Was CID+15238; for JIS X 0213:2000 compatibility

U+95AB → CID+20313

Was CID+15258; for JIS X 0213:2000 compatibility

U+9755 → CID+20314

Was CID+8696; for JIS X 0213:2000 compatibility

U+9B2D → CID+17205

Was CID+13372; for JIS X 0213:2000 compatibility

U+9C6A → CID+19061

Was CID+15346; for JIS X 0213:2000 compatibility

U+F929 → CID+20305

Was CID+8489; for JIS X 0213:2000 compatibility

U+F9DC → CID+13393

Was CID+8686; for JIS X 0213:2000 compatibility

U+FA10 → CID+7746

Was CID+8422; for JIS X 0213:2000 compatibility

U+FA11 → CID+14290

Was CID+8443; for JIS X 0213:2000 compatibility

U+FA15 → CID+20307

Was CID+8542; for JIS X 0213:2000 compatibility

U+FA24 → CID+18760

Was CID+8632; for JIS X 0213:2000 compatibility

Since releasing the UTF-16 and UTF-32 CMap resources, the only changes to existing mappings were the following:

November of 2002: The UniGB-UTF8-H (CMapVersion=13.001), UniGB-UTF16-H (CMapVersion=1.001), and UniGB-UTF32-H (CMapVersion=1.001) CMap resources had the mappings for U+30F8 and U+30F9 swapped. This was a simple matter of error correction.

September of 2003: The UniJIS-UTF8-H (CMapVersion=13.002), UniJIS-UTF16-H (CMapVersion=1.002), UniJIS-UTF32-H (CMapVersion=1.002), and UniJISX0213-UTF32-H (CMapVersion=1.002) CMap resources had the U+02C0 → CID+15897 mapping removed, and the U+02C1 → CID+15897 mapping added. This was a simple matter of error correction.

November of 2003: The UniGB-UTF8-V (CMapVersion=13.001), UniGB-UTF16-V (CMapVersion=1.001), and UniGB-UTF32-V (CMapVersion=1.001) CMap resources had the U+2225 → CID+7708 mapping removed.

As you can see from the above list of changes to existing mappings, they have been done infrequently, with the last one being over five years ago. Our policy is to not change existing mappings unless it is absolutely necessary.

In terms of CMap resource updates, such as for additional mappings, they are usually triggered by new versions of Unicode (a previously unencoded glyph can now be encoded; for example, Unicode Version 6.1 introduced U+9FCC, which maps to Adobe-Japan1-6 CID+20156, and which triggered a CMap resource update) or the definition of a new Supplement.