Yesterday morning I came up with the idea to produce a font for testing the extent to which applications and other text-handling environments support IVSes (Ideographic Variation Sequences), and ended up devoting the better part of this Easter weekend assembling, testing, and releasing the font as open source on GitHub. The font is named IVS Test, and as usual for me, it is an Adobe-Identity-0 ROS CID-keyed OpenType/CFF font.
IVS Test includes multiple instances of two functional glyphs. One functional glyph, which looks like U+24B8 (Ⓒ) and for which there are 256 instances to map code points in blocks of 256 (CIDs 242 through 497), serves to mark CJK Unified Ideographs being displayed as-is via the Format 12 (UTF-32) ‘cmap‘ subtable. The other functional glyph, which looks like U+24BE (Ⓘ) and for which there are 240 instances (CIDs 2 through 241), one for each of the 240 VSes (Variation Selectors) in Plane 14 (U+E0100 through U+E01EF), serves to mark the correct display of an IVS.
Instead of being tied to a specific version of Unicode, which would necessitate updates on an annual basis, IVS Test supports all current and future CJK Unified Ideographs by covering entire blocks: U+3400 through U+4DBF (Extension A), U+4E00 through U+9FFF (URO), U+FA0E, U+FA0F, U+FA11, U+FA13, U+FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27 through U+FA29 (CJK Unified Ideographs in the CJK Compatibility Ideographs block), U+20000 through U+2A6DF (Extension B), U+2A700 through U+2F7FF (Extension C and beyond). This is 91,052 code points, folks. What’s more, for each of these 91,052 code points, 240 IVSes are specified, using each of the 240 VSes in Plane 14. This means that the font’s Format 14 ‘cmap’ subtable specifies a mind-boggling 21,852,480 non-default UVSes (Unicode Variation Sequences).
The image below shows the following code points and IVSes, which represent the first and last CJK Unified Ideograph code points (U+3400 in Extension A, and U+2F7FF at the tail end of the unassigned area in Plane 2 (SIP)), and whose two IVSes use the very first and very last VSes (U+E0100 and U+E01EF): U+3400, <3400 E0100>, and <3400 E01EF> on the first line, and U+2F7FF, <2F7FF E0100>, and <2F7FF E01EF> on the second.
As the above example demonstrates, the TextEdit app in OS X correctly handles this font and these example IVSes, which represent the code-point extremes for both CJK Unified Ideographs and Variation Selectors.
I am pleased to report that the AFDKO makeotf tool was able to successfully build IVS Test, though the process took over three hours using my late-2014 Apple MacBook Pro.
Oh, and the font is huge! Luckily, the way that I built it should mean that updates are not necessary, unless someone finds a way to more efficiently store UVSes in the Format 14 ‘cmap’ subtable.
Anyway, If you develop an application or other environment that is intended to support IVSes, IVS Test should prove to be useful.
Enjoy, and Happy Easter!