mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-20 23:37:33 +09:00
Issue #1971 - Part 2: Update ICU source to 63.2.
This commit is contained in:
parent
8df84683be
commit
1e69214382
3160 changed files with 275815 additions and 234203 deletions
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (C) 2016 and later: Unicode, Inc. and others.
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
/*
|
||||
*******************************************************************************
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
*
|
||||
*******************************************************************************
|
||||
* file name: utf.h
|
||||
* encoding: US-ASCII
|
||||
* encoding: UTF-8
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*
|
||||
|
|
@ -23,9 +23,6 @@
|
|||
* This file defines macros for checking whether a code point is
|
||||
* a surrogate or a non-character etc.
|
||||
*
|
||||
* The UChar and UChar32 data types for Unicode code units and code points
|
||||
* are defined in umachine.h because they can be machine-dependent.
|
||||
*
|
||||
* If U_NO_DEFAULT_INCLUDE_UTF_HEADERS is 0 then utf.h is included by utypes.h
|
||||
* and itself includes utf8.h and utf16.h after some
|
||||
* common definitions.
|
||||
|
|
@ -50,11 +47,11 @@
|
|||
* but are optimized for the much more frequently occurring BMP code points.
|
||||
*
|
||||
* umachine.h defines UChar to be an unsigned 16-bit integer.
|
||||
* Where available, UChar is defined to be a char16_t
|
||||
* or a wchar_t (if that is an unsigned 16-bit type), otherwise uint16_t.
|
||||
* Since ICU 59, ICU uses char16_t in C++, UChar only in C,
|
||||
* and defines UChar=char16_t by default. See the UChar API docs for details.
|
||||
*
|
||||
* UChar32 is defined to be a signed 32-bit integer (int32_t), large enough for a 21-bit
|
||||
* Unicode code point (Unicode scalar value, 0..0x10ffff).
|
||||
* Unicode code point (Unicode scalar value, 0..0x10ffff) and U_SENTINEL (-1).
|
||||
* Before ICU 2.4, the definition of UChar32 was similarly platform-dependent as
|
||||
* the definition of UChar. For details see the documentation for UChar32 itself.
|
||||
*
|
||||
|
|
@ -63,11 +60,20 @@
|
|||
* For actual Unicode character properties see uchar.h.
|
||||
*
|
||||
* By default, string operations must be done with error checking in case
|
||||
* a string is not well-formed UTF-16.
|
||||
* The macros will detect if a surrogate code unit is unpaired
|
||||
* a string is not well-formed UTF-16 or UTF-8.
|
||||
*
|
||||
* The U16_ macros detect if a surrogate code unit is unpaired
|
||||
* (lead unit without trail unit or vice versa) and just return the unit itself
|
||||
* as the code point.
|
||||
*
|
||||
* The U8_ macros detect illegal byte sequences and return a negative value.
|
||||
* Starting with ICU 60, the observable length of a single illegal byte sequence
|
||||
* skipped by one of these macros follows the Unicode 6+ recommendation
|
||||
* which is consistent with the W3C Encoding Standard.
|
||||
*
|
||||
* There are ..._OR_FFFD versions of both U16_ and U8_ macros
|
||||
* that return U+FFFD for illegal code unit sequences.
|
||||
*
|
||||
* The regular "safe" macros require that the initial, passed-in string index
|
||||
* is within bounds. They only check the index when they read more than one
|
||||
* code unit. This is usually done with code similar to the following loop:
|
||||
|
|
@ -91,10 +97,7 @@
|
|||
* The performance differences are much larger here because UTF-8 provides so
|
||||
* many opportunities for malformed sequences.
|
||||
* The unsafe UTF-8 macros are entirely implemented inside the macro definitions
|
||||
* and are fast, while the safe UTF-8 macros call functions for all but the
|
||||
* trivial (ASCII) cases.
|
||||
* (ICU 3.6 optimizes U8_NEXT() and U8_APPEND() to handle most other common
|
||||
* characters inline as well.)
|
||||
* and are fast, while the safe UTF-8 macros call functions for some complicated cases.
|
||||
*
|
||||
* Unlike with UTF-16, malformed sequences cannot be expressed with distinct
|
||||
* code point values (0..U+10ffff). They are indicated with negative values instead.
|
||||
|
|
@ -126,8 +129,7 @@
|
|||
*/
|
||||
#define U_IS_UNICODE_NONCHAR(c) \
|
||||
((c)>=0xfdd0 && \
|
||||
((uint32_t)(c)<=0xfdef || ((c)&0xfffe)==0xfffe) && \
|
||||
(uint32_t)(c)<=0x10ffff)
|
||||
((c)<=0xfdef || ((c)&0xfffe)==0xfffe) && (c)<=0x10ffff)
|
||||
|
||||
/**
|
||||
* Is c a Unicode code point value (0..U+10ffff)
|
||||
|
|
@ -148,9 +150,7 @@
|
|||
*/
|
||||
#define U_IS_UNICODE_CHAR(c) \
|
||||
((uint32_t)(c)<0xd800 || \
|
||||
((uint32_t)(c)>0xdfff && \
|
||||
(uint32_t)(c)<=0x10ffff && \
|
||||
!U_IS_UNICODE_NONCHAR(c)))
|
||||
(0xdfff<(c) && (c)<=0x10ffff && !U_IS_UNICODE_NONCHAR(c)))
|
||||
|
||||
/**
|
||||
* Is this code point a BMP code point (U+0000..U+ffff)?
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue