summaryrefslogtreecommitdiff
path: root/lib/uninorm/composition.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/uninorm/composition.c')
-rw-r--r--lib/uninorm/composition.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/uninorm/composition.c b/lib/uninorm/composition.c
index c9cddbec..f98d698d 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-2010 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2006, 2009, 2011-2015 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
@@ -22,14 +22,14 @@
#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