ISO 15924 fixes
authorBehdad Esfahbod <behdad@behdad.org>
Mon, 2 May 2011 16:35:14 +0000 (12:35 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 2 May 2011 16:35:14 +0000 (12:35 -0400)
Update to http://unicode.org/iso15924

Fixes some of the test failures in test-unicode with ICU.  Still
one more to fix before the test passes.

src/hb-common.cc
src/hb-common.h
src/hb-ot-tag.cc

index 1a6f518..b75146d 100644 (file)
@@ -191,9 +191,15 @@ hb_script_from_iso15924_tag (hb_tag_t tag)
   tag = (tag & 0xDFDFDFDF) | 0x00202020;
 
   switch (tag) {
+
+    /* These graduated from the 'Q' private-area codes, but
+     * the old code is still aliased by Unicode, and the Qaai
+     * one in use by ICU. */
+    case HB_TAG('Q','a','a','i'): return HB_SCRIPT_INHERITED;
+    case HB_TAG('Q','a','a','c'): return HB_SCRIPT_COPTIC;
+
+    /* Script variants from http://unicode.org/iso15924/ */
     case HB_TAG('C','y','r','s'): return HB_SCRIPT_CYRILLIC;
-    case HB_TAG('G','e','o','a'): return HB_SCRIPT_GEORGIAN;
-    case HB_TAG('G','e','o','n'): return HB_SCRIPT_GEORGIAN;
     case HB_TAG('L','a','t','f'): return HB_SCRIPT_LATIN;
     case HB_TAG('L','a','t','g'): return HB_SCRIPT_LATIN;
     case HB_TAG('S','y','r','e'): return HB_SCRIPT_SYRIAC;
index 74030f4..64109da 100644 (file)
@@ -153,16 +153,17 @@ typedef enum
 
 /* hb_script_t */
 
+/* http://unicode.org/iso15924/ */
 typedef enum
 {
   HB_SCRIPT_COMMON                  = HB_TAG ('Z','y','y','y'),
-  HB_SCRIPT_INHERITED               = HB_TAG ('Q','a','a','i'),
+  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_CHEROKEE                = HB_TAG ('C','h','e','r'),
-  HB_SCRIPT_COPTIC                  = HB_TAG ('Q','a','a','c'),
+  HB_SCRIPT_COPTIC                  = HB_TAG ('C','o','p','t'),
   HB_SCRIPT_CYRILLIC                = HB_TAG ('C','y','r','l'),
   HB_SCRIPT_DESERET                 = HB_TAG ('D','s','r','t'),
   HB_SCRIPT_DEVANAGARI              = HB_TAG ('D','e','v','a'),
index 144ee82..62c1b1a 100644 (file)
@@ -40,7 +40,6 @@ static hb_tag_t
 hb_ot_old_tag_from_script (hb_script_t script)
 {
   switch ((hb_tag_t) script) {
-    case HB_SCRIPT_COPTIC:             return HB_TAG('c','o','p','t');
     case HB_SCRIPT_HIRAGANA:           return HB_TAG('k','a','n','a');
     case HB_SCRIPT_LAO:                        return HB_TAG('l','a','o',' ');
     case HB_SCRIPT_YI:                 return HB_TAG('y','i',' ',' ');
@@ -61,7 +60,6 @@ static hb_script_t
 hb_ot_old_tag_to_script (hb_tag_t tag)
 {
   switch (tag) {
-    case HB_TAG('c','o','p','t'):      return HB_SCRIPT_COPTIC;
     case HB_TAG('k','a','n','a'):      return HB_SCRIPT_HIRAGANA;
     case HB_TAG('l','a','o',' '):      return HB_SCRIPT_LAO;
     case HB_TAG('y','i',' ',' '):      return HB_SCRIPT_YI;