123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /*
- * Copyright 2014 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef SkOTTable_EBDT_DEFINED
- #define SkOTTable_EBDT_DEFINED
- #include "src/core/SkEndian.h"
- #include "src/sfnt/SkOTTableTypes.h"
- #include "src/sfnt/SkOTTable_head.h"
- #include "src/sfnt/SkOTTable_loca.h"
- #pragma pack(push, 1)
- struct SkOTTableEmbeddedBitmapData {
- static const SK_OT_CHAR TAG0 = 'E';
- static const SK_OT_CHAR TAG1 = 'B';
- static const SK_OT_CHAR TAG2 = 'D';
- static const SK_OT_CHAR TAG3 = 'T';
- static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableEmbeddedBitmapData>::value;
- SK_OT_Fixed version;
- static const SK_OT_Fixed version_initial = SkTEndian_SwapBE32(0x00020000);
- struct BigGlyphMetrics {
- SK_OT_BYTE height;
- SK_OT_BYTE width;
- SK_OT_CHAR horiBearingX;
- SK_OT_CHAR horiBearingY;
- SK_OT_BYTE horiAdvance;
- SK_OT_CHAR vertBearingX;
- SK_OT_CHAR vertBearingY;
- SK_OT_BYTE vertAdvance;
- };
- struct SmallGlyphMetrics {
- SK_OT_BYTE height;
- SK_OT_BYTE width;
- SK_OT_CHAR bearingX;
- SK_OT_CHAR bearingY;
- SK_OT_BYTE advance;
- };
- // Small metrics, byte-aligned data.
- struct Format1 {
- SmallGlyphMetrics smallGlyphMetrics;
- //SK_OT_BYTE[] byteAlignedBitmap;
- };
- // Small metrics, bit-aligned data.
- struct Format2 {
- SmallGlyphMetrics smallGlyphMetrics;
- //SK_OT_BYTE[] bitAlignedBitmap;
- };
- // Format 3 is not used.
- // EBLC metrics (IndexSubTable::header::indexFormat 2 or 5), compressed data.
- // Only used on Mac.
- struct Format4 {
- SK_OT_ULONG whiteTreeOffset;
- SK_OT_ULONG blackTreeOffset;
- SK_OT_ULONG glyphDataOffset;
- };
- // EBLC metrics (IndexSubTable::header::indexFormat 2 or 5), bit-aligned data.
- struct Format5 {
- //SK_OT_BYTE[] bitAlignedBitmap;
- };
- // Big metrics, byte-aligned data.
- struct Format6 {
- BigGlyphMetrics bigGlyphMetrics;
- //SK_OT_BYTE[] byteAlignedBitmap;
- };
- // Big metrics, bit-aligned data.
- struct Format7 {
- BigGlyphMetrics bigGlyphMetrics;
- //SK_OT_BYTE[] bitAlignedBitmap;
- };
- struct EBDTComponent {
- SK_OT_USHORT glyphCode; // Component glyph code
- SK_OT_CHAR xOffset; // Position of component left
- SK_OT_CHAR yOffset; // Position of component top
- };
- struct Format8 {
- SmallGlyphMetrics smallMetrics; // Metrics information for the glyph
- SK_OT_BYTE pad; // Pad to short boundary
- SK_OT_USHORT numComponents; // Number of components
- //EBDTComponent componentArray[numComponents]; // Glyph code, offset array
- };
- struct Format9 {
- BigGlyphMetrics bigMetrics; // Metrics information for the glyph
- SK_OT_USHORT numComponents; // Number of components
- //EBDTComponent componentArray[numComponents]; // Glyph code, offset array
- };
- };
- #pragma pack(pop)
- #endif
|