[HarfBuzz] Valid range of deltaGlyphID is too small

Behdad Esfahbod behdad at behdad.org
Tue Sep 27 08:05:54 PDT 2011


On 09/27/11 06:27, Jonathan Kew wrote:
> I'd guess the real issue is that GlyphID arithmetic is implicitly supposed to happen in 16-bit unsigned space, with silent wraparound of over- or under-flow, but HBNG ends up doing the arithmetic with 32-bit values and doesn't implement the modulo-64K truncation appropriately everywhere. (Note that hb_codepoint_t, often used for glyph indexes, is a 32-bit type.)

I did that intentionally.  I have not found any references in the spec as to
how to handle overflow and underflow.  Note that by not overflowing, I'm
implicitly allowing limited support for fonts with more than 64k glyphs.  If I
wrap around, it would be much harder to work with those fonts.  Specifically
what should happen when you add a delta and there is no overflow, but the
resulting glyphID is over 64k?  Ie. the initial glyphID was over 64k?

I'll take a look at what Adobe is doing.

behdad



More information about the HarfBuzz mailing list