diff options
Diffstat (limited to 'gfx/skia/skia/src/sfnt/SkOTTable_head.h')
-rw-r--r-- | gfx/skia/skia/src/sfnt/SkOTTable_head.h | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/gfx/skia/skia/src/sfnt/SkOTTable_head.h b/gfx/skia/skia/src/sfnt/SkOTTable_head.h new file mode 100644 index 0000000000..d3b4ac8f45 --- /dev/null +++ b/gfx/skia/skia/src/sfnt/SkOTTable_head.h @@ -0,0 +1,146 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkOTTable_head_DEFINED +#define SkOTTable_head_DEFINED + +#include "src/base/SkEndian.h" +#include "src/sfnt/SkOTTableTypes.h" + +#pragma pack(push, 1) + +struct SkOTTableHead { + static const SK_OT_CHAR TAG0 = 'h'; + static const SK_OT_CHAR TAG1 = 'e'; + static const SK_OT_CHAR TAG2 = 'a'; + static const SK_OT_CHAR TAG3 = 'd'; + static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableHead>::value; + + SK_OT_Fixed version; + static const SK_OT_Fixed version1 = SkTEndian_SwapBE32(0x00010000); + SK_OT_Fixed fontRevision; + static const uint32_t fontChecksum = 0xB1B0AFBA; //checksum of all TT fonts + SK_OT_ULONG checksumAdjustment; + SK_OT_ULONG magicNumber; + static const SK_OT_ULONG magicNumberConst = SkTEndian_SwapBE32(0x5F0F3CF5); + union Flags { + struct Field { + //8-15 + SK_OT_BYTE_BITFIELD( + GXMetamorphosis_Apple, + HasStrongRTL_Apple, + HasIndicStyleRearrangement, + AgfaMicroTypeExpressProcessed, + FontConverted, + DesignedForClearType, + LastResort, + Reserved15) + //0-7 + SK_OT_BYTE_BITFIELD( + BaselineAtY0, + LeftSidebearingAtX0, + InstructionsDependOnPointSize, + IntegerScaling, + InstructionsAlterAdvanceWidth, + VerticalCenteredGlyphs_Apple, + Reserved06, + RequiresLayout_Apple) + } field; + struct Raw { + static const SK_OT_USHORT BaselineAtY0Mask = SkTEndian_SwapBE16(1 << 0); + static const SK_OT_USHORT LeftSidebearingAtX0Mask = SkTEndian_SwapBE16(1 << 1); + static const SK_OT_USHORT InstructionsDependOnPointSizeMask = SkTEndian_SwapBE16(1 << 2); + static const SK_OT_USHORT IntegerScalingMask = SkTEndian_SwapBE16(1 << 3); + static const SK_OT_USHORT InstructionsAlterAdvanceWidthMask = SkTEndian_SwapBE16(1 << 4); + static const SK_OT_USHORT VerticalCenteredGlyphs_AppleMask = SkTEndian_SwapBE16(1 << 5); + //Reserved + static const SK_OT_USHORT RequiresLayout_AppleMask = SkTEndian_SwapBE16(1 << 7); + + static const SK_OT_USHORT GXMetamorphosis_AppleMask = SkTEndian_SwapBE16(1 << 8); + static const SK_OT_USHORT HasStrongRTL_AppleMask = SkTEndian_SwapBE16(1 << 9); + static const SK_OT_USHORT HasIndicStyleRearrangementMask = SkTEndian_SwapBE16(1 << 10); + static const SK_OT_USHORT AgfaMicroTypeExpressProcessedMask = SkTEndian_SwapBE16(1 << 11); + static const SK_OT_USHORT FontConvertedMask = SkTEndian_SwapBE16(1 << 12); + static const SK_OT_USHORT DesignedForClearTypeMask = SkTEndian_SwapBE16(1 << 13); + static const SK_OT_USHORT LastResortMask = SkTEndian_SwapBE16(1 << 14); + //Reserved + SK_OT_USHORT value; + } raw; + } flags; + SK_OT_USHORT unitsPerEm; + SK_OT_LONGDATETIME created; + SK_OT_LONGDATETIME modified; + SK_OT_SHORT xMin; + SK_OT_SHORT yMin; + SK_OT_SHORT xMax; + SK_OT_SHORT yMax; + union MacStyle { + struct Field { + //8-15 + SK_OT_BYTE_BITFIELD( + Reserved08, + Reserved09, + Reserved10, + Reserved11, + Reserved12, + Reserved13, + Reserved14, + Reserved15) + //0-7 + SK_OT_BYTE_BITFIELD( + Bold, + Italic, + Underline, + Outline, + Shadow, + Condensed, + Extended, + Reserved07) + } field; + struct Raw { + static const SK_OT_USHORT BoldMask = SkTEndian_SwapBE16(1); + static const SK_OT_USHORT ItalicMask = SkTEndian_SwapBE16(1 << 1); + static const SK_OT_USHORT UnderlineMask = SkTEndian_SwapBE16(1 << 2); + static const SK_OT_USHORT OutlineMask = SkTEndian_SwapBE16(1 << 3); + static const SK_OT_USHORT ShadowMask = SkTEndian_SwapBE16(1 << 4); + static const SK_OT_USHORT CondensedMask = SkTEndian_SwapBE16(1 << 5); + static const SK_OT_USHORT ExtendedMask = SkTEndian_SwapBE16(1 << 6); + + SK_OT_USHORT value; + } raw; + } macStyle; + SK_OT_USHORT lowestRecPPEM; + struct FontDirectionHint { + enum Value : SK_OT_SHORT { + FullyMixedDirectionalGlyphs = SkTEndian_SwapBE16(0), + OnlyStronglyLTR = SkTEndian_SwapBE16(1), + StronglyLTR = SkTEndian_SwapBE16(2), + OnlyStronglyRTL = static_cast<SK_OT_SHORT>(SkTEndian_SwapBE16((uint16_t)-1)), + StronglyRTL = static_cast<SK_OT_SHORT>(SkTEndian_SwapBE16((uint16_t)-2)), + } value; + } fontDirectionHint; + struct IndexToLocFormat { + enum Value : SK_OT_SHORT { + ShortOffsets = SkTEndian_SwapBE16(0), + LongOffsets = SkTEndian_SwapBE16(1), + } value; + } indexToLocFormat; + struct GlyphDataFormat { + enum Value : SK_OT_SHORT { + CurrentFormat = SkTEndian_SwapBE16(0), + } value; + } glyphDataFormat; +}; + +#pragma pack(pop) + + +#include <stddef.h> +static_assert(offsetof(SkOTTableHead, glyphDataFormat) == 52, "SkOTTableHead_glyphDataFormat_not_at_52"); +static_assert(sizeof(SkOTTableHead) == 54, "sizeof_SkOTTableHead_not_54"); + +#endif |