src/hb-open-file-private.hh               |    6 -
 src/hb-open-type-private.hh               |   70 ++++++------
 src/hb-ot-cbdt-table.hh                   |   78 ++++++-------
 src/hb-ot-cmap-table.hh                   |   90 +++++++--------
 src/hb-ot-glyf-table.hh                   |   10 -
 src/hb-ot-head-table.hh                   |   28 ++--
 src/hb-ot-hhea-table.hh                   |   18 +--
 src/hb-ot-kern-table.hh                   |   36 +++---
 src/hb-ot-layout-common-private.hh        |  122 ++++++++++-----------
 src/hb-ot-layout-gdef-table.hh            |   22 +--
 src/hb-ot-layout-gpos-table.hh            |   94 ++++++++--------
 src/hb-ot-layout-gsub-table.hh            |   30 ++---
 src/hb-ot-layout-gsubgpos-private.hh      |  172 +++++++++++++++---------------
 src/hb-ot-math-table.hh                   |   26 ++--
 src/hb-ot-maxp-table.hh                   |    2 
 src/hb-ot-name-table.hh                   |   18 +--
 src/hb-ot-os2-table.hh                    |   70 ++++++------
 src/hb-ot-post-table.hh                   |   16 +-
 src/hb-ot-shape-complex-arabic-win1256.hh |   32 ++---
 src/hb-ot-var-avar-table.hh               |    4 
 src/hb-ot-var-fvar-table.hh               |   22 +--
 src/hb-ot-var-hvar-table.hh               |    8 -
 src/hb-ot-var-mvar-table.hh               |   10 -
 23 files changed, 493 insertions(+), 491 deletions(-)

New commits:
commit c6173a392cfaa3d339c768836e8cddf3ae4adc53
Author: Behdad Esfahbod <beh...@behdad.org>
Date:   Tue Nov 14 21:09:03 2017 -0800

    Add Offset16 and Offset32

diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index 6ad3c0fd..2f4e1b9e 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -705,7 +705,7 @@ struct Index : UINT16 {
 DEFINE_NULL_DATA (Index, "\xff\xff");
 
 /* Offset, Null offset = 0 */
-template <typename Type=UINT16>
+template <typename Type>
 struct Offset : Type
 {
   inline bool is_null (void) const { return 0 == *this; }
@@ -713,6 +713,9 @@ struct Offset : Type
   DEFINE_SIZE_STATIC (sizeof(Type));
 };
 
+typedef Offset<UINT16> Offset16;
+typedef Offset<UINT32> Offset32;
+
 
 /* CheckSum */
 struct CheckSum : UINT32
diff --git a/src/hb-ot-layout-common-private.hh 
b/src/hb-ot-layout-common-private.hh
index dfbcf1ef..86a74ccb 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -216,7 +216,7 @@ struct LangSys
     return_trace (c->check_struct (this) && featureIndex.sanitize (c));
   }
 
-  Offset<>     lookupOrderZ;   /* = Null (reserved for an offset to a
+  Offset16     lookupOrderZ;   /* = Null (reserved for an offset to a
                                 * reordering table) */
   UINT16       reqFeatureIndex;/* Index of a feature required for this
                                 * language system--if no required features
@@ -662,7 +662,7 @@ struct Lookup
   private:
   UINT16       lookupType;             /* Different enumerations for GSUB and 
GPOS */
   UINT16       lookupFlag;             /* Lookup qualifiers */
-  ArrayOf<Offset<> >
+  ArrayOf<Offset16>
                subTable;               /* Array of SubTables */
   UINT16       markFilteringSetX[VAR]; /* Index (base 0) into GDEF mark glyph 
sets
                                         * structure. This field is only 
present if bit
diff --git a/src/hb-ot-name-table.hh b/src/hb-ot-name-table.hh
index e90e46c1..4c5b3c0f 100644
--- a/src/hb-ot-name-table.hh
+++ b/src/hb-ot-name-table.hh
@@ -125,7 +125,7 @@ struct name
   /* We only implement format 0 for now. */
   UINT16       format;                 /* Format selector (=0/1). */
   UINT16       count;                  /* Number of name records. */
-  Offset<>     stringOffset;           /* Offset to start of string storage 
(from start of table). */
+  Offset16     stringOffset;           /* Offset to start of string storage 
(from start of table). */
   NameRecord   nameRecord[VAR];        /* The name records where count is the 
number of records. */
   public:
   DEFINE_SIZE_ARRAY (6, nameRecord);
diff --git a/src/hb-ot-var-fvar-table.hh b/src/hb-ot-var-fvar-table.hh
index ab7d35b4..2a9357a5 100644
--- a/src/hb-ot-var-fvar-table.hh
+++ b/src/hb-ot-var-fvar-table.hh
@@ -186,7 +186,7 @@ struct fvar
   protected:
   FixedVersion<>version;       /* Version of the fvar table
                                 * initially set to 0x00010000u */
-  Offset<>     things;         /* Offset in bytes from the beginning of the 
table
+  Offset16     things;         /* Offset in bytes from the beginning of the 
table
                                 * to the start of the AxisRecord array. */
   UINT16       reserved;       /* This field is permanently reserved. Set to 
2. */
   UINT16       axisCount;      /* The number of variation axes in the font (the
commit 6f335ed1e52c6161fa0b0295776856fc07f7f46f
Author: Behdad Esfahbod <beh...@behdad.org>
Date:   Tue Nov 14 21:06:07 2017 -0800

    Replace USHORT/SHORT/ULONG/etc with UINT16/INT16/UINT32/etc

diff --git a/src/hb-open-file-private.hh b/src/hb-open-file-private.hh
index 741e74cc..644e0b40 100644
--- a/src/hb-open-file-private.hh
+++ b/src/hb-open-file-private.hh
@@ -64,9 +64,9 @@ typedef struct TableRecord
 
   Tag          tag;            /* 4-byte identifier. */
   CheckSum     checkSum;       /* CheckSum for this table. */
-  ULONG                offset;         /* Offset from beginning of TrueType 
font
+  UINT32               offset;         /* Offset from beginning of TrueType 
font
                                 * file. */
-  ULONG                length;         /* Length of this table. */
+  UINT32               length;         /* Length of this table. */
   public:
   DEFINE_SIZE_STATIC (16);
 } OpenTypeTable;
@@ -154,7 +154,7 @@ struct TTCHeaderVersion1
   Tag          ttcTag;         /* TrueType Collection ID string: 'ttcf' */
   FixedVersion<>version;       /* Version of the TTC Header (1.0),
                                 * 0x00010000u */
-  ArrayOf<LOffsetTo<OffsetTable>, ULONG>
+  ArrayOf<LOffsetTo<OffsetTable>, UINT32>
                table;          /* Array of offsets to the OffsetTable for each 
font
                                 * from the beginning of the file */
   public:
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index a12c4d23..6ad3c0fd 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -635,23 +635,22 @@ struct IntType
   DEFINE_SIZE_STATIC (Size);
 };
 
-typedef IntType<int8_t,   1> CHAR;     /* 8-bit signed integer. */
-typedef IntType<uint8_t,  1> BYTE;     /* 8-bit unsigned integer. */
+typedef IntType<uint8_t,  1> UINT8;    /* 8-bit unsigned integer. */
 typedef IntType<int8_t,   1> INT8;     /* 8-bit signed integer. */
-typedef IntType<uint16_t, 2> USHORT;   /* 16-bit unsigned integer. */
-typedef IntType<int16_t,  2> SHORT;    /* 16-bit signed integer. */
-typedef IntType<uint32_t, 4> ULONG;    /* 32-bit unsigned integer. */
-typedef IntType<int32_t,  4> LONG;     /* 32-bit signed integer. */
+typedef IntType<uint16_t, 2> UINT16;   /* 16-bit unsigned integer. */
+typedef IntType<int16_t,  2> INT16;    /* 16-bit signed integer. */
+typedef IntType<uint32_t, 4> UINT32;   /* 32-bit unsigned integer. */
+typedef IntType<int32_t,  4> INT32;    /* 32-bit signed integer. */
 typedef IntType<uint32_t, 3> UINT24;   /* 24-bit unsigned integer. */
 
-/* 16-bit signed integer (SHORT) that describes a quantity in FUnits. */
-typedef SHORT FWORD;
+/* 16-bit signed integer (INT16) that describes a quantity in FUnits. */
+typedef INT16 FWORD;
 
-/* 16-bit unsigned integer (USHORT) that describes a quantity in FUnits. */
-typedef USHORT UFWORD;
+/* 16-bit unsigned integer (UINT16) that describes a quantity in FUnits. */
+typedef UINT16 UFWORD;
 
 /* 16-bit signed fixed number with the low 14 bits of fraction (2.14). */
-struct F2DOT14 : SHORT
+struct F2DOT14 : INT16
 {
   //inline float to_float (void) const { return ???; }
   //inline void set_float (float f) { v.set (f * ???); }
@@ -660,7 +659,7 @@ struct F2DOT14 : SHORT
 };
 
 /* 32-bit signed fixed-point number (16.16). */
-struct Fixed: LONG
+struct Fixed: INT32
 {
   //inline float to_float (void) const { return ???; }
   //inline void set_float (float f) { v.set (f * ???); }
@@ -678,15 +677,15 @@ struct LONGDATETIME
     return_trace (likely (c->check_struct (this)));
   }
   protected:
-  LONG major;
-  ULONG minor;
+  INT32 major;
+  UINT32 minor;
   public:
   DEFINE_SIZE_STATIC (8);
 };
 
 /* Array of four uint8s (length = 32 bits) used to identify a script, language
  * system, feature, or baseline */
-struct Tag : ULONG
+struct Tag : UINT32
 {
   /* What the char* converters return is NOT nul-terminated.  Print using 
"%.4s" */
   inline operator const char* (void) const { return reinterpret_cast<const 
char *> (&this->v); }
@@ -697,16 +696,16 @@ struct Tag : ULONG
 DEFINE_NULL_DATA (Tag, "    ");
 
 /* Glyph index number, same as uint16 (length = 16 bits) */
-typedef USHORT GlyphID;
+typedef UINT16 GlyphID;
 
 /* Script/language-system/feature index */
-struct Index : USHORT {
+struct Index : UINT16 {
   static const unsigned int NOT_FOUND_INDEX = 0xFFFFu;
 };
 DEFINE_NULL_DATA (Index, "\xff\xff");
 
 /* Offset, Null offset = 0 */
-template <typename Type=USHORT>
+template <typename Type=UINT16>
 struct Offset : Type
 {
   inline bool is_null (void) const { return 0 == *this; }
@@ -716,13 +715,13 @@ struct Offset : Type
 
 
 /* CheckSum */
-struct CheckSum : ULONG
+struct CheckSum : UINT32
 {
   /* This is reference implementation from the spec. */
-  static inline uint32_t CalcTableChecksum (const ULONG *Table, uint32_t 
Length)
+  static inline uint32_t CalcTableChecksum (const UINT32 *Table, uint32_t 
Length)
   {
     uint32_t Sum = 0L;
-    const ULONG *EndPtr = Table+((Length+3) & ~3) / ULONG::static_size;
+    const UINT32 *EndPtr = Table+((Length+3) & ~3) / UINT32::static_size;
 
     while (Table < EndPtr)
       Sum += *Table++;
@@ -731,7 +730,7 @@ struct CheckSum : ULONG
 
   /* Note: data should be 4byte aligned and have 4byte padding at the end. */
   inline void set_for_data (const void *data, unsigned int length)
-  { set (CalcTableChecksum ((const ULONG *) data, length)); }
+  { set (CalcTableChecksum ((const UINT32 *) data, length)); }
 
   public:
   DEFINE_SIZE_STATIC (4);
@@ -742,7 +741,7 @@ struct CheckSum : ULONG
  * Version Numbers
  */
 
-template <typename FixedType=USHORT>
+template <typename FixedType=UINT16>
 struct FixedVersion
 {
   inline uint32_t to_int (void) const { return (major << (sizeof(FixedType) * 
8)) + minor; }
@@ -766,7 +765,7 @@ struct FixedVersion
  * Use: (base+offset)
  */
 
-template <typename Type, typename OffsetType=USHORT>
+template <typename Type, typename OffsetType=UINT16>
 struct OffsetTo : Offset<OffsetType>
 {
   inline const Type& operator () (const void *base) const
@@ -811,7 +810,7 @@ struct OffsetTo : Offset<OffsetType>
   }
   DEFINE_SIZE_STATIC (sizeof(OffsetType));
 };
-template <typename Type> struct LOffsetTo : OffsetTo<Type, ULONG> {};
+template <typename Type> struct LOffsetTo : OffsetTo<Type, UINT32> {};
 template <typename Base, typename OffsetType, typename Type>
 static inline const Type& operator + (const Base &base, const OffsetTo<Type, 
OffsetType> &offset) { return offset (base); }
 template <typename Base, typename OffsetType, typename Type>
@@ -823,7 +822,7 @@ static inline Type& operator + (Base &base, OffsetTo<Type, 
OffsetType> &offset)
  */
 
 /* An array with a number of elements. */
-template <typename Type, typename LenType=USHORT>
+template <typename Type, typename LenType=UINT16>
 struct ArrayOf
 {
   const Type *sub_array (unsigned int start_offset, unsigned int *pcount /* 
IN/OUT */) const
@@ -933,10 +932,10 @@ struct ArrayOf
   public:
   DEFINE_SIZE_ARRAY (sizeof (LenType), array);
 };
-template <typename Type> struct LArrayOf : ArrayOf<Type, ULONG> {};
+template <typename Type> struct LArrayOf : ArrayOf<Type, UINT32> {};
 
 /* Array of Offset's */
-template <typename Type, typename OffsetType=USHORT>
+template <typename Type, typename OffsetType=UINT16>
 struct OffsetArrayOf : ArrayOf<OffsetTo<Type, OffsetType> > {};
 
 /* Array of offsets relative to the beginning of the array itself. */
@@ -964,7 +963,7 @@ struct OffsetListOf : OffsetArrayOf<Type>
 
 
 /* An array starting at second element. */
-template <typename Type, typename LenType=USHORT>
+template <typename Type, typename LenType=UINT16>
 struct HeadlessArrayOf
 {
   inline const Type& operator [] (unsigned int i) const
@@ -1026,7 +1025,7 @@ struct HeadlessArrayOf
 /*
  * An array with sorted elements.  Supports binary searching.
  */
-template <typename Type, typename LenType=USHORT>
+template <typename Type, typename LenType=UINT16>
 struct SortedArrayOf : ArrayOf<Type, LenType>
 {
   template <typename SearchType>
@@ -1065,10 +1064,10 @@ struct BinSearchHeader
   }
 
   protected:
-  USHORT       len;
-  USHORT       searchRangeZ;
-  USHORT       entrySelectorZ;
-  USHORT       rangeShiftZ;
+  UINT16       len;
+  UINT16       searchRangeZ;
+  UINT16       entrySelectorZ;
+  UINT16       rangeShiftZ;
 
   public:
   DEFINE_SIZE_STATIC (8);
diff --git a/src/hb-ot-cbdt-table.hh b/src/hb-ot-cbdt-table.hh
index ca2859eb..415625e5 100644
--- a/src/hb-ot-cbdt-table.hh
+++ b/src/hb-ot-cbdt-table.hh
@@ -47,20 +47,20 @@ struct SmallGlyphMetrics
     extents->height = -height;
   }
 
-  BYTE height;
-  BYTE width;
-  CHAR bearingX;
-  CHAR bearingY;
-  BYTE advance;
+  UINT8 height;
+  UINT8 width;
+  INT8 bearingX;
+  INT8 bearingY;
+  UINT8 advance;
 
   DEFINE_SIZE_STATIC(5);
 };
 
 struct BigGlyphMetrics : SmallGlyphMetrics
 {
-  CHAR vertBearingX;
-  CHAR vertBearingY;
-  BYTE vertAdvance;
+  INT8 vertBearingX;
+  INT8 vertBearingY;
+  UINT8 vertAdvance;
 
   DEFINE_SIZE_STATIC(8);
 };
@@ -73,18 +73,18 @@ struct SBitLineMetrics
     return_trace (c->check_struct (this));
   }
 
-  CHAR ascender;
-  CHAR decender;
-  BYTE widthMax;
-  CHAR caretSlopeNumerator;
-  CHAR caretSlopeDenominator;
-  CHAR caretOffset;
-  CHAR minOriginSB;
-  CHAR minAdvanceSB;
-  CHAR maxBeforeBL;
-  CHAR minAfterBL;
-  CHAR padding1;
-  CHAR padding2;
+  INT8 ascender;
+  INT8 decender;
+  UINT8 widthMax;
+  INT8 caretSlopeNumerator;
+  INT8 caretSlopeDenominator;
+  INT8 caretOffset;
+  INT8 minOriginSB;
+  INT8 minAdvanceSB;
+  INT8 maxBeforeBL;
+  INT8 minAfterBL;
+  INT8 padding1;
+  INT8 padding2;
 
   DEFINE_SIZE_STATIC(12);
 };
@@ -102,9 +102,9 @@ struct IndexSubtableHeader
     return_trace (c->check_struct (this));
   }
 
-  USHORT indexFormat;
-  USHORT imageFormat;
-  ULONG imageDataOffset;
+  UINT16 indexFormat;
+  UINT16 imageFormat;
+  UINT32 imageDataOffset;
 
   DEFINE_SIZE_STATIC(8);
 };
@@ -137,8 +137,8 @@ struct IndexSubtableFormat1Or3
   DEFINE_SIZE_ARRAY(8, offsetArrayZ);
 };
 
-struct IndexSubtableFormat1 : IndexSubtableFormat1Or3<ULONG> {};
-struct IndexSubtableFormat3 : IndexSubtableFormat1Or3<USHORT> {};
+struct IndexSubtableFormat1 : IndexSubtableFormat1Or3<UINT32> {};
+struct IndexSubtableFormat3 : IndexSubtableFormat1Or3<UINT16> {};
 
 struct IndexSubtable
 {
@@ -214,8 +214,8 @@ struct IndexSubtableRecord
                                                   offset, length, format);
   }
 
-  USHORT firstGlyphIndex;
-  USHORT lastGlyphIndex;
+  UINT16 firstGlyphIndex;
+  UINT16 lastGlyphIndex;
   LOffsetTo<IndexSubtable> offsetToSubtable;
 
   DEFINE_SIZE_STATIC(8);
@@ -276,17 +276,17 @@ struct BitmapSizeTable
 
   protected:
   LOffsetTo<IndexSubtableArray> indexSubtableArrayOffset;
-  ULONG indexTablesSize;
-  ULONG numberOfIndexSubtables;
-  ULONG colorRef;
+  UINT32 indexTablesSize;
+  UINT32 numberOfIndexSubtables;
+  UINT32 colorRef;
   SBitLineMetrics horizontal;
   SBitLineMetrics vertical;
-  USHORT startGlyphIndex;
-  USHORT endGlyphIndex;
-  BYTE ppemX;
-  BYTE ppemY;
-  BYTE bitDepth;
-  CHAR flags;
+  UINT16 startGlyphIndex;
+  UINT16 endGlyphIndex;
+  UINT8 ppemX;
+  UINT8 ppemY;
+  UINT8 bitDepth;
+  INT8 flags;
 
   public:
   DEFINE_SIZE_STATIC(48);
@@ -300,8 +300,8 @@ struct BitmapSizeTable
 struct GlyphBitmapDataFormat17
 {
   SmallGlyphMetrics glyphMetrics;
-  ULONG dataLen;
-  BYTE dataZ[VAR];
+  UINT32 dataLen;
+  UINT8 dataZ[VAR];
 
   DEFINE_SIZE_ARRAY(9, dataZ);
 };
@@ -460,7 +460,7 @@ struct CBDT
 
   protected:
   FixedVersion<>version;
-  BYTE dataZ[VAR];
+  UINT8 dataZ[VAR];
 
   public:
   DEFINE_SIZE_ARRAY(4, dataZ);
diff --git a/src/hb-ot-cmap-table.hh b/src/hb-ot-cmap-table.hh
index 4602eac8..883d7b3f 100644
--- a/src/hb-ot-cmap-table.hh
+++ b/src/hb-ot-cmap-table.hh
@@ -58,10 +58,10 @@ struct CmapSubtableFormat0
   }
 
   protected:
-  USHORT       format;         /* Format number is set to 0. */
-  USHORT       lengthZ;        /* Byte length of this subtable. */
-  USHORT       languageZ;      /* Ignore. */
-  BYTE         glyphIdArray[256];/* An array that maps character
+  UINT16       format;         /* Format number is set to 0. */
+  UINT16       lengthZ;        /* Byte length of this subtable. */
+  UINT16       languageZ;      /* Ignore. */
+  UINT8                glyphIdArray[256];/* An array that maps character
                                 * code to glyph index values. */
   public:
   DEFINE_SIZE_STATIC (6 + 256);
@@ -88,8 +88,8 @@ struct CmapSubtableFormat4
 
       /* Custom two-array bsearch. */
       int min = 0, max = (int) thiz->segCount - 1;
-      const USHORT *startCount = thiz->startCount;
-      const USHORT *endCount = thiz->endCount;
+      const UINT16 *startCount = thiz->startCount;
+      const UINT16 *endCount = thiz->endCount;
       unsigned int i;
       while (min <= max)
       {
@@ -127,11 +127,11 @@ struct CmapSubtableFormat4
       return true;
     }
 
-    const USHORT *endCount;
-    const USHORT *startCount;
-    const USHORT *idDelta;
-    const USHORT *idRangeOffset;
-    const USHORT *glyphIdArray;
+    const UINT16 *endCount;
+    const UINT16 *startCount;
+    const UINT16 *idDelta;
+    const UINT16 *idRangeOffset;
+    const UINT16 *glyphIdArray;
     unsigned int segCount;
     unsigned int glyphIdArrayLength;
   };
@@ -165,24 +165,24 @@ struct CmapSubtableFormat4
   }
 
   protected:
-  USHORT       format;         /* Format number is set to 4. */
-  USHORT       length;         /* This is the length in bytes of the
+  UINT16       format;         /* Format number is set to 4. */
+  UINT16       length;         /* This is the length in bytes of the
                                 * subtable. */
-  USHORT       languageZ;      /* Ignore. */
-  USHORT       segCountX2;     /* 2 x segCount. */
-  USHORT       searchRangeZ;   /* 2 * (2**floor(log2(segCount))) */
-  USHORT       entrySelectorZ; /* log2(searchRange/2) */
-  USHORT       rangeShiftZ;    /* 2 x segCount - searchRange */
+  UINT16       languageZ;      /* Ignore. */
+  UINT16       segCountX2;     /* 2 x segCount. */
+  UINT16       searchRangeZ;   /* 2 * (2**floor(log2(segCount))) */
+  UINT16       entrySelectorZ; /* log2(searchRange/2) */
+  UINT16       rangeShiftZ;    /* 2 x segCount - searchRange */
 
-  USHORT       values[VAR];
+  UINT16       values[VAR];
 #if 0
-  USHORT       endCount[segCount];     /* End characterCode for each segment,
+  UINT16       endCount[segCount];     /* End characterCode for each segment,
                                         * last=0xFFFFu. */
-  USHORT       reservedPad;            /* Set to 0. */
-  USHORT       startCount[segCount];   /* Start character code for each 
segment. */
-  SHORT                idDelta[segCount];      /* Delta for all character 
codes in segment. */
-  USHORT       idRangeOffset[segCount];/* Offsets into glyphIdArray or 0 */
-  USHORT       glyphIdArray[VAR];      /* Glyph index array (arbitrary length) 
*/
+  UINT16       reservedPad;            /* Set to 0. */
+  UINT16       startCount[segCount];   /* Start character code for each 
segment. */
+  INT16                idDelta[segCount];      /* Delta for all character 
codes in segment. */
+  UINT16       idRangeOffset[segCount];/* Offsets into glyphIdArray or 0 */
+  UINT16       glyphIdArray[VAR];      /* Glyph index array (arbitrary length) 
*/
 #endif
 
   public:
@@ -208,9 +208,9 @@ struct CmapSubtableLongGroup
   }
 
   private:
-  ULONG                startCharCode;  /* First character code in this group. 
*/
-  ULONG                endCharCode;    /* Last character code in this group. */
-  ULONG                glyphID;        /* Glyph index; interpretation depends 
on
+  UINT32               startCharCode;  /* First character code in this group. 
*/
+  UINT32               endCharCode;    /* Last character code in this group. */
+  UINT32               glyphID;        /* Glyph index; interpretation depends 
on
                                 * subtable format. */
   public:
   DEFINE_SIZE_STATIC (12);
@@ -247,8 +247,8 @@ struct CmapSubtableTrimmed
   DEFINE_SIZE_ARRAY (5 * sizeof (UINT), glyphIdArray);
 };
 
-struct CmapSubtableFormat6  : CmapSubtableTrimmed<USHORT> {};
-struct CmapSubtableFormat10 : CmapSubtableTrimmed<ULONG > {};
+struct CmapSubtableFormat6  : CmapSubtableTrimmed<UINT16> {};
+struct CmapSubtableFormat10 : CmapSubtableTrimmed<UINT32 > {};
 
 template <typename T>
 struct CmapSubtableLongSegmented
@@ -269,11 +269,11 @@ struct CmapSubtableLongSegmented
   }
 
   protected:
-  USHORT       format;         /* Subtable format; set to 12. */
-  USHORT       reservedZ;      /* Reserved; set to 0. */
-  ULONG                lengthZ;        /* Byte length of this subtable. */
-  ULONG                languageZ;      /* Ignore. */
-  SortedArrayOf<CmapSubtableLongGroup, ULONG>
+  UINT16       format;         /* Subtable format; set to 12. */
+  UINT16       reservedZ;      /* Reserved; set to 0. */
+  UINT32               lengthZ;        /* Byte length of this subtable. */
+  UINT32               languageZ;      /* Ignore. */
+  SortedArrayOf<CmapSubtableLongGroup, UINT32>
                groups;         /* Groupings. */
   public:
   DEFINE_SIZE_ARRAY (16, groups);
@@ -316,13 +316,13 @@ struct UnicodeValueRange
   }
 
   UINT24       startUnicodeValue;      /* First value in this range. */
-  BYTE         additionalCount;        /* Number of additional values in this
+  UINT8                additionalCount;        /* Number of additional values 
in this
                                         * range. */
   public:
   DEFINE_SIZE_STATIC (4);
 };
 
-typedef SortedArrayOf<UnicodeValueRange, ULONG> DefaultUVS;
+typedef SortedArrayOf<UnicodeValueRange, UINT32> DefaultUVS;
 
 struct UVSMapping
 {
@@ -343,7 +343,7 @@ struct UVSMapping
   DEFINE_SIZE_STATIC (5);
 };
 
-typedef SortedArrayOf<UVSMapping, ULONG> NonDefaultUVS;
+typedef SortedArrayOf<UVSMapping, UINT32> NonDefaultUVS;
 
 struct VariationSelectorRecord
 {
@@ -405,9 +405,9 @@ struct CmapSubtableFormat14
   }
 
   protected:
-  USHORT       format;         /* Format number is set to 14. */
-  ULONG                lengthZ;        /* Byte length of this subtable. */
-  SortedArrayOf<VariationSelectorRecord, ULONG>
+  UINT16       format;         /* Format number is set to 14. */
+  UINT32               lengthZ;        /* Byte length of this subtable. */
+  SortedArrayOf<VariationSelectorRecord, UINT32>
                record;         /* Variation selector records; sorted
                                 * in increasing order of `varSelector'. */
   public:
@@ -451,7 +451,7 @@ struct CmapSubtable
 
   public:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   CmapSubtableFormat0  format0;
   CmapSubtableFormat4  format4;
   CmapSubtableFormat6  format6;
@@ -484,8 +484,8 @@ struct EncodingRecord
                  subtable.sanitize (c, base));
   }
 
-  USHORT       platformID;     /* Platform ID. */
-  USHORT       encodingID;     /* Platform-specific encoding ID. */
+  UINT16       platformID;     /* Platform ID. */
+  UINT16       encodingID;     /* Platform-specific encoding ID. */
   LOffsetTo<CmapSubtable>
                subtable;       /* Byte offset from beginning of table to the 
subtable for this encoding. */
   public:
@@ -654,7 +654,7 @@ struct cmap
   }
 
   protected:
-  USHORT               version;        /* Table version number (0). */
+  UINT16               version;        /* Table version number (0). */
   SortedArrayOf<EncodingRecord>
                        encodingRecord; /* Encoding tables. */
   public:
diff --git a/src/hb-ot-glyf-table.hh b/src/hb-ot-glyf-table.hh
index 1ac12557..88d3850b 100644
--- a/src/hb-ot-glyf-table.hh
+++ b/src/hb-ot-glyf-table.hh
@@ -54,7 +54,7 @@ struct loca
   }
 
   protected:
-  BYTE         dataX[VAR];             /* Location data. */
+  UINT8                dataX[VAR];             /* Location data. */
   DEFINE_SIZE_ARRAY (0, dataX);
 };
 
@@ -80,7 +80,7 @@ struct glyf
 
   struct GlyphHeader
   {
-    SHORT              numberOfContours;       /* If the number of contours is
+    INT16              numberOfContours;       /* If the number of contours is
                                           * greater than or equal to zero,
                                           * this is a simple glyph; if 
negative,
                                           * this is a composite glyph. */
@@ -131,13 +131,13 @@ struct glyf
       unsigned int start_offset, end_offset;
       if (short_offset)
       {
-        const USHORT *offsets = (const USHORT *) loca_table->dataX;
+        const UINT16 *offsets = (const UINT16 *) loca_table->dataX;
        start_offset = 2 * offsets[glyph];
        end_offset   = 2 * offsets[glyph + 1];
       }
       else
       {
-        const ULONG *offsets = (const ULONG *) loca_table->dataX;
+        const UINT32 *offsets = (const UINT32 *) loca_table->dataX;
        start_offset = offsets[glyph];
        end_offset   = offsets[glyph + 1];
       }
@@ -169,7 +169,7 @@ struct glyf
   };
 
   protected:
-  BYTE         dataX[VAR];             /* Glyphs data. */
+  UINT8                dataX[VAR];             /* Glyphs data. */
 
   DEFINE_SIZE_ARRAY (0, dataX);
 };
diff --git a/src/hb-ot-head-table.hh b/src/hb-ot-head-table.hh
index 9c3e51eb..dd4349ef 100644
--- a/src/hb-ot-head-table.hh
+++ b/src/hb-ot-head-table.hh
@@ -64,11 +64,11 @@ struct head
   FixedVersion<>version;               /* Version of the head table--currently
                                         * 0x00010000u for version 1.0. */
   FixedVersion<>fontRevision;          /* Set by font manufacturer. */
-  ULONG                checkSumAdjustment;     /* To compute: set it to 0, sum 
the
-                                        * entire font as ULONG, then store
+  UINT32               checkSumAdjustment;     /* To compute: set it to 0, sum 
the
+                                        * entire font as UINT32, then store
                                         * 0xB1B0AFBAu - sum. */
-  ULONG                magicNumber;            /* Set to 0x5F0F3CF5u. */
-  USHORT       flags;                  /* Bit 0: Baseline for font at y=0;
+  UINT32               magicNumber;            /* Set to 0x5F0F3CF5u. */
+  UINT16       flags;                  /* Bit 0: Baseline for font at y=0;
                                         * Bit 1: Left sidebearing point at x=0;
                                         * Bit 2: Instructions may depend on 
point size;
                                         * Bit 3: Force ppem to integer values 
for all
@@ -114,18 +114,18 @@ struct head
                                         * encoded in the cmap subtables 
represent proper
                                         * support for those code points.
                                         * Bit 15: Reserved, set to 0. */
-  USHORT       unitsPerEm;             /* Valid range is from 16 to 16384. 
This value
+  UINT16       unitsPerEm;             /* Valid range is from 16 to 16384. 
This value
                                         * should be a power of 2 for fonts 
that have
                                         * TrueType outlines. */
   LONGDATETIME created;                /* Number of seconds since 12:00 
midnight,
                                           January 1, 1904. 64-bit integer */
   LONGDATETIME modified;               /* Number of seconds since 12:00 
midnight,
                                           January 1, 1904. 64-bit integer */
-  SHORT                xMin;                   /* For all glyph bounding 
boxes. */
-  SHORT                yMin;                   /* For all glyph bounding 
boxes. */
-  SHORT                xMax;                   /* For all glyph bounding 
boxes. */
-  SHORT                yMax;                   /* For all glyph bounding 
boxes. */
-  USHORT       macStyle;               /* Bit 0: Bold (if set to 1);
+  INT16                xMin;                   /* For all glyph bounding 
boxes. */
+  INT16                yMin;                   /* For all glyph bounding 
boxes. */
+  INT16                xMax;                   /* For all glyph bounding 
boxes. */
+  INT16                yMax;                   /* For all glyph bounding 
boxes. */
+  UINT16       macStyle;               /* Bit 0: Bold (if set to 1);
                                         * Bit 1: Italic (if set to 1)
                                         * Bit 2: Underline (if set to 1)
                                         * Bit 3: Outline (if set to 1)
@@ -133,16 +133,16 @@ struct head
                                         * Bit 5: Condensed (if set to 1)
                                         * Bit 6: Extended (if set to 1)
                                         * Bits 7-15: Reserved (set to 0). */
-  USHORT       lowestRecPPEM;          /* Smallest readable size in pixels. */
-  SHORT                fontDirectionHint;      /* Deprecated (Set to 2).
+  UINT16       lowestRecPPEM;          /* Smallest readable size in pixels. */
+  INT16                fontDirectionHint;      /* Deprecated (Set to 2).
                                         * 0: Fully mixed directional glyphs;
                                         * 1: Only strongly left to right;
                                         * 2: Like 1 but also contains neutrals;
                                         * -1: Only strongly right to left;
                                         * -2: Like -1 but also contains 
neutrals. */
   public:
-  SHORT                indexToLocFormat;       /* 0 for short offsets, 1 for 
long. */
-  SHORT                glyphDataFormat;        /* 0 for current format. */
+  INT16                indexToLocFormat;       /* 0 for short offsets, 1 for 
long. */
+  INT16                glyphDataFormat;        /* 0 for current format. */
 
   DEFINE_SIZE_STATIC (54);
 };
diff --git a/src/hb-ot-hhea-table.hh b/src/hb-ot-hhea-table.hh
index a4f0acfe..dca01414 100644
--- a/src/hb-ot-hhea-table.hh
+++ b/src/hb-ot-hhea-table.hh
@@ -64,21 +64,21 @@ struct _hea
                                         * (xMax - xMin)) for horizontal. */
   FWORD                maxExtent;              /* horizontal: Max(lsb + (xMax 
- xMin)),
                                         * vertical: 
minLeadingBearing+(yMax-yMin). */
-  SHORT                caretSlopeRise;         /* Used to calculate the slope 
of the
+  INT16                caretSlopeRise;         /* Used to calculate the slope 
of the
                                         * cursor (rise/run); 1 for vertical 
caret,
                                         * 0 for horizontal.*/
-  SHORT                caretSlopeRun;          /* 0 for vertical caret, 1 for 
horizontal. */
-  SHORT                caretOffset;            /* The amount by which a slanted
+  INT16                caretSlopeRun;          /* 0 for vertical caret, 1 for 
horizontal. */
+  INT16                caretOffset;            /* The amount by which a slanted
                                         * highlight on a glyph needs
                                         * to be shifted to produce the
                                         * best appearance. Set to 0 for
                                         * non-slanted fonts. */
-  SHORT                reserved1;              /* Set to 0. */
-  SHORT                reserved2;              /* Set to 0. */
-  SHORT                reserved3;              /* Set to 0. */
-  SHORT                reserved4;              /* Set to 0. */
-  SHORT                metricDataFormat;       /* 0 for current format. */
-  USHORT       numberOfLongMetrics;    /* Number of LongMetric entries in 
metric
+  INT16                reserved1;              /* Set to 0. */
+  INT16                reserved2;              /* Set to 0. */
+  INT16                reserved3;              /* Set to 0. */
+  INT16                reserved4;              /* Set to 0. */
+  INT16                metricDataFormat;       /* 0 for current format. */
+  UINT16       numberOfLongMetrics;    /* Number of LongMetric entries in 
metric
                                         * table. */
   public:
   DEFINE_SIZE_STATIC (36);
diff --git a/src/hb-ot-kern-table.hh b/src/hb-ot-kern-table.hh
index aa293b8d..e07faca6 100644
--- a/src/hb-ot-kern-table.hh
+++ b/src/hb-ot-kern-table.hh
@@ -104,8 +104,8 @@ struct KernClassTable
   }
 
   protected:
-  USHORT               firstGlyph;     /* First glyph in class range. */
-  ArrayOf<USHORT>      classes;        /* Glyph classes. */
+  UINT16               firstGlyph;     /* First glyph in class range. */
+  ArrayOf<UINT16>      classes;        /* Glyph classes. */
   public:
   DEFINE_SIZE_ARRAY (4, classes);
 };
@@ -136,7 +136,7 @@ struct KernSubTableFormat2
   }
 
   protected:
-  USHORT       rowWidth;       /* The width, in bytes, of a row in the table. 
*/
+  UINT16       rowWidth;       /* The width, in bytes, of a row in the table. 
*/
   OffsetTo<KernClassTable>
                leftClassTable; /* Offset from beginning of this subtable to
                                 * left-hand class table. */
@@ -275,19 +275,19 @@ struct KernOT : KernTable<KernOT>
     };
 
     protected:
-    USHORT     versionZ;       /* Unused. */
-    USHORT     length;         /* Length of the subtable (including this 
header). */
-    BYTE       format;         /* Subtable format. */
-    BYTE       coverage;       /* Coverage bits. */
+    UINT16     versionZ;       /* Unused. */
+    UINT16     length;         /* Length of the subtable (including this 
header). */
+    UINT8      format;         /* Subtable format. */
+    UINT8      coverage;       /* Coverage bits. */
     KernSubTable subtable;     /* Subtable data. */
     public:
     DEFINE_SIZE_MIN (6);
   };
 
   protected:
-  USHORT       version;        /* Version--0x0000u */
-  USHORT       nTables;        /* Number of subtables in the kerning table. */
-  BYTE         data[VAR];
+  UINT16       version;        /* Version--0x0000u */
+  UINT16       nTables;        /* Number of subtables in the kerning table. */
+  UINT8                data[VAR];
   public:
   DEFINE_SIZE_ARRAY (4, data);
 };
@@ -314,10 +314,10 @@ struct KernAAT : KernTable<KernAAT>
     };
 
     protected:
-    ULONG      length;         /* Length of the subtable (including this 
header). */
-    BYTE       coverage;       /* Coverage bits. */
-    BYTE       format;         /* Subtable format. */
-    USHORT     tupleIndex;     /* The tuple index (used for variations fonts).
+    UINT32     length;         /* Length of the subtable (including this 
header). */
+    UINT8      coverage;       /* Coverage bits. */
+    UINT8      format;         /* Subtable format. */
+    UINT16     tupleIndex;     /* The tuple index (used for variations fonts).
                                 * This value specifies which tuple this 
subtable covers. */
     KernSubTable subtable;     /* Subtable data. */
     public:
@@ -325,9 +325,9 @@ struct KernAAT : KernTable<KernAAT>
   };
 
   protected:
-  ULONG                version;        /* Version--0x00010000u */
-  ULONG                nTables;        /* Number of subtables in the kerning 
table. */
-  BYTE         data[VAR];
+  UINT32               version;        /* Version--0x00010000u */
+  UINT32               nTables;        /* Number of subtables in the kerning 
table. */
+  UINT8                data[VAR];
   public:
   DEFINE_SIZE_ARRAY (8, data);
 };
@@ -380,7 +380,7 @@ struct kern
 
   protected:
   union {
-  USHORT               major;
+  UINT16               major;
   KernOT               ot;
   KernAAT              aat;
   } u;
diff --git a/src/hb-ot-layout-common-private.hh 
b/src/hb-ot-layout-common-private.hh
index 8d881add..dfbcf1ef 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -161,7 +161,7 @@ struct RangeRecord
 
   GlyphID      start;          /* First GlyphID in the range */
   GlyphID      end;            /* Last GlyphID in the range */
-  USHORT       value;          /* Value */
+  UINT16       value;          /* Value */
   public:
   DEFINE_SIZE_STATIC (6);
 };
@@ -175,7 +175,7 @@ struct IndexArray : ArrayOf<Index>
                                   unsigned int *_indexes /* OUT */) const
   {
     if (_count) {
-      const USHORT *arr = this->sub_array (start_offset, _count);
+      const UINT16 *arr = this->sub_array (start_offset, _count);
       unsigned int count = *_count;
       for (unsigned int i = 0; i < count; i++)
        _indexes[i] = arr[i];
@@ -218,7 +218,7 @@ struct LangSys
 
   Offset<>     lookupOrderZ;   /* = Null (reserved for an offset to a
                                 * reordering table) */
-  USHORT       reqFeatureIndex;/* Index of a feature required for this
+  UINT16       reqFeatureIndex;/* Index of a feature required for this
                                 * language system--if no required features
                                 * = 0xFFFFu */
   IndexArray   featureIndex;   /* Array of indices into the FeatureList */
@@ -343,12 +343,12 @@ struct FeatureParamsSize
       return_trace (true);
   }
 
-  USHORT       designSize;     /* Represents the design size in 720/inch
+  UINT16       designSize;     /* Represents the design size in 720/inch
                                 * units (decipoints).  The design size entry
                                 * must be non-zero.  When there is a design
                                 * size but no recommended size range, the
                                 * rest of the array will consist of zeros. */
-  USHORT       subfamilyID;    /* Has no independent meaning, but serves
+  UINT16       subfamilyID;    /* Has no independent meaning, but serves
                                 * as an identifier that associates fonts
                                 * in a subfamily. All fonts which share a
                                 * Preferred or Font Family name and which
@@ -358,7 +358,7 @@ struct FeatureParamsSize
                                 * same subfamily value. If this value is
                                 * zero, the remaining fields in the array
                                 * will be ignored. */
-  USHORT       subfamilyNameID;/* If the preceding value is non-zero, this
+  UINT16       subfamilyNameID;/* If the preceding value is non-zero, this
                                 * value must be set in the range 256 - 32767
                                 * (inclusive). It records the value of a
                                 * field in the name table, which must
@@ -372,10 +372,10 @@ struct FeatureParamsSize
                                 * subfamily in a menu.  Applications will
                                 * choose the appropriate version based on
                                 * their selection criteria. */
-  USHORT       rangeStart;     /* Large end of the recommended usage range
+  UINT16       rangeStart;     /* Large end of the recommended usage range
                                 * (inclusive), stored in 720/inch units
                                 * (decipoints). */
-  USHORT       rangeEnd;       /* Small end of the recommended usage range
+  UINT16       rangeEnd;       /* Small end of the recommended usage range
                                   (exclusive), stored in 720/inch units
                                 * (decipoints). */
   public:
@@ -393,12 +393,12 @@ struct FeatureParamsStylisticSet
     return_trace (c->check_struct (this));
   }
 
-  USHORT       version;        /* (set to 0): This corresponds to a “minor”
+  UINT16       version;        /* (set to 0): This corresponds to a “minor”
                                 * version number. Additional data may be
                                 * added to the end of this Feature Parameters
                                 * table in the future. */
 
-  USHORT       uiNameID;       /* The 'name' table name ID that specifies a
+  UINT16       uiNameID;       /* The 'name' table name ID that specifies a
                                 * string (or strings, for multiple languages)
                                 * for a user-interface label for this
                                 * feature.  The values of uiLabelNameId and
@@ -426,25 +426,25 @@ struct FeatureParamsCharacterVariants
                  characters.sanitize (c));
   }
 
-  USHORT       format;                 /* Format number is set to 0. */
-  USHORT       featUILableNameID;      /* The ‘name’ table name ID that
+  UINT16       format;                 /* Format number is set to 0. */
+  UINT16       featUILableNameID;      /* The ‘name’ table name ID that
                                         * specifies a string (or strings,
                                         * for multiple languages) for a
                                         * user-interface label for this
                                         * feature. (May be nullptr.) */
-  USHORT       featUITooltipTextNameID;/* The ‘name’ table name ID that
+  UINT16       featUITooltipTextNameID;/* The ‘name’ table name ID that
                                         * specifies a string (or strings,
                                         * for multiple languages) that an
                                         * application can use for tooltip
                                         * text for this feature. (May be
                                         * nullptr.) */
-  USHORT       sampleTextNameID;       /* The ‘name’ table name ID that
+  UINT16       sampleTextNameID;       /* The ‘name’ table name ID that
                                         * specifies sample text that
                                         * illustrates the effect of this
                                         * feature. (May be nullptr.) */
-  USHORT       numNamedParameters;     /* Number of named parameters. (May
+  UINT16       numNamedParameters;     /* Number of named parameters. (May
                                         * be zero.) */
-  USHORT       firstParamUILabelNameID;/* The first ‘name’ table name ID
+  UINT16       firstParamUILabelNameID;/* The first ‘name’ table name ID
                                         * used to specify strings for
                                         * user-interface labels for the
                                         * feature parameters. (Must be zero
@@ -562,7 +562,7 @@ struct Feature
 typedef RecordListOf<Feature> FeatureList;
 
 
-struct LookupFlag : USHORT
+struct LookupFlag : UINT16
 {
   enum Flags {
     RightToLeft                = 0x0001u,
@@ -608,7 +608,7 @@ struct Lookup
     unsigned int flag = lookupFlag;
     if (unlikely (flag & LookupFlag::UseMarkFilteringSet))
     {
-      const USHORT &markFilteringSet = StructAfter<USHORT> (subTable);
+      const UINT16 &markFilteringSet = StructAfter<UINT16> (subTable);
       flag += (markFilteringSet << 16);
     }
     return flag;
@@ -640,7 +640,7 @@ struct Lookup
     if (unlikely (!subTable.serialize (c, num_subtables))) return_trace 
(false);
     if (lookupFlag & LookupFlag::UseMarkFilteringSet)
     {
-      USHORT &markFilteringSet = StructAfter<USHORT> (subTable);
+      UINT16 &markFilteringSet = StructAfter<UINT16> (subTable);
       markFilteringSet.set (lookup_props >> 16);
     }
     return_trace (true);
@@ -653,18 +653,18 @@ struct Lookup
     if (!(c->check_struct (this) && subTable.sanitize (c))) return_trace 
(false);
     if (lookupFlag & LookupFlag::UseMarkFilteringSet)
     {
-      const USHORT &markFilteringSet = StructAfter<USHORT> (subTable);
+      const UINT16 &markFilteringSet = StructAfter<UINT16> (subTable);
       if (!markFilteringSet.sanitize (c)) return_trace (false);
     }
     return_trace (true);
   }
 
   private:
-  USHORT       lookupType;             /* Different enumerations for GSUB and 
GPOS */
-  USHORT       lookupFlag;             /* Lookup qualifiers */
+  UINT16       lookupType;             /* Different enumerations for GSUB and 
GPOS */
+  UINT16       lookupFlag;             /* Lookup qualifiers */
   ArrayOf<Offset<> >
                subTable;               /* Array of SubTables */
-  USHORT       markFilteringSetX[VAR]; /* Index (base 0) into GDEF mark glyph 
sets
+  UINT16       markFilteringSetX[VAR]; /* Index (base 0) into GDEF mark glyph 
sets
                                         * structure. This field is only 
present if bit
                                         * UseMarkFilteringSet of lookup flags 
is set. */
   public:
@@ -737,7 +737,7 @@ struct CoverageFormat1
   private:
 
   protected:
-  USHORT       coverageFormat; /* Format identifier--format = 1 */
+  UINT16       coverageFormat; /* Format identifier--format = 1 */
   SortedArrayOf<GlyphID>
                glyphArray;     /* Array of GlyphIDs--in numerical order */
   public:
@@ -860,7 +860,7 @@ struct CoverageFormat2
   private:
 
   protected:
-  USHORT       coverageFormat; /* Format identifier--format = 2 */
+  UINT16       coverageFormat; /* Format identifier--format = 2 */
   SortedArrayOf<RangeRecord>
                rangeRecord;    /* Array of glyph ranges--ordered by
                                 * Start GlyphID. rangeCount entries
@@ -985,7 +985,7 @@ struct Coverage
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   CoverageFormat1      format1;
   CoverageFormat2      format2;
   } u;
@@ -1047,9 +1047,9 @@ struct ClassDefFormat1
   }
 
   protected:
-  USHORT       classFormat;            /* Format identifier--format = 1 */
+  UINT16       classFormat;            /* Format identifier--format = 1 */
   GlyphID      startGlyph;             /* First GlyphID of the classValueArray 
*/
-  ArrayOf<USHORT>
+  ArrayOf<UINT16>
                classValue;             /* Array of Class Values--one per 
GlyphID */
   public:
   DEFINE_SIZE_ARRAY (6, classValue);
@@ -1107,7 +1107,7 @@ struct ClassDefFormat2
   }
 
   protected:
-  USHORT       classFormat;    /* Format identifier--format = 2 */
+  UINT16       classFormat;    /* Format identifier--format = 2 */
   SortedArrayOf<RangeRecord>
                rangeRecord;    /* Array of glyph ranges--ordered by
                                 * Start GlyphID */
@@ -1155,7 +1155,7 @@ struct ClassDef
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   ClassDefFormat1      format1;
   ClassDefFormat2      format2;
   } u;
@@ -1240,8 +1240,8 @@ struct VarRegionList
   }
 
   protected:
-  USHORT       axisCount;
-  USHORT       regionCount;
+  UINT16       axisCount;
+  UINT16       regionCount;
   VarRegionAxis        axesZ[VAR];
   public:
   DEFINE_SIZE_ARRAY (4, axesZ);
@@ -1265,13 +1265,13 @@ struct VarData
    unsigned int count = regionIndices.len;
    unsigned int scount = shortCount;
 
-   const BYTE *bytes = &StructAfter<BYTE> (regionIndices);
-   const BYTE *row = bytes + inner * (scount + count);
+   const UINT8 *bytes = &StructAfter<UINT8> (regionIndices);
+   const UINT8 *row = bytes + inner * (scount + count);
 
    float delta = 0.;
    unsigned int i = 0;
 
-   const SHORT *scursor = reinterpret_cast<const SHORT *> (row);
+   const INT16 *scursor = reinterpret_cast<const INT16 *> (row);
    for (; i < scount; i++)
    {
      float scalar = regions.evaluate (regionIndices.array[i], coords, 
coord_count);
@@ -1293,15 +1293,15 @@ struct VarData
     return_trace (c->check_struct (this) &&
                  regionIndices.sanitize(c) &&
                  shortCount <= regionIndices.len &&
-                 c->check_array (&StructAfter<BYTE> (regionIndices),
+                 c->check_array (&StructAfter<UINT8> (regionIndices),
                                  get_row_size (), itemCount));
   }
 
   protected:
-  USHORT               itemCount;
-  USHORT               shortCount;
-  ArrayOf<USHORT>      regionIndices;
-  BYTE                 bytesX[VAR];
+  UINT16               itemCount;
+  UINT16               shortCount;
+  ArrayOf<UINT16>      regionIndices;
+  UINT8                        bytesX[VAR];
   public:
   DEFINE_SIZE_ARRAY2 (6, regionIndices, bytesX);
 };
@@ -1337,9 +1337,9 @@ struct VariationStore
   }
 
   protected:
-  USHORT                               format;
+  UINT16                               format;
   LOffsetTo<VarRegionList>             regions;
-  OffsetArrayOf<VarData, ULONG>                dataSets;
+  OffsetArrayOf<VarData, UINT32>               dataSets;
   public:
   DEFINE_SIZE_ARRAY (8, dataSets);
 };
@@ -1366,8 +1366,8 @@ struct ConditionFormat1
   }
 
   protected:
-  USHORT       format;         /* Format identifier--format = 1 */
-  USHORT       axisIndex;
+  UINT16       format;         /* Format identifier--format = 1 */
+  UINT16       axisIndex;
   F2DOT14      filterRangeMinValue;
   F2DOT14      filterRangeMaxValue;
   public:
@@ -1396,7 +1396,7 @@ struct Condition
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   ConditionFormat1     format1;
   } u;
   public:
@@ -1421,7 +1421,7 @@ struct ConditionSet
   }
 
   protected:
-  OffsetArrayOf<Condition, ULONG> conditions;
+  OffsetArrayOf<Condition, UINT32> conditions;
   public:
   DEFINE_SIZE_ARRAY (2, conditions);
 };
@@ -1437,7 +1437,7 @@ struct FeatureTableSubstitutionRecord
   }
 
   protected:
-  USHORT               featureIndex;
+  UINT16               featureIndex;
   LOffsetTo<Feature>   feature;
   public:
   DEFINE_SIZE_STATIC (6);
@@ -1557,8 +1557,8 @@ struct HintingDevice
   inline unsigned int get_size (void) const
   {
     unsigned int f = deltaFormat;
-    if (unlikely (f < 1 || f > 3 || startSize > endSize)) return 3 * 
USHORT::static_size;
-    return USHORT::static_size * (4 + ((endSize - startSize) >> (4 - f)));
+    if (unlikely (f < 1 || f > 3 || startSize > endSize)) return 3 * 
UINT16::static_size;
+    return UINT16::static_size * (4 + ((endSize - startSize) >> (4 - f)));
   }
 
   inline bool sanitize (hb_sanitize_context_t *c) const
@@ -1603,14 +1603,14 @@ struct HintingDevice
   }
 
   protected:
-  USHORT       startSize;              /* Smallest size to correct--in ppem */
-  USHORT       endSize;                /* Largest size to correct--in ppem */
-  USHORT       deltaFormat;            /* Format of DeltaValue array data: 1, 
2, or 3
+  UINT16       startSize;              /* Smallest size to correct--in ppem */
+  UINT16       endSize;                /* Largest size to correct--in ppem */
+  UINT16       deltaFormat;            /* Format of DeltaValue array data: 1, 
2, or 3
                                         * 1    Signed 2-bit value, 8 values 
per uint16
                                         * 2    Signed 4-bit value, 4 values 
per uint16
                                         * 3    Signed 8-bit value, 2 values 
per uint16
                                         */
-  USHORT       deltaValue[VAR];        /* Array of compressed data */
+  UINT16       deltaValue[VAR];        /* Array of compressed data */
   public:
   DEFINE_SIZE_ARRAY (6, deltaValue);
 };
@@ -1641,9 +1641,9 @@ struct VariationDevice
   }
 
   protected:
-  USHORT       outerIndex;
-  USHORT       innerIndex;
-  USHORT       deltaFormat;    /* Format identifier for this table: 0x0x8000 */
+  UINT16       outerIndex;
+  UINT16       innerIndex;
+  UINT16       deltaFormat;    /* Format identifier for this table: 0x0x8000 */
   public:
   DEFINE_SIZE_STATIC (6);
 };
@@ -1651,10 +1651,10 @@ struct VariationDevice
 struct DeviceHeader
 {
   protected:
-  USHORT               reserved1;
-  USHORT               reserved2;
+  UINT16               reserved1;
+  UINT16               reserved2;
   public:
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   public:
   DEFINE_SIZE_STATIC (6);
 };
diff --git a/src/hb-ot-layout-gdef-table.hh b/src/hb-ot-layout-gdef-table.hh
index 99dda3a7..eed46dd6 100644
--- a/src/hb-ot-layout-gdef-table.hh
+++ b/src/hb-ot-layout-gdef-table.hh
@@ -41,7 +41,7 @@ namespace OT {
  * Attachment List Table
  */
 
-typedef ArrayOf<USHORT> AttachPoint;   /* Array of contour point indices--in
+typedef ArrayOf<UINT16> AttachPoint;   /* Array of contour point indices--in
                                         * increasing numerical order */
 
 struct AttachList
@@ -62,7 +62,7 @@ struct AttachList
     const AttachPoint &points = this+attachPoint[index];
 
     if (point_count) {
-      const USHORT *array = points.sub_array (start_offset, point_count);
+      const UINT16 *array = points.sub_array (start_offset, point_count);
       unsigned int count = *point_count;
       for (unsigned int i = 0; i < count; i++)
        point_array[i] = array[i];
@@ -109,8 +109,8 @@ struct CaretValueFormat1
   }
 
   protected:
-  USHORT       caretValueFormat;       /* Format identifier--format = 1 */
-  SHORT                coordinate;             /* X or Y value, in design 
units */
+  UINT16       caretValueFormat;       /* Format identifier--format = 1 */
+  INT16                coordinate;             /* X or Y value, in design 
units */
   public:
   DEFINE_SIZE_STATIC (4);
 };
@@ -136,8 +136,8 @@ struct CaretValueFormat2
   }
 
   protected:
-  USHORT       caretValueFormat;       /* Format identifier--format = 2 */
-  USHORT       caretValuePoint;        /* Contour point index on glyph */
+  UINT16       caretValueFormat;       /* Format identifier--format = 2 */
+  UINT16       caretValuePoint;        /* Contour point index on glyph */
   public:
   DEFINE_SIZE_STATIC (4);
 };
@@ -160,8 +160,8 @@ struct CaretValueFormat3
   }
 
   protected:
-  USHORT       caretValueFormat;       /* Format identifier--format = 3 */
-  SHORT                coordinate;             /* X or Y value, in design 
units */
+  UINT16       caretValueFormat;       /* Format identifier--format = 3 */
+  INT16                coordinate;             /* X or Y value, in design 
units */
   OffsetTo<Device>
                deviceTable;            /* Offset to Device table for X or Y
                                         * value--from beginning of CaretValue
@@ -199,7 +199,7 @@ struct CaretValue
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   CaretValueFormat1    format1;
   CaretValueFormat2    format2;
   CaretValueFormat3    format3;
@@ -294,7 +294,7 @@ struct MarkGlyphSetsFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   ArrayOf<LOffsetTo<Coverage> >
                coverage;               /* Array of long offsets to mark set
                                         * coverage tables */
@@ -324,7 +324,7 @@ struct MarkGlyphSets
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   MarkGlyphSetsFormat1 format1;
   } u;
   public:
diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh
index e45ce272..3dcf2ec9 100644
--- a/src/hb-ot-layout-gpos-table.hh
+++ b/src/hb-ot-layout-gpos-table.hh
@@ -51,11 +51,11 @@ enum attach_type_t {
 
 /* Shared Tables: ValueRecord, Anchor Table, and MarkArray */
 
-typedef USHORT Value;
+typedef UINT16 Value;
 
 typedef Value ValueRecord[VAR];
 
-struct ValueFormat : USHORT
+struct ValueFormat : UINT16
 {
   enum Flags {
     xPlacement = 0x0001u,      /* Includes horizontal adjustment for placement 
*/
@@ -74,14 +74,14 @@ struct ValueFormat : USHORT
 
 /* All fields are options.  Only those available advance the value pointer. */
 #if 0
-  SHORT                xPlacement;             /* Horizontal adjustment for
+  INT16                xPlacement;             /* Horizontal adjustment for
                                         * placement--in design units */
-  SHORT                yPlacement;             /* Vertical adjustment for
+  INT16                yPlacement;             /* Vertical adjustment for
                                         * placement--in design units */
-  SHORT                xAdvance;               /* Horizontal adjustment for
+  INT16                xAdvance;               /* Horizontal adjustment for
                                         * advance--in design units (only used
                                         * for horizontal writing) */
-  SHORT                yAdvance;               /* Vertical adjustment for 
advance--in
+  INT16                yAdvance;               /* Vertical adjustment for 
advance--in
                                         * design units (only used for vertical
                                         * writing) */
   Offset       xPlaDevice;             /* Offset to Device table for
@@ -178,8 +178,8 @@ struct ValueFormat : USHORT
   static inline const OffsetTo<Device>& get_device (const Value* value)
   { return *CastP<OffsetTo<Device> > (value); }
 
-  static inline const SHORT& get_short (const Value* value)
-  { return *CastP<SHORT> (value); }
+  static inline const INT16& get_short (const Value* value)
+  { return *CastP<INT16> (value); }
 
   public:
 
@@ -247,9 +247,9 @@ struct AnchorFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
-  SHORT                xCoordinate;            /* Horizontal value--in design 
units */
-  SHORT                yCoordinate;            /* Vertical value--in design 
units */
+  UINT16       format;                 /* Format identifier--format = 1 */
+  INT16                xCoordinate;            /* Horizontal value--in design 
units */
+  INT16                yCoordinate;            /* Vertical value--in design 
units */
   public:
   DEFINE_SIZE_STATIC (6);
 };
@@ -278,10 +278,10 @@ struct AnchorFormat2
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 2 */
-  SHORT                xCoordinate;            /* Horizontal value--in design 
units */
-  SHORT                yCoordinate;            /* Vertical value--in design 
units */
-  USHORT       anchorPoint;            /* Index to glyph contour point */
+  UINT16       format;                 /* Format identifier--format = 2 */
+  INT16                xCoordinate;            /* Horizontal value--in design 
units */
+  INT16                yCoordinate;            /* Vertical value--in design 
units */
+  UINT16       anchorPoint;            /* Index to glyph contour point */
   public:
   DEFINE_SIZE_STATIC (8);
 };
@@ -308,9 +308,9 @@ struct AnchorFormat3
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 3 */
-  SHORT                xCoordinate;            /* Horizontal value--in design 
units */
-  SHORT                yCoordinate;            /* Vertical value--in design 
units */
+  UINT16       format;                 /* Format identifier--format = 3 */
+  INT16                xCoordinate;            /* Horizontal value--in design 
units */
+  INT16                yCoordinate;            /* Vertical value--in design 
units */
   OffsetTo<Device>
                xDeviceTable;           /* Offset to Device table for X
                                         * coordinate-- from beginning of
@@ -351,7 +351,7 @@ struct Anchor
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   AnchorFormat1                format1;
   AnchorFormat2                format2;
   AnchorFormat3                format3;
@@ -382,7 +382,7 @@ struct AnchorMatrix
     return_trace (true);
   }
 
-  USHORT       rows;                   /* Number of rows */
+  UINT16       rows;                   /* Number of rows */
   protected:
   OffsetTo<Anchor>
                matrixZ[VAR];           /* Matrix of offsets to Anchor tables--
@@ -403,7 +403,7 @@ struct MarkRecord
   }
 
   protected:
-  USHORT       klass;                  /* Class defined for this mark */
+  UINT16       klass;                  /* Class defined for this mark */
   OffsetTo<Anchor>
                markAnchor;             /* Offset to Anchor table--from
                                         * beginning of MarkArray table */
@@ -492,7 +492,7 @@ struct SinglePosFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of subtable */
@@ -544,13 +544,13 @@ struct SinglePosFormat2
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 2 */
+  UINT16       format;                 /* Format identifier--format = 2 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of subtable */
   ValueFormat  valueFormat;            /* Defines the types of data in the
                                         * ValueRecord */
-  USHORT       valueCount;             /* Number of ValueRecords */
+  UINT16       valueCount;             /* Number of ValueRecords */
   ValueRecord  values;                 /* Array of ValueRecords--positioning
                                         * values applied to glyphs */
   public:
@@ -573,7 +573,7 @@ struct SinglePos
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   SinglePosFormat1     format1;
   SinglePosFormat2     format2;
   } u;
@@ -604,7 +604,7 @@ struct PairSet
     TRACE_COLLECT_GLYPHS (this);
     unsigned int len1 = valueFormats[0].get_len ();
     unsigned int len2 = valueFormats[1].get_len ();
-    unsigned int record_size = USHORT::static_size * (1 + len1 + len2);
+    unsigned int record_size = UINT16::static_size * (1 + len1 + len2);
 
     const PairValueRecord *record = CastP<PairValueRecord> (arrayZ);
     unsigned int count = len;
@@ -623,7 +623,7 @@ struct PairSet
     hb_buffer_t *buffer = c->buffer;
     unsigned int len1 = valueFormats[0].get_len ();
     unsigned int len2 = valueFormats[1].get_len ();
-    unsigned int record_size = USHORT::static_size * (1 + len1 + len2);
+    unsigned int record_size = UINT16::static_size * (1 + len1 + len2);
 
     const PairValueRecord *record_array = CastP<PairValueRecord> (arrayZ);
     unsigned int count = len;
@@ -668,7 +668,7 @@ struct PairSet
   {
     TRACE_SANITIZE (this);
     if (!(c->check_struct (this)
-       && c->check_array (arrayZ, USHORT::static_size * closure->stride, 
len))) return_trace (false);
+       && c->check_array (arrayZ, UINT16::static_size * closure->stride, 
len))) return_trace (false);
 
     unsigned int count = len;
     const PairValueRecord *record = CastP<PairValueRecord> (arrayZ);
@@ -677,8 +677,8 @@ struct PairSet
   }
 
   protected:
-  USHORT       len;                    /* Number of PairValueRecords */
-  USHORT       arrayZ[VAR];            /* Array of PairValueRecords--ordered
+  UINT16       len;                    /* Number of PairValueRecords */
+  UINT16       arrayZ[VAR];            /* Array of PairValueRecords--ordered
                                         * by GlyphID of the second glyph */
   public:
   DEFINE_SIZE_ARRAY (2, arrayZ);
@@ -733,7 +733,7 @@ struct PairPosFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of subtable */
@@ -823,7 +823,7 @@ struct PairPosFormat2
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 2 */
+  UINT16       format;                 /* Format identifier--format = 2 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of subtable */
@@ -841,9 +841,9 @@ struct PairPosFormat2
                classDef2;              /* Offset to ClassDef table--from
                                         * beginning of PairPos subtable--for
                                         * the second glyph of the pair */
-  USHORT       class1Count;            /* Number of classes in ClassDef1
+  UINT16       class1Count;            /* Number of classes in ClassDef1
                                         * table--includes Class0 */
-  USHORT       class2Count;            /* Number of classes in ClassDef2
+  UINT16       class2Count;            /* Number of classes in ClassDef2
                                         * table--includes Class0 */
   ValueRecord  values;                 /* Matrix of value pairs:
                                         * class1-major, class2-minor,
@@ -868,7 +868,7 @@ struct PairPos
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   PairPosFormat1       format1;
   PairPosFormat2       format2;
   } u;
@@ -1022,7 +1022,7 @@ struct CursivePosFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of subtable */
@@ -1048,7 +1048,7 @@ struct CursivePos
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   CursivePosFormat1    format1;
   } u;
 };
@@ -1113,14 +1113,14 @@ struct MarkBasePosFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                markCoverage;           /* Offset to MarkCoverage table--from
                                         * beginning of MarkBasePos subtable */
   OffsetTo<Coverage>
                baseCoverage;           /* Offset to BaseCoverage table--from
                                         * beginning of MarkBasePos subtable */
-  USHORT       classCount;             /* Number of classes defined for marks 
*/
+  UINT16       classCount;             /* Number of classes defined for marks 
*/
   OffsetTo<MarkArray>
                markArray;              /* Offset to MarkArray table--from
                                         * beginning of MarkBasePos subtable */
@@ -1146,7 +1146,7 @@ struct MarkBasePos
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   MarkBasePosFormat1   format1;
   } u;
 };
@@ -1230,7 +1230,7 @@ struct MarkLigPosFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                markCoverage;           /* Offset to Mark Coverage table--from
                                         * beginning of MarkLigPos subtable */
@@ -1238,7 +1238,7 @@ struct MarkLigPosFormat1
                ligatureCoverage;       /* Offset to Ligature Coverage
                                         * table--from beginning of MarkLigPos
                                         * subtable */
-  USHORT       classCount;             /* Number of defined mark classes */
+  UINT16       classCount;             /* Number of defined mark classes */
   OffsetTo<MarkArray>
                markArray;              /* Offset to MarkArray table--from
                                         * beginning of MarkLigPos subtable */
@@ -1264,7 +1264,7 @@ struct MarkLigPos
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   MarkLigPosFormat1    format1;
   } u;
 };
@@ -1344,7 +1344,7 @@ struct MarkMarkPosFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                mark1Coverage;          /* Offset to Combining Mark1 Coverage
                                         * table--from beginning of MarkMarkPos
@@ -1353,7 +1353,7 @@ struct MarkMarkPosFormat1
                mark2Coverage;          /* Offset to Combining Mark2 Coverage
                                         * table--from beginning of MarkMarkPos
                                         * subtable */
-  USHORT       classCount;             /* Number of defined mark classes */
+  UINT16       classCount;             /* Number of defined mark classes */
   OffsetTo<MarkArray>
                mark1Array;             /* Offset to Mark1Array table--from
                                         * beginning of MarkMarkPos subtable */
@@ -1379,7 +1379,7 @@ struct MarkMarkPos
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   MarkMarkPosFormat1   format1;
   } u;
 };
@@ -1438,7 +1438,7 @@ struct PosLookupSubTable
 
   protected:
   union {
-  USHORT               sub_format;
+  UINT16               sub_format;
   SinglePos            single;
   PairPos              pair;
   CursivePos           cursive;
diff --git a/src/hb-ot-layout-gsub-table.hh b/src/hb-ot-layout-gsub-table.hh
index 4ae45b9e..98f3784c 100644
--- a/src/hb-ot-layout-gsub-table.hh
+++ b/src/hb-ot-layout-gsub-table.hh
@@ -110,11 +110,11 @@ struct SingleSubstFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of Substitution table */
-  SHORT                deltaGlyphID;           /* Add to original GlyphID to 
get
+  INT16                deltaGlyphID;           /* Add to original GlyphID to 
get
                                         * substitute GlyphID */
   public:
   DEFINE_SIZE_STATIC (6);
@@ -195,7 +195,7 @@ struct SingleSubstFormat2
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 2 */
+  UINT16       format;                 /* Format identifier--format = 2 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of Substitution table */
@@ -249,7 +249,7 @@ struct SingleSubst
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   SingleSubstFormat1   format1;
   SingleSubstFormat2   format2;
   } u;
@@ -400,7 +400,7 @@ struct MultipleSubstFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of Substitution table */
@@ -442,7 +442,7 @@ struct MultipleSubst
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   MultipleSubstFormat1 format1;
   } u;
 };
@@ -552,7 +552,7 @@ struct AlternateSubstFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of Substitution table */
@@ -594,7 +594,7 @@ struct AlternateSubst
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   AlternateSubstFormat1        format1;
   } u;
 };
@@ -868,7 +868,7 @@ struct LigatureSubstFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of Substitution table */
@@ -918,7 +918,7 @@ struct LigatureSubst
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   LigatureSubstFormat1 format1;
   } u;
 };
@@ -1016,11 +1016,11 @@ struct ReverseChainSingleSubstFormat1
 
   unsigned int start_index = 0, end_index = 0;
     if (match_backtrack (c,
-                        backtrack.len, (USHORT *) backtrack.array,
+                        backtrack.len, (UINT16 *) backtrack.array,
                         match_coverage, this,
                         &start_index) &&
         match_lookahead (c,
-                        lookahead.len, (USHORT *) lookahead.array,
+                        lookahead.len, (UINT16 *) lookahead.array,
                         match_coverage, this,
                         1, &end_index))
     {
@@ -1048,7 +1048,7 @@ struct ReverseChainSingleSubstFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of table */
@@ -1082,7 +1082,7 @@ struct ReverseChainSingleSubst
 
   protected:
   union {
-  USHORT                               format;         /* Format identifier */
+  UINT16                               format;         /* Format identifier */
   ReverseChainSingleSubstFormat1       format1;
   } u;
 };
@@ -1128,7 +1128,7 @@ struct SubstLookupSubTable
 
   protected:
   union {
-  USHORT                       sub_format;
+  UINT16                       sub_format;
   SingleSubst                  single;
   MultipleSubst                        multiple;
   AlternateSubst               alternate;
diff --git a/src/hb-ot-layout-gsubgpos-private.hh 
b/src/hb-ot-layout-gsubgpos-private.hh
index bf0cd01b..e27e4731 100644
--- a/src/hb-ot-layout-gsubgpos-private.hh
+++ b/src/hb-ot-layout-gsubgpos-private.hh
@@ -234,7 +234,7 @@ struct hb_apply_context_t :
             match_func (nullptr),
             match_data (nullptr) {};
 
-    typedef bool (*match_func_t) (hb_codepoint_t glyph_id, const USHORT 
&value, const void *data);
+    typedef bool (*match_func_t) (hb_codepoint_t glyph_id, const UINT16 
&value, const void *data);
 
     inline void set_ignore_zwnj (bool ignore_zwnj_) { ignore_zwnj = 
ignore_zwnj_; }
     inline void set_ignore_zwj (bool ignore_zwj_) { ignore_zwj = ignore_zwj_; }
@@ -252,7 +252,7 @@ struct hb_apply_context_t :
     };
 
     inline may_match_t may_match (const hb_glyph_info_t &info,
-                                 const USHORT          *glyph_data) const
+                                 const UINT16          *glyph_data) const
     {
       if (!(info.mask & mask) ||
          (syllable && syllable != info.syllable ()))
@@ -315,7 +315,7 @@ struct hb_apply_context_t :
     }
     inline void set_match_func (matcher_t::match_func_t match_func_,
                                const void *match_data_,
-                               const USHORT glyph_data[])
+                               const UINT16 glyph_data[])
     {
       matcher.set_match_func (match_func_, match_data_);
       match_glyph_data = glyph_data;
@@ -398,7 +398,7 @@ struct hb_apply_context_t :
     protected:
     hb_apply_context_t *c;
     matcher_t matcher;
-    const USHORT *match_glyph_data;
+    const UINT16 *match_glyph_data;
 
     unsigned int num_items;
     unsigned int end;
@@ -568,9 +568,9 @@ struct hb_apply_context_t :
 
 
 
-typedef bool (*intersects_func_t) (hb_set_t *glyphs, const USHORT &value, 
const void *data);
-typedef void (*collect_glyphs_func_t) (hb_set_t *glyphs, const USHORT &value, 
const void *data);
-typedef bool (*match_func_t) (hb_codepoint_t glyph_id, const USHORT &value, 
const void *data);
+typedef bool (*intersects_func_t) (hb_set_t *glyphs, const UINT16 &value, 
const void *data);
+typedef void (*collect_glyphs_func_t) (hb_set_t *glyphs, const UINT16 &value, 
const void *data);
+typedef bool (*match_func_t) (hb_codepoint_t glyph_id, const UINT16 &value, 
const void *data);
 
 struct ContextClosureFuncs
 {
@@ -586,16 +586,16 @@ struct ContextApplyFuncs
 };
 
 
-static inline bool intersects_glyph (hb_set_t *glyphs, const USHORT &value, 
const void *data HB_UNUSED)
+static inline bool intersects_glyph (hb_set_t *glyphs, const UINT16 &value, 
const void *data HB_UNUSED)
 {
   return glyphs->has (value);
 }
-static inline bool intersects_class (hb_set_t *glyphs, const USHORT &value, 
const void *data)
+static inline bool intersects_class (hb_set_t *glyphs, const UINT16 &value, 
const void *data)
 {
   const ClassDef &class_def = *reinterpret_cast<const ClassDef *>(data);
   return class_def.intersects_class (glyphs, value);
 }
-static inline bool intersects_coverage (hb_set_t *glyphs, const USHORT &value, 
const void *data)
+static inline bool intersects_coverage (hb_set_t *glyphs, const UINT16 &value, 
const void *data)
 {
   const OffsetTo<Coverage> &coverage = (const OffsetTo<Coverage>&)value;
   return (data+coverage).intersects (glyphs);
@@ -603,7 +603,7 @@ static inline bool intersects_coverage (hb_set_t *glyphs, 
const USHORT &value, c
 
 static inline bool intersects_array (hb_closure_context_t *c,
                                     unsigned int count,
-                                    const USHORT values[],
+                                    const UINT16 values[],
                                     intersects_func_t intersects_func,
                                     const void *intersects_data)
 {
@@ -614,16 +614,16 @@ static inline bool intersects_array (hb_closure_context_t 
*c,
 }
 
 
-static inline void collect_glyph (hb_set_t *glyphs, const USHORT &value, const 
void *data HB_UNUSED)
+static inline void collect_glyph (hb_set_t *glyphs, const UINT16 &value, const 
void *data HB_UNUSED)
 {
   glyphs->add (value);
 }
-static inline void collect_class (hb_set_t *glyphs, const USHORT &value, const 
void *data)
+static inline void collect_class (hb_set_t *glyphs, const UINT16 &value, const 
void *data)
 {
   const ClassDef &class_def = *reinterpret_cast<const ClassDef *>(data);
   class_def.add_class (glyphs, value);
 }
-static inline void collect_coverage (hb_set_t *glyphs, const USHORT &value, 
const void *data)
+static inline void collect_coverage (hb_set_t *glyphs, const UINT16 &value, 
const void *data)
 {
   const OffsetTo<Coverage> &coverage = (const OffsetTo<Coverage>&)value;
   (data+coverage).add_coverage (glyphs);
@@ -631,7 +631,7 @@ static inline void collect_coverage (hb_set_t *glyphs, 
const USHORT &value, cons
 static inline void collect_array (hb_collect_glyphs_context_t *c HB_UNUSED,
                                  hb_set_t *glyphs,
                                  unsigned int count,
-                                 const USHORT values[],
+                                 const UINT16 values[],
                                  collect_glyphs_func_t collect_func,
                                  const void *collect_data)
 {
@@ -640,16 +640,16 @@ static inline void collect_array 
(hb_collect_glyphs_context_t *c HB_UNUSED,
 }
 
 
-static inline bool match_glyph (hb_codepoint_t glyph_id, const USHORT &value, 
const void *data HB_UNUSED)
+static inline bool match_glyph (hb_codepoint_t glyph_id, const UINT16 &value, 
const void *data HB_UNUSED)
 {
   return glyph_id == value;
 }
-static inline bool match_class (hb_codepoint_t glyph_id, const USHORT &value, 
const void *data)
+static inline bool match_class (hb_codepoint_t glyph_id, const UINT16 &value, 
const void *data)
 {
   const ClassDef &class_def = *reinterpret_cast<const ClassDef *>(data);
   return class_def.get_class (glyph_id) == value;
 }
-static inline bool match_coverage (hb_codepoint_t glyph_id, const USHORT 
&value, const void *data)
+static inline bool match_coverage (hb_codepoint_t glyph_id, const UINT16 
&value, const void *data)
 {
   const OffsetTo<Coverage> &coverage = (const OffsetTo<Coverage>&)value;
   return (data+coverage).get_coverage (glyph_id) != NOT_COVERED;
@@ -657,7 +657,7 @@ static inline bool match_coverage (hb_codepoint_t glyph_id, 
const USHORT &value,
 
 static inline bool would_match_input (hb_would_apply_context_t *c,
                                      unsigned int count, /* Including the 
first glyph (not matched) */
-                                     const USHORT input[], /* Array of input 
values--start with second glyph */
+                                     const UINT16 input[], /* Array of input 
values--start with second glyph */
                                      match_func_t match_func,
                                      const void *match_data)
 {
@@ -672,7 +672,7 @@ static inline bool would_match_input 
(hb_would_apply_context_t *c,
 }
 static inline bool match_input (hb_apply_context_t *c,
                                unsigned int count, /* Including the first 
glyph (not matched) */
-                               const USHORT input[], /* Array of input 
values--start with second glyph */
+                               const UINT16 input[], /* Array of input 
values--start with second glyph */
                                match_func_t match_func,
                                const void *match_data,
                                unsigned int *end_offset,
@@ -896,7 +896,7 @@ static inline bool ligate_input (hb_apply_context_t *c,
 
 static inline bool match_backtrack (hb_apply_context_t *c,
                                    unsigned int count,
-                                   const USHORT backtrack[],
+                                   const UINT16 backtrack[],
                                    match_func_t match_func,
                                    const void *match_data,
                                    unsigned int *match_start)
@@ -918,7 +918,7 @@ static inline bool match_backtrack (hb_apply_context_t *c,
 
 static inline bool match_lookahead (hb_apply_context_t *c,
                                    unsigned int count,
-                                   const USHORT lookahead[],
+                                   const UINT16 lookahead[],
                                    match_func_t match_func,
                                    const void *match_data,
                                    unsigned int offset,
@@ -949,9 +949,9 @@ struct LookupRecord
     return_trace (c->check_struct (this));
   }
 
-  USHORT       sequenceIndex;          /* Index into current glyph
+  UINT16       sequenceIndex;          /* Index into current glyph
                                         * sequence--first glyph = 0 */
-  USHORT       lookupListIndex;        /* Lookup to apply to that
+  UINT16       lookupListIndex;        /* Lookup to apply to that
                                         * position--zero--based */
   public:
   DEFINE_SIZE_STATIC (4);
@@ -1109,7 +1109,7 @@ struct ContextApplyLookupContext
 
 static inline void context_closure_lookup (hb_closure_context_t *c,
                                           unsigned int inputCount, /* 
Including the first glyph (not matched) */
-                                          const USHORT input[], /* Array of 
input values--start with second glyph */
+                                          const UINT16 input[], /* Array of 
input values--start with second glyph */
                                           unsigned int lookupCount,
                                           const LookupRecord lookupRecord[],
                                           ContextClosureLookupContext 
&lookup_context)
@@ -1123,7 +1123,7 @@ static inline void context_closure_lookup 
(hb_closure_context_t *c,
 
 static inline void context_collect_glyphs_lookup (hb_collect_glyphs_context_t 
*c,
                                                  unsigned int inputCount, /* 
Including the first glyph (not matched) */
-                                                 const USHORT input[], /* 
Array of input values--start with second glyph */
+                                                 const UINT16 input[], /* 
Array of input values--start with second glyph */
                                                  unsigned int lookupCount,
                                                  const LookupRecord 
lookupRecord[],
                                                  
ContextCollectGlyphsLookupContext &lookup_context)
@@ -1137,7 +1137,7 @@ static inline void context_collect_glyphs_lookup 
(hb_collect_glyphs_context_t *c
 
 static inline bool context_would_apply_lookup (hb_would_apply_context_t *c,
                                               unsigned int inputCount, /* 
Including the first glyph (not matched) */
-                                              const USHORT input[], /* Array 
of input values--start with second glyph */
+                                              const UINT16 input[], /* Array 
of input values--start with second glyph */
                                               unsigned int lookupCount 
HB_UNUSED,
                                               const LookupRecord 
lookupRecord[] HB_UNUSED,
                                               ContextApplyLookupContext 
&lookup_context)
@@ -1148,7 +1148,7 @@ static inline bool context_would_apply_lookup 
(hb_would_apply_context_t *c,
 }
 static inline bool context_apply_lookup (hb_apply_context_t *c,
                                         unsigned int inputCount, /* Including 
the first glyph (not matched) */
-                                        const USHORT input[], /* Array of 
input values--start with second glyph */
+                                        const UINT16 input[], /* Array of 
input values--start with second glyph */
                                         unsigned int lookupCount,
                                         const LookupRecord lookupRecord[],
                                         ContextApplyLookupContext 
&lookup_context)
@@ -1214,11 +1214,11 @@ struct Rule
   }
 
   protected:
-  USHORT       inputCount;             /* Total number of glyphs in input
+  UINT16       inputCount;             /* Total number of glyphs in input
                                         * glyph sequence--includes the first
                                         * glyph */
-  USHORT       lookupCount;            /* Number of LookupRecords */
-  USHORT       inputZ[VAR];            /* Array of match inputs--start with
+  UINT16       lookupCount;            /* Number of LookupRecords */
+  UINT16       inputZ[VAR];            /* Array of match inputs--start with
                                         * second glyph */
   LookupRecord lookupRecordX[VAR];     /* Array of LookupRecords--in
                                         * design order */
@@ -1358,7 +1358,7 @@ struct ContextFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of table */
@@ -1451,7 +1451,7 @@ struct ContextFormat2
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 2 */
+  UINT16       format;                 /* Format identifier--format = 2 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of table */
@@ -1480,7 +1480,7 @@ struct ContextFormat3
       this
     };
     context_closure_lookup (c,
-                           glyphCount, (const USHORT *) (coverageZ + 1),
+                           glyphCount, (const UINT16 *) (coverageZ + 1),
                            lookupCount, lookupRecord,
                            lookup_context);
   }
@@ -1497,7 +1497,7 @@ struct ContextFormat3
     };
 
     context_collect_glyphs_lookup (c,
-                                  glyphCount, (const USHORT *) (coverageZ + 1),
+                                  glyphCount, (const UINT16 *) (coverageZ + 1),
                                   lookupCount, lookupRecord,
                                   lookup_context);
   }
@@ -1511,7 +1511,7 @@ struct ContextFormat3
       {match_coverage},
       this
     };
-    return_trace (context_would_apply_lookup (c, glyphCount, (const USHORT *) 
(coverageZ + 1), lookupCount, lookupRecord, lookup_context));
+    return_trace (context_would_apply_lookup (c, glyphCount, (const UINT16 *) 
(coverageZ + 1), lookupCount, lookupRecord, lookup_context));
   }
 
   inline const Coverage &get_coverage (void) const
@@ -1530,7 +1530,7 @@ struct ContextFormat3
       {match_coverage},
       this
     };
-    return_trace (context_apply_lookup (c, glyphCount, (const USHORT *) 
(coverageZ + 1), lookupCount, lookupRecord, lookup_context));
+    return_trace (context_apply_lookup (c, glyphCount, (const UINT16 *) 
(coverageZ + 1), lookupCount, lookupRecord, lookup_context));
   }
 
   inline bool sanitize (hb_sanitize_context_t *c) const
@@ -1547,10 +1547,10 @@ struct ContextFormat3
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 3 */
-  USHORT       glyphCount;             /* Number of glyphs in the input glyph
+  UINT16       format;                 /* Format identifier--format = 3 */
+  UINT16       glyphCount;             /* Number of glyphs in the input glyph
                                         * sequence */
-  USHORT       lookupCount;            /* Number of LookupRecords */
+  UINT16       lookupCount;            /* Number of LookupRecords */
   OffsetTo<Coverage>
                coverageZ[VAR];         /* Array of offsets to Coverage
                                         * table in glyph sequence order */
@@ -1577,7 +1577,7 @@ struct Context
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   ContextFormat1       format1;
   ContextFormat2       format2;
   ContextFormat3       format3;
@@ -1607,11 +1607,11 @@ struct ChainContextApplyLookupContext
 
 static inline void chain_context_closure_lookup (hb_closure_context_t *c,
                                                 unsigned int backtrackCount,
-                                                const USHORT backtrack[],
+                                                const UINT16 backtrack[],
                                                 unsigned int inputCount, /* 
Including the first glyph (not matched) */
-                                                const USHORT input[], /* Array 
of input values--start with second glyph */
+                                                const UINT16 input[], /* Array 
of input values--start with second glyph */
                                                 unsigned int lookaheadCount,
-                                                const USHORT lookahead[],
+                                                const UINT16 lookahead[],
                                                 unsigned int lookupCount,
                                                 const LookupRecord 
lookupRecord[],
                                                 
ChainContextClosureLookupContext &lookup_context)
@@ -1631,11 +1631,11 @@ static inline void chain_context_closure_lookup 
(hb_closure_context_t *c,
 
 static inline void chain_context_collect_glyphs_lookup 
(hb_collect_glyphs_context_t *c,
                                                        unsigned int 
backtrackCount,
-                                                       const USHORT 
backtrack[],
+                                                       const UINT16 
backtrack[],
                                                        unsigned int 
inputCount, /* Including the first glyph (not matched) */
-                                                       const USHORT input[], 
/* Array of input values--start with second glyph */
+                                                       const UINT16 input[], 
/* Array of input values--start with second glyph */
                                                        unsigned int 
lookaheadCount,
-                                                       const USHORT 
lookahead[],
+                                                       const UINT16 
lookahead[],
                                                        unsigned int 
lookupCount,
                                                        const LookupRecord 
lookupRecord[],
                                                        
ChainContextCollectGlyphsLookupContext &lookup_context)
@@ -1655,11 +1655,11 @@ static inline void chain_context_collect_glyphs_lookup 
(hb_collect_glyphs_contex
 
 static inline bool chain_context_would_apply_lookup (hb_would_apply_context_t 
*c,
                                                     unsigned int 
backtrackCount,
-                                                    const USHORT backtrack[] 
HB_UNUSED,
+                                                    const UINT16 backtrack[] 
HB_UNUSED,
                                                     unsigned int inputCount, 
/* Including the first glyph (not matched) */
-                                                    const USHORT input[], /* 
Array of input values--start with second glyph */
+                                                    const UINT16 input[], /* 
Array of input values--start with second glyph */
                                                     unsigned int 
lookaheadCount,
-                                                    const USHORT lookahead[] 
HB_UNUSED,
+                                                    const UINT16 lookahead[] 
HB_UNUSED,
                                                     unsigned int lookupCount 
HB_UNUSED,
                                                     const LookupRecord 
lookupRecord[] HB_UNUSED,
                                                     
ChainContextApplyLookupContext &lookup_context)
@@ -1672,11 +1672,11 @@ static inline bool chain_context_would_apply_lookup 
(hb_would_apply_context_t *c
 
 static inline bool chain_context_apply_lookup (hb_apply_context_t *c,
                                               unsigned int backtrackCount,
-                                              const USHORT backtrack[],
+                                              const UINT16 backtrack[],
                                               unsigned int inputCount, /* 
Including the first glyph (not matched) */
-                                              const USHORT input[], /* Array 
of input values--start with second glyph */
+                                              const UINT16 input[], /* Array 
of input values--start with second glyph */
                                               unsigned int lookaheadCount,
-                                              const USHORT lookahead[],
+                                              const UINT16 lookahead[],
                                               unsigned int lookupCount,
                                               const LookupRecord 
lookupRecord[],
                                               ChainContextApplyLookupContext 
&lookup_context)
@@ -1707,8 +1707,8 @@ struct ChainRule
   inline void closure (hb_closure_context_t *c, 
ChainContextClosureLookupContext &lookup_context) const
   {
     TRACE_CLOSURE (this);
-    const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> 
> (backtrack);
-    const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input);
+    const HeadlessArrayOf<UINT16> &input = StructAfter<HeadlessArrayOf<UINT16> 
> (backtrack);
+    const ArrayOf<UINT16> &lookahead = StructAfter<ArrayOf<UINT16> > (input);
     const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > 
(lookahead);
     chain_context_closure_lookup (c,
                                  backtrack.len, backtrack.array,
@@ -1721,8 +1721,8 @@ struct ChainRule
   inline void collect_glyphs (hb_collect_glyphs_context_t *c, 
ChainContextCollectGlyphsLookupContext &lookup_context) const
   {
     TRACE_COLLECT_GLYPHS (this);
-    const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> 
> (backtrack);
-    const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input);
+    const HeadlessArrayOf<UINT16> &input = StructAfter<HeadlessArrayOf<UINT16> 
> (backtrack);
+    const ArrayOf<UINT16> &lookahead = StructAfter<ArrayOf<UINT16> > (input);
     const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > 
(lookahead);
     chain_context_collect_glyphs_lookup (c,
                                         backtrack.len, backtrack.array,
@@ -1735,8 +1735,8 @@ struct ChainRule
   inline bool would_apply (hb_would_apply_context_t *c, 
ChainContextApplyLookupContext &lookup_context) const
   {
     TRACE_WOULD_APPLY (this);
-    const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> 
> (backtrack);
-    const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input);
+    const HeadlessArrayOf<UINT16> &input = StructAfter<HeadlessArrayOf<UINT16> 
> (backtrack);
+    const ArrayOf<UINT16> &lookahead = StructAfter<ArrayOf<UINT16> > (input);
     const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > 
(lookahead);
     return_trace (chain_context_would_apply_lookup (c,
                                                    backtrack.len, 
backtrack.array,
@@ -1748,8 +1748,8 @@ struct ChainRule
   inline bool apply (hb_apply_context_t *c, ChainContextApplyLookupContext 
&lookup_context) const
   {
     TRACE_APPLY (this);
-    const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> 
> (backtrack);
-    const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input);
+    const HeadlessArrayOf<UINT16> &input = StructAfter<HeadlessArrayOf<UINT16> 
> (backtrack);
+    const ArrayOf<UINT16> &lookahead = StructAfter<ArrayOf<UINT16> > (input);
     const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > 
(lookahead);
     return_trace (chain_context_apply_lookup (c,
                                              backtrack.len, backtrack.array,
@@ -1762,23 +1762,23 @@ struct ChainRule
   {
     TRACE_SANITIZE (this);
     if (!backtrack.sanitize (c)) return_trace (false);
-    const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> 
> (backtrack);
+    const HeadlessArrayOf<UINT16> &input = StructAfter<HeadlessArrayOf<UINT16> 
> (backtrack);
     if (!input.sanitize (c)) return_trace (false);
-    const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input);
+    const ArrayOf<UINT16> &lookahead = StructAfter<ArrayOf<UINT16> > (input);
     if (!lookahead.sanitize (c)) return_trace (false);
     const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > 
(lookahead);
     return_trace (lookup.sanitize (c));
   }
 
   protected:
-  ArrayOf<USHORT>
+  ArrayOf<UINT16>
                backtrack;              /* Array of backtracking values
                                         * (to be matched before the input
                                         * sequence) */
-  HeadlessArrayOf<USHORT>
+  HeadlessArrayOf<UINT16>
                inputX;                 /* Array of input values (start with
                                         * second glyph) */
-  ArrayOf<USHORT>
+  ArrayOf<UINT16>
                lookaheadX;             /* Array of lookahead values's (to be
                                         * matched after the input sequence) */
   ArrayOf<LookupRecord>
@@ -1915,7 +1915,7 @@ struct ChainContextFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 1 */
+  UINT16       format;                 /* Format identifier--format = 1 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of table */
@@ -2030,7 +2030,7 @@ struct ChainContextFormat2
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 2 */
+  UINT16       format;                 /* Format identifier--format = 2 */
   OffsetTo<Coverage>
                coverage;               /* Offset to Coverage table--from
                                         * beginning of table */
@@ -2070,9 +2070,9 @@ struct ChainContextFormat3
       {this, this, this}
     };
     chain_context_closure_lookup (c,
-                                 backtrack.len, (const USHORT *) 
backtrack.array,
-                                 input.len, (const USHORT *) input.array + 1,
-                                 lookahead.len, (const USHORT *) 
lookahead.array,
+                                 backtrack.len, (const UINT16 *) 
backtrack.array,
+                                 input.len, (const UINT16 *) input.array + 1,
+                                 lookahead.len, (const UINT16 *) 
lookahead.array,
                                  lookup.len, lookup.array,
                                  lookup_context);
   }
@@ -2091,9 +2091,9 @@ struct ChainContextFormat3
       {this, this, this}
     };
     chain_context_collect_glyphs_lookup (c,
-                                        backtrack.len, (const USHORT *) 
backtrack.array,
-                                        input.len, (const USHORT *) 
input.array + 1,
-                                        lookahead.len, (const USHORT *) 
lookahead.array,
+                                        backtrack.len, (const UINT16 *) 
backtrack.array,
+                                        input.len, (const UINT16 *) 
input.array + 1,
+                                        lookahead.len, (const UINT16 *) 
lookahead.array,
                                         lookup.len, lookup.array,
                                         lookup_context);
   }
@@ -2110,9 +2110,9 @@ struct ChainContextFormat3
       {this, this, this}
     };
     return_trace (chain_context_would_apply_lookup (c,
-                                                   backtrack.len, (const 
USHORT *) backtrack.array,
-                                                   input.len, (const USHORT *) 
input.array + 1,
-                                                   lookahead.len, (const 
USHORT *) lookahead.array,
+                                                   backtrack.len, (const 
UINT16 *) backtrack.array,
+                                                   input.len, (const UINT16 *) 
input.array + 1,
+                                                   lookahead.len, (const 
UINT16 *) lookahead.array,
                                                    lookup.len, lookup.array, 
lookup_context));
   }
 
@@ -2137,9 +2137,9 @@ struct ChainContextFormat3
       {this, this, this}
     };
     return_trace (chain_context_apply_lookup (c,
-                                             backtrack.len, (const USHORT *) 
backtrack.array,
-                                             input.len, (const USHORT *) 
input.array + 1,
-                                             lookahead.len, (const USHORT *) 
lookahead.array,
+                                             backtrack.len, (const UINT16 *) 
backtrack.array,
+                                             input.len, (const UINT16 *) 
input.array + 1,
+                                             lookahead.len, (const UINT16 *) 
lookahead.array,
                                              lookup.len, lookup.array, 
lookup_context));
   }
 
@@ -2157,7 +2157,7 @@ struct ChainContextFormat3
   }
 
   protected:
-  USHORT       format;                 /* Format identifier--format = 3 */
+  UINT16       format;                 /* Format identifier--format = 3 */
   OffsetArrayOf<Coverage>
                backtrack;              /* Array of coverage tables
                                         * in backtracking sequence, in  glyph
@@ -2194,7 +2194,7 @@ struct ChainContext
 
   protected:
   union {
-  USHORT               format; /* Format identifier */
+  UINT16               format; /* Format identifier */
   ChainContextFormat1  format1;
   ChainContextFormat2  format2;
   ChainContextFormat3  format3;
@@ -2231,11 +2231,11 @@ struct ExtensionFormat1
   }
 
   protected:
-  USHORT       format;                 /* Format identifier. Set to 1. */
-  USHORT       extensionLookupType;    /* Lookup type of subtable referenced
+  UINT16       format;                 /* Format identifier. Set to 1. */
+  UINT16       extensionLookupType;    /* Lookup type of subtable referenced
                                         * by ExtensionOffset (i.e. the
                                         * extension subtable). */
-  ULONG                extensionOffset;        /* Offset to the extension 
subtable,
+  UINT32               extensionOffset;        /* Offset to the extension 
subtable,
                                         * of lookup type subtable. */
   public:
   DEFINE_SIZE_STATIC (8);
@@ -2273,7 +2273,7 @@ struct Extension
 
   protected:
   union {
-  USHORT               format;         /* Format identifier */
+  UINT16               format;         /* Format identifier */
   ExtensionFormat1<T>  format1;
   } u;
 };
diff --git a/src/hb-ot-math-table.hh b/src/hb-ot-math-table.hh
index b3c8571b..7dc3283a 100644
--- a/src/hb-ot-math-table.hh
+++ b/src/hb-ot-math-table.hh
@@ -48,7 +48,7 @@ struct MathValueRecord
   }
 
   protected:
-  SHORT                        value;          /* The X or Y value in design 
units */
+  INT16                        value;          /* The X or Y value in design 
units */
   OffsetTo<Device>     deviceTable;    /* Offset to the device table - from the
                                         * beginning of parent table. May be 
nullptr.
                                         * Suggested format for device table is 
1. */
@@ -154,10 +154,10 @@ struct MathConstants
   }
 
   protected:
-  SHORT percentScaleDown[2];
-  USHORT minHeight[2];
+  INT16 percentScaleDown[2];
+  UINT16 minHeight[2];
   MathValueRecord mathValueRecords[51];
-  SHORT radicalDegreeBottomRaisePercent;
+  INT16 radicalDegreeBottomRaisePercent;
 
   public:
   DEFINE_SIZE_STATIC (214);
@@ -279,7 +279,7 @@ struct MathKern
   }
 
   protected:
-  USHORT         heightCount;
+  UINT16         heightCount;
   MathValueRecord mathValueRecords[VAR]; /* Array of correction heights at
                                          * which the kern value changes.
                                          * Sorted by the height value in
@@ -425,7 +425,7 @@ struct MathGlyphVariantRecord
 
   protected:
   GlyphID variantGlyph;       /* Glyph ID for the variant. */
-  USHORT  advanceMeasurement; /* Advance width/height, in design units, of the
+  UINT16  advanceMeasurement; /* Advance width/height, in design units, of the
                               * variant, in the direction of requested
                               * glyph extension. */
 
@@ -433,7 +433,7 @@ struct MathGlyphVariantRecord
   DEFINE_SIZE_STATIC (4);
 };
 
-struct PartFlags : USHORT
+struct PartFlags : UINT16
 {
   enum Flags {
     Extender   = 0x0001u, /* If set, the part can be skipped or repeated. */
@@ -473,15 +473,15 @@ struct MathGlyphPartRecord
 
   protected:
   GlyphID   glyph;               /* Glyph ID for the part. */
-  USHORT    startConnectorLength; /* Advance width/ height of the straight bar
+  UINT16    startConnectorLength; /* Advance width/ height of the straight bar
                                   * connector material, in design units, is at
                                   * the beginning of the glyph, in the
                                   * direction of the extension. */
-  USHORT    endConnectorLength;   /* Advance width/ height of the straight bar
+  UINT16    endConnectorLength;   /* Advance width/ height of the straight bar
                                   * connector material, in design units, is at
                                   * the end of the glyph, in the direction of
                                   * the extension. */
-  USHORT    fullAdvance;         /* Full advance width/height for this part,
+  UINT16    fullAdvance;         /* Full advance width/height for this part,
                                   * in the direction of the extension.
                                   * In design units. */
   PartFlags partFlags;           /* Part qualifiers. */
@@ -651,7 +651,7 @@ struct MathVariants
   }
 
   protected:
-  USHORT            minConnectorOverlap; /* Minimum overlap of connecting
+  UINT16            minConnectorOverlap; /* Minimum overlap of connecting
                                           * glyphs during glyph construction,
                                           * in design units. */
   OffsetTo<Coverage> vertGlyphCoverage;   /* Offset to Coverage table -
@@ -660,10 +660,10 @@ struct MathVariants
   OffsetTo<Coverage> horizGlyphCoverage;  /* Offset to Coverage table -
                                           * from the beginning of MathVariants
                                           * table. */
-  USHORT            vertGlyphCount;      /* Number of glyphs for which
+  UINT16            vertGlyphCount;      /* Number of glyphs for which
                                           * information is provided for
                                           * vertically growing variants. */
-  USHORT            horizGlyphCount;     /* Number of glyphs for which
+  UINT16            horizGlyphCount;     /* Number of glyphs for which
                                           * information is provided for
                                           * horizontally growing variants. */
 
diff --git a/src/hb-ot-maxp-table.hh b/src/hb-ot-maxp-table.hh
index 943e3908..f6d283eb 100644
--- a/src/hb-ot-maxp-table.hh
+++ b/src/hb-ot-maxp-table.hh
@@ -60,7 +60,7 @@ struct maxp
   protected:
   FixedVersion<>version;               /* Version of the maxp table (0.5 or 
1.0),
                                         * 0x00005000u or 0x00010000u. */
-  USHORT       numGlyphs;              /* The number of glyphs in the font. */
+  UINT16       numGlyphs;              /* The number of glyphs in the font. */
   public:
   DEFINE_SIZE_STATIC (6);
 };
diff --git a/src/hb-ot-name-table.hh b/src/hb-ot-name-table.hh
index 8e688a6b..e90e46c1 100644
--- a/src/hb-ot-name-table.hh
+++ b/src/hb-ot-name-table.hh
@@ -65,12 +65,12 @@ struct NameRecord
     return_trace (c->check_struct (this) && c->check_range ((char *) base, 
(unsigned int) length + offset));
   }
 
-  USHORT       platformID;     /* Platform ID. */
-  USHORT       encodingID;     /* Platform-specific encoding ID. */
-  USHORT       languageID;     /* Language ID. */
-  USHORT       nameID;         /* Name ID. */
-  USHORT       length;         /* String length (in bytes). */
-  USHORT       offset;         /* String offset from start of storage area (in 
bytes). */
+  UINT16       platformID;     /* Platform ID. */
+  UINT16       encodingID;     /* Platform-specific encoding ID. */
+  UINT16       languageID;     /* Language ID. */
+  UINT16       nameID;         /* Name ID. */
+  UINT16       length;         /* String length (in bytes). */
+  UINT16       offset;         /* String offset from start of storage area (in 
bytes). */
   public:
   DEFINE_SIZE_STATIC (12);
 };
@@ -123,8 +123,8 @@ struct name
   }
 
   /* We only implement format 0 for now. */
-  USHORT       format;                 /* Format selector (=0/1). */
-  USHORT       count;                  /* Number of name records. */
+  UINT16       format;                 /* Format selector (=0/1). */
+  UINT16       count;                  /* Number of name records. */
   Offset<>     stringOffset;           /* Offset to start of string storage 
(from start of table). */
   NameRecord   nameRecord[VAR];        /* The name records where count is the 
number of records. */
   public:
diff --git a/src/hb-ot-os2-table.hh b/src/hb-ot-os2-table.hh
index 4709cd6e..aa78f1e0 100644
--- a/src/hb-ot-os2-table.hh
+++ b/src/hb-ot-os2-table.hh
@@ -50,50 +50,50 @@ struct os2
   }
 
   public:
-  USHORT       version;
+  UINT16       version;
 
   /* Version 0 */
-  SHORT                xAvgCharWidth;
-  USHORT       usWeightClass;
-  USHORT       usWidthClass;
-  USHORT       fsType;
-  SHORT                ySubscriptXSize;
-  SHORT                ySubscriptYSize;
-  SHORT                ySubscriptXOffset;
-  SHORT                ySubscriptYOffset;
-  SHORT                ySuperscriptXSize;
-  SHORT                ySuperscriptYSize;
-  SHORT                ySuperscriptXOffset;
-  SHORT                ySuperscriptYOffset;
-  SHORT                yStrikeoutSize;
-  SHORT                yStrikeoutPosition;
-  SHORT                sFamilyClass;
-  BYTE         panose[10];
-  ULONG                ulUnicodeRange[4];
+  INT16                xAvgCharWidth;
+  UINT16       usWeightClass;
+  UINT16       usWidthClass;
+  UINT16       fsType;
+  INT16                ySubscriptXSize;
+  INT16                ySubscriptYSize;
+  INT16                ySubscriptXOffset;
+  INT16                ySubscriptYOffset;
+  INT16                ySuperscriptXSize;
+  INT16                ySuperscriptYSize;
+  INT16                ySuperscriptXOffset;
+  INT16                ySuperscriptYOffset;
+  INT16                yStrikeoutSize;
+  INT16                yStrikeoutPosition;
+  INT16                sFamilyClass;
+  UINT8                panose[10];
+  UINT32               ulUnicodeRange[4];
   Tag          achVendID;
-  USHORT       fsSelection;
-  USHORT       usFirstCharIndex;
-  USHORT       usLastCharIndex;
-  SHORT                sTypoAscender;
-  SHORT                sTypoDescender;
-  SHORT                sTypoLineGap;
-  USHORT       usWinAscent;
-  USHORT       usWinDescent;
+  UINT16       fsSelection;
+  UINT16       usFirstCharIndex;
+  UINT16       usLastCharIndex;
+  INT16                sTypoAscender;
+  INT16                sTypoDescender;
+  INT16                sTypoLineGap;
+  UINT16       usWinAscent;
+  UINT16       usWinDescent;
 
   /* Version 1 */
-  //ULONG ulCodePageRange1;
-  //ULONG ulCodePageRange2;
+  //UINT32 ulCodePageRange1;
+  //UINT32 ulCodePageRange2;
 
   /* Version 2 */
-  //SHORT sxHeight;
-  //SHORT sCapHeight;
-  //USHORT  usDefaultChar;
-  //USHORT  usBreakChar;
-  //USHORT  usMaxContext;
+  //INT16 sxHeight;
+  //INT16 sCapHeight;
+  //UINT16  usDefaultChar;
+  //UINT16  usBreakChar;
+  //UINT16  usMaxContext;
 
   /* Version 5 */
-  //USHORT  usLowerOpticalPointSize;
-  //USHORT  usUpperOpticalPointSize;
+  //UINT16  usLowerOpticalPointSize;
+  //UINT16  usUpperOpticalPointSize;
 
   public:
   DEFINE_SIZE_STATIC (78);
diff --git a/src/hb-ot-post-table.hh b/src/hb-ot-post-table.hh
index e3952a41..7f1c2c42 100644
--- a/src/hb-ot-post-table.hh
+++ b/src/hb-ot-post-table.hh
@@ -56,10 +56,10 @@ struct postV2Tail
     return_trace (glyphNameIndex.sanitize (c));
   }
 
-  ArrayOf<USHORT>glyphNameIndex;       /* This is not an offset, but is the
+  ArrayOf<UINT16>glyphNameIndex;       /* This is not an offset, but is the
                                         * ordinal number of the glyph in 'post'
                                         * string tables. */
-  BYTE         namesX[VAR];            /* Glyph names with length bytes 
[variable]
+  UINT8                namesX[VAR];            /* Glyph names with length 
bytes [variable]
                                         * (a Pascal string). */
 
   DEFINE_SIZE_ARRAY2 (2, glyphNameIndex, namesX);
@@ -234,7 +234,7 @@ struct post
     private:
     hb_blob_t *blob;
     uint32_t version;
-    const ArrayOf<USHORT> *glyphNameIndex;
+    const ArrayOf<UINT16> *glyphNameIndex;
     hb_prealloced_array_t<uint32_t, 1> index_to_offset;
     const uint8_t *pool;
     mutable uint16_t *gids_sorted_by_name;
@@ -261,16 +261,16 @@ struct post
                                         * from the value of this field. */
   FWORD                underlineThickness;     /* Suggested values for the 
underline
                                           thickness. */
-  ULONG                isFixedPitch;           /* Set to 0 if the font is 
proportionally
+  UINT32               isFixedPitch;           /* Set to 0 if the font is 
proportionally
                                         * spaced, non-zero if the font is not
                                         * proportionally spaced (i.e. 
monospaced). */
-  ULONG                minMemType42;           /* Minimum memory usage when an 
OpenType font
+  UINT32               minMemType42;           /* Minimum memory usage when an 
OpenType font
                                         * is downloaded. */
-  ULONG                maxMemType42;           /* Maximum memory usage when an 
OpenType font
+  UINT32               maxMemType42;           /* Maximum memory usage when an 
OpenType font
                                         * is downloaded. */
-  ULONG                minMemType1;            /* Minimum memory usage when an 
OpenType font
+  UINT32               minMemType1;            /* Minimum memory usage when an 
OpenType font
                                         * is downloaded as a Type 1 font. */
-  ULONG                maxMemType1;            /* Maximum memory usage when an 
OpenType font
+  UINT32               maxMemType1;            /* Maximum memory usage when an 
OpenType font
                                         * is downloaded as a Type 1 font. */
 /*postV2Tail   v2[VAR];*/
   DEFINE_SIZE_STATIC (32);
diff --git a/src/hb-ot-shape-complex-arabic-win1256.hh 
b/src/hb-ot-shape-complex-arabic-win1256.hh
index e70c48f4..54c6cdc2 100644
--- a/src/hb-ot-shape-complex-arabic-win1256.hh
+++ b/src/hb-ot-shape-complex-arabic-win1256.hh
@@ -43,16 +43,16 @@
 #define OT_TABLE_END                   }
 #define OT_LABEL_START(Name)           unsigned char Name[
 #define OT_LABEL_END                   ];
-#define OT_BYTE(u8)                    +1/*byte*/
-#define OT_USHORT(u16)                 +2/*bytes*/
+#define OT_UINT8(u8)                   +1/*byte*/
+#define OT_UINT16(u16)                 +2/*bytes*/
 #else
 #undef  OT_MEASURE
 #define OT_TABLE_START                 TABLE_NAME = {
 #define OT_TABLE_END                   };
 #define OT_LABEL_START(Name)           {
 #define OT_LABEL_END                   },
-#define OT_BYTE(u8)                    (u8),
-#define OT_USHORT(u16)                 (unsigned char)((u16)>>8), (unsigned 
char)((u16)&0xFFu),
+#define OT_UINT8(u8)                   (u8),
+#define OT_UINT16(u16)                 (unsigned char)((u16)>>8), (unsigned 
char)((u16)&0xFFu),
 #define OT_COUNT(Name, ItemSize)       ((unsigned int) sizeof(((struct 
TABLE_NAME*)0)->Name) \
                                         / (unsigned int)(ItemSize) \
                                         /* OT_ASSERT it's divisible (and 
positive). */)
@@ -80,24 +80,24 @@
  */
 
 #define OT_TAG(a,b,c,d) \
-       OT_BYTE(a) OT_BYTE(b) OT_BYTE(c) OT_BYTE(d)
+       OT_UINT8(a) OT_UINT8(b) OT_UINT8(c) OT_UINT8(d)
 
 #define OT_OFFSET(From, To) /* Offset from From to To in bytes */ \
-       OT_USHORT(OT_DISTANCE(From, To))
+       OT_UINT16(OT_DISTANCE(From, To))
 
 #define OT_GLYPHID /* GlyphID */ \
-       OT_USHORT
+       OT_UINT16
 
 #define OT_UARRAY(Name, Items) \
        OT_LABEL_START(Name) \
-       OT_USHORT(OT_COUNT(Name##Data, 2)) \
+       OT_UINT16(OT_COUNT(Name##Data, 2)) \
        OT_LABEL(Name##Data) \
        Items \
        OT_LABEL_END
 
 #define OT_UHEADLESSARRAY(Name, Items) \
        OT_LABEL_START(Name) \
-       OT_USHORT(OT_COUNT(Name##Data, 2) + 1) \
+       OT_UINT16(OT_COUNT(Name##Data, 2) + 1) \
        OT_LABEL(Name##Data) \
        Items \
        OT_LABEL_END
@@ -111,19 +111,19 @@
 
 #define OT_LOOKUP(Name, LookupType, LookupFlag, SubLookupOffsets) \
        OT_LABEL_START(Name) \
-       OT_USHORT(LookupType) \
-       OT_USHORT(LookupFlag) \
+       OT_UINT16(LookupType) \
+       OT_UINT16(LookupFlag) \
        OT_LABEL_END \
        OT_UARRAY(Name##SubLookupOffsetsArray, OT_LIST(SubLookupOffsets))
 
 #define OT_SUBLOOKUP(Name, SubFormat, Items) \
        OT_LABEL_START(Name) \
-       OT_USHORT(SubFormat) \
+       OT_UINT16(SubFormat) \
        Items
 
 #define OT_COVERAGE1(Name, Items) \
        OT_LABEL_START(Name) \
-       OT_USHORT(1) \
+       OT_UINT16(1) \
        OT_LABEL_END \
        OT_UARRAY(Name##Glyphs, OT_LIST(Items))
 
@@ -174,7 +174,7 @@
 /* Table manifest. */
 #define MANIFEST(Items) \
        OT_LABEL_START(manifest) \
-       OT_USHORT(OT_COUNT(manifestData, 6)) \
+       OT_UINT16(OT_COUNT(manifestData, 6)) \
        OT_LABEL(manifestData) \
        Items \
        OT_LABEL_END
@@ -304,8 +304,8 @@ OT_TABLE_END
 #undef OT_TABLE_END
 #undef OT_LABEL_START
 #undef OT_LABEL_END
-#undef OT_BYTE
-#undef OT_USHORT
+#undef OT_UINT8
+#undef OT_UINT16
 #undef OT_DISTANCE
 #undef OT_COUNT
 
diff --git a/src/hb-ot-var-avar-table.hh b/src/hb-ot-var-avar-table.hh
index 464cf35b..4b88a403 100644
--- a/src/hb-ot-var-avar-table.hh
+++ b/src/hb-ot-var-avar-table.hh
@@ -133,8 +133,8 @@ struct avar
   protected:
   FixedVersion<>version;       /* Version of the avar table
                                 * initially set to 0x00010000u */
-  USHORT       reserved;       /* This field is permanently reserved. Set to 
0. */
-  USHORT       axisCount;      /* The number of variation axes in the font. 
This
+  UINT16       reserved;       /* This field is permanently reserved. Set to 
0. */
+  UINT16       axisCount;      /* The number of variation axes in the font. 
This
                                 * must be the same number as axisCount in the
                                 * 'fvar' table. */
   SegmentMaps  axisSegmentMapsZ;
diff --git a/src/hb-ot-var-fvar-table.hh b/src/hb-ot-var-fvar-table.hh
index 9f6fb325..ab7d35b4 100644
--- a/src/hb-ot-var-fvar-table.hh
+++ b/src/hb-ot-var-fvar-table.hh
@@ -42,11 +42,11 @@ struct InstanceRecord
   }
 
   protected:
-  USHORT       subfamilyNameID;/* The name ID for entries in the 'name' table
+  UINT16       subfamilyNameID;/* The name ID for entries in the 'name' table
                                 * that provide subfamily names for this 
instance. */
-  USHORT       reserved;       /* Reserved for future use — set to 0. */
+  UINT16       reserved;       /* Reserved for future use — set to 0. */
   Fixed                coordinates[VAR];/* The coordinates array for this 
instance. */
-  //USHORT     postScriptNameIDX;/*Optional. The name ID for entries in the 
'name'
+  //UINT16     postScriptNameIDX;/*Optional. The name ID for entries in the 
'name'
   //                             * table that provide PostScript names for this
   //                             * instance. */
 
@@ -67,8 +67,8 @@ struct AxisRecord
   Fixed                minValue;       /* The minimum coordinate value for the 
axis. */
   Fixed                defaultValue;   /* The default coordinate value for the 
axis. */
   Fixed                maxValue;       /* The maximum coordinate value for the 
axis. */
-  USHORT       reserved;       /* Reserved for future use — set to 0. */
-  USHORT       axisNameID;     /* The name ID for entries in the 'name' table 
that
+  UINT16       reserved;       /* Reserved for future use — set to 0. */
+  UINT16       axisNameID;     /* The name ID for entries in the 'name' table 
that
                                 * provide a display name for this axis. */
 
   public:
@@ -188,14 +188,14 @@ struct fvar
                                 * initially set to 0x00010000u */
   Offset<>     things;         /* Offset in bytes from the beginning of the 
table
                                 * to the start of the AxisRecord array. */
-  USHORT       reserved;       /* This field is permanently reserved. Set to 
2. */
-  USHORT       axisCount;      /* The number of variation axes in the font (the
+  UINT16       reserved;       /* This field is permanently reserved. Set to 
2. */
+  UINT16       axisCount;      /* The number of variation axes in the font (the
                                 * number of records in the axes array). */
-  USHORT       axisSize;       /* The size in bytes of each 
VariationAxisRecord —
+  UINT16       axisSize;       /* The size in bytes of each 
VariationAxisRecord —
                                 * set to 20 (0x0014) for this version. */
-  USHORT       instanceCount;  /* The number of named instances defined in the 
font
+  UINT16       instanceCount;  /* The number of named instances defined in the 
font
                                 * (the number of records in the instances 
array). */
-  USHORT       instanceSize;   /* The size in bytes of each InstanceRecord — 
set
+  UINT16       instanceSize;   /* The size in bytes of each InstanceRecord — 
set
                                 * to either axisCount * sizeof(Fixed) + 4, or 
to
                                 * axisCount * sizeof(Fixed) + 6. */
 
diff --git a/src/hb-ot-var-hvar-table.hh b/src/hb-ot-var-hvar-table.hh
index f9d801e3..fac843a7 100644
--- a/src/hb-ot-var-hvar-table.hh
+++ b/src/hb-ot-var-hvar-table.hh
@@ -55,7 +55,7 @@ struct DeltaSetIndexMap
     unsigned int u = 0;
     { /* Fetch it. */
       unsigned int w = get_width ();
-      const BYTE *p = mapData + w * v;
+      const UINT8 *p = mapData + w * v;
       for (; w; w--)
        u = (u << 8) + *p++;
     }
@@ -78,10 +78,10 @@ struct DeltaSetIndexMap
   { return (format & 0xF) + 1; }
 
   protected:
-  USHORT       format;         /* A packed field that describes the compressed
+  UINT16       format;         /* A packed field that describes the compressed
                                 * representation of delta-set indices. */
-  USHORT       mapCount;       /* The number of mapping entries. */
-  BYTE         mapData[VAR];   /* The delta-set index mapping data. */
+  UINT16       mapCount;       /* The number of mapping entries. */
+  UINT8                mapData[VAR];   /* The delta-set index mapping data. */
 
   public:
   DEFINE_SIZE_ARRAY (4, mapData);
diff --git a/src/hb-ot-var-mvar-table.hh b/src/hb-ot-var-mvar-table.hh
index 96bc77f3..e17ff516 100644
--- a/src/hb-ot-var-mvar-table.hh
+++ b/src/hb-ot-var-mvar-table.hh
@@ -43,7 +43,7 @@ struct VariationValueRecord
 
   public:
   Tag          valueTag;       /* Four-byte tag identifying a font-wide 
measure. */
-  ULONG                varIdx;         /* Outer/inner index into 
VariationStore item. */
+  UINT32               varIdx;         /* Outer/inner index into 
VariationStore item. */
 
   public:
   DEFINE_SIZE_STATIC (8);
@@ -95,13 +95,13 @@ protected:
   protected:
   FixedVersion<>version;       /* Version of the metrics variation table
                                 * initially set to 0x00010000u */
-  USHORT       reserved;       /* Not used; set to 0. */
-  USHORT       valueRecordSize;/* The size in bytes of each value record —
+  UINT16       reserved;       /* Not used; set to 0. */
+  UINT16       valueRecordSize;/* The size in bytes of each value record —
                                 * must be greater than zero. */
-  USHORT       valueRecordCount;/* The number of value records — may be 
zero. */
+  UINT16       valueRecordCount;/* The number of value records — may be 
zero. */
   OffsetTo<VariationStore>
                varStore;       /* Offset to item variation store table. */
-  BYTE         values[VAR];    /* Array of value records. The records must be
+  UINT8                values[VAR];    /* Array of value records. The records 
must be
                                 * in binary order of their valueTag field. */
 
   public:
_______________________________________________
HarfBuzz mailing list
HarfBuzz@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/harfbuzz

Reply via email to