X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Funinorm%2Fcomposition.c;h=23868bac208921d2507b497d3cceed66282f74e5;hb=652e59d2790aaf0fedcd8267ac6fe84f10570d46;hp=bed8df5ff3c61637e09f6ba023592402936f3367;hpb=441aa3044f43e5572f58c354f01e6bc070acd5c7;p=gnulib.git diff --git a/lib/uninorm/composition.c b/lib/uninorm/composition.c index bed8df5ff..23868bac2 100644 --- a/lib/uninorm/composition.c +++ b/lib/uninorm/composition.c @@ -1,5 +1,5 @@ /* Canonical composition of Unicode characters. - Copyright (C) 2002, 2006, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2006, 2009, 2011 Free Software Foundation, Inc. Written by Bruno Haible , 2009. This program is free software: you can redistribute it and/or modify it @@ -22,14 +22,14 @@ #include -struct composition_rule { char codes[4]; unsigned short combined; }; +struct composition_rule { char codes[6]; unsigned int combined; }; #include "composition-table.h" ucs4_t uc_composition (ucs4_t uc1, ucs4_t uc2) { - if (uc1 < 0x10000 && uc2 < 0x10000) + if (uc1 < 0x12000 && uc2 < 0x12000) { if (uc2 >= 0x1161 && uc2 < 0x1161 + 21 && uc1 >= 0x1100 && uc1 < 0x1100 + 19) @@ -67,15 +67,17 @@ uc_composition (ucs4_t uc1, ucs4_t uc2) } } #else - char codes[4]; + char codes[6]; const struct composition_rule *rule; - codes[0] = (uc1 >> 8) & 0xff; - codes[1] = uc1 & 0xff; - codes[2] = (uc2 >> 8) & 0xff; - codes[3] = uc2 & 0xff; + codes[0] = (uc1 >> 16) & 0xff; + codes[1] = (uc1 >> 8) & 0xff; + codes[2] = uc1 & 0xff; + codes[3] = (uc2 >> 16) & 0xff; + codes[4] = (uc2 >> 8) & 0xff; + codes[5] = uc2 & 0xff; - rule = gl_uninorm_compose_lookup (codes, 4); + rule = gl_uninorm_compose_lookup (codes, 6); if (rule != NULL) return rule->combined; #endif