diff --git a/src/hb-common.cc b/src/hb-common.cc
index 170b75f..e003c09 100644
--- a/src/hb-common.cc
+++ b/src/hb-common.cc
@@ -264,10 +264,14 @@
 hb_direction_t
 hb_script_get_horizontal_direction (hb_script_t script)
 {
+  /* http://goo.gl/x9ilM */
   switch ((hb_tag_t) script)
   {
+    /* Unicode-1.1 additions */
     case HB_SCRIPT_ARABIC:
     case HB_SCRIPT_HEBREW:
+
+    /* Unicode-3.0 additions */
     case HB_SCRIPT_SYRIAC:
     case HB_SCRIPT_THAANA:
 
@@ -296,6 +300,10 @@
     /* Unicode-6.0 additions */
     case HB_SCRIPT_MANDAIC:
 
+    /* Unicode-6.1 additions */
+    case HB_SCRIPT_MEROITIC_CURSIVE:
+    case HB_SCRIPT_MEROITIC_HIEROGLYPHS:
+
       return HB_DIRECTION_RTL;
   }
 
diff --git a/src/hb-common.h b/src/hb-common.h
index 96093e4..b6a9279 100644
--- a/src/hb-common.h
+++ b/src/hb-common.h
@@ -174,48 +174,54 @@
 /* hb_script_t */
 
 /* http://unicode.org/iso15924/ */
+/* http://goo.gl/x9ilM */
 typedef enum
 {
+  /* Unicode-1.1 additions */
   HB_SCRIPT_COMMON			= HB_TAG ('Z','y','y','y'),
-  HB_SCRIPT_INHERITED			= HB_TAG ('Z','i','n','h'),
   HB_SCRIPT_ARABIC			= HB_TAG ('A','r','a','b'),
   HB_SCRIPT_ARMENIAN			= HB_TAG ('A','r','m','n'),
   HB_SCRIPT_BENGALI			= HB_TAG ('B','e','n','g'),
   HB_SCRIPT_BOPOMOFO			= HB_TAG ('B','o','p','o'),
+  HB_SCRIPT_CANADIAN_ABORIGINAL		= HB_TAG ('C','a','n','s'),
   HB_SCRIPT_CHEROKEE			= HB_TAG ('C','h','e','r'),
   HB_SCRIPT_COPTIC			= HB_TAG ('C','o','p','t'),
   HB_SCRIPT_CYRILLIC			= HB_TAG ('C','y','r','l'),
   HB_SCRIPT_DEVANAGARI			= HB_TAG ('D','e','v','a'),
-  HB_SCRIPT_ETHIOPIC			= HB_TAG ('E','t','h','i'),
   HB_SCRIPT_GEORGIAN			= HB_TAG ('G','e','o','r'),
   HB_SCRIPT_GREEK			= HB_TAG ('G','r','e','k'),
   HB_SCRIPT_GUJARATI			= HB_TAG ('G','u','j','r'),
   HB_SCRIPT_GURMUKHI			= HB_TAG ('G','u','r','u'),
-  HB_SCRIPT_HAN				= HB_TAG ('H','a','n','i'),
   HB_SCRIPT_HANGUL			= HB_TAG ('H','a','n','g'),
+  HB_SCRIPT_HAN				= HB_TAG ('H','a','n','i'),
   HB_SCRIPT_HEBREW			= HB_TAG ('H','e','b','r'),
   HB_SCRIPT_HIRAGANA			= HB_TAG ('H','i','r','a'),
+  HB_SCRIPT_INHERITED			= HB_TAG ('Z','i','n','h'),
   HB_SCRIPT_KANNADA			= HB_TAG ('K','n','d','a'),
   HB_SCRIPT_KATAKANA			= HB_TAG ('K','a','n','a'),
-  HB_SCRIPT_KHMER			= HB_TAG ('K','h','m','r'),
   HB_SCRIPT_LAO				= HB_TAG ('L','a','o','o'),
   HB_SCRIPT_LATIN			= HB_TAG ('L','a','t','n'),
   HB_SCRIPT_MALAYALAM			= HB_TAG ('M','l','y','m'),
   HB_SCRIPT_MONGOLIAN			= HB_TAG ('M','o','n','g'),
-  HB_SCRIPT_MYANMAR			= HB_TAG ('M','y','m','r'),
   HB_SCRIPT_OGHAM			= HB_TAG ('O','g','a','m'),
   HB_SCRIPT_ORIYA			= HB_TAG ('O','r','y','a'),
   HB_SCRIPT_RUNIC			= HB_TAG ('R','u','n','r'),
-  HB_SCRIPT_SINHALA			= HB_TAG ('S','i','n','h'),
   HB_SCRIPT_SYRIAC			= HB_TAG ('S','y','r','c'),
   HB_SCRIPT_TAMIL			= HB_TAG ('T','a','m','l'),
   HB_SCRIPT_TELUGU			= HB_TAG ('T','e','l','u'),
-  HB_SCRIPT_THAANA			= HB_TAG ('T','h','a','a'),
   HB_SCRIPT_THAI			= HB_TAG ('T','h','a','i'),
-  HB_SCRIPT_TIBETAN			= HB_TAG ('T','i','b','t'),
-  HB_SCRIPT_CANADIAN_ABORIGINAL		= HB_TAG ('C','a','n','s'),
   HB_SCRIPT_YI				= HB_TAG ('Y','i','i','i'),
 
+  /* Unicode-2.0 additions */
+  HB_SCRIPT_TIBETAN			= HB_TAG ('T','i','b','t'),
+
+  /* Unicode-3.0 additions */
+  HB_SCRIPT_ETHIOPIC			= HB_TAG ('E','t','h','i'),
+  HB_SCRIPT_KHMER			= HB_TAG ('K','h','m','r'),
+  HB_SCRIPT_MYANMAR			= HB_TAG ('M','y','m','r'),
+  HB_SCRIPT_SINHALA			= HB_TAG ('S','i','n','h'),
+  HB_SCRIPT_THAANA			= HB_TAG ('T','h','a','a'),
+
   /* Unicode-3.1 additions */
   HB_SCRIPT_DESERET			= HB_TAG ('D','s','r','t'),
   HB_SCRIPT_GOTHIC			= HB_TAG ('G','o','t','h'),
@@ -231,41 +237,41 @@
   HB_SCRIPT_BRAILLE			= HB_TAG ('B','r','a','i'),
   HB_SCRIPT_CYPRIOT			= HB_TAG ('C','p','r','t'),
   HB_SCRIPT_LIMBU			= HB_TAG ('L','i','m','b'),
+  HB_SCRIPT_LINEAR_B			= HB_TAG ('L','i','n','b'),
   HB_SCRIPT_OSMANYA			= HB_TAG ('O','s','m','a'),
   HB_SCRIPT_SHAVIAN			= HB_TAG ('S','h','a','w'),
-  HB_SCRIPT_LINEAR_B			= HB_TAG ('L','i','n','b'),
   HB_SCRIPT_TAI_LE			= HB_TAG ('T','a','l','e'),
   HB_SCRIPT_UGARITIC			= HB_TAG ('U','g','a','r'),
 
   /* Unicode-4.1 additions */
-  HB_SCRIPT_NEW_TAI_LUE			= HB_TAG ('T','a','l','u'),
   HB_SCRIPT_BUGINESE			= HB_TAG ('B','u','g','i'),
   HB_SCRIPT_GLAGOLITIC			= HB_TAG ('G','l','a','g'),
-  HB_SCRIPT_TIFINAGH			= HB_TAG ('T','f','n','g'),
-  HB_SCRIPT_SYLOTI_NAGRI		= HB_TAG ('S','y','l','o'),
-  HB_SCRIPT_OLD_PERSIAN			= HB_TAG ('X','p','e','o'),
   HB_SCRIPT_KHAROSHTHI			= HB_TAG ('K','h','a','r'),
+  HB_SCRIPT_NEW_TAI_LUE			= HB_TAG ('T','a','l','u'),
+  HB_SCRIPT_OLD_PERSIAN			= HB_TAG ('X','p','e','o'),
+  HB_SCRIPT_SYLOTI_NAGRI		= HB_TAG ('S','y','l','o'),
+  HB_SCRIPT_TIFINAGH			= HB_TAG ('T','f','n','g'),
 
   /* Unicode-5.0 additions */
-  HB_SCRIPT_UNKNOWN			= HB_TAG ('Z','z','z','z'),
   HB_SCRIPT_BALINESE			= HB_TAG ('B','a','l','i'),
   HB_SCRIPT_CUNEIFORM			= HB_TAG ('X','s','u','x'),
-  HB_SCRIPT_PHOENICIAN			= HB_TAG ('P','h','n','x'),
-  HB_SCRIPT_PHAGS_PA			= HB_TAG ('P','h','a','g'),
   HB_SCRIPT_NKO				= HB_TAG ('N','k','o','o'),
+  HB_SCRIPT_PHAGS_PA			= HB_TAG ('P','h','a','g'),
+  HB_SCRIPT_PHOENICIAN			= HB_TAG ('P','h','n','x'),
+  HB_SCRIPT_UNKNOWN			= HB_TAG ('Z','z','z','z'),
 
   /* Unicode-5.1 additions */
+  HB_SCRIPT_CARIAN			= HB_TAG ('C','a','r','i'),
+  HB_SCRIPT_CHAM			= HB_TAG ('C','h','a','m'),
   HB_SCRIPT_KAYAH_LI			= HB_TAG ('K','a','l','i'),
   HB_SCRIPT_LEPCHA			= HB_TAG ('L','e','p','c'),
-  HB_SCRIPT_REJANG			= HB_TAG ('R','j','n','g'),
-  HB_SCRIPT_SUNDANESE			= HB_TAG ('S','u','n','d'),
-  HB_SCRIPT_SAURASHTRA			= HB_TAG ('S','a','u','r'),
-  HB_SCRIPT_CHAM			= HB_TAG ('C','h','a','m'),
-  HB_SCRIPT_OL_CHIKI			= HB_TAG ('O','l','c','k'),
-  HB_SCRIPT_VAI				= HB_TAG ('V','a','i','i'),
-  HB_SCRIPT_CARIAN			= HB_TAG ('C','a','r','i'),
   HB_SCRIPT_LYCIAN			= HB_TAG ('L','y','c','i'),
   HB_SCRIPT_LYDIAN			= HB_TAG ('L','y','d','i'),
+  HB_SCRIPT_OL_CHIKI			= HB_TAG ('O','l','c','k'),
+  HB_SCRIPT_REJANG			= HB_TAG ('R','j','n','g'),
+  HB_SCRIPT_SAURASHTRA			= HB_TAG ('S','a','u','r'),
+  HB_SCRIPT_SUNDANESE			= HB_TAG ('S','u','n','d'),
+  HB_SCRIPT_VAI				= HB_TAG ('V','a','i','i'),
 
   /* Unicode-5.2 additions */
   HB_SCRIPT_AVESTAN			= HB_TAG ('A','v','s','t'),
