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.