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.

December of 2005: The UniJIS-UTF8-V (CMapVersion=13.002), UniJIS-UTF16-V (CMapVersion=1.002), UniJIS-UTF32-V (CMapVersion=1.002), and UniJISX0213-UTF32-V (CMapVersion=1.002) CMap resources had the U+303B → CID+12107 mapping removed.

January of 2007: The UniJIS2004-UTF8-H (CMapVersion=1.001), UniJIS2004-UTF16-H (CMapVersion=1.001), and UniJIS2004-UTF32-H (CMapVersion=1.001) CMap resources introduced the following changes to existing mappings: U+5906 → CID+21371 (was CID+17469), U+609E → CID+21558 (was CID+14541), U+66B5 → CID+21722 (was CID+17755), U+7152 → CID+21933 (was CID+14762), and U+9A4A → CID+22920 (was CID+15319). These changes were for JIS X 0213:2004 compatibility.

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.

Comments are closed.