[HarfBuzz] HarfBuzz rewrite
Simon Hausmann
simon.hausmann at trolltech.com
Wed Jan 3 06:16:49 PST 2007
On Wednesday 03 January 2007 10:41, Behdad Esfahbod wrote:
> On Wed, 2007-01-03 at 03:02 -0500, Lars Knoll wrote:
> > This is a little problematic, as the compiler is free to add paddings
> > inside
> > the structs (actually it's dependent on the ABI you have on the OS).
> > It
> > should work fine on x86, but you might run into problems on risk
> > architectures. gcc has a workaround for this (the packed attribute).
> > This is
> > something we'll need to look into for other compilers (which we
> > support with
> > Qt).
>
> Thanks Lars. I already faced such problems as padding and alignment and
> have solved some, and have plans to solve the rest. The neat thing is,
> it's a single place (the DEFINE_INT_TYPE macro) you need to tweak for
> that. You can use an array of chars for example, etc etc. I'll get to
> that when the rest is done.
Lars and I just had a look at it and we're afraid that it may not be possible
to get the padding/alignment working portably for all compilers :-(
Maybe it'd be easier to just have (initially generate) little wrapper classes
with member functions. For example:
struct OpenTypeFontFace
{
enum Offsets {
Tag_Offset = 0,
SFntVersion_Offset = 4,
NumTables_Offset = 8,
SearchRange_Offset = 12,
...
};
OpenTypeFontFace(const char *_data) : data(_data) {}
uint32 tag() const { return fromBE32<uint32>(data + Tag_Offset); }
uint32 sfntVersion() const { return fromBE32<uint32>(data + SFntVersion_Offset); }
uint32 numTables() const { return fromBE32<uint32>(data + NumTables_Offset); }
...
private:
const char *data;
};
That keeps the code using it still very readable/maintainable and should work
nicely for all platforms.
Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/harfbuzz/attachments/20070103/830534d3/attachment.pgp>
More information about the HarfBuzz
mailing list