[HarfBuzz] How harfbuzz handles memory alignment?

Richard Wordingham richard.wordingham at ntlworld.com
Sun Nov 27 14:46:58 UTC 2016


On Sat, 26 Nov 2016 23:52:40 +0330
Ebrahim Byagowi <ebraminio at gmail.com> wrote:

> Hey guys, just like to know how harfbuzz handles memory alignment
> without having even one #pragma pack around? Does `IntType`
> <https://github.com/behdad/harfbuzz/blob/02bfd965af588640250c47f344ad3096c8a373e0/src/hb-open-type-private.hh#L626>
> handles padding somehow or harfbuzz copies its own structs? Thanks.

If you look at the specialisations of struct BEInt immediately above
in the same file, you'll see that the values are handled as arrays of
unsigned bytes (type uint8_t).  Endianity and misalignment are handled
together.

One OpenType table that may contain misaligned data is the name table
- nothing forces UTF-16 characters to be aligned on 2-byte boundaries,
and I've seen fonts where it isn't so aligned.

Richard.


More information about the HarfBuzz mailing list