From d02985ec5a24c659a0a133cc6bc103f1d76bcb29 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 2 May 2011 12:35:14 -0400 Subject: [PATCH] ISO 15924 fixes 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 | 10 ++++++++-- src/hb-common.h | 5 +++-- src/hb-ot-tag.cc | 2 -- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/hb-common.cc b/src/hb-common.cc index 1a6f518..b75146d 100644 --- a/src/hb-common.cc +++ b/src/hb-common.cc @@ -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; diff --git a/src/hb-common.h b/src/hb-common.h index 74030f4..64109da 100644 --- a/src/hb-common.h +++ b/src/hb-common.h @@ -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'), diff --git a/src/hb-ot-tag.cc b/src/hb-ot-tag.cc index 144ee82..62c1b1a 100644 --- a/src/hb-ot-tag.cc +++ b/src/hb-ot-tag.cc @@ -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; -- 2.7.4