diff --git a/src/hb-types-private.cc b/src/hb-types-private.cc
new file mode 100644
index 0000000..ca1674c
--- /dev/null
+++ b/src/hb-types-private.cc
@@ -0,0 +1,116 @@
+#include <stdint.h>
+
+/*
+ *
+ * The OpenType Font File
+ *
+ */
+
+/*
+ * Data Types:
+ */
+
+
+/* "All OpenType fonts use Motorola-style byte ordering (Big Endian)"
+ * So we define the following hb_be_* types as structs/unions, to
+ * disallow accidental access to them as an integer. */
+
+typedef union {
+  uint8_t u8;
+  uint8_t v;
+} hb_be_uint8_t;
+
+typedef union {
+  int8_t i8;
+  int8_t v;
+} hb_be_int8_t;
+
+typedef union {
+  uint8_t u8x2[2];
+  uint16_t u16;
+  uint16_t v;
+} hb_be_uint16_t;
+
+typedef union {
+  uint8_t u8x2[2];
+  int16_t i16;
+  int16_t v;
+} hb_be_int16_t;
+
+typedef union {
+  uint8_t u8x4[4];
+  uint16_t u16x2[2];
+  uint32_t u32;
+  uint32_t v;
+  inline operator int () { return (u8x4[0]<<24)+(u8x4[1]<<16)+(u8x4[2]<<8)+u8x4[3]; }
+} hb_be_uint32_t;
+
+typedef union {
+  uint8_t u8x4[4];
+  uint16_t u16x2[2];
+  int32_t i32;
+  int32_t v;
+} hb_be_int32_t;
+
+typedef union {
+  uint8_t u8x8[8];
+  uint16_t u16x4[4];
+  uint32_t u32x2[2];
+  uint64_t u64;
+  uint64_t v;
+} hb_be_uint64_t;
+
+typedef union {
+  uint8_t u8x8[8];
+  uint16_t u16x4[4];
+  uint32_t u32x2[2];
+  int64_t i64;
+  int64_t v;
+} hb_be_int64_t;
+
+
+/* "The following data types are used in the OpenType font file." */
+
+typedef hb_be_uint8_t	HB_BYTE;	/* 8-bit unsigned integer. */
+typedef hb_be_int8_t	HB_CHAR;	/* 8-bit signed integer. */
+typedef hb_be_uint16_t	HB_USHORT;	/* 16-bit unsigned integer. */
+typedef hb_be_int16_t	HB_SHORT;	/* 16-bit signed integer. */
+typedef hb_be_uint32_t	HB_ULONG;	/* 32-bit unsigned integer. */
+typedef hb_be_int32_t	HB_LONG;	/* 32-bit signed integer. */
+typedef hb_be_int32_t	HB_Fixed;	/* 32-bit signed fixed-point number
+					 * (16.16) */
+typedef struct _FUNIT	HB_FUNIT;	/* Smallest measurable distance
+					 * in the em space. */
+typedef HB_SHORT	HB_FWORD;	/* 16-bit signed integer (SHORT) that
+					 * describes a quantity in FUnits. */
+typedef HB_USHORT	HB_UFWORD;	/* 16-bit unsigned integer (USHORT)
+					 * that describes a quantity in
+					 * FUnits. */
+typedef hb_be_int16_t	HB_F2DOT14;	/* 16-bit signed fixed number with the
+					 * low 14 bits of fraction (2.14). */
+typedef hb_be_int64_t	HB_LONGDATETIME;/* Date represented in number of
+					 * seconds since 12:00 midnight,
+					 * January 1, 1904. The value is
+					 * represented as a signed 64-bit
+					 * integer. */
+typedef hb_be_uint32_t	HB_Tag;		/* Array of four uint8s (length = 32
+					 * bits) used to identify a script,
+					 * language system, feature, or
+					 * baseline */
+typedef hb_be_uint16_t	HB_GlyphID;	/* Glyph index number, same as
+					 * uint16(length = 16 bits) */
+typedef hb_be_uint16_t	HB_Offset;	/* Offset to a table, same as uint16
+					 * (length = 16 bits), NULL offset =
+					 * 0x0000 */
+
+#include <stdio.h>
+
+int
+main (void)
+{
+  HB_Tag x = {{'a', 'b', 'c', 'd'}};
+  HB_ULONG y = x;
+
+  printf ("%d\n", x+0);
+  return 0;
+}
