diff --git a/glib/gutf8.c b/glib/gutf8.c index ba13d0b52..a7fbf6e4e 100644 --- a/glib/gutf8.c +++ b/glib/gutf8.c @@ -95,7 +95,23 @@ (Result) <<= 6; \ (Result) |= ((Chars)[(Count)] & 0x3f); \ } - + +/** + * Check whether a Unicode (5.2) char is in a valid range. + * + * The first check comes from the Unicode guarantee to never encode + * a point above 0x0010ffff, since UTF-16 couldn't represent it. + * + * The second check covers surrogate pairs (category Cs). + * + * The last two checks cover "Noncharacter": defined as: + * "A code point that is permanently reserved for + * internal use, and that should never be interchanged. In + * Unicode 3.1, these consist of the values U+nFFFE and U+nFFFF + * (where n is from 0 to 10_16) and the values U+FDD0..U+FDEF." + * + * @param Char the character + */ #define UNICODE_VALID(Char) \ ((Char) < 0x110000 && \ (((Char) & 0xFFFFF800) != 0xD800) && \