diff options
Diffstat (limited to 'lib/uninorm/composition.c')
| -rw-r--r-- | lib/uninorm/composition.c | 20 | 
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 | 
