Index: third_party/harfbuzz/src/harfbuzz-gpos-private.h |
diff --git a/third_party/harfbuzz/src/harfbuzz-gpos-private.h b/third_party/harfbuzz/src/harfbuzz-gpos-private.h |
index 41107008441b531175bd15a27cde06e75a2f0512..39f315998749666cf99e4e158cd95c10dc225161 100644 |
--- a/third_party/harfbuzz/src/harfbuzz-gpos-private.h |
+++ b/third_party/harfbuzz/src/harfbuzz-gpos-private.h |
@@ -32,9 +32,17 @@ |
HB_BEGIN_HEADER |
+#ifdef HB_USE_PACKED_STRUCTS |
+#pragma pack(push, 1) |
+#endif |
/* shared tables */ |
+#define VR_X_PLACEMENT_DEVICE 0 |
+#define VR_Y_PLACEMENT_DEVICE 1 |
+#define VR_X_ADVANCE_DEVICE 2 |
+#define VR_Y_ADVANCE_DEVICE 3 |
+ |
struct HB_ValueRecord_ |
{ |
HB_Short XPlacement; /* horizontal adjustment for |
@@ -45,18 +53,16 @@ struct HB_ValueRecord_ |
advance */ |
HB_Short YAdvance; /* vertical adjustment for |
advance */ |
- HB_Device XPlacementDevice; /* device table for horizontal |
- placement */ |
- HB_Device YPlacementDevice; /* device table for vertical |
- placement */ |
- HB_Device XAdvanceDevice; /* device table for horizontal |
- advance */ |
- HB_Device YAdvanceDevice; /* device table for vertical |
- advance */ |
+ |
+ HB_Device** DeviceTables; /* device tables for placement |
+ and advance */ |
+ |
+#ifdef HB_SUPPORT_MULTIPLE_MASTER |
HB_UShort XIdPlacement; /* horizontal placement metric ID */ |
HB_UShort YIdPlacement; /* vertical placement metric ID */ |
HB_UShort XIdAdvance; /* horizontal advance metric ID */ |
HB_UShort YIdAdvance; /* vertical advance metric ID */ |
+#endif |
}; |
typedef struct HB_ValueRecord_ HB_ValueRecord; |
@@ -65,6 +71,8 @@ typedef struct HB_ValueRecord_ HB_ValueRecord; |
/* Mask values to scan the value format of the ValueRecord structure. |
We always expand compressed ValueRecords of the font. */ |
+#define HB_GPOS_FORMAT_HAVE_DEVICE_TABLES 0x00F0 |
+ |
#define HB_GPOS_FORMAT_HAVE_X_PLACEMENT 0x0001 |
#define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT 0x0002 |
#define HB_GPOS_FORMAT_HAVE_X_ADVANCE 0x0004 |
@@ -97,18 +105,20 @@ struct HB_AnchorFormat2_ |
typedef struct HB_AnchorFormat2_ HB_AnchorFormat2; |
+#define AF3_X_DEVICE_TABLE 0 |
+#define AF3_Y_DEVICE_TABLE 1 |
struct HB_AnchorFormat3_ |
{ |
HB_Short XCoordinate; /* horizontal value */ |
HB_Short YCoordinate; /* vertical value */ |
- HB_Device XDeviceTable; /* device table for X coordinate */ |
- HB_Device YDeviceTable; /* device table for Y coordinate */ |
+ HB_Device** DeviceTables; /* device tables for coordinates */ |
}; |
typedef struct HB_AnchorFormat3_ HB_AnchorFormat3; |
+#ifdef HB_SUPPORT_MULTIPLE_MASTER |
struct HB_AnchorFormat4_ |
{ |
HB_UShort XIdAnchor; /* horizontal metric ID */ |
@@ -116,11 +126,12 @@ struct HB_AnchorFormat4_ |
}; |
typedef struct HB_AnchorFormat4_ HB_AnchorFormat4; |
+#endif |
struct HB_Anchor_ |
{ |
- HB_UShort PosFormat; /* 1, 2, 3, or 4 -- 0 indicates |
+ HB_Byte PosFormat; /* 1, 2, 3, or 4 -- 0 indicates |
that there is no Anchor table */ |
union |
@@ -128,7 +139,9 @@ struct HB_Anchor_ |
HB_AnchorFormat1 af1; |
HB_AnchorFormat2 af2; |
HB_AnchorFormat3 af3; |
+#ifdef HB_SUPPORT_MULTIPLE_MASTER |
HB_AnchorFormat4 af4; |
+#endif |
} af; |
}; |
@@ -175,7 +188,7 @@ typedef struct HB_SinglePosFormat2_ HB_SinglePosFormat2; |
struct HB_SinglePos_ |
{ |
- HB_UShort PosFormat; /* 1 or 2 */ |
+ HB_Byte PosFormat; /* 1 or 2 */ |
HB_Coverage Coverage; /* Coverage table */ |
HB_UShort ValueFormat; /* format of ValueRecord table */ |
@@ -255,7 +268,7 @@ typedef struct HB_PairPosFormat2_ HB_PairPosFormat2; |
struct HB_PairPos_ |
{ |
- HB_UShort PosFormat; /* 1 or 2 */ |
+ HB_Byte PosFormat; /* 1 or 2 */ |
HB_Coverage Coverage; /* Coverage table */ |
HB_UShort ValueFormat1; /* format of ValueRecord table |
for first glyph */ |
@@ -507,7 +520,7 @@ typedef struct HB_ContextPosFormat3_ HB_ContextPosFormat3; |
struct HB_ContextPos_ |
{ |
- HB_UShort PosFormat; /* 1, 2, or 3 */ |
+ HB_Byte PosFormat; /* 1, 2, or 3 */ |
union |
{ |
@@ -524,18 +537,18 @@ typedef struct HB_ContextPos_ HB_ContextPos; |
struct HB_ChainPosRule_ |
{ |
+ HB_UShort* Backtrack; /* array of backtrack glyph IDs */ |
+ HB_UShort* Input; /* array of input glyph IDs */ |
+ HB_UShort* Lookahead; /* array of lookahead glyph IDs */ |
+ HB_PosLookupRecord* PosLookupRecord; |
+ /* array of PosLookupRecords */ |
HB_UShort BacktrackGlyphCount; |
/* total number of backtrack glyphs */ |
- HB_UShort* Backtrack; /* array of backtrack glyph IDs */ |
HB_UShort InputGlyphCount; |
/* total number of input glyphs */ |
- HB_UShort* Input; /* array of input glyph IDs */ |
HB_UShort LookaheadGlyphCount; |
/* total number of lookahead glyphs */ |
- HB_UShort* Lookahead; /* array of lookahead glyph IDs */ |
HB_UShort PosCount; /* number of PosLookupRecords */ |
- HB_PosLookupRecord* PosLookupRecord; |
- /* array of PosLookupRecords */ |
}; |
typedef struct HB_ChainPosRule_ HB_ChainPosRule; |
@@ -565,20 +578,20 @@ typedef struct HB_ChainContextPosFormat1_ HB_ChainContextPosFormat1; |
struct HB_ChainPosClassRule_ |
{ |
+ HB_UShort* Backtrack; /* array of backtrack classes */ |
+ HB_UShort* Input; /* array of context classes */ |
+ HB_UShort* Lookahead; /* array of lookahead classes */ |
+ HB_PosLookupRecord* PosLookupRecord; |
+ /* array of substitution lookups */ |
HB_UShort BacktrackGlyphCount; |
/* total number of backtrack |
classes */ |
- HB_UShort* Backtrack; /* array of backtrack classes */ |
HB_UShort InputGlyphCount; |
/* total number of context classes */ |
- HB_UShort* Input; /* array of context classes */ |
HB_UShort LookaheadGlyphCount; |
/* total number of lookahead |
classes */ |
- HB_UShort* Lookahead; /* array of lookahead classes */ |
HB_UShort PosCount; /* number of PosLookupRecords */ |
- HB_PosLookupRecord* PosLookupRecord; |
- /* array of substitution lookups */ |
}; |
typedef struct HB_ChainPosClassRule_ HB_ChainPosClassRule; |
@@ -656,7 +669,7 @@ typedef struct HB_ChainContextPosFormat3_ HB_ChainContextPosFormat3; |
struct HB_ChainContextPos_ |
{ |
- HB_UShort PosFormat; /* 1, 2, or 3 */ |
+ HB_Byte PosFormat; /* 1, 2, or 3 */ |
union |
{ |
@@ -707,6 +720,10 @@ HB_INTERNAL void |
_HB_GPOS_Free_SubTable( HB_GPOS_SubTable* st, |
HB_UShort lookup_type ); |
+#ifdef HB_USE_PACKED_STRUCTS |
+#pragma pack(pop) |
+#endif |
+ |
HB_END_HEADER |
#endif /* HARFBUZZ_GPOS_PRIVATE_H */ |