Update to Unicode 5.2.0.
[gnulib.git] / lib / uninorm / composition.c
index 583f7aa..23868ba 100644 (file)
@@ -1,5 +1,5 @@
 /* Canonical composition of Unicode characters.
-   Copyright (C) 2002, 2006, 2009-2011 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2006, 20092011 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2009.
 
    This program is free software: you can redistribute it and/or modify it
 
 #include <string.h>
 
-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