boring-expansion-spec
boring-expansion-spec copied to clipboard
[`cmap`] >64k expansion
Formats 12/13 already support 32bit glyph indices.
Add format16 subtable, which is exactly like format14, except that whereas format14 uses:
struct UVSMapping {
uint24 unicodeValue;
uint16 glyphID;
};
the new format16 will use:
struct UVSMapping {
uint24 unicodeValue;
uint24 glyphID;
};
(or uint32, if we choose to go that way instead; but I think 24 is more appropriate).
Speced: https://github.com/harfbuzz/boring-expansion-spec/blob/main/beyond-64k.md
NOT implemented in HarfBuzz yet.
I think we need use offset + index to find glyh, this will significantly compress the length of the cmap table if it is large.
just need use uint64 glyphID = (uint64)offset + (uint16)index.