X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=utf8.h;h=72dd15f075c9effe04cc63a35f75289e05c82a04;hb=96a925ab0077cdd24bd7d328f20be3d5373d4885;hp=a5312ca19e4d8580f927b4221ef7d78516c3912b;hpb=375122d71fe65bb12f4aac78313fa2d23fd511f3;p=p5sagit%2Fp5-mst-13.2.git diff --git a/utf8.h b/utf8.h index a5312ca..72dd15f 100644 --- a/utf8.h +++ b/utf8.h @@ -1,6 +1,6 @@ /* utf8.h * - * Copyright (c) 1998-2002, Larry Wall + * Copyright (C) 2000, 2001, 2002, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -80,6 +80,10 @@ END_EXTERN_C Note the A0..BF in U+0800..U+0FFF, the 80..9F in U+D000...U+D7FF, the 90..BF in U+10000..U+3FFFF, and the 80...8F in U+100000..U+10FFFF. +The "gaps" are caused by legal UTF-8 avoiding non-shortest encodings: +it is technically possible to UTF-8-encode a single code point in different +ways, but that is explicitly forbidden, and the shortest possible encoding +should always be used (and that is what Perl does). */ @@ -176,36 +180,34 @@ encoded character. #define UTF8_ALLOW_FE_FF 0x0008 #define UTF8_ALLOW_SHORT 0x0010 #define UTF8_ALLOW_SURROGATE 0x0020 -#define UTF8_ALLOW_BOM 0x0040 -#define UTF8_ALLOW_FFFF 0x0080 -#define UTF8_ALLOW_LONG 0x0100 +#define UTF8_ALLOW_FFFF 0x0040 /* Allows also FFFE. */ +#define UTF8_ALLOW_LONG 0x0080 #define UTF8_ALLOW_ANYUV (UTF8_ALLOW_EMPTY|UTF8_ALLOW_FE_FF|\ - UTF8_ALLOW_SURROGATE|UTF8_ALLOW_BOM|\ + UTF8_ALLOW_SURROGATE|\ UTF8_ALLOW_FFFF|UTF8_ALLOW_LONG) -#define UTF8_ALLOW_ANY 0x00ff +#define UTF8_ALLOW_ANY 0x00FF #define UTF8_CHECK_ONLY 0x0200 -#define UNICODE_SURROGATE_FIRST 0xd800 -#define UNICODE_SURROGATE_LAST 0xdfff -#define UNICODE_REPLACEMENT 0xfffd -#define UNICODE_BYTER_ORDER_MARK 0xfffe -#define UNICODE_ILLEGAL 0xffff +#define UNICODE_SURROGATE_FIRST 0xD800 +#define UNICODE_SURROGATE_LAST 0xDFFF +#define UNICODE_REPLACEMENT 0xFFFD +#define UNICODE_BYTE_ORDER_MARK 0xFEFF +#define UNICODE_ILLEGAL 0xFFFF /* Though our UTF-8 encoding can go beyond this, - * let's be conservative. */ + * let's be conservative and do as Unicode 3.2 says. */ #define PERL_UNICODE_MAX 0x10FFFF #define UNICODE_ALLOW_SURROGATE 0x0001 /* Allow UTF-16 surrogates (EVIL) */ #define UNICODE_ALLOW_FDD0 0x0002 /* Allow the U+FDD0...U+FDEF */ -#define UNICODE_ALLOW_FFFE 0x0004 /* Allow 0xFFFE, 0x1FFFE, ... */ -#define UNICODE_ALLOW_FFFF 0x0008 /* Allow 0xFFFE, 0x1FFFE, ... */ -#define UNICODE_ALLOW_SUPER 0x0010 /* Allow past 10xFFFF */ -#define UNICODE_ALLOW_ANY 0xFFFF +#define UNICODE_ALLOW_FFFF 0x0004 /* Allow 0xFFF[EF], 0x1FFF[EF], ... */ +#define UNICODE_ALLOW_SUPER 0x0008 /* Allow past 10xFFFF */ +#define UNICODE_ALLOW_ANY 0x000F #define UNICODE_IS_SURROGATE(c) ((c) >= UNICODE_SURROGATE_FIRST && \ (c) <= UNICODE_SURROGATE_LAST) #define UNICODE_IS_REPLACEMENT(c) ((c) == UNICODE_REPLACEMENT) -#define UNICODE_IS_BYTE_ORDER_MARK(c) ((c) == UNICODE_BYTER_ORDER_MARK) +#define UNICODE_IS_BYTE_ORDER_MARK(c) ((c) == UNICODE_BYTE_ORDER_MARK) #define UNICODE_IS_ILLEGAL(c) ((c) == UNICODE_ILLEGAL) #ifdef HAS_QUAD