]> Kevux Git Server - fll/commitdiff
Update: To Unicode 16 (back ported from 0.8.x). 0.6
authorKevin Day <Kevin@kevux.org>
Fri, 29 May 2026 00:45:58 +0000 (19:45 -0500)
committerKevin Day <Kevin@kevux.org>
Fri, 29 May 2026 01:26:33 +0000 (20:26 -0500)
This gets the code base up to date with **Unicode 16**.
I intend to follow this up with additional changes to update to **Unicode 17**.

I discovered that I accidentally had the unit tests disabled for the **Unicode** is_* functions.
Re-enable the tests and get things working.
Also add a "is_control_picture" unit tests.
I added additional logic that prints out useful information for when many of the **Unicode** related unit tests fail.
I intend to slowly add more such logic to all of me units tests over time.

I discovered that the combining characters might have marks in them that do not belong as punctuation.
I will have to follow this up with a bug fix to address all of these cases.
This will take some time.
I did not correct the unit tests within this commit to avoid doing a lot of that work right now.

I believe I also need to add is_mark functions to properly handle this and test for this.
This is will be a new feature to fix a bug.
I should also back port these changes to the 0.6.x series.

I also made some structural changes by adding some more if conditionals in situations where it seemed like there were too many checks in a given block set.

79 files changed:
level_0/f_utf/c/private-utf_alphabetic.c
level_0/f_utf/c/private-utf_combining.c
level_0/f_utf/c/private-utf_control.c
level_0/f_utf/c/private-utf_control.h
level_0/f_utf/c/private-utf_digit.c
level_0/f_utf/c/private-utf_emoji.c
level_0/f_utf/c/private-utf_numeric.c
level_0/f_utf/c/private-utf_phonetic.c
level_0/f_utf/c/private-utf_punctuation.c
level_0/f_utf/c/private-utf_superscript.c
level_0/f_utf/c/private-utf_symbol.c
level_0/f_utf/c/private-utf_unassigned.c
level_0/f_utf/c/private-utf_valid.c
level_0/f_utf/c/utf/is_character.h
level_0/f_utf/data/build/settings-tests
level_0/f_utf/data/documentation/man/man3/f_utf_character_is_symbol.3
level_0/f_utf/data/tests/bytesequences/combining-all.txt
level_0/f_utf/data/tests/bytesequences/control_picture-all.txt [new file with mode: 0644]
level_0/f_utf/data/tests/bytesequences/digit-all.txt
level_0/f_utf/data/tests/bytesequences/emoji-all.txt
level_0/f_utf/data/tests/bytesequences/numeric-all.txt
level_0/f_utf/data/tests/bytesequences/phonetic-all.txt
level_0/f_utf/data/tests/codepoints/combining-all.txt
level_0/f_utf/data/tests/codepoints/control_picture-all.txt [new file with mode: 0644]
level_0/f_utf/data/tests/codepoints/digit-all.txt
level_0/f_utf/data/tests/codepoints/emoji-all.txt
level_0/f_utf/data/tests/codepoints/numeric-all.txt
level_0/f_utf/data/tests/codepoints/phonetic-all.txt
level_0/f_utf/data/tests/codepoints/punctuation-all.txt
level_0/f_utf/data/tests/codepoints/symbol-all.txt
level_0/f_utf/tests/unit/c/data-utf.c
level_0/f_utf/tests/unit/c/data-utf.h
level_0/f_utf/tests/unit/c/test-utf-character_is_combining.c
level_0/f_utf/tests/unit/c/test-utf-character_is_control.c
level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.c [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.h [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf-character_is_digit.c
level_0/f_utf/tests/unit/c/test-utf-character_is_emoji.c
level_0/f_utf/tests/unit/c/test-utf-character_is_numeric.c
level_0/f_utf/tests/unit/c/test-utf-character_is_phonetic.c
level_0/f_utf/tests/unit/c/test-utf-character_is_private.c
level_0/f_utf/tests/unit/c/test-utf-character_is_punctuation.c
level_0/f_utf/tests/unit/c/test-utf-character_is_subscript.c
level_0/f_utf/tests/unit/c/test-utf-character_is_superscript.c
level_0/f_utf/tests/unit/c/test-utf-character_is_symbol.c
level_0/f_utf/tests/unit/c/test-utf-character_is_valid.c
level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace.c
level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_modifier.c
level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_other.c
level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_zero_width.c
level_0/f_utf/tests/unit/c/test-utf-character_is_wide.c
level_0/f_utf/tests/unit/c/test-utf-character_is_word.c
level_0/f_utf/tests/unit/c/test-utf-character_is_word_dash.c
level_0/f_utf/tests/unit/c/test-utf-character_is_word_dash_plus.c
level_0/f_utf/tests/unit/c/test-utf-character_is_zero_width.c
level_0/f_utf/tests/unit/c/test-utf-is_combining.c
level_0/f_utf/tests/unit/c/test-utf-is_control.c
level_0/f_utf/tests/unit/c/test-utf-is_control_picture.c [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf-is_control_picture.h [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf-is_digit.c
level_0/f_utf/tests/unit/c/test-utf-is_emoji.c
level_0/f_utf/tests/unit/c/test-utf-is_numeric.c
level_0/f_utf/tests/unit/c/test-utf-is_phonetic.c
level_0/f_utf/tests/unit/c/test-utf-is_private.c
level_0/f_utf/tests/unit/c/test-utf-is_punctuation.c
level_0/f_utf/tests/unit/c/test-utf-is_subscript.c
level_0/f_utf/tests/unit/c/test-utf-is_superscript.c
level_0/f_utf/tests/unit/c/test-utf-is_symbol.c
level_0/f_utf/tests/unit/c/test-utf-is_whitespace.c
level_0/f_utf/tests/unit/c/test-utf-is_whitespace_modifier.c
level_0/f_utf/tests/unit/c/test-utf-is_whitespace_other.c
level_0/f_utf/tests/unit/c/test-utf-is_whitespace_zero_width.c
level_0/f_utf/tests/unit/c/test-utf-is_wide.c
level_0/f_utf/tests/unit/c/test-utf-is_word.c
level_0/f_utf/tests/unit/c/test-utf-is_word_dash.c
level_0/f_utf/tests/unit/c/test-utf-is_word_dash_plus.c
level_0/f_utf/tests/unit/c/test-utf-is_zero_width.c
level_0/f_utf/tests/unit/c/test-utf.c
level_0/f_utf/tests/unit/c/test-utf.h

index 35cf5bdfecc298683a3bc10ac16ae4720f750150..1aa479351eee31c8953262d13ebda5ad315e29ac 100644 (file)
@@ -36,9 +36,7 @@ extern "C" {
       return F_false;
     }
 
-    if (private_f_utf_character_is_control_picture(sequence)) {
-      return F_false;
-    }
+    // Skipping control pictures check because they are already represented in the is symbols check.
 
     if (private_f_utf_character_is_combining(sequence)) {
       return F_false;
@@ -96,9 +94,7 @@ extern "C" {
       return F_false;
     }
 
-    if (private_f_utf_character_is_control_picture(sequence)) {
-      return F_false;
-    }
+    // Skipping control pictures check because they are already represented in the is symbols check.
 
     if (private_f_utf_character_is_whitespace(sequence, F_true)) {
       return F_false;
@@ -152,9 +148,7 @@ extern "C" {
       return F_false;
     }
 
-    if (private_f_utf_character_is_control_picture(sequence)) {
-      return F_false;
-    }
+    // Skipping control pictures check because they are already represented in the is symbols check.
 
     if (private_f_utf_character_is_whitespace(sequence, F_true)) {
       return F_false;
index d91904189cbcb93f3ff2480873d654621658763c..0679e5b6b27f96b02b489c895e945c38f6d09be3 100644 (file)
@@ -11,32 +11,34 @@ extern "C" {
 
     if (macro_f_utf_char_t_width_is(sequence) == 2) {
 
-      // Diacritical Marks: U+0300 to U+036F.
-      if (sequence >= 0xcc800000 && sequence <= 0xcdaf0000) {
-        return F_true;
-      }
+      if (macro_f_utf_char_t_to_char_1(sequence) >= 0xcc && macro_f_utf_char_t_to_char_1(sequence) <= 0xd8) {
 
-      // Cyrillic: U+0483 to U+0489.
-      if (sequence >= 0xd2830000 && sequence <= 0xd2890000) {
-        return F_true;
-      }
+        // Diacritical Marks: U+0300 to U+036F.
+        if (sequence >= 0xcc800000 && sequence <= 0xcdaf0000) {
+          return F_true;
+        }
 
-      // Hebrew: U+0591 to U+05BD.
-      if (sequence >= 0xd6910000 && sequence <= 0xd6bd0000) {
-        return F_true;
-      }
+        // Cyrillic: U+0483 to U+0489.
+        if (sequence >= 0xd2830000 && sequence <= 0xd2890000) {
+          return F_true;
+        }
 
-      // Hebrew: U+05C1 to U+05C7.
-      if (sequence >= 0xd7810000 && sequence <= 0xd7870000) {
-        return F_true;
-      }
+        // Hebrew: U+0591 to U+05BD.
+        if (sequence >= 0xd6910000 && sequence <= 0xd6bd0000) {
+          return F_true;
+        }
 
-      // Arabic: U+0610 to U+061A.
-      if (sequence >= 0xd8900000 && sequence <= 0xd89a0000) {
-        return F_true;
-      }
+        // Hebrew: U+05C1 to U+05C7.
+        if (sequence >= 0xd7810000 && sequence <= 0xd7870000) {
+          return F_true;
+        }
 
-      if (macro_f_utf_char_t_to_char_1(sequence) == 0xd9) {
+        // Arabic: U+0610 to U+061A.
+        if (sequence >= 0xd8900000 && sequence <= 0xd89a0000) {
+          return F_true;
+        }
+      }
+      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xd9) {
 
         // Arabic: U+064B to U+065F.
         if (sequence >= 0xd98b0000 && sequence <= 0xd99f0000) {
@@ -116,1108 +118,1369 @@ extern "C" {
 
       if (macro_f_utf_char_t_to_char_1(sequence) == 0xe0) {
 
-        // Samaritan: U+0816 to U+0819.
-        if (sequence >= 0xe0a09600 && sequence <= 0xe0a09900) {
-          return F_true;
-        }
+        if (macro_f_utf_char_t_to_char_2(sequence) == 0xa0) {
 
-        // Samaritan: U+081B to U+0823.
-        if (sequence >= 0xe0a09b00 && sequence <= 0xe0a0a300) {
-          return F_true;
-        }
+          // Samaritan: U+0816 to U+0819.
+          if (sequence >= 0xe0a09600 && sequence <= 0xe0a09900) {
+            return F_true;
+          }
 
-        // Samaritan: U+0825 to U+0827.
-        if (sequence >= 0xe0a0a500 && sequence <= 0xe0a0a700) {
-          return F_true;
-        }
+          // Samaritan: U+081B to U+0823.
+          if (sequence >= 0xe0a09b00 && sequence <= 0xe0a0a300) {
+            return F_true;
+          }
 
-        // Samaritan: U+0829.
-        if (sequence == 0xe0a0a900) {
-          return F_true;
-        }
+          // Samaritan: U+0825 to U+0827.
+          if (sequence >= 0xe0a0a500 && sequence <= 0xe0a0a700) {
+            return F_true;
+          }
 
-        // Samaritan: U+082A to U+082D.
-        if (sequence >= 0xe0a0aa00 && sequence <= 0xe0a0ad00) {
-          return F_true;
-        }
+          // Samaritan: U+0829.
+          if (sequence == 0xe0a0a900) {
+            return F_true;
+          }
 
-        // Mandaic: U+0859 to U+085B.
-        if (sequence >= 0xe0a19900 && sequence <= 0xe0a19b00) {
-          return F_true;
-        }
+          // Samaritan: U+082A to U+082D.
+          if (sequence >= 0xe0a0aa00 && sequence <= 0xe0a0ad00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa1) {
 
-        // Arabic Extended-B: U+0898 to U+089F.
-        if (sequence >= 0xe0a29800 && sequence <= 0xe0a29f00) {
-          return F_true;
+          // Mandaic: U+0859 to U+085B.
+          if (sequence >= 0xe0a19900 && sequence <= 0xe0a19b00) {
+            return F_true;
+          }
         }
-
-        // Arabic Extended-A: U+08CA to U+08FF.
-        if (sequence >= 0xe0a38a00 && sequence <= 0xe0a3bf00) {
-          return F_true;
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa2) {
+
+          // Arabic Extended-B: U+0897 to U+089F.
+          if (sequence >= 0xe0a29700 && sequence <= 0xe0a29f00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa3) {
+
+          // Arabic Extended-A: U+08CA to U+08FF.
+          if (sequence >= 0xe0a38a00 && sequence <= 0xe0a3bf00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa4) {
 
-        // Devanagari: U+0900 to U+0903.
-        if (sequence >= 0xe0a48000 && sequence <= 0xe0a48300) {
-          return F_true;
+          // Devanagari: U+0900 to U+0903.
+          if (sequence >= 0xe0a48000 && sequence <= 0xe0a48300) {
+            return F_true;
+          }
+
+          // Devanagari: U+093A to U+093C.
+          if (sequence >= 0xe0a4ba00 && sequence <= 0xe0a4bc00) {
+            return F_true;
+          }
+
+          // Devanagari: U+093E to U+093F.
+          if (sequence >= 0xe0a4be00 && sequence <= 0xe0a4bf00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa5) {
+
+          // Devanagari: U+0940 to U+094F.
+          if (sequence >= 0xe0a58000 && sequence <= 0xe0a58f00) {
+            return F_true;
+          }
+
+          // Devanagari: U+0951 to U+0957.
+          if (sequence >= 0xe0a59100 && sequence <= 0xe0a59700) {
+            return F_true;
+          }
+
+          // Devanagari: U+0962 to U+0963.
+          if (sequence >= 0xe0a5a200 && sequence <= 0xe0a5a300) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa6) {
+
+          // Bengali: U+0981 to U+0983.
+          if (sequence >= 0xe0a68100 && sequence <= 0xe0a68300) {
+            return F_true;
+          }
+
+          // Bengali: U+09BC.
+          if (sequence == 0xe0a6bc00) {
+            return F_true;
+          }
+
+          // Bengali: U+09BE to U+09BF.
+          if (sequence >= 0xe0a6be00 && sequence <= 0xe0a6bf00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa7) {
+
+          // Bengali: U+09C0 to U+09C4.
+          if (sequence >= 0xe0a78000 && sequence <= 0xe0a78400) {
+            return F_true;
+          }
+
+          // Bengali: U+09C7, U+09C8.
+          if (sequence == 0xe0a78700 || sequence == 0xe0a78800) {
+            return F_true;
+          }
+
+          // Bengali: U+09CB to U+09CD.
+          if (sequence >= 0xe0a78b00 && sequence <= 0xe0a78d00) {
+            return F_true;
+          }
+
+          // Bengali: U+09E2, U+09E3, U+09FE.
+          if (sequence == 0xe0a7a200 || sequence == 0xe0a7a300 || sequence == 0xe0a7be00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa8) {
+
+          // Gurmukhi: U+0A01 to U+0A03.
+          if (sequence >= 0xe0a88100 && sequence <= 0xe0a88300) {
+            return F_true;
+          }
+
+          // Gurmukhi: U+0A3C.
+          if (sequence == 0xe0a8bc00) {
+            return F_true;
+          }
+
+          // Gurmukhi: U+0A3E to U+0A3F.
+          if (sequence >= 0xe0a8be00 && sequence <= 0xe0a8bf00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa9) {
+
+          // Gurmukhi: U+0A40 to U+0A42.
+          if (sequence >= 0xe0a98000 && sequence <= 0xe0a98200) {
+            return F_true;
+          }
+
+          // Gurmukhi: U+0A47 to U+0A48.
+          if (sequence >= 0xe0a98700 && sequence <= 0xe0a98800) {
+            return F_true;
+          }
+
+          // Gurmukhi: U+0A4B to U+0A4D.
+          if (sequence >= 0xe0a98b00 && sequence <= 0xe0a98d00) {
+            return F_true;
+          }
+
+          // Gurmukhi: U+0A51.
+          if (sequence == 0xe0a99100) {
+            return F_true;
+          }
+
+          // Gurmukhi: U+0A70, U+0A71, U+0A75.
+          if (sequence == 0xe0a9b000 || sequence == 0xe0a9b100 || sequence == 0xe0a9b500) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaa) {
+
+          // Gujarati: U+0A81 to U+0A82.
+          if (sequence >= 0xe0aa8100 && sequence <= 0xe0aa8200) {
+            return F_true;
+          }
+
+          // Gujarati: U+0ABC.
+          if (sequence == 0xe0aabc00) {
+            return F_true;
+          }
+
+          // Gujarati: U+0ABE to U+0ABF.
+          if (sequence >= 0xe0aabe00 && sequence <= 0xe0aabf00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xab) {
+
+          // Gujarati: U+0AC0 to U+0AC5.
+          if (sequence >= 0xe0ab8000 && sequence <= 0xe0ab8500) {
+            return F_true;
+          }
+
+          // Gujarati: U+0AC7 to U+0AC9.
+          if (sequence >= 0xe0ab8700 && sequence <= 0xe0ab8900) {
+            return F_true;
+          }
+
+          // Gujarati: U+0ACB to U+0ACD.
+          if (sequence >= 0xe0ab8b00 && sequence <= 0xe0ab8d00) {
+            return F_true;
+          }
+
+          // Gujarati: U+0AE2 to U+0AE3.
+          if (sequence >= 0xe0aba200 && sequence <= 0xe0aba300) {
+            return F_true;
+          }
+
+          // Gujarati: U+0AFA to U+0AFF.
+          if (sequence >= 0xe0abba00 && sequence <= 0xe0abbf00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xac) {
+
+          // Oriya: U+0B01, U+0B3C, U+0B3F.
+          if (sequence == 0xe0ac8100 || sequence == 0xe0acbc00 || sequence == 0xe0acbf00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xad) {
+
+          // Oriya: U+0B41 to U+0B44.
+          if (sequence >= 0xe0ad8100 && sequence <= 0xe0ad8400) {
+            return F_true;
+          }
+
+          // Oriya: U+0B4D, U+0B56, U+0B62, U+0B63.
+          if (sequence == 0xe0ad8d00 || sequence == 0xe0ad9600 || sequence == 0xe0ada200 || sequence == 0xe0ada300) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xae) {
+          // There are none here.
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaf) {
+
+          // Tamil: U+0BC0, U+0BCD.
+          if (sequence == 0xe0af8000 || sequence == 0xe0af8d00) {
+            return F_true;
+          }
         }
-
-        // Devanagari: U+093A to U+093C.
-        if (sequence >= 0xe0a4ba00 && sequence <= 0xe0a4bc00) {
-          return F_true;
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb0) {
+
+          // Telugu: U+0C00.
+          if (sequence == 0xe0b08000) {
+            return F_true;
+          }
+
+          // Telugu: U+0C3E to U+0C3F.
+          if (sequence >= 0xe0b0be00 && sequence <= 0xe0b0bf00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb1) {
+
+          // Telugu: U+0C40.
+          if (sequence == 0xe0b18000) {
+            return F_true;
+          }
 
-        // Devanagari: U+093E to U+094F.
-        if (sequence >= 0xe0a4be00 && sequence <= 0xe0a58f00) {
-          return F_true;
-        }
+          // Telugu: U+0C46 to U+0C48.
+          if (sequence >= 0xe0b18600 && sequence <= 0xe0b18800) {
+            return F_true;
+          }
 
-        // Devanagari: U+0951 to U+0957.
-        if (sequence >= 0xe0a59100 && sequence <= 0xe0a59700) {
-          return F_true;
-        }
+          // Telugu: U+0C4A to U+0C4D.
+          if (sequence >= 0xe0b18a00 && sequence <= 0xe0b18d00) {
+            return F_true;
+          }
 
-        // Devanagari: U+0962 to U+0963.
-        if (sequence >= 0xe0a5a200 && sequence <= 0xe0a5a300) {
-          return F_true;
+          // Telugu: U+0C55, U+0C56, U+0C62, U+0C63.
+          if (sequence == 0xe0b19500 || sequence == 0xe0b19600 || sequence == 0xe0b1a200 || sequence == 0xe0b1a300) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb2) {
 
-        // Bengali: U+0981 to U+0983.
-        if (sequence >= 0xe0a68100 && sequence <= 0xe0a68300) {
-          return F_true;
-        }
+          // Kannada: U+0C81.
+          if (sequence == 0xe0b28100) {
+            return F_true;
+          }
 
-        // Bengali: U+09BC.
-        if (sequence == 0xe0a6bc00) {
-          return F_true;
+          // Kannada: U+0CBC to U+0CBF.
+          if (sequence >= 0xe0b2bc00 && sequence <= 0xe0b2bf00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb3) {
 
-        // Bengali: U+09BE to U+09C4.
-        if (sequence >= 0xe0a6be00 && sequence <= 0xe0a78400) {
-          return F_true;
-        }
+          // Kannada: U+0CC0 to U+0CCD.
+          if (sequence >= 0xe0b38000 && sequence <= 0xe0b38d00) {
+            return F_true;
+          }
 
-        // Bengali: U+09C7, U+09C8.
-        if (sequence == 0xe0a78700 || sequence == 0xe0a78800) {
-          return F_true;
+          // Kannada: U+0CE2, U+0CE3, U+0CF3.
+          if (sequence == 0xe0b3a200 || sequence == 0xe0b3a300 || sequence == 0xe0b3b300) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb4) {
 
-        // Bengali: U+09CB to U+09CD.
-        if (sequence >= 0xe0a78b00 && sequence <= 0xe0a78d00) {
-          return F_true;
+          // Malayalam: U+0D01.
+          if (sequence == 0xe0b48100) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb5) {
 
-        // Bengali: U+09E2, U+09E3, U+09FE.
-        if (sequence == 0xe0a7a200 || sequence == 0xe0a7a300 || sequence == 0xe0a7be00) {
-          return F_true;
-        }
+          // Malayalam: U+0D41 to U+0D44.
+          if (sequence >= 0xe0b58100 && sequence <= 0xe0b58400) {
+            return F_true;
+          }
 
-        // Gurmukhi: U+0A01 to U+0A03.
-        if (sequence >= 0xe0a88100 && sequence <= 0xe0a88300) {
-          return F_true;
+          // Malayalam: U+0D4D, U+0D62, U+0D63.
+          if (sequence == 0xe0b58d00 || sequence == 0xe0b5a200 || sequence == 0xe0b5a300) {
+            return F_true;
+          }
         }
-
-        // Gurmukhi: U+0A3C.
-        if (sequence == 0xe0a8bc00) {
-          return F_true;
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb6) {
+          // There are none here.
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb7) {
 
-        // Gurmukhi: U+0A3E to U+0A42.
-        if (sequence >= 0xe0a8be00 && sequence <= 0xe0a98200) {
-          return F_true;
-        }
+          // Sinhala: U+0DCA.
+          if (sequence == 0xe0b78a00) {
+            return F_true;
+          }
 
-        // Gurmukhi: U+0A47 to U+0A48.
-        if (sequence >= 0xe0a98700 && sequence <= 0xe0a98800) {
-          return F_true;
-        }
+          // Sinhala: U+0DD2 to U+0DD4.
+          if (sequence >= 0xe0b79200 && sequence <= 0xe0b79400) {
+            return F_true;
+          }
 
-        // Gurmukhi: U+0A4B to U+0A4D.
-        if (sequence >= 0xe0a98b00 && sequence <= 0xe0a98d00) {
-          return F_true;
+          // Sinhala: U+0DD6.
+          if (sequence == 0xe0b79600) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb8) {
 
-        // Gurmukhi: U+0A51.
-        if (sequence == 0xe0a99100) {
-          return F_true;
-        }
+          // Thai: U+0E31.
+          if (sequence == 0xe0b8b100) {
+            return F_true;
+          }
 
-        // Gurmukhi: U+0A70, U+0A71, U+0A75.
-        if (sequence == 0xe0a9b000 || sequence == 0xe0a9b100 || sequence == 0xe0a9b500) {
-          return F_true;
+          // Thai: U+0E34 to U+0E3A.
+          if (sequence >= 0xe0b8b400 && sequence <= 0xe0b8ba00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb9) {
 
-        // Gujarati: U+0A81 to U+0A82.
-        if (sequence >= 0xe0aa8100 && sequence <= 0xe0aa8200) {
-          return F_true;
+          // Thai: U+0E47 to U+0E4E.
+          if (sequence >= 0xe0b98700 && sequence <= 0xe0b98e00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xba) {
 
-        // Gujarati: U+0ABC.
-        if (sequence == 0xe0aabc00) {
-          return F_true;
-        }
+          // Lao: U+0EB1.
+          if (sequence == 0xe0bab100) {
+            return F_true;
+          }
 
-        // Gujarati: U+0ABE to U+0AC5.
-        if (sequence >= 0xe0aabe00 && sequence <= 0xe0ab8500) {
-          return F_true;
-        }
+          // Lao: U+0EB4 to U+0EB9.
+          if (sequence >= 0xe0bab400 && sequence <= 0xe0bab900) {
+            return F_true;
+          }
 
-        // Gujarati: U+0AC7 to U+0AC9.
-        if (sequence >= 0xe0ab8700 && sequence <= 0xe0ab8900) {
-          return F_true;
+          // Lao: U+0EBB, U+0EBC.
+          if (sequence == 0xe0babb00 || sequence == 0xe0babc00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xbb) {
 
-        // Gujarati: U+0ACB to U+0ACD.
-        if (sequence >= 0xe0ab8b00 && sequence <= 0xe0ab8d00) {
-          return F_true;
+          // Lao: U+0ECE.
+          if (sequence == 0xe0bb8e00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xbc) {
 
-        // Gujarati: U+0AE2 to U+0AE3.
-        if (sequence >= 0xe0aba200 && sequence <= 0xe0aba300) {
-          return F_true;
-        }
+          // Tibetan: U+0F18 to U+0F19.
+          if (sequence >= 0xe0bc9800 && sequence <= 0xe0bc9900) {
+            return F_true;
+          }
 
-        // Gujarati: U+0AFA to U+0AFF.
-        if (sequence >= 0xe0abba00 && sequence <= 0xe0abbf00) {
-          return F_true;
+          // Tibetan: U+0F35, U+0F37, U+0F39.
+          if (sequence == 0xe0bcb500 || sequence == 0xe0bcb700 || sequence == 0xe0bcb900) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xbd) {
 
-        // Oriya: U+0B01, U+0B3C, U+0B3F.
-        if (sequence == 0xe0ac8100 || sequence == 0xe0acbc00 || sequence == 0xe0acbf00) {
-          return F_true;
+          // Tibetan: U+0F71 to U+0F7E.
+          if (sequence >= 0xe0bdb100 && sequence <= 0xe0bdbe00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xbe) {
 
-        // Oriya: U+0B41 to U+0B44.
-        if (sequence >= 0xe0ad8100 && sequence <= 0xe0ad8400) {
-          return F_true;
-        }
+          // Tibetan: U+0F80 to U+0F84.
+          if (sequence >= 0xe0be8000 && sequence <= 0xe0be8400) {
+            return F_true;
+          }
 
-        // Oriya: U+0B4D, U+0B56, U+0B62, U+0B63.
-        if (sequence == 0xe0ad8d00 || sequence == 0xe0ad9600 || sequence == 0xe0ada200 || sequence == 0xe0ada300) {
-          return F_true;
-        }
+          // Tibetan: U+0F86 to U+0F87.
+          if (sequence >= 0xe0be8600 && sequence <= 0xe0be8700) {
+            return F_true;
+          }
 
-        // Tamil: U+0BC0, U+0BCD.
-        if (sequence == 0xe0af8000 || sequence == 0xe0af8d00) {
-          return F_true;
-        }
+          // Tibetan: U+0F8D to U+0F97.
+          if (sequence >= 0xe0be8d00 && sequence <= 0xe0be9700) {
+            return F_true;
+          }
 
-        // Telugu: U+0C00.
-        if (sequence == 0xe0b08000) {
-          return F_true;
+          // Tibetan: U+0F99 to U+0FBC.
+          if (sequence >= 0xe0be9900 && sequence <= 0xe0bebc00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xbf) {
 
-        // Telugu: U+0C3E to U+0C40.
-        if (sequence >= 0xe0b0be00 && sequence <= 0xe0b18000) {
-          return F_true;
+          // Tibetan: U+0FC6.
+          if (sequence == 0xe0bf8600) {
+            return F_true;
+          }
         }
+      }
+      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe1) {
 
-        // Telugu: U+0C46 to U+0C48.
-        if (sequence >= 0xe0b18600 && sequence <= 0xe0b18800) {
-          return F_true;
+        if (macro_f_utf_char_t_to_char_2(sequence) == 0x80) {
+          // Myanmar: U+102D to U+1030.
+          if (sequence >= 0xe180ad00 && sequence <= 0xe180b000) {
+            return F_true;
+          }
+
+          // Myanmar: U+1039 to U+103A.
+          if (sequence >= 0xe180b900 && sequence <= 0xe180ba00) {
+            return F_true;
+          }
+
+          // Myanmar: U+103D to U+103E.
+          if (sequence >= 0xe180bd00 && sequence <= 0xe180be00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0x81) {
 
-        // Telugu: U+0C4A to U+0C4D.
-        if (sequence >= 0xe0b18a00 && sequence <= 0xe0b18d00) {
-          return F_true;
+          // Myanmar: U+1058 to U+1059.
+          if (sequence >= 0xe1819800 && sequence <= 0xe1819900) {
+            return F_true;
+          }
+
+          // Myanmar: U+105E to U+1060.
+          if (sequence >= 0xe1819e00 && sequence <= 0xe181a000) {
+            return F_true;
+          }
+
+          // Myanmar: U+1071 to U+1074.
+          if (sequence >= 0xe181b100 && sequence <= 0xe181b400) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0x82) {
 
-        // Telugu: U+0C55, U+0C56, U+0C62, U+0C63.
-        if (sequence == 0xe0b19500 || sequence == 0xe0b19600 || sequence == 0xe0b1a200 || sequence == 0xe0b1a300) {
-          return F_true;
+          // Myanmar: U+1082, U+1085, U+1086, U+108D.
+          if (sequence == 0xe1828200 || sequence == 0xe1828500 || sequence == 0xe1828600 || sequence == 0xe1828d00) {
+            return F_true;
+          }
+
+          // Myanmar: U+109D.
+          if (sequence == 0xe1829d00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) < 0x8d) {
+          // There are none here.
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0x8d) {
 
-        // Kannada: U+0C81.
-        if (sequence == 0xe0b28100) {
-          return F_true;
+          // Ethiopic: U+135D to U+135F.
+          if (sequence >= 0xe18d9d00 && sequence <= 0xe18d9f00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) < 0x9c) {
+          // There are none here.
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9c) {
 
-        // Kannada: U+0CBC to U+0CCD.
-        if (sequence >= 0xe0b2bc00 && sequence <= 0xe0b38d00) {
-          return F_true;
+          // Tagalog: U+1712 to U+1714.
+          if (sequence >= 0xe19c9200 && sequence <= 0xe19c9400) {
+            return F_true;
+          }
+
+          // Hanunoo: U+1732 to U+1734.
+          if (sequence >= 0xe19cb200 && sequence <= 0xe19cb400) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) {
 
-        // Kannada: U+0CE2, U+0CE3, U+0CF3.
-        if (sequence == 0xe0b3a200 || sequence == 0xe0b3a300 || sequence == 0xe0b3b300) {
-          return F_true;
+          // Buhid: U+1752 to U+1753.
+          if (sequence >= 0xe19d9200 && sequence <= 0xe19d9300) {
+            return F_true;
+          }
+
+          // Tagbanwa: U+1772 to U+1773.
+          if (sequence >= 0xe19db200 && sequence <= 0xe19db300) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9e) {
 
-        // Malayalam: U+0D01.
-        if (sequence == 0xe0b48100) {
-          return F_true;
+          // Khmer: U+17B4 to U+17B5.
+          if (sequence >= 0xe19eb400 && sequence <= 0xe19eb500) {
+            return F_true;
+          }
+
+          // Khmer: U+17B7 to U+17BD.
+          if (sequence >= 0xe19eb700 && sequence <= 0xe19ebd00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9f) {
 
-        // Malayalam: U+0D41 to U+0D44.
-        if (sequence >= 0xe0b58100 && sequence <= 0xe0b58400) {
-          return F_true;
+          // Khmer: U+17C6, U+17C9.
+          if (sequence == 0xe19f8600 || sequence == 0xe19f8900) {
+            return F_true;
+          }
+
+          // Khmer: U+17CA to U+17D3.
+          if (sequence >= 0xe19f8a00 && sequence <= 0xe19f9300) {
+            return F_true;
+          }
+
+          // Khmer: U+17DD.
+          if (sequence == 0xe19f9d00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa0) {
 
-        // Malayalam: U+0D4D, U+0D62, U+0D63.
-        if (sequence == 0xe0b58d00 || sequence == 0xe0b5a200 || sequence == 0xe0b5a300) {
-          return F_true;
+          // Mongolian: U+180B to U+180D.
+          if (sequence >= 0xe1a08b00 && sequence <= 0xe1a08d00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa1) {
+          // There are none here.
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa2) {
 
-        // Sinhala: U+0DCA.
-        if (sequence == 0xe0b78a00) {
-          return F_true;
+          // Mongolian: U+18A9.
+          if (sequence == 0xe1a2a900) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa3) {
+          // There are none here.
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa4) {
 
-        // Sinhala: U+0DD2 to U+0DD4.
-        if (sequence >= 0xe0b79200 && sequence <= 0xe0b79400) {
-          return F_true;
+          // Mongolian: U+1920 to U+1922.
+          if (sequence >= 0xe1a4a000 && sequence <= 0xe1a4a200) {
+            return F_true;
+          }
+
+          // Limbu: U+1927, U+1928, U+1932.
+          if (sequence == 0xe1a4a700 || sequence == 0xe1a4a800 || sequence == 0xe1a4b200) {
+            return F_true;
+          }
+
+          // Limbu: U+1939 to U+193B.
+          if (sequence >= 0xe1a4b900 && sequence <= 0xe1a4bb00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) < 0xa8) {
+          // There are none here.
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa8) {
 
-        // Sinhala: U+0DD6.
-        if (sequence == 0xe0b79600) {
-          return F_true;
+          // Buginese: U+1A17 to U+1A18.
+          if (sequence >= 0xe1a89700 && sequence <= 0xe1a89800) {
+            return F_true;
+          }
+
+          // Buginese: U+1A1B.
+          if (sequence == 0xe1a89b00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa9) {
 
-        // Thai: U+0E31.
-        if (sequence == 0xe0b8b100) {
-          return F_true;
+          // Tai Tham: U+1A56.
+          if (sequence == 0xe1a99600) {
+            return F_true;
+          }
+
+          // Tai Tham: U+1A58 to U+1A5E.
+          if (sequence >= 0xe1a99800 && sequence <= 0xe1a99e00) {
+            return F_true;
+          }
+
+          // Tai Tham: U+1A60, U+1A62.
+          if (sequence == 0xe1a9a000 || sequence == 0xe1a9a200) {
+            return F_true;
+          }
+
+          // Tai Tham: U+1A65 to U+1A6C.
+          if (sequence >= 0xe1a9a500 && sequence <= 0xe1a9ac00) {
+            return F_true;
+          }
+
+          // Tai Tham: U+1A73 to U+1A7C.
+          if (sequence >= 0xe1a9b300 && sequence <= 0xe1a9bc00) {
+            return F_true;
+          }
+
+          // Tai Tham: U+1A7F.
+          if (sequence == 0xe1a9bf00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaa) {
+
+          // Diacritical Marks Extended: U+1AB0 to U+1ABF.
+          if (sequence >= 0xe1aab000 && sequence <= 0xe1aabf00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xab) {
 
-        // Thai: U+0E34 to U+0E3A.
-        if (sequence >= 0xe0b8b400 && sequence <= 0xe0b8ba00) {
-          return F_true;
+          // Diacritical Marks Extended: U+1AC0 to U+1ACE.
+          if (sequence >= 0xe1ab8000 && sequence <= 0xe1ab8e00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xac) {
 
-        // Thai: U+0E47 to U+0E4E.
-        if (sequence >= 0xe0b98700 && sequence <= 0xe0b98e00) {
-          return F_true;
+          // Balinese: U+1B00 to U+1B04.
+          if (sequence >= 0xe1ac8000 && sequence <= 0xe1ac8400) {
+            return F_true;
+          }
+
+          // Balinese: U+1B34 to U+1B3F.
+          if (sequence >= 0xe1acb400 && sequence <= 0xe1acbf00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xad) {
 
-        // Lao: U+0EB1.
-        if (sequence == 0xe0bab100) {
-          return F_true;
+          // Balinese: U+1B40 to U+1B44.
+          if (sequence >= 0xe1ad8000 && sequence <= 0xe1ad8400) {
+            return F_true;
+          }
+
+          // Balinese: U+1B6B to U+1B73.
+          if (sequence >= 0xe1adab00 && sequence <= 0xe1adb300) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xae) {
+
+          // Sundanese: U+1B80 to U+1B81.
+          if (sequence >= 0xe1ae8000 && sequence <= 0xe1ae8100) {
+            return F_true;
+          }
+
+          // Sundanese: U+1BA2 to U+1BA5.
+          if (sequence >= 0xe1aea200 && sequence <= 0xe1aea500) {
+            return F_true;
+          }
 
-        // Lao: U+0EB4 to U+0EB9.
-        if (sequence >= 0xe0bab400 && sequence <= 0xe0bab900) {
-          return F_true;
+          // Sundanese: U+1BA8 to U+1BA9.
+          if (sequence >= 0xe1aea800 && sequence <= 0xe1aea900) {
+            return F_true;
+          }
+
+          // Sundanese: U+1BAB to U+1BAD.
+          if (sequence >= 0xe1aeab00 && sequence <= 0xe1aead00) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaf) {
+
+          // Batak: U+1BE6, U+1BE8, U+1BE9, U+1BED.
+          if (sequence == 0xe1afa600 || sequence == 0xe1afa800 || sequence == 0xe1afa900 || sequence == 0xe1afad00) {
+            return F_true;
+          }
+
+          // Batak: U+1BEF, U+1BF0, U+1BF1.
+          if (sequence == 0xe1afaf00 || sequence == 0xe1afb000 || sequence == 0xe1afb100) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb0) {
+
+          // Lepcha: U+1C2C to U+1C33.
+          if (sequence >= 0xe1b0ac00 && sequence <= 0xe1b0b300) {
+            return F_true;
+          }
+
+          // Lepcha: U+1C36 to U+1C37.
+          if (sequence >= 0xe1b0b600 && sequence <= 0xe1b0b700) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) < 0xb3) {
+          // There are none here.
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb3) {
 
-        // Lao: U+0EBB, U+0EBC, U+0ECE.
-        if (sequence == 0xe0babb00 || sequence == 0xe0babc00 || sequence == 0xe0bb8e00) {
-          return F_true;
+          // Vedic Extensions: U+1CD0 to U+1CD2.
+          if (sequence >= 0xe1b39000 && sequence <= 0xe1b39200) {
+            return F_true;
+          }
+
+          // Vedic Extensions: U+1CD4 to U+1CE8.
+          if (sequence >= 0xe1b39400 && sequence <= 0xe1b3a800) {
+            return F_true;
+          }
+
+          // Vedic Extensions: U+1CED, U+1CF4, U+1CF8, U+1CF9.
+          if (sequence == 0xe1b3ad00 || sequence == 0xe1b3b400 || sequence == 0xe1b3b800 || sequence == 0xe1b3b900) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb7) {
 
-        // Tibetan: U+0F18 to U+0F19.
-        if (sequence >= 0xe0bc9800 && sequence <= 0xe0bc9900) {
-          return F_true;
+          // Diacritical Marks Supplement: U+1DC0 to U+1DFF.
+          if (sequence >= 0xe1b78000 && sequence <= 0xe1b7bf00) {
+            return F_true;
+          }
+
+          // Diacritical Marks Supplement: U+1DFB to U+1DFF.
+          if (sequence >= 0xe1b7bb00 && sequence <= 0xe1b7bf00) {
+            return F_true;
+          }
         }
+      }
+      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe2) {
 
-        // Tibetan: U+0F35, U+0F37, U+0F39.
-        if (sequence == 0xe0bcb500 || sequence == 0xe0bcb700 || sequence == 0xe0bcb900) {
+        // Diacritical Marks For Symbols: U+20D0 to U+20F0.
+        if (sequence >= 0xe2839000 && sequence <= 0xe283b000) {
           return F_true;
         }
+      }
+      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe3) {
 
-        // Tibetan: U+0F71 to U+0F7E.
-        if (sequence >= 0xe0bdb100 && sequence <= 0xe0bdbe00) {
+        // CJK Symbols and Punctuation: U+302A to U+302D.
+        if (sequence >= 0xe380aa00 && sequence <= 0xe380ad00) {
           return F_true;
         }
 
-        // Tibetan: U+0F80 to U+0F84.
-        if (sequence >= 0xe0be8000 && sequence <= 0xe0be8400) {
+        // Hiragana: U+3099, U+309A.
+        if (sequence == 0xe3829900 || sequence == 0xe3829a00) {
           return F_true;
         }
+      }
+      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xea) {
 
-        // Tibetan: U+0F86 to U+0F87.
-        if (sequence >= 0xe0be8600 && sequence <= 0xe0be8700) {
-          return F_true;
+        if (macro_f_utf_char_t_to_char_2(sequence) == 0x99) {
+          // Cyrillic Extended-B: U+3099.
+          if (sequence == 0xea99af00) {
+            return F_true;
+          }
+
+          // Cyrillic Extended-B: U+A66F to U+A672.
+          if (sequence >= 0xea99af00 && sequence <= 0xea99b200) {
+            return F_true;
+          }
+
+          // Cyrillic Extended-B: U+A674 to U+A67F.
+          if (sequence >= 0xea99b400 && sequence <= 0xea99bf00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9a) {
 
-        // Tibetan: U+0F8D to U+0F97.
-        if (sequence >= 0xe0be8d00 && sequence <= 0xe0be9700) {
-          return F_true;
+          // Cyrillic Extended-B: U+A680 to U+A69F.
+          if (sequence >= 0xea9a8000 && sequence <= 0xea9a9f00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9b) {
 
-        // Tibetan: U+0F99 to U+0FBC.
-        if (sequence >= 0xe0be9900 && sequence <= 0xe0bebc00) {
-          return F_true;
+          // Bamum: U+A6F0 to U+A6F1.
+          if (sequence >= 0xea9bb000 && sequence <= 0xea9bb100) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) < 0xa0) {
+          // There are none here.
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa0) {
 
-        // Tibetan: U+0FC6.
-        if (sequence == 0xe0bf8600) {
-          return F_true;
+          // Syloti Nagri: U+A802, U+A806, U+A80B, U+A825.
+          if (sequence == 0xeaa08200 || sequence == 0xeaa08600 || sequence == 0xeaa08b00 || sequence == 0xeaa0a500) {
+            return F_true;
+          }
+
+          // Syloti Nagri: U+A826.
+          if (sequence == 0xeaa0a600) {
+            return F_true;
+          }
         }
-      }
-      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe1) {
+        else if (macro_f_utf_char_t_to_char_2(sequence) < 0xa3) {
+          //There are none here.
+        }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa3) {
 
-        // Myanmar: U+102D to U+1030.
-        if (sequence >= 0xe180ad00 && sequence <= 0xe180b000) {
-          return F_true;
+          // Saurashtra: U+A8C4, U+A8C5.
+          if (sequence == 0xeaa38400 || sequence == 0xeaa38500) {
+            return F_true;
+          }
+
+          // Devanagari Extended: U+A8E0 to U+A8F1.
+          if (sequence >= 0xeaa3a000 && sequence <= 0xeaa3b100) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa4) {
 
-        // Myanmar: U+1039 to U+103A.
-        if (sequence >= 0xe180b900 && sequence <= 0xe180ba00) {
-          return F_true;
+          // Kayah Li: U+A926 to U+A92D.
+          if (sequence >= 0xeaa4a600 && sequence <= 0xeaa4ad00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa5) {
 
-        // Myanmar: U+103D to U+103E.
-        if (sequence >= 0xe180bd00 && sequence <= 0xe180be00) {
-          return F_true;
+          // Rejang: U+A947 to U+A951.
+          if (sequence >= 0xeaa58700 && sequence <= 0xeaa59100) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa6) {
 
-        // Myanmar: U+1058 to U+1059.
-        if (sequence >= 0xe1819800 && sequence <= 0xe1819900) {
-          return F_true;
+          // Javanese: U+A980 to U+A982.
+          if (sequence >= 0xeaa68000 && sequence <= 0xeaa68200) {
+            return F_true;
+          }
+
+          // Javanese: U+A9B3.
+          if (sequence == 0xeaa6b300) {
+            return F_true;
+          }
+
+          // Javanese: U+A9B6 to U+A9B9.
+          if (sequence >= 0xeaa6b600 && sequence <= 0xeaa6b900) {
+            return F_true;
+          }
+
+          // Javanese: U+A9BC.
+          if (sequence == 0xeaa6bc00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa7) {
 
-        // Myanmar: U+105E to U+1060.
-        if (sequence >= 0xe1819e00 && sequence <= 0xe181a000) {
-          return F_true;
+          // Myanmar Extended-B: U+A9E5.
+          if (sequence == 0xeaa7a500) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa8) {
 
-        // Myanmar: U+1071 to U+1074.
-        if (sequence >= 0xe181b100 && sequence <= 0xe181b400) {
-          return F_true;
+          // Cham: U+AA29 to U+AA2E.
+          if (sequence >= 0xeaa8a900 && sequence <= 0xeaa8ae00) {
+            return F_true;
+          }
+
+          // Cham: U+AA31 to U+AA32.
+          if (sequence >= 0xeaa8b100 && sequence <= 0xeaa8b200) {
+            return F_true;
+          }
+
+          // Cham: U+AA35 to U+AA36.
+          if (sequence >= 0xeaa8b500 && sequence <= 0xeaa8b600) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa9) {
 
-        // Myanmar: U+1082, U+1085, U+1086, U+108D.
-        if (sequence == 0xe1828200 || sequence == 0xe1828500 || sequence == 0xe1828600 || sequence == 0xe1828d00) {
-          return F_true;
+          // Cham: U+AA43, U+AA4C.
+          if (sequence == 0xeaa98300 || sequence == 0xeaa98c00) {
+            return F_true;
+          }
+
+          // Tai Viet: U+AA7C.
+          if (sequence == 0xeaa9bc00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaa) {
 
-        // Myanmar: U+109D.
-        if (sequence == 0xe1829d00) {
-          return F_true;
+          // Tai Viet: U+AAB0.
+          if (sequence == 0xeaaab000) {
+            return F_true;
+          }
+
+          // Tai Viet: U+AAB2 to U+AAB4.
+          if (sequence >= 0xeaaab200 && sequence <= 0xeaaab400) {
+            return F_true;
+          }
+
+          // Tai Viet: U+AAB7 to U+AAB8.
+          if (sequence >= 0xeaaab700 && sequence <= 0xeaaab800) {
+            return F_true;
+          }
+
+          // Tai Viet: U+AABE to U+AABF.
+          if (sequence >= 0xeaaabe00 && sequence <= 0xeaaabf00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xab) {
 
-        // Ethiopic: U+135D to U+135F.
-        if (sequence >= 0xe18d9d00 && sequence <= 0xe18d9f00) {
-          return F_true;
+          // Tai Viet: U+AAC1.
+          if (sequence == 0xeaab8100) {
+            return F_true;
+          }
+
+          // Meetei Mayek Extensions: U+AAEC, U+AAED, U+AAF6.
+          if (sequence == 0xeaabac00 || sequence == 0xeaabad00 || sequence == 0xeaabb600) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaf) {
 
-        // Tagalog: U+1712 to U+1714.
-        if (sequence >= 0xe19c9200 && sequence <= 0xe19c9400) {
-          return F_true;
+          // Meetei Mayek: U+ABE5, U+ABE8, U+ABED.
+          if (sequence == 0xeaafa500 || sequence == 0xeaafa800 || sequence == 0xeaafad00) {
+            return F_true;
+          }
         }
+      }
+      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xef) {
 
-        // Hanunoo: U+1732 to U+1734.
-        if (sequence >= 0xe19cb200 && sequence <= 0xe19cb400) {
-          return F_true;
+        if (macro_f_utf_char_t_to_char_2(sequence) == 0xac) {
+
+          // Alphabetic Presentation Forms: U+FB1E.
+          if (sequence == 0xefac9e00) {
+            return F_true;
+          }
         }
+        else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb8) {
 
-        // Buhid: U+1752 to U+1753.
-        if (sequence >= 0xe19d9200 && sequence <= 0xe19d9300) {
-          return F_true;
+          // Variation Selectors: U+FE00 to U+FE0F.
+          if (sequence >= 0xefb88000 && sequence <= 0xefb88f00) {
+            return F_true;
+          }
+
+          // Variation Selectors: U+FE20 to U+FE0F.
+          if (sequence >= 0xefb88000 && sequence <= 0xefb88f00) {
+            return F_true;
+          }
+
+          // Combining Half Marks: U+FE20 to U+FE2F.
+          if (sequence >= 0xefb8a000 && sequence <= 0xefb8af00) {
+            return F_true;
+          }
         }
+      }
 
-        // Tagbanwa: U+1772 to U+1773.
-        if (sequence >= 0xe19db200 && sequence <= 0xe19db300) {
+      return F_false;
+    }
+
+    if (macro_f_utf_char_t_to_char_1(sequence) == 0xf0) {
+
+      if (macro_f_utf_char_t_to_char_2(sequence) == 0x90) {
+
+        // Phaistos Disc: U+101FD.
+        if (sequence == 0xf09087bd) {
           return F_true;
         }
 
-        // Khmer: U+17B4 to U+17B5.
-        if (sequence >= 0xe19eb400 && sequence <= 0xe19eb500) {
+        // Coptic Epact Numbers: U+102E0.
+        if (sequence == 0xf0908ba0) {
           return F_true;
         }
 
-        // Khmer: U+17B7 to U+17BD.
-        if (sequence >= 0xe19eb700 && sequence <= 0xe19ebd00) {
+        // Old Permic: U+10376 to U+1037A.
+        if (sequence >= 0xf0908db6 && sequence <= 0xf0908dba) {
           return F_true;
         }
 
-        // Khmer: U+17C6, U+17C9.
-        if (sequence == 0xe19f8600 || sequence == 0xe19f8900) {
+        // Kharoshthi: U+10A01 to U+10A03.
+        if (sequence >= 0xf090a881 && sequence <= 0xf090a883) {
           return F_true;
         }
 
-        // Khmer: U+17CA to U+17D3.
-        if (sequence >= 0xe19f8a00 && sequence <= 0xe19f9300) {
+        // Kharoshthi: U+10A01, U+10A03, U+10A05, U+10A06.
+        if (sequence == 0xf090a881 || sequence == 0xf090a883 || sequence == 0xf090a885 || sequence == 0xf090a886) {
           return F_true;
         }
 
-        // Khmer: U+17DD.
-        if (sequence == 0xe19f9d00) {
+        // Kharoshthi: U+10A0C to U+10A0F.
+        if (sequence >= 0xf090a88c && sequence <= 0xf090a88f) {
           return F_true;
         }
 
-        // Mongolian: U+180B to U+180D.
-        if (sequence >= 0xe1a08b00 && sequence <= 0xe1a08d00) {
+        // Kharoshthi: U+10A38 to U+10A3A.
+        if (sequence >= 0xf090a8b8 && sequence <= 0xf090a8ba) {
           return F_true;
         }
 
-        // Mongolian: U+18A9.
-        if (sequence == 0xe1a2a900) {
+        // Kharoshthi: U+10A3F.
+        if (sequence == 0xf090a8bf) {
           return F_true;
         }
 
-        // Mongolian: U+1920 to U+1922.
-        if (sequence >= 0xe1a4a000 && sequence <= 0xe1a4a200) {
+        // Manichaean: U+10AE5, U+10AE6.
+        if (sequence == 0xf090aba5 || sequence == 0xf090aba6) {
           return F_true;
         }
 
-        // Limbu: U+1927, U+1928, U+1932.
-        if (sequence == 0xe1a4a700 || sequence == 0xe1a4a800 || sequence == 0xe1a4b200) {
+        // Hanifi Rohingya: U+10D24 to U+10D27.
+        if (sequence >= 0xf090b4a3 && sequence <= 0xf090b4a7) {
           return F_true;
         }
 
-        // Limbu: U+1939 to U+193B.
-        if (sequence >= 0xe1a4b900 && sequence <= 0xe1a4bb00) {
+        // Garay: U+10D69 to U+10D6A.
+        if (sequence >= 0xf090b5a9 && sequence <= 0xf090b5aa) {
           return F_true;
         }
 
-        // Buginese: U+1A17 to U+1A18.
-        if (sequence >= 0xe1a89700 && sequence <= 0xe1a89800) {
+        // Yezidi: U+10EAB to U+10EAD.
+        if (sequence >= 0xf090baab && sequence <= 0xf090baad) {
           return F_true;
         }
 
-        // Buginese: U+1A1B.
-        if (sequence == 0xe1a89b00) {
+        // Arabic Extended-C: U+10EFC to U+10EFF.
+        if (sequence >= 0xf090bbbc && sequence <= 0xf090bbbf) {
           return F_true;
         }
+      }
+      else if (macro_f_utf_char_t_to_char_2(sequence) == 0x91) {
 
-        // Tai Tham: U+1A56.
-        if (sequence == 0xe1a99600) {
+        // Brahmi: U+11001.
+        if (sequence == 0xf0918081) {
           return F_true;
         }
 
-        // Tai Tham: U+1A58 to U+1A5E.
-        if (sequence >= 0xe1a99800 && sequence <= 0xe1a99e00) {
+        // Brahmi: U+11038 to U+11046.
+        if (sequence >= 0xf09180b8 && sequence <= 0xf0918186) {
           return F_true;
         }
 
-        // Tai Tham: U+1A60, U+1A62.
-        if (sequence == 0xe1a9a000 || sequence == 0xe1a9a200) {
+        // Brahmi .. Kaithi: U+1107F to U+11081.
+        if (sequence >= 0xf09181bf && sequence <= 0xf0918281) {
           return F_true;
         }
 
-        // Tai Tham: U+1A65 to U+1A6C.
-        if (sequence >= 0xe1a9a500 && sequence <= 0xe1a9ac00) {
+        // Kaithi: U+110B3 to U+110B6.
+        if (sequence >= 0xf09182b3 && sequence <= 0xf09182b6) {
           return F_true;
         }
 
-        // Tai Tham: U+1A73 to U+1A7C.
-        if (sequence >= 0xe1a9b300 && sequence <= 0xe1a9bc00) {
+        // Kaithi: U+110B9, U+110BA.
+        if (sequence == 0xf09182b9 || sequence == 0xf09182ba) {
           return F_true;
         }
 
-        // Tai Tham: U+1A7F.
-        if (sequence == 0xe1a9bf00) {
+        // Chakma: U+11100 to U+11102.
+        if (sequence >= 0xf0918480 && sequence <= 0xf0918482) {
           return F_true;
         }
 
-        // Diacritical Marks Extended: U+1AB0 to U+1ACE.
-        if (sequence >= 0xe1aab000 && sequence <= 0xe1ab8e00) {
+        // Chakma: U+11127 to U+1112B.
+        if (sequence >= 0xf09184a7 && sequence <= 0xf09184ab) {
           return F_true;
         }
 
-        // Balinese: U+1B00 to U+1B03.
-        if (sequence >= 0xe1ac8000 && sequence <= 0xe1ac8300) {
+        // Chakma: U+1112D to U+11134.
+        if (sequence >= 0xf09184ad && sequence <= 0xf09184b4) {
           return F_true;
         }
 
-        // Balinese: U+1B34.
-        if (sequence == 0xe1acb400) {
+        // Mahajani: U+11173.
+        if (sequence == 0xf09185b3) {
           return F_true;
         }
 
-        // Balinese: U+1B36 to U+1B3A.
-        if (sequence >= 0xe1acb600 && sequence <= 0xe1acba00) {
+        // Sharada: U+11180 to U+11181.
+        if (sequence >= 0xf0918680 && sequence <= 0xf0918681) {
           return F_true;
         }
 
-        // Balinese: U+1B3C, U+1B42.
-        if (sequence == 0xe1acbc00 || sequence == 0xe1ad8200) {
+        // Sharada: U+111B6 to U+111BE.
+        if (sequence >= 0xf09186b6 && sequence <= 0xf09186be) {
           return F_true;
         }
 
-        // Balinese: U+1B6B to U+1B73.
-        if (sequence >= 0xe1adab00 && sequence <= 0xe1adb300) {
+        // Sharada: U+111CA to U+111CC.
+        if (sequence >= 0xf091878a && sequence <= 0xf091878c) {
           return F_true;
         }
 
-        // Sundanese: U+1B80 to U+1B81.
-        if (sequence >= 0xe1ae8000 && sequence <= 0xe1ae8100) {
+        // Sharada: U+111CA to U+111CC.
+        if (sequence >= 0xf091878a && sequence <= 0xf091878c) {
           return F_true;
         }
 
-        // Sundanese: U+1BA2 to U+1BA5.
-        if (sequence >= 0xe1aea200 && sequence <= 0xe1aea500) {
+        // Khojki: U+1122F to U+11231.
+        if (sequence >= 0xf09188af && sequence <= 0xf09188b1) {
           return F_true;
         }
 
-        // Sundanese: U+1BA8 to U+1BA9.
-        if (sequence >= 0xe1aea800 && sequence <= 0xe1aea900) {
+        // Khojki: U+11234, U+11236, U+11237.
+        if (sequence == 0xf09188b4 || sequence == 0xf09188b6 || sequence == 0xf09188b7) {
           return F_true;
         }
 
-        // Sundanese: U+1BAB to U+1BAD.
-        if (sequence >= 0xe1aeab00 && sequence <= 0xe1aead00) {
+        // Khudawadi: U+112DF, U+112DF.
+        if (sequence == 0xf0918b9f || sequence == 0xf0918b9f) {
           return F_true;
         }
 
-        // Batak: U+1BE6, U+1BE8, U+1BE9, U+1BED.
-        if (sequence == 0xe1afa600 || sequence == 0xe1afa800 || sequence == 0xe1afa900 || sequence == 0xe1afad00) {
+        // Khojki: U+112E3 to U+112EA.
+        if (sequence >= 0xf0918ba3 && sequence <= 0xf0918baa) {
           return F_true;
         }
 
-        // Batak: U+1BEF, U+1BF0, U+1BF1.
-        if (sequence == 0xe1afaf00 || sequence == 0xe1afb000 || sequence == 0xe1afb100) {
+        // Grantha: U+11300, U+11301, U+1133C, U+11340.
+        if (sequence == 0xf0918c80 || sequence == 0xf0918c81 || sequence == 0xf0918cbc || sequence == 0xf0918d80) {
           return F_true;
         }
 
-        // Lepcha: U+1C2C to U+1C33.
-        if (sequence >= 0xe1b0ac00 && sequence <= 0xe1b0b300) {
+        // Grantha: U+11366 to U+1136C.
+        if (sequence >= 0xf0918da6 && sequence <= 0xf0918dac) {
           return F_true;
         }
 
-        // Lepcha: U+1C36 to U+1C37.
-        if (sequence >= 0xe1b0b600 && sequence <= 0xe1b0b700) {
+        // Grantha: U+11370 to U+11374.
+        if (sequence >= 0xf0918db0 && sequence <= 0xf0918db4) {
           return F_true;
         }
 
-        // Vedic Extensions: U+1CD2 to U+1CD4.
-        if (sequence >= 0xe1b39200 && sequence <= 0xe1b39400) {
+        // Tirhuta: U+114B3 to U+114B8.
+        if (sequence >= 0xf09192b3 && sequence <= 0xf09192b8) {
           return F_true;
         }
 
-        // Vedic Extensions: U+1CD0 to U+1CE0.
-        if (sequence >= 0xe1b39000 && sequence <= 0xe1b3a000) {
+        // Tirhuta: U+114BA, U+114BF, U+114C0, U+114C2.
+        if (sequence == 0xf09192ba || sequence == 0xf09192bf || sequence == 0xf0919380 || sequence == 0xf0919382) {
           return F_true;
         }
 
-        // Vedic Extensions: U+1CE2 to U+1CE8.
-        if (sequence >= 0xe1b3a200 && sequence <= 0xe1b3a800) {
+        // Tirhuta: U+114C3.
+        if (sequence == 0xf0919383) {
           return F_true;
         }
 
-        // Vedic Extensions: U+1CED, U+1CF4, U+1CF8, U+1CF9.
-        if (sequence == 0xe1b3ad00 || sequence == 0xe1b3b400 || sequence == 0xe1b3b800 || sequence == 0xe1b3b900) {
+        // Siddham: U+115B2 to U+115B5.
+        if (sequence >= 0xf09196b2 && sequence <= 0xf09196b5) {
           return F_true;
         }
 
-        // Vedic Extensions: U+1CE8 to U+1DC0.
-        if (sequence >= 0xe1b3a800 && sequence <= 0xe1b78000) {
+        // Siddham: U+115BC to U+115BD.
+        if (sequence >= 0xf09196bc && sequence <= 0xf09196bd) {
           return F_true;
         }
 
-        // Diacritical Marks Supplement: U+1DC0 to U+1DFF.
-        if (sequence >= 0xe1b78000 && sequence <= 0xe1b7bf00) {
+        // Siddham: U+115BF, U+115C0, U+115DC, U+115DD.
+        if (sequence == 0xf09196bf || sequence == 0xf0919780 || sequence == 0xf091979c || sequence == 0xf091979d) {
           return F_true;
         }
 
-        // Diacritical Marks Supplement: U+1DFB to U+1DFF.
-        if (sequence >= 0xe1b7bb00 && sequence <= 0xe1b7bf00) {
+        // Tulu-Tigalari: U+113B8 to U+113C0.
+        if (sequence >= 0xf0918eb8 && sequence <= 0xf0918f80) {
           return F_true;
         }
-      }
-      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe2) {
 
-        // Diacritical Marks For Symbols: U+20D0 to U+20F0.
-        if (sequence >= 0xe2839000 && sequence <= 0xe283b000) {
+        // Tulu-Tigalari: U+113C2, U+113C5.
+        if (sequence == 0xf0918f82 || sequence == 0xf0918f85) {
           return F_true;
         }
-      }
-      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe3) {
 
-        // CJK Symbols and Punctuation: U+302A to U+302D.
-        if (sequence >= 0xe380aa00 && sequence <= 0xe380ad00) {
+        // Tulu-Tigalari: U+113C7 to U+113CA.
+        if (sequence >= 0xf0918f87 && sequence <= 0xf0918f8a) {
           return F_true;
         }
 
-        // Hiragana: U+3099, U+309A.
-        if (sequence == 0xe3829900 || sequence == 0xe3829a00) {
+        // Tulu-Tigalari: U+113CC to U+113D2.
+        if (sequence >= 0xf0918f8C && sequence <= 0xf0918f92) {
           return F_true;
         }
-      }
-      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xea) {
 
-        // Cyrillic Extended-B: U+3099.
-        if (sequence == 0xea99af00) {
+        // Tulu-Tigalari: U+113E1 to U+113E2.
+        if (sequence >= 0xf0918fa1 && sequence <= 0xf0918fa2) {
           return F_true;
         }
 
-        // Cyrillic Extended-B: U+A66F to U+A672.
-        if (sequence >= 0xea99af00 && sequence <= 0xea99b200) {
+        // Modi: U+11633 to U+1163A.
+        if (sequence >= 0xf09198b3 && sequence <= 0xf09198ba) {
           return F_true;
         }
 
-        // Cyrillic Extended-B: U+A674 to U+A69F.
-        if (sequence >= 0xea99b400 && sequence <= 0xea9a9f00) {
+        // Modi: U+1163D to U+11640.
+        if (sequence >= 0xf09198bd && sequence <= 0xf0919980) {
           return F_true;
         }
 
-        // Bamum: U+A6F0 to U+A6F1.
-        if (sequence >= 0xea9bb000 && sequence <= 0xea9bb100) {
+        // Takri: U+116AB, U+116AD.
+        if (sequence == 0xf0919aab || sequence == 0xf0919aad) {
           return F_true;
         }
 
-        // Syloti Nagri: U+A802, U+A806, U+A80B, U+A825.
-        if (sequence == 0xeaa08200 || sequence == 0xeaa08600 || sequence == 0xeaa08b00 || sequence == 0xeaa0a500) {
+        // Takri: U+116B0 to U+116B5.
+        if (sequence >= 0xf0919ab0 && sequence <= 0xf0919ab5) {
           return F_true;
         }
 
-        // Syloti Nagri: U+A826.
-        if (sequence == 0xeaa0a600) {
+        // Takri: U+116B7.
+        if (sequence == 0xf0919ab7) {
           return F_true;
         }
 
-        // Saurashtra: U+A8C4, U+A8C5.
-        if (sequence == 0xeaa38400 || sequence == 0xeaa38500) {
+        // Ahom: U+1171D to U+1171F.
+        if (sequence >= 0xf0919c9d && sequence <= 0xf0919c9f) {
           return F_true;
         }
 
-        // Devanagari Extended: U+A8E0 to U+A8F1.
-        if (sequence >= 0xeaa3a000 && sequence <= 0xeaa3b100) {
+        // Ahom: U+11722 to U+11725.
+        if (sequence >= 0xf0919ca2 && sequence <= 0xf0919ca5) {
           return F_true;
         }
 
-        // Kayah Li: U+A926 to U+A92D.
-        if (sequence >= 0xeaa4a600 && sequence <= 0xeaa4ad00) {
+        // Ahom: U+11727 to U+1172B.
+        if (sequence >= 0xf0919ca7 && sequence <= 0xf0919cab) {
           return F_true;
         }
 
-        // Rejang: U+A947 to U+A951.
-        if (sequence >= 0xeaa58700 && sequence <= 0xeaa59100) {
+        // Kawi: U+11F00 to U+11F03.
+        if (sequence >= 0xf091bc80 && sequence <= 0xf091bc83) {
           return F_true;
         }
 
-        // Javanese: U+A980 to U+A982.
-        if (sequence >= 0xeaa68000 && sequence <= 0xeaa68200) {
+        // Kawi: U+11F34 to U+11F3A.
+        if (sequence >= 0xf091bcb4 && sequence <= 0xf091bcba) {
           return F_true;
         }
 
-        // Javanese: U+A9B3.
-        if (sequence == 0xeaa6b300) {
+        // Kawi: U+11F3E to U+11F42.
+        if (sequence >= 0xf091bcbe && sequence <= 0xf091bd82) {
           return F_true;
         }
 
-        // Javanese: U+A9B6 to U+A9B9.
-        if (sequence >= 0xeaa6b600 && sequence <= 0xeaa6b900) {
+        // Kawi: U+11F5A.
+        if (sequence == 0xf091bd9a) {
           return F_true;
         }
+      }
+      else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) {
 
-        // Javanese: U+A9BC.
-        if (sequence == 0xeaa6bc00) {
+        // Gurung Khema: U+1611E to U+1612F.
+        if (sequence >= 0xf096849e && sequence <= 0xf09684af) {
           return F_true;
         }
 
-        // Myanmar Extended-B: U+A9E5.
-        if (sequence == 0xeaa7a500) {
+        // Bassa Vah: U+16AF0 to U+16AF4.
+        if (sequence >= 0xf096abb0 && sequence <= 0xf096abb4) {
           return F_true;
         }
 
-        // Cham: U+AA29 to U+AA2E.
-        if (sequence >= 0xeaa8a900 && sequence <= 0xeaa8ae00) {
+        // Pahawh Hmong: U+16B30 to U+16B36.
+        if (sequence >= 0xf096acb0 && sequence <= 0xf096acb6) {
           return F_true;
         }
 
-        // Cham: U+AA31 to U+AA32.
-        if (sequence >= 0xeaa8b100 && sequence <= 0xeaa8b200) {
+        // Miao: U+16F8F to U+16F92.
+        if (sequence >= 0xf096be8f && sequence <= 0xf096be92) {
           return F_true;
         }
+      }
+      else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9b) {
 
-        // Cham: U+AA35 to U+AA36.
-        if (sequence >= 0xeaa8b500 && sequence <= 0xeaa8b600) {
+        // Duployan: U+1BC9D to U+1BC9E.
+        if (sequence >= 0xf09bb29d && sequence <= 0xf09bb29e) {
           return F_true;
         }
+      }
+      else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) {
 
-        // Cham: U+AA43, U+AA4C.
-        if (sequence == 0xeaa98300 || sequence == 0xeaa98c00) {
+        // Musical Symbols: U+1D167 to U+1D169.
+        if (sequence >= 0xf09d85a7 && sequence <= 0xf09d85a9) {
           return F_true;
         }
 
-        // Tai Viet: U+AA7C.
-        if (sequence == 0xeaa9bc00) {
+        // Musical Symbols: U+1D17B to U+1D182.
+        if (sequence >= 0xf09d85bb && sequence <= 0xf09d8682) {
           return F_true;
         }
 
-        // Tai Viet: U+AAB0.
-        if (sequence == 0xeaaab000) {
+        // Musical Symbols: U+1D185 to U+1D18B.
+        if (sequence >= 0xf09d8685 && sequence <= 0xf09d868b) {
           return F_true;
         }
 
-        // Tai Viet: U+AAB2 to U+AAB4.
-        if (sequence >= 0xeaaab200 && sequence <= 0xeaaab400) {
+        // Musical Symbols: U+1D1AA to U+1D1AD.
+        if (sequence >= 0xf09d86aa && sequence <= 0xf09d86ad) {
           return F_true;
         }
 
-        // Tai Viet: U+AAB7 to U+AAB8.
-        if (sequence >= 0xeaaab700 && sequence <= 0xeaaab800) {
+        // Ancient Greek Musical Notation: U+1D242 to U+1D244.
+        if (sequence >= 0xf09d8982 && sequence <= 0xf09d8984) {
           return F_true;
         }
 
-        // Tai Viet: U+AABE to U+AABF.
-        if (sequence >= 0xeaaabe00 && sequence <= 0xeaaabf00) {
+        // Sutton SignWriting: U+1DA00 to U+1DA36.
+        if (sequence >= 0xf09da880 && sequence <= 0xf09da8b6) {
           return F_true;
         }
 
-        // Tai Viet: U+AAC1.
-        if (sequence == 0xeaab8100) {
+        // Sutton SignWriting: U+1DA3B to U+1DA6C.
+        if (sequence >= 0xf09da8bb && sequence <= 0xf09da9ac) {
           return F_true;
         }
 
-        // Meetei Mayek Extensions: U+AAEC, U+AAED, U+AAF6.
-        if (sequence == 0xeaabac00 || sequence == 0xeaabad00 || sequence == 0xeaabb600) {
+        // Sutton SignWriting: U+1DA75, U+1DA84.
+        if (sequence == 0xf09da9b5 || sequence == 0xf09daa84) {
           return F_true;
         }
 
-        // Meetei Mayek: U+ABE5, U+ABE8, U+ABED.
-        if (sequence == 0xeaafa500 || sequence == 0xeaafa800 || sequence == 0xeaafad00) {
+        // Sutton SignWriting: U+1DA9B to U+1DA9F.
+        if (sequence >= 0xf09daa9b && sequence <= 0xf09daa9f) {
           return F_true;
         }
-      }
-      else if (macro_f_utf_char_t_to_char_1(sequence) == 0xef) {
 
-        // Alphabetic Presentation Forms: U+FB1E.
-        if (sequence == 0xefac9e00) {
+        // Sutton SignWriting: U+1DAA1 to U+1DAAF.
+        if (sequence >= 0xf09daaa1 && sequence <= 0xf09daaaf) {
           return F_true;
         }
+      }
+      else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9e) {
 
-        // Variation Selectors: U+FE00 to U+FE0F.
-        if (sequence >= 0xefb88000 && sequence <= 0xefb88f00) {
+        // Cyrillic Extended-D: U+1E08F.
+        if (sequence == 0xf09e828f) {
           return F_true;
         }
 
-        // Variation Selectors: U+FE20 to U+FE0F.
-        if (sequence >= 0xefb88000 && sequence <= 0xefb88f00) {
+        // Nag Mundari: U+1E4EC to U+1E4EF.
+        if (sequence >= 0xf09e93ac && sequence <= 0xf09e93af) {
           return F_true;
         }
 
-        // Combining Half Marks: U+FE20 to U+FE2F.
-        if (sequence >= 0xefb8a000 && sequence <= 0xefb8af00) {
+        // Mende Kikakui: U+1E8D0 to U+1E8D6.
+        if (sequence >= 0xf09ea390 && sequence <= 0xf09ea396) {
           return F_true;
         }
       }
 
-      return F_false;
+      return false;
     }
 
-    // Phaistos Disc: U+101FD.
-    if (sequence == 0xf09087bd) {
-      return F_true;
-    }
-
-    // Coptic Epact Numbers: U+102E0.
-    if (sequence == 0xf0908ba0) {
-      return F_true;
-    }
+    if (macro_f_utf_char_t_to_char_1(sequence) == 0xf3) {
 
-    // Old Permic: U+10376 to U+1037A.
-    if (sequence >= 0xf0908db6 && sequence <= 0xf0908dba) {
-      return F_true;
-    }
-
-    // Kharoshthi: U+10A01 to U+10A03.
-    if (sequence >= 0xf090a881 && sequence <= 0xf090a883) {
-      return F_true;
-    }
-
-    // Kharoshthi: U+10A01, U+10A03, U+10A05, U+10A06.
-    if (sequence == 0xf090a881 || sequence == 0xf090a883 || sequence == 0xf090a885 || sequence == 0xf090a886) {
-      return F_true;
-    }
-
-    // Kharoshthi: U+10A0C to U+10A0F.
-    if (sequence >= 0xf090a88c && sequence <= 0xf090a88f) {
-      return F_true;
-    }
-
-    // Kharoshthi: U+10A38 to U+10A3A.
-    if (sequence >= 0xf090a8b8 && sequence <= 0xf090a8ba) {
-      return F_true;
-    }
-
-    // Kharoshthi: U+10A3F.
-    if (sequence == 0xf090a8bf) {
-      return F_true;
-    }
-
-    // Manichaean: U+10AE5, U+10AE6.
-    if (sequence == 0xf090aba5 || sequence == 0xf090aba6) {
-      return F_true;
-    }
-
-    // Hanifi Rohingya: U+10D24 to U+10D27.
-    if (sequence >= 0xf090b4a3 && sequence <= 0xf090b4a7) {
-      return F_true;
-    }
-
-    // Yezidi: U+10EAB to U+10EAD.
-    if (sequence >= 0xf090baab && sequence <= 0xf090baad) {
-      return F_true;
-    }
-
-    // Arabic Extended-C: U+10EFD to U+10EFF.
-    if (sequence >= 0xf090bbbd && sequence <= 0xf090bbbf) {
-      return F_true;
-    }
-
-    // Brahmi: U+11001.
-    if (sequence == 0xf0918081) {
-      return F_true;
-    }
-
-    // Brahmi: U+11038 to U+11046.
-    if (sequence >= 0xf09180b8 && sequence <= 0xf0918186) {
-      return F_true;
-    }
-
-    // Brahmi .. Kaithi: U+1107F to U+11081.
-    if (sequence >= 0xf09181bf && sequence <= 0xf0918281) {
-      return F_true;
-    }
-
-    // Kaithi: U+110B3 to U+110B6.
-    if (sequence >= 0xf09182b3 && sequence <= 0xf09182b6) {
-      return F_true;
-    }
-
-    // Kaithi: U+110B9, U+110BA.
-    if (sequence == 0xf09182b9 || sequence == 0xf09182ba) {
-      return F_true;
-    }
-
-    // Chakma: U+11100 to U+11102.
-    if (sequence >= 0xf0918480 && sequence <= 0xf0918482) {
-      return F_true;
-    }
-
-    // Chakma: U+11127 to U+1112B.
-    if (sequence >= 0xf09184a7 && sequence <= 0xf09184ab) {
-      return F_true;
-    }
-
-    // Chakma: U+1112D to U+11134.
-    if (sequence >= 0xf09184ad && sequence <= 0xf09184b4) {
-      return F_true;
-    }
-
-    // Mahajani: U+11173.
-    if (sequence == 0xf09185b3) {
-      return F_true;
-    }
-
-    // Sharada: U+11180 to U+11181.
-    if (sequence >= 0xf0918680 && sequence <= 0xf0918681) {
-      return F_true;
-    }
-
-    // Sharada: U+111B6 to U+111BE.
-    if (sequence >= 0xf09186b6 && sequence <= 0xf09186be) {
-      return F_true;
-    }
-
-    // Sharada: U+111CA to U+111CC.
-    if (sequence >= 0xf091878a && sequence <= 0xf091878c) {
-      return F_true;
-    }
-
-    // Sharada: U+111CA to U+111CC.
-    if (sequence >= 0xf091878a && sequence <= 0xf091878c) {
-      return F_true;
-    }
-
-    // Kawi: U+11F00 to U+11F03.
-    if (sequence >= 0xf091bc80 && sequence <= 0xf091bc83) {
-      return F_true;
-    }
-
-    // Kawi: U+11F34 to U+11F3A.
-    if (sequence >= 0xf091bcb4 && sequence <= 0xf091bcba) {
-      return F_true;
-    }
-
-    // Kawi: U+11F3E to U+11F42.
-    if (sequence >= 0xf091bcbe && sequence <= 0xf091bd82) {
-      return F_true;
-    }
-
-    // Khojki: U+1122F to U+11231.
-    if (sequence >= 0xf09188af && sequence <= 0xf09188b1) {
-      return F_true;
-    }
-
-    // Khojki: U+11234, U+11236, U+11237.
-    if (sequence == 0xf09188b4 || sequence == 0xf09188b6 || sequence == 0xf09188b7) {
-      return F_true;
-    }
-
-    // Khudawadi: U+112DF, U+112DF.
-    if (sequence == 0xf0918b9f || sequence == 0xf0918b9f) {
-      return F_true;
-    }
-
-    // Khojki: U+112E3 to U+112EA.
-    if (sequence >= 0xf0918ba3 && sequence <= 0xf0918baa) {
-      return F_true;
-    }
-
-    // Grantha: U+11300, U+11301, U+1133C, U+11340.
-    if (sequence == 0xf0918c80 || sequence == 0xf0918c81 || sequence == 0xf0918cbc || sequence == 0xf0918d80) {
-      return F_true;
-    }
-
-    // Grantha: U+11366 to U+1136C.
-    if (sequence >= 0xf0918da6 && sequence <= 0xf0918dac) {
-      return F_true;
-    }
-
-    // Grantha: U+11370 to U+11374.
-    if (sequence >= 0xf0918db0 && sequence <= 0xf0918db4) {
-      return F_true;
-    }
-
-    // Tirhuta: U+114B3 to U+114B8.
-    if (sequence >= 0xf09192b3 && sequence <= 0xf09192b8) {
-      return F_true;
-    }
-
-    // Tirhuta: U+114BA, U+114BF, U+114C0, U+114C2.
-    if (sequence == 0xf09192ba || sequence == 0xf09192bf || sequence == 0xf0919380 || sequence == 0xf0919382) {
-      return F_true;
-    }
-
-    // Tirhuta: U+114C3.
-    if (sequence == 0xf0919383) {
-      return F_true;
-    }
-
-    // Siddham: U+115B2 to U+115B5.
-    if (sequence >= 0xf09196b2 && sequence <= 0xf09196b5) {
-      return F_true;
-    }
-
-    // Siddham: U+115BC to U+115BD.
-    if (sequence >= 0xf09196bc && sequence <= 0xf09196bd) {
-      return F_true;
-    }
-
-    // Siddham: U+115BF, U+115C0, U+115DC, U+115DD.
-    if (sequence == 0xf09196bf || sequence == 0xf0919780 || sequence == 0xf091979c || sequence == 0xf091979d) {
-      return F_true;
-    }
-
-    // Modi: U+11633 to U+1163A.
-    if (sequence >= 0xf09198b3 && sequence <= 0xf09198ba) {
-      return F_true;
-    }
-
-    // Modi: U+1163D to U+11640.
-    if (sequence >= 0xf09198bd && sequence <= 0xf0919980) {
-      return F_true;
-    }
-
-    // Takri: U+116AB, U+116AD.
-    if (sequence == 0xf0919aab || sequence == 0xf0919aad) {
-      return F_true;
-    }
-
-    // Takri: U+116B0 to U+116B5.
-    if (sequence >= 0xf0919ab0 && sequence <= 0xf0919ab5) {
-      return F_true;
-    }
-
-    // Takri: U+116B7.
-    if (sequence == 0xf0919ab7) {
-      return F_true;
-    }
-
-    // Ahom: U+1171D to U+1171F.
-    if (sequence >= 0xf0919c9d && sequence <= 0xf0919c9f) {
-      return F_true;
-    }
-
-    // Ahom: U+11722 to U+11725.
-    if (sequence >= 0xf0919ca2 && sequence <= 0xf0919ca5) {
-      return F_true;
-    }
-
-    // Ahom: U+11727 to U+1172B.
-    if (sequence >= 0xf0919ca7 && sequence <= 0xf0919cab) {
-      return F_true;
-    }
-
-    // Bassa Vah: U+16AF0 to U+16AF4.
-    if (sequence >= 0xf096abb0 && sequence <= 0xf096abb4) {
-      return F_true;
-    }
-
-    // Pahawh Hmong: U+16B30 to U+16B36.
-    if (sequence >= 0xf096acb0 && sequence <= 0xf096acb6) {
-      return F_true;
-    }
-
-    // Miao: U+16F8F to U+16F92.
-    if (sequence >= 0xf096be8f && sequence <= 0xf096be92) {
-      return F_true;
-    }
-
-    // Duployan: U+1BC9D to U+1BC9E.
-    if (sequence >= 0xf09bb29d && sequence <= 0xf09bb29e) {
-      return F_true;
-    }
-
-    // Musical Symbols: U+1D167 to U+1D169.
-    if (sequence >= 0xf09d85a7 && sequence <= 0xf09d85a9) {
-      return F_true;
-    }
-
-    // Musical Symbols: U+1D17B to U+1D182.
-    if (sequence >= 0xf09d85bb && sequence <= 0xf09d8682) {
-      return F_true;
-    }
-
-    // Musical Symbols: U+1D185 to U+1D18B.
-    if (sequence >= 0xf09d8685 && sequence <= 0xf09d868b) {
-      return F_true;
-    }
-
-    // Musical Symbols: U+1D1AA to U+1D1AD.
-    if (sequence >= 0xf09d86aa && sequence <= 0xf09d86ad) {
-      return F_true;
-    }
-
-    // Ancient Greek Musical Notation: U+1D242 to U+1D244.
-    if (sequence >= 0xf09d8982 && sequence <= 0xf09d8984) {
-      return F_true;
-    }
-
-    // Sutton SignWriting: U+1DA00 to U+1DA36.
-    if (sequence >= 0xf09da880 && sequence <= 0xf09da8b6) {
-      return F_true;
-    }
-
-    // Sutton SignWriting: U+1DA3B to U+1DA6C.
-    if (sequence >= 0xf09da8bb && sequence <= 0xf09da9ac) {
-      return F_true;
-    }
-
-    // Sutton SignWriting: U+1DA75, U+1DA84.
-    if (sequence == 0xf09da9b5 || sequence == 0xf09daa84) {
-      return F_true;
-    }
-
-    // Sutton SignWriting: U+1DA9B to U+1DA9F.
-    if (sequence >= 0xf09daa9b && sequence <= 0xf09daa9f) {
-      return F_true;
-    }
-
-    // Sutton SignWriting: U+1DAA1 to U+1DAAF.
-    if (sequence >= 0xf09daaa1 && sequence <= 0xf09daaaf) {
-      return F_true;
-    }
-
-    // Cyrillic Extended-D: U+1E08F.
-    if (sequence == 0xf09e828f) {
-      return F_true;
-    }
-
-    // Nag Mundari: U+1E4EC to U+1E4EF.
-    if (sequence >= 0xf09e93ac && sequence <= 0xf09e93af) {
-      return F_true;
-    }
-
-    // Mende Kikakui: U+1E8D0 to U+1E8D6.
-    if (sequence >= 0xf09ea390 && sequence <= 0xf09ea396) {
-      return F_true;
-    }
+      // Variation Selectors Supplement: U+E0100 to U+E01EF.
+      if (sequence >= 0xf3a08480 && sequence <= 0xf3a087af) {
+        return F_true;
+      }
 
-    // Variation Selectors Supplement: U+E0100 to U+E01EF.
-    if (sequence >= 0xf3a08480 && sequence <= 0xf3a087af) {
-      return F_true;
+      return false;
     }
 
     return F_false;
index d12cec6456b0e34dc45998b7750c5fa6d63436b2..f4f801f17d215767d2acc53fbcb82e8aef2af4db 100644 (file)
@@ -251,13 +251,13 @@ extern "C" {
   }
 #endif // !defined(_di_f_utf_character_is_control_format_) || !defined(_di_f_utf_is_control_format_)
 
-#if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_character_is_word_dash_) || !defined(_di_f_utf_character_is_word_dash_plus_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_)
+#if !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_is_control_picture_)
   f_status_t private_f_utf_character_is_control_picture(const f_utf_char_t sequence) {
 
     if (macro_f_utf_char_t_width_is(sequence) == 3) {
 
-      // Control Pictures: U+2400 to U+2426.
-      if (sequence >= 0xe2908000 && sequence <= 0xe290a600) {
+      // Control Pictures: U+2400 to U+2429.
+      if (sequence >= 0xe2908000 && sequence <= 0xe290a900) {
         return F_true;
       }
 
@@ -269,7 +269,7 @@ extern "C" {
 
     return F_false;
   }
-#endif // !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_character_is_word_dash_) || !defined(_di_f_utf_character_is_word_dash_plus_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_)
+#endif // !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_is_control_picture_)
 
 #ifdef __cplusplus
 } // extern "C"
index f6b4e5391ee2d98a89dcc6abc406c00d96763639..7c3a4b58b6dc02c7d4ce3cd13bbf5fe912704036 100644 (file)
@@ -108,22 +108,12 @@ extern "C" {
  *   F_utf_fragment (with error bit) if character is a UTF-8 fragment.
  *   F_utf_not (with error bit) if unicode is an invalid Unicode character.
  *
- * @see f_utf_character_is_alphabetic_digit()
- * @see f_utf_character_is_alphabetic_numeric()
  * @see f_utf_character_is_control_picture()
- * @see f_utf_character_is_word()
- * @see f_utf_character_is_word_dash()
- * @see f_utf_character_is_word_dash_plus()
- * @see f_utf_is_alphabetic_digit()
- * @see f_utf_is_alphabetic_numeric()
  * @see f_utf_is_control_picture()
- * @see f_utf_is_word()
- * @see f_utf_is_word_dash()
- * @see f_utf_is_word_dash_plus)
  */
-#if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_character_is_word_dash_) || !defined(_di_f_utf_character_is_word_dash_plus_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_)
+#if !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_is_control_picture_)
   extern f_status_t private_f_utf_character_is_control_picture(const f_utf_char_t sequence) F_attribute_visibility_internal_d;
-#endif // !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_character_is_word_dash_) || !defined(_di_f_utf_character_is_word_dash_plus_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_)
+#endif // !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_is_control_picture_)
 
 #ifdef __cplusplus
 } // extern "C"
index b9d88753f3e8aee01d031c04fc5aaa0ac9d4d7ba..45936b0b9622495c4f9d0fdd0d75803d5845a0f1 100644 (file)
@@ -3739,6 +3739,11 @@ extern "C" {
           return F_true;
         }
 
+        // Garay: U+10D40 to U+10D49.
+        if (sequence >= 0xf090b5a9 && sequence <= 0xf090b5aa) {
+          return private_inline_f_utf_character_handle_digit(sequence, 0xf090b5a9, value);
+        }
+
         // Rumi Numeral Symbols: U+10E60 to U+10E7A.
         if (sequence >= 0xf090b9a0 && sequence <= 0xf090b9ba) {
 
@@ -4146,6 +4151,20 @@ extern "C" {
           return private_inline_f_utf_character_handle_digit(sequence, 0xf0919b80, value);
         }
 
+        // Myanmar Extended-C: U+116D0 to U+116E3.
+        if (sequence >= 0xf0919b90 && sequence <= 0xf0919ba3) {
+
+          // Myanmar Extended-C: U+116D0 to U+116D9.
+          if (sequence >= 0xf0919b90 && sequence <= 0xf0919b99) {
+            return private_inline_f_utf_character_handle_digit(sequence, 0xf0919b90, value);
+          }
+
+          // Myanmar Extended-C: U+116DA to U+116E3.
+          if (sequence >= 0xf0919b9a && sequence <= 0xf0919ba3) {
+            return private_inline_f_utf_character_handle_digit(sequence, 0xf0919b9a, value);
+          }
+        }
+
         // Ahom: U+11730 to U+11739.
         if (sequence >= 0xf0919cb0 && sequence <= 0xf0919cb9) {
           return private_inline_f_utf_character_handle_digit(sequence, 0xf0919cb0, value);
@@ -4161,6 +4180,11 @@ extern "C" {
           return private_inline_f_utf_character_handle_digit(sequence, 0xf091a590, value);
         }
 
+        // Sunuwar: U+11BF0 to U+11BF9.
+        if (sequence >= 0xf091afb0 && sequence <= 0xf091afb9) {
+          return private_inline_f_utf_character_handle_digit(sequence, 0xf091afb0, value);
+        }
+
         // Bhaiksuki: U+11C50 to U+11C59.
         if (sequence >= 0xf091b190 && sequence <= 0xf091b199) {
           return private_inline_f_utf_character_handle_digit(sequence, 0xf091b190, value);
@@ -5087,8 +5111,16 @@ extern "C" {
           }
         }
       }
+      else if (macro_f_utf_char_t_to_char_2(sequence) < 0x96) {
+        // There are none here.
+      }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) {
 
+        // Gurung Khema: U+16130 to U+16139.
+        if (sequence >= 0xf09684b0 && sequence <= 0xf09684b9) {
+          return private_inline_f_utf_character_handle_digit(sequence, 0xf09684b0, value);
+        }
+
         // Mro: U+16A60 to U+16A69.
         if (sequence >= 0xf096a9a0 && sequence <= 0xf096a9a9) {
           return private_inline_f_utf_character_handle_digit(sequence, 0xf096a9a0, value);
@@ -5169,6 +5201,11 @@ extern "C" {
           return F_true;
         }
 
+        // Kirat Rai: U+16D70 to U+16D79.
+        if (sequence >= 0xf096b5b0 && sequence <= 0xf096b5b9) {
+          return private_inline_f_utf_character_handle_digit(sequence, 0xf096b5b0, value);
+        }
+
         // Medefaidrin: U+16E80 to U+16E96.
         if (sequence >= 0xf096ba80 && sequence <= 0xf096ba96) {
 
@@ -5186,6 +5223,13 @@ extern "C" {
           return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xf096ba94, value);
         }
       }
+      else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9c) {
+
+        // Symbols for Legacy Computing Supplement: U+1CCF0 to U+1CCF9.
+        if (sequence >= 0xf09cb3b0 && sequence <= 0xf09cb3b9) {
+          return private_inline_f_utf_character_handle_digit(sequence, 0xf09cb3b0, value);
+        }
+      }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) {
 
         // Kaktovik Numerals: U+1D2C0 to U+1D2D3.
@@ -5395,6 +5439,11 @@ extern "C" {
           return private_inline_f_utf_character_handle_digit(sequence, 0xf09e93b0, value);
         }
 
+        // Ol Onal: U+1E5F1 to U+1E5FA.
+        if (sequence >= 0xf09e97b1 && sequence <= 0xf09e97ba) {
+          return private_inline_f_utf_character_handle_digit(sequence, 0xf09e97b1, value);
+        }
+
         // Mende Kikakui: U+1E8C7 to U+1E8CF.
         if (sequence >= 0xf09ea387 && sequence <= 0xf09ea38f) {
           return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xf09ea387, value);
@@ -6248,7 +6297,7 @@ extern "C" {
           return F_true;
         }
 
-        // Symbols for Legacy Computing (Segmented): U+1FBF0 to U+1FBF9.
+        // Symbols for Legacy Computing: U+1FBF0 to U+1FBF9.
         if (sequence >= 0xf09fafb0 && sequence <= 0xf09fafb9) {
           return private_inline_f_utf_character_handle_digit(sequence, 0xf09fafb0, value);
         }
index 0f683bf993d795e6c0ba37342bc55784dd11148b..9ffb28b3f5c0260ab740a7b03d16f72fe83f0986 100644 (file)
@@ -263,249 +263,246 @@ extern "C" {
 
       if (macro_f_utf_char_t_to_char_2(sequence) == 0x9f) {
 
-        // Mahjong Tiles: U+1F004.
-        if (sequence == 0xf09f8084) {
-          return F_true;
-        }
-
-        // Playing Cards: U+1F0CF to U+1F171.
-        if (sequence >= 0xf09f8084 && sequence <= 0xf09f85b1) {
-          return F_true;
-        }
-
-        // Enclosed Alphanumeric Supplement: U+1F17E, U+1F17F, U+1F18E.
-        if (sequence == 0xf09f85be || sequence == 0xf09f85bf || sequence == 0xf09f868e) {
-          return F_true;
-        }
-
-        // Enclosed Alphanumeric Supplement: U+1F191 to U+1F19A.
-        if (sequence >= 0xf09f8691 && sequence <= 0xf09f869a) {
-          return F_true;
-        }
-
-        // Enclosed Alphanumeric Supplement: U+1F1E6.
-        if (sequence == 0xf09f87a6) {
-          return F_true;
-        }
-
-        // Enclosed Ideographic Supplement: U+1F201, U+1F202, U+1F21A, U+1F22F.
-        if (sequence == 0xf09f8881 || sequence == 0xf09f8882 || sequence == 0xf09f889a || sequence == 0xf09f88af) {
-          return F_true;
-        }
-
-        // Enclosed Ideographic Supplement: U+1F232 to U+1F23A.
-        if (sequence >= 0xf09f88b2 && sequence <= 0xf09f88ba) {
-          return F_true;
-        }
-
-        // Enclosed Ideographic Supplement: U+1F250, U+1F251.
-        if (sequence == 0xf09f8990 || sequence == 0xf09f8991) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F300 to U+1F321.
-        if (sequence >= 0xf09f8c80 && sequence <= 0xf09f8ca1) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F324 to U+1F393.
-        if (sequence >= 0xf09f8ca4 && sequence <= 0xf09f8e93) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F396, U+1F397.
-        if (sequence == 0xf09f8e96 || sequence == 0xf09f8e97) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F399 to U+1F39B.
-        if (sequence >= 0xf09f8e99 && sequence <= 0xf09f8e9b) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F39E to U+1F3F0.
-        if (sequence >= 0xf09f8e9e && sequence <= 0xf09f8fb0) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F3F3 to U+1F3F5.
-        if (sequence >= 0xf09f8fb3 && sequence <= 0xf09f8fb5) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F3F7 to U+1F4FD.
-        if (sequence >= 0xf09f8fb7 && sequence <= 0xf09f93bd) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F4FF to U+1F53D.
-        if (sequence >= 0xf09f93bf && sequence <= 0xf09f94bd) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F549 to U+1F54E.
-        if (sequence >= 0xf09f9589 && sequence <= 0xf09f958e) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F550 to U+1F567.
-        if (sequence >= 0xf09f9590 && sequence <= 0xf09f95a7) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F56F, U+1F570.
-        if (sequence == 0xf09f95af || sequence == 0xf09f95b0) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F573 to U+1F57A.
-        if (sequence >= 0xf09f95b3 && sequence <= 0xf09f95ba) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F587.
-        if (sequence == 0xf09f9687) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F58A to U+1F58D.
-        if (sequence >= 0xf09f968a && sequence <= 0xf09f968d) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F590, U+1F595, U+1F596, U+1F5A4.
-        if (sequence == 0xf09f9690 || sequence == 0xf09f9695 || sequence == 0xf09f9696 || sequence == 0xf09f96a4) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F5A5, U+1F5A8, U+1F5B1, U+1F5B2.
-        if (sequence == 0xf09f96a5 || sequence == 0xf09f96a8 || sequence == 0xf09f96b1 || sequence == 0xf09f96b2) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F5BC.
-        if (sequence == 0xf09f96bc) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F5C2 to U+1F5C4.
-        if (sequence >= 0xf09f9782 && sequence <= 0xf09f9784) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F5D1 to U+1F5D3.
-        if (sequence >= 0xf09f9791 && sequence <= 0xf09f9793) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F5DC to U+1F5DE.
-        if (sequence >= 0xf09f979c && sequence <= 0xf09f979e) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F5E1, U+1F5E3, U+1F5E8, U+1F5EF.
-        if (sequence == 0xf09f97a1 || sequence == 0xf09f97a3 || sequence == 0xf09f97a8 || sequence == 0xf09f97af) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F5F3.
-        if (sequence == 0xf09f97b3) {
-          return F_true;
-        }
-
-        // Miscellaneous Symbols and Pictographs: U+1F5FA to U+1F6C5.
-        if (sequence >= 0xf09f97ba && sequence <= 0xf09f9b85) {
-          return F_true;
-        }
-
-        // Transport and Map Symbols: U+1F6CB to U+1F6D2.
-        if (sequence >= 0xf09f9b8b && sequence <= 0xf09f9b92) {
-          return F_true;
-        }
-
-        // Transport and Map Symbols: U+1F6D5 to U+1F6D7.
-        if (sequence >= 0xf09f9b95 && sequence <= 0xf09f9b97) {
-          return F_true;
-        }
-
-        // Transport and Map Symbols: U+1F6DC to U+1F6DF.
-        if (sequence >= 0xf09f9b9c && sequence <= 0xf09f9b9f) {
-          return F_true;
-        }
-
-        // Transport and Map Symbols: U+1F6E0 to U+1F6E5.
-        if (sequence >= 0xf09f9ba0 && sequence <= 0xf09f9ba5) {
-          return F_true;
-        }
-
-        // Transport and Map Symbols: U+1F6E9, U+1F6EB, U+1F6EC, U+1F6F0.
-        if (sequence == 0xf09f9ba9 || sequence == 0xf09f9bab || sequence == 0xf09f9bac || sequence == 0xf09f9bb0) {
-          return F_true;
-        }
-
-        // Transport and Map Symbols: U+1F6F3 to U+1F6FC.
-        if (sequence >= 0xf09f9bb3 && sequence <= 0xf09f9bbc) {
-          return F_true;
-        }
-
-        // Geometric Shapes Extended: U+1F7E0 to U+1F7EB.
-        if (sequence >= 0xf09f9fa0 && sequence <= 0xf09f9fab) {
-          return F_true;
-        }
-
-        // Geometric Shapes Extended: U+1F7F0.
-        if (sequence == 0xf09f9fb0) {
-          return F_true;
-        }
-
-        // Supplemental Symbols and Pictographs: U+1F90C to U+1F93A.
-        if (sequence >= 0xf09fa48c && sequence <= 0xf09fa4ba) {
-          return F_true;
-        }
-
-        // Supplemental Symbols and Pictographs: U+1F93C to U+1F945.
-        if (sequence >= 0xf09fa4bc && sequence <= 0xf09fa585) {
-          return F_true;
-        }
-
-        // Supplemental Symbols and Pictographs to Symbols and Pictographs Extended-A: U+1F947 to U+U+1FA74.
-        if (sequence >= 0xf09fa587 && sequence <= 0xf09fa9b4) {
-          return F_true;
-        }
-
-        // Symbols and Pictographs Extended-A: U+1FA70 to U+1FA7C.
-        if (sequence >= 0xf09fa9b0 && sequence <= 0xf09fa9bc) {
-          return F_true;
-        }
-
-        // Symbols and Pictographs Extended-A: U+1FA80 to U+1FA88.
-        if (sequence >= 0xf09faa80 && sequence <= 0xf09faa88) {
-          return F_true;
-        }
-
-        // Symbols and Pictographs Extended-A: U+1FA90 to U+1FABD.
-        if (sequence >= 0xf09faa90 && sequence <= 0xf09faabd) {
-          return F_true;
-        }
-
-        // Symbols and Pictographs Extended-A: U+1FABF to U+1FAC5.
-        if (sequence >= 0xf09faabf && sequence <= 0xf09fab85) {
-          return F_true;
-        }
-
-        // Symbols and Pictographs Extended-A: U+1FACE to U+1FADB.
-        if (sequence >= 0xf09fab8e && sequence <= 0xf09fab9b) {
-          return F_true;
-        }
-
-        // Symbols and Pictographs Extended-A: U+1FAE0 to U+1FAE8.
-        if (sequence >= 0xf09faba0 && sequence <= 0xf09faba8) {
-          return F_true;
-        }
-
-        // Symbols and Pictographs Extended-A: U+1FAF0 to U+1FAF8.
-        if (sequence >= 0xf09fabb0 && sequence <= 0xf09fabb8) {
-          return F_true;
+        if (macro_f_utf_char_t_to_char_3(sequence) <= 0x8f) {
+
+          // Mahjong Tiles: U+1F004.
+          if (sequence == 0xf09f8084) {
+            return F_true;
+          }
+
+          // Playing Cards: U+1F0CF to U+1F171.
+          if (sequence >= 0xf09f8084 && sequence <= 0xf09f85b1) {
+            return F_true;
+          }
+
+          // Enclosed Alphanumeric Supplement: U+1F17E, U+1F17F, U+1F18E.
+          if (sequence == 0xf09f85be || sequence == 0xf09f85bf || sequence == 0xf09f868e) {
+            return F_true;
+          }
+
+          // Enclosed Alphanumeric Supplement: U+1F191 to U+1F19A.
+          if (sequence >= 0xf09f8691 && sequence <= 0xf09f869a) {
+            return F_true;
+          }
+
+          // Enclosed Alphanumeric Supplement: U+1F1E6.
+          if (sequence == 0xf09f87a6) {
+            return F_true;
+          }
+
+          // Enclosed Ideographic Supplement: U+1F201, U+1F202, U+1F21A, U+1F22F.
+          if (sequence == 0xf09f8881 || sequence == 0xf09f8882 || sequence == 0xf09f889a || sequence == 0xf09f88af) {
+            return F_true;
+          }
+
+          // Enclosed Ideographic Supplement: U+1F232 to U+1F23A.
+          if (sequence >= 0xf09f88b2 && sequence <= 0xf09f88ba) {
+            return F_true;
+          }
+
+          // Enclosed Ideographic Supplement: U+1F250, U+1F251.
+          if (sequence == 0xf09f8990 || sequence == 0xf09f8991) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F300 to U+1F321.
+          if (sequence >= 0xf09f8c80 && sequence <= 0xf09f8ca1) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F324 to U+1F393.
+          if (sequence >= 0xf09f8ca4 && sequence <= 0xf09f8e93) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F396, U+1F397.
+          if (sequence == 0xf09f8e96 || sequence == 0xf09f8e97) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F399 to U+1F39B.
+          if (sequence >= 0xf09f8e99 && sequence <= 0xf09f8e9b) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F39E to U+1F3F0.
+          if (sequence >= 0xf09f8e9e && sequence <= 0xf09f8fb0) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F3F3 to U+1F3F5.
+          if (sequence >= 0xf09f8fb3 && sequence <= 0xf09f8fb5) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F3F7 to U+1F3FF.
+          if (sequence >= 0xf09f8fb7 && sequence <= 0xf09f8fbf) {
+            return F_true;
+          }
+        }
+        else if (macro_f_utf_char_t_to_char_3(sequence) <= 0x9f) {
+
+          // Miscellaneous Symbols and Pictographs: U+1F400 to U+1F4FD.
+          if (sequence >= 0xf09f9080 && sequence <= 0xf09f93bd) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F4FF to U+1F53D.
+          if (sequence >= 0xf09f93bf && sequence <= 0xf09f94bd) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F549 to U+1F54E.
+          if (sequence >= 0xf09f9589 && sequence <= 0xf09f958e) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F550 to U+1F567.
+          if (sequence >= 0xf09f9590 && sequence <= 0xf09f95a7) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F56F, U+1F570.
+          if (sequence == 0xf09f95af || sequence == 0xf09f95b0) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F573 to U+1F57A.
+          if (sequence >= 0xf09f95b3 && sequence <= 0xf09f95ba) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F587.
+          if (sequence == 0xf09f9687) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F58A to U+1F58D.
+          if (sequence >= 0xf09f968a && sequence <= 0xf09f968d) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F590, U+1F595, U+1F596, U+1F5A4.
+          if (sequence == 0xf09f9690 || sequence == 0xf09f9695 || sequence == 0xf09f9696 || sequence == 0xf09f96a4) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F5A5, U+1F5A8, U+1F5B1, U+1F5B2.
+          if (sequence == 0xf09f96a5 || sequence == 0xf09f96a8 || sequence == 0xf09f96b1 || sequence == 0xf09f96b2) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F5BC.
+          if (sequence == 0xf09f96bc) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F5C2 to U+1F5C4.
+          if (sequence >= 0xf09f9782 && sequence <= 0xf09f9784) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F5D1 to U+1F5D3.
+          if (sequence >= 0xf09f9791 && sequence <= 0xf09f9793) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F5DC to U+1F5DE.
+          if (sequence >= 0xf09f979c && sequence <= 0xf09f979e) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F5E1, U+1F5E3, U+1F5E8, U+1F5EF.
+          if (sequence == 0xf09f97a1 || sequence == 0xf09f97a3 || sequence == 0xf09f97a8 || sequence == 0xf09f97af) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F5F3.
+          if (sequence == 0xf09f97b3) {
+            return F_true;
+          }
+
+          // Miscellaneous Symbols and Pictographs: U+1F5FA to U+1F6C5.
+          if (sequence >= 0xf09f97ba && sequence <= 0xf09f9b85) {
+            return F_true;
+          }
+
+          // Transport and Map Symbols: U+1F6CB to U+1F6D2.
+          if (sequence >= 0xf09f9b8b && sequence <= 0xf09f9b92) {
+            return F_true;
+          }
+
+          // Transport and Map Symbols: U+1F6D5 to U+1F6D7.
+          if (sequence >= 0xf09f9b95 && sequence <= 0xf09f9b97) {
+            return F_true;
+          }
+
+          // Transport and Map Symbols: U+1F6DC to U+1F6DF.
+          if (sequence >= 0xf09f9b9c && sequence <= 0xf09f9b9f) {
+            return F_true;
+          }
+
+          // Transport and Map Symbols: U+1F6E0 to U+1F6E5.
+          if (sequence >= 0xf09f9ba0 && sequence <= 0xf09f9ba5) {
+            return F_true;
+          }
+
+          // Transport and Map Symbols: U+1F6E9, U+1F6EB, U+1F6EC, U+1F6F0.
+          if (sequence == 0xf09f9ba9 || sequence == 0xf09f9bab || sequence == 0xf09f9bac || sequence == 0xf09f9bb0) {
+            return F_true;
+          }
+
+          // Transport and Map Symbols: U+1F6F3 to U+1F6FC.
+          if (sequence >= 0xf09f9bb3 && sequence <= 0xf09f9bbc) {
+            return F_true;
+          }
+
+          // Geometric Shapes Extended: U+1F7E0 to U+1F7EB.
+          if (sequence >= 0xf09f9fa0 && sequence <= 0xf09f9fab) {
+            return F_true;
+          }
+
+          // Geometric Shapes Extended: U+1F7F0.
+          if (sequence == 0xf09f9fb0) {
+            return F_true;
+          }
+        }
+        else {
+
+          // Supplemental Symbols and Pictographs: U+1F90C to U+1F9FF.
+          if (sequence >= 0xf09fa48c && sequence <= 0xf09fa7bf) {
+            return F_true;
+          }
+
+          // Symbols and Pictographs Extended-A: U+1FA70 to U+1FA7C.
+          if (sequence >= 0xf09fa9b0 && sequence <= 0xf09fa9bc) {
+            return F_true;
+          }
+
+          // Symbols and Pictographs Extended-A: U+1FA80 to U+1FA89.
+          if (sequence >= 0xf09faa80 && sequence <= 0xf09faa89) {
+            return F_true;
+          }
+
+          // Symbols and Pictographs Extended-A: U+1FA8F to U+1FAC6.
+          if (sequence >= 0xf09faa8f && sequence <= 0xf09fab86) {
+            return F_true;
+          }
+
+          // Symbols and Pictographs Extended-A: U+1FACE to U+1FADC.
+          if (sequence >= 0xf09fab8e && sequence <= 0xf09fab9c) {
+            return F_true;
+          }
+
+          // Symbols and Pictographs Extended-A: U+1FADF to U+1FAE9.
+          if (sequence >= 0xf09fab9f && sequence <= 0xf09faba9) {
+            return F_true;
+          }
+
+          // Symbols and Pictographs Extended-A: U+1FAF0 to U+1FAF8.
+          if (sequence >= 0xf09fabb0 && sequence <= 0xf09fabb8) {
+            return F_true;
+          }
         }
       }
     }
index 956fb6e061e1b8daa18e6e1838da088f336ba681..d445c41edf2d44dd7c6b8e918297f57150766290 100644 (file)
@@ -467,6 +467,11 @@ extern "C" {
           return F_true;
         }
 
+        // Garay: U+10D40 to U+10D49.
+        if (sequence >= 0xf090b580 && sequence <= 0xf090b589) {
+          return F_true;
+        }
+
         // Rumi Numeral Symbols: U+10E60 to U+10E7E.
         if (sequence >= 0xf090b9a0 && sequence <= 0xf090b9be) {
           return F_true;
@@ -539,6 +544,11 @@ extern "C" {
           return F_true;
         }
 
+        // Myanmar Extended-C: U+116D0 to U+116E3.
+        if (sequence >= 0xf0919b90 && sequence <= 0xf0919ba3) {
+          return F_true;
+        }
+
         // Ahom: U+11730 to U+1173B.
         if (sequence >= 0xf0919cb0 && sequence <= 0xf0919cbb) {
           return F_true;
@@ -554,6 +564,11 @@ extern "C" {
           return F_true;
         }
 
+        // Sunuwar: U+11BF0 to U+11BF9.
+        if (sequence >= 0xf091afb0 && sequence <= 0xf091afb9) {
+          return F_true;
+        }
+
         // Bhaiksuki: U+11C50 to U+11C6C.
         if (sequence >= 0xf091b190 && sequence <= 0xf091b1ac) {
           return F_true;
@@ -579,7 +594,7 @@ extern "C" {
           return F_true;
         }
       }
-      else if (macro_f_utf_char_t_to_char_2(sequence) == 0x92) {
+      else if (macro_f_utf_char_t_to_char_2(sequence) < 0x96) {
 
         // Cuneiform Numbers and Punctuation: U+12400 to U+1246E.
         if (sequence >= 0xf0929080 && sequence <= 0xf09291ae) {
@@ -588,6 +603,11 @@ extern "C" {
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) {
 
+        // Gurung Khema: U+16130 to U+16139.
+        if (sequence >= 0xf09684b0 && sequence <= 0xf09684b9) {
+          return F_true;
+        }
+
         // Mro: U+16A60 to U+16A69.
         if (sequence >= 0xf096a9a0 && sequence <= 0xf096a9a9) {
           return F_true;
@@ -608,11 +628,23 @@ extern "C" {
           return F_true;
         }
 
+        // Kirat Rai: U+16D70 to U+16D79.
+        if (sequence >= 0xf096b5b0 && sequence <= 0xf096b5b9) {
+          return F_true;
+        }
+
         // Medefaidrin: U+16E80 to U+16E96.
         if (sequence >= 0xf096ba80 && sequence <= 0xf096ba96) {
           return F_true;
         }
       }
+      else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9c) {
+
+        // Symbols for Legacy Computing Supplement: U+1CCF0 to U+1CCF9.
+        if (sequence >= 0xf09cb3b0 && sequence <= 0xf09cb3b9) {
+          return F_true;
+        }
+      }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) {
 
         // Kaktovik Numerals: U+1D2C0 to U+1D2D3.
@@ -672,6 +704,11 @@ extern "C" {
           return F_true;
         }
 
+        // Ol Onal: U+1E5F1 to U+1E5FA.
+        if (sequence >= 0xf09e97b1 && sequence <= 0xf09e97ba) {
+          return F_true;
+        }
+
         // Mende Kikakui: U+1E8C7 to U+1E8CF.
         if (sequence >= 0xf09ea387 && sequence <= 0xf09ea38f) {
           return F_true;
@@ -704,13 +741,13 @@ extern "C" {
           return F_true;
         }
 
-        // Symbols for Legacy Computing (Segmented): U+1FBF0 to U+1FBF9.
+        // Symbols for Legacy Computing: U+1FBF0 to U+1FBF9.
         if (sequence >= 0xf09fafb0 && sequence <= 0xf09fafb9) {
           return F_true;
         }
       }
     }
-
+// FIXME: all added digits probably need to appear in numeric as well. It seems like the is_digit function should be called and then this should check anything else.
     return F_false;
   }
 #endif // !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_character_is_word_dash_) || !defined(_di_f_utf_character_is_word_dash_plus_) || !defined(_di_f_utf_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_)
index 457ca64afffb0db4d6570273b546ecb2e96ee972..2e7239f41f69fca217b3abcffd03b47d42d7eb83 100644 (file)
@@ -15,6 +15,11 @@ extern "C" {
       if (sequence >= 0xe1b48000 && sequence <= 0xe1b6bf00) {
         return F_true;
       }
+
+      // Latin Extended-D: U+A78E.
+      if (sequence == 0xea9e8e00) {
+        return F_true;
+      }
     }
 
     return F_false;
index 25a6f103fb3187a22f975bb45c1f117f6f66cba0..b1e1a19f466d9d96f2c3917449a7a3828556b6a4 100644 (file)
@@ -268,13 +268,18 @@ extern "C" {
           return F_true;
         }
 
+        // Balinese: U+1B4E to U+1B4F.
+        if (sequence >= 0xe1ad8e00 && sequence <= 0xe1ad8f00) {
+          return F_true;
+        }
+
         // Balinese: U+1B5A to U+1B60.
         if (sequence >= 0xe1ad9a00 && sequence <= 0xe1ada000) {
           return F_true;
         }
 
-        // Balinese: U+1B7D to U+1B7E.
-        if (sequence == 0xe1adbd00 || sequence == 0xe1adbe00) {
+        // Balinese: U+1B7D to U+1B7F.
+        if (sequence >= 0xe1adbd00 && sequence <= 0xe1adbf00) {
           return F_true;
         }
 
@@ -571,6 +576,7 @@ extern "C" {
     }
 
     if (macro_f_utf_char_t_to_char_1(sequence) == 0xf0) {
+
       if (macro_f_utf_char_t_to_char_2(sequence) == 0x90) {
 
         // Aegean Numbers: U+10100 to U+10102.
@@ -583,6 +589,11 @@ extern "C" {
           return F_true;
         }
 
+        // Todhri: U+105F4 to U+105FF.
+        if (sequence >= 0xf09097b4 && sequence <= 0xf09097bf) {
+          return F_true;
+        }
+
         // Caucasian Albanian: U+1056F.
         if (sequence == 0xf09095af) {
           return F_true;
@@ -633,6 +644,11 @@ extern "C" {
           return F_true;
         }
 
+        // Garay: U+10D6E to U+10D6F.
+        if (sequence >= 0xf090b5ae && sequence <= 0xf090b5af) {
+          return F_true;
+        }
+
         // Yezidi: U+10EAD.
         if (sequence == 0xf090baad) {
           return F_true;
@@ -695,6 +711,16 @@ extern "C" {
           return F_true;
         }
 
+        // Tulu-Tigalari: U+113D4 to U+113D5.
+        if (sequence >= 0xf0918f94 && sequence <= 0xf0918f95) {
+          return F_true;
+        }
+
+        // Tulu-Tigalari: U+113D7 to U+113D8.
+        if (sequence >= 0xf0918f97 && sequence <= 0xf0918f98) {
+          return F_true;
+        }
+
         // Newa: U+1144B to U+1144F.
         if (sequence >= 0xf091918b && sequence <= 0xf091918f) {
           return F_true;
@@ -760,6 +786,11 @@ extern "C" {
           return F_true;
         }
 
+        // Sunuwar: U+11BE1.
+        if (sequence == 0xf091afa1) {
+          return F_true;
+        }
+
         // Bhaiksuki: U+11C41 to U+11C45.
         if (sequence >= 0xf091b181 && sequence <= 0xf091b185) {
           return F_true;
@@ -829,6 +860,11 @@ extern "C" {
           return F_true;
         }
 
+        // Kirat Rai: U+16D6E to U+16D6F.
+        if (sequence >= 0xf096b5ae && sequence <= 0xf096b5af) {
+          return F_true;
+        }
+
         // Duployan: U+1BC9F.
         if (sequence == 0xf09bb29f) {
           return F_true;
index 80aa684b0dd3adb6aefde9247913e6eae90ac77f..5fb12193d119ee6aad13076a0e05ed36ce2291bc 100644 (file)
@@ -45,12 +45,12 @@ extern "C" {
 
       if (macro_f_utf_char_t_to_char_1(sequence) == 0xe1) {
 
-        // Georgian: U+10FC.
-        if (sequence == 0xe183bc00) {
-          return F_true;
-        }
+        if (macro_f_utf_char_t_to_char_2(sequence) <= 0xa0) {
 
-        if (macro_f_utf_char_t_to_char_2(sequence) >= 0x90 && macro_f_utf_char_t_to_char_2(sequence) <= 0x99) {
+          // Georgian: U+10FC.
+          if (sequence == 0xe183bc00) {
+            return F_true;
+          }
 
           // Unified Canadian Aboriginal Syllabics: U+141C to U+142A.
           if (sequence >= 0xe1909c00 && sequence <= 0xe190aa00) {
index 7e43f6fd5ca5594e3f07c08acdff5cb3c5a4194d..5ef64750637b2cd8aa79a6c8d41fe92dcf7c6d60 100644 (file)
@@ -405,6 +405,11 @@ extern "C" {
           return F_true;
         }
 
+        // Control Pictures: U+2400 to U+2429.
+        if (sequence >= 0xe2908000 && sequence <= 0xe290a900) {
+          return F_true;
+        }
+
         // Optical Character Recognition: U+2440 to U+244A.
         if (sequence >= 0xe2918000 && sequence <= 0xe2918a00) {
           return F_true;
@@ -517,8 +522,13 @@ extern "C" {
           return F_true;
         }
 
-        // Kanbun to CJK Strokes: U+3196 to U+31E3.
-        if (sequence >= 0xe3869600 && sequence <= 0xe387a300) {
+        // Kanbun to CJK Strokes: U+3196 to U+31E5.
+        if (sequence >= 0xe3869600 && sequence <= 0xe387a500) {
+          return F_true;
+        }
+
+        // CJK Strokes: U+31EF.
+        if (sequence == 0xe387ae00) {
           return F_true;
         }
 
@@ -726,6 +736,16 @@ extern "C" {
           return F_true;
         }
 
+        // Garay: U+10D4A to U+10D4D.
+        if (sequence >= 0xf090b58a && sequence <= 0xf090b58f) {
+          return F_true;
+        }
+
+        // Garay: U+10D8E to U+10D8F.
+        if (sequence >= 0xf090b68e && sequence <= 0xf090b68f) {
+          return F_true;
+        }
+
         // Manichaean: U+10AC8.
         if (sequence == 0xf090ab88) {
           return F_true;
@@ -733,6 +753,16 @@ extern "C" {
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x91) {
 
+        // Tulu-Tigalari: U+113B7
+        if (sequence == 0xf0918eb7) {
+          return F_true;
+        }
+
+        // Tulu-Tigalari: U+113D3
+        if (sequence == 0xdf0918f93) {
+          return F_true;
+        }
+
         // Ahom: U+1173F.
         if (sequence == 0xf0919cbf) {
           return F_true;
@@ -758,6 +788,13 @@ extern "C" {
           return F_true;
         }
       }
+      else if (macro_f_utf_char_t_to_char_2(sequence) < 0x96) {
+
+        // Egyptian Hieroglyphs Extended-A: U+13460 to U+143FA.
+        if (sequence >= 0xf09391a0 && sequence <= 0xf0948fba) {
+          return F_true;
+        }
+      }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) {
 
         // Pahawh Hmong: U+16B3C to U+16B3F.
@@ -769,6 +806,23 @@ extern "C" {
         if (sequence == 0xf096ad85) {
           return F_true;
         }
+
+        // Kirat Rai: U+16D40 to U+16D42.
+        if (sequence >= 0xf096b580 && sequence <= 0xf096b582) {
+          return F_true;
+        }
+
+        // Kirat Rai: U+16D63 to U+16D6D.
+        if (sequence >= 0xf096b5a3 && sequence <= 0xf096b5ad) {
+          return F_true;
+        }
+      }
+      else if (macro_f_utf_char_t_to_char_2(sequence) < 0x9b) {
+
+        // Khitan Small Script: U+18CFF.
+        if (sequence == 0xf098b3bf) {
+          return F_true;
+        }
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9b) {
 
@@ -779,6 +833,16 @@ extern "C" {
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9c) {
 
+        // Symbols for Legacy Computing Supplement: U+1CC00 to U+1CCD5.
+        if (sequence >= 0xf09cb080 && sequence <= 0xf09cb395) {
+          return F_true;
+        }
+
+        // Symbols for Legacy Computing Supplement: U+1CD00 to U+1CEB3.
+        if (sequence >= 0xf09cb480 && sequence <= 0xf09cbab3) {
+          return F_true;
+        }
+
         // Znamenny Musical Notation: U+1CF50 to U+1CFC3.
         if (sequence >= 0xf09cbd90 && sequence <= 0xf09cbf83) {
           return F_true;
@@ -843,6 +907,11 @@ extern "C" {
           return F_true;
         }
 
+        // Ol Onal: U+1E5F0, U+1E5FF.
+        if (sequence == 0xf09e97b0 || sequence == 0xf09e97bf) {
+          return F_true;
+        }
+
         // Indic Siyaq Numbers: U+1ECAC, U+ECB0.
         if (sequence == 0xf09eb2ac || sequence == 0xf09eb2b0) {
           return F_true;
@@ -915,6 +984,11 @@ extern "C" {
           return F_true;
         }
 
+        // Supplemental Symbols and Pictographs: U+1F900 to U+1F9FF.
+        if (sequence >= 0xf09fa480 && sequence <= 0xf09fa7bf) {
+          return F_true;
+        }
+
         // Miscellaneous Symbols and Pictographs: U+1F300 to U+1F6EC.
         if (sequence >= 0xf09f8c80 && sequence <= 0xf09f9bac) {
           return F_true;
@@ -960,8 +1034,13 @@ extern "C" {
           return F_true;
         }
 
-        // Supplemental Arrows-C: U+1F850 to U+1F887.
-        if (sequence >= 0xf09fa190 && sequence <= 0xf09fa287) {
+        // Supplemental Arrows-C: U+1F850 to U+1F859.
+        if (sequence >= 0xf09fa190 && sequence <= 0xf09fa199) {
+          return F_true;
+        }
+
+        // Supplemental Arrows-C: U+1F860 to U+1F887.
+        if (sequence >= 0xf09fa1a0 && sequence <= 0xf09fa287) {
           return F_true;
         }
 
@@ -970,8 +1049,13 @@ extern "C" {
           return F_true;
         }
 
-        // Supplemental Arrows-C: U+1F8B0, U+1F8B1.
-        if (sequence == 0xf09fa2b0 || sequence == 0xf09fa2b1) {
+        // Supplemental Arrows-C: U+1F8B0 to U+1F8BB.
+        if (sequence >= 0xf09fa2b0 && sequence <= 0xf09fa2bb) {
+          return F_true;
+        }
+
+        // Supplemental Arrows-C: U+1F8C0 to U+1F8C1.
+        if (sequence >= 0xf09fa380 && sequence <= 0xf09fa381) {
           return F_true;
         }
 
@@ -1020,8 +1104,8 @@ extern "C" {
           return F_true;
         }
 
-        // Symbols for Legacy Computing: U+1FB00 to U+1FBCA.
-        if (sequence >= 0xf09fac80 && sequence <= 0xf09faf8a) {
+        // Symbols for Legacy Computing: U+1FB00 to U+1FBEF.
+        if (sequence >= 0xf09fac80 && sequence <= 0xf09fafaf) {
           return F_true;
         }
       }
index 53843be9775a38363eca270ca3a9efe502dd4bb6..bbb064e649d25c4d1bf8363959bd4395bc98f09d 100644 (file)
@@ -115,8 +115,8 @@ extern "C" {
           return F_true;
         }
 
-        // Arabic Extended B: U+0892 to U+0897.
-        if (sequence >= 0xe0a29200 && sequence <= 0xe0a29700) {
+        // Arabic Extended B: U+0892 to U+0896.
+        if (sequence >= 0xe0a29200 && sequence <= 0xe0a29600) {
           return F_true;
         }
 
@@ -817,13 +817,8 @@ extern "C" {
           return F_true;
         }
 
-        // Balinese: U+1B4C to U+1B4F.
-        if (sequence >= 0xe1ad8c00 && sequence <= 0xe1ad8f00) {
-          return F_true;
-        }
-
-        // Balinese: U+1B7D to U+1B7F.
-        if (sequence >= 0xe1adbd00 && sequence <= 0xe1adbf00) {
+        // Balinese: U+1B4D.
+        if (sequence == 0xe1ad8d00) {
           return F_true;
         }
 
@@ -842,6 +837,11 @@ extern "C" {
           return F_true;
         }
 
+        // Cyrillic Extended-C: U+1C8B to U+1C8F.
+        if (sequence >= 0xe1b28b00 && sequence <= 0xe1b28f00) {
+          return F_true;
+        }
+
         // Sundanese Supplement: U+1CC8 to U+1CCF.
         if (sequence >= 0xe1b38800 && sequence <= 0xe1b38f00) {
           return F_true;
@@ -929,8 +929,8 @@ extern "C" {
           return F_true;
         }
 
-        // Control Pictures: U+2427 to U+243F.
-        if (sequence >= 0xe290a700 && sequence <= 0xe290bf00) {
+        // Control Pictures: U+242A to U+243F.
+        if (sequence >= 0xe290aa00 && sequence <= 0xe290bf00) {
           return F_true;
         }
 
@@ -1066,8 +1066,8 @@ extern "C" {
           return F_true;
         }
 
-        // CJK Strokes: U+31E4 to U+31EF.
-        if (sequence >= 0xe387a400 && sequence <= 0xe387af00) {
+        // CJK Strokes: U+31E6 to U+31EE.
+        if (sequence >= 0xe387a600 && sequence <= 0xe387ae00) {
           return F_true;
         }
 
@@ -1115,8 +1115,8 @@ extern "C" {
           return F_true;
         }
 
-        // Latin Extended-D: U+A7CB to U+A7CF.
-        if (sequence >= 0xea9f8b00 && sequence <= 0xea9f8f00) {
+        // Latin Extended-D: U+A7CE to U+A7CF.
+        if (sequence >= 0xea9f8e00 && sequence <= 0xea9f8f00) {
           return F_true;
         }
 
@@ -1125,8 +1125,8 @@ extern "C" {
           return F_true;
         }
 
-        // Latin Extended-D: U+A7DA to U+A7F1.
-        if (sequence >= 0xea9f9a00 && sequence <= 0xea9fb100) {
+        // Latin Extended-D: U+A7DD to U+A7F1.
+        if (sequence >= 0xea9f9d00 && sequence <= 0xea9fb100) {
           return F_true;
         }
 
@@ -1395,7 +1395,7 @@ extern "C" {
     else if (macro_f_utf_char_t_to_char_1(sequence) == 0xf0) {
 
       if (macro_f_utf_char_t_to_char_2(sequence) < 0x90) {
-        // Do nothing.
+        // There are none here.
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x90) {
 
@@ -1664,8 +1664,23 @@ extern "C" {
           return F_true;
         }
 
-        // Arabic Extended-C: U+10EC0 to U+10EFC.
-        if (sequence >= 0xf090bb80 && sequence <= 0xf090bbbc) {
+        // Arabic Extended-C: U+10EC0 to U+10EC1.
+        if (sequence >= 0xf090bb80 && sequence <= 0xf090bb81) {
+          return F_true;
+        }
+
+        // Arabic Extended-C: U+10EC5 to U+10EFB.
+        if (sequence >= 0xf090bb85 && sequence <= 0xf090bbbb) {
+          return F_true;
+        }
+
+        // Garay: U+10D66 to U+10D68.
+        if (sequence >= 0xf090b5a6 && sequence <= 0xf090b5a8) {
+          return F_true;
+        }
+
+        // Garay: U+10D86 to U+10D8d.
+        if (sequence >= 0xf090b686 && sequence <= 0xf090b68d) {
           return F_true;
         }
       }
@@ -1701,6 +1716,11 @@ extern "C" {
           return F_true;
         }
 
+        // Sunuwar: U+11BC0 to U+11BFF.
+        if (sequence >= 0xf091af80 && sequence <= 0xf091afbf) {
+          return F_true;
+        }
+
         // Kawi: U+11F11.
         if (sequence == 0xf091bc91) {
           return F_true;
@@ -1711,8 +1731,8 @@ extern "C" {
           return F_true;
         }
 
-        // Kawi: U+11F5A to U+11F5F.
-        if (sequence >= 0xf091bd9a && sequence <= 0xf091bd9f) {
+        // Kawi: U+11F5B to U+11F5F.
+        if (sequence >= 0xf091bd9b && sequence <= 0xf091bd9f) {
           return F_true;
         }
 
@@ -1841,6 +1861,31 @@ extern "C" {
           return F_true;
         }
 
+        // Tulu-Tigalari: U+1138A, U+1138C, U+1138D, U+1138F.
+        if (sequence == 0xf0918e8a || sequence == 0xf0918e8c || sequence == 0xf0918e8d || sequence == 0xf0918e8f) {
+          return F_true;
+        }
+
+        // Tulu-Tigalari: U+113B6, U+113C1, U+113C3, U+113C4.
+        if (sequence == 0xf0918eb6 || sequence == 0xf0918f81 || sequence == 0xf0918f83 || sequence == 0xf0918f84) {
+          return F_true;
+        }
+
+        // Tulu-Tigalari: U+113C6, U+113CB, U+113D6.
+        if (sequence == 0xf0918f86 || sequence == 0xf0918f8b || sequence == 0xf0918f96) {
+          return F_true;
+        }
+
+        // Tulu-Tigalari: U+113D9 to U+113E1.
+        if (sequence >= 0xf0918f99 && sequence <= 0xf0918fa1) {
+          return F_true;
+        }
+
+        // Tulu-Tigalari: U+113E3 to U+113FF.
+        if (sequence >= 0xf0918fa3 && sequence <= 0xf0918fbf) {
+          return F_true;
+        }
+
         // Tirhuta: U+114C8 to U+114CF.
         if (sequence >= 0xf0919388 && sequence <= 0xf091938f) {
           return F_true;
@@ -1881,6 +1926,11 @@ extern "C" {
           return F_true;
         }
 
+        // Myanmar Extended-C: U+116E4 to U+116FF.
+        if (sequence >= 0xf0919ba4 && sequence <= 0xf0919bbf) {
+          return F_true;
+        }
+
         // Ahom: U+1171A to U+1171C.
         if (sequence >= 0xf0919c9a && sequence <= 0xf0919c9c) {
           return F_true;
@@ -1901,7 +1951,7 @@ extern "C" {
           return F_true;
         }
       }
-      else if (macro_f_utf_char_t_to_char_2(sequence) == 0x91) {
+      else if (macro_f_utf_char_t_to_char_2(sequence) == 0x92) {
 
         // Cuneiform: U+1239A to U+123FF.
         if (sequence >= 0xf0928e9a && sequence <= 0xf0928fbf) {
@@ -1924,9 +1974,19 @@ extern "C" {
         if (sequence >= 0xf0939196 && sequence <= 0xf093919f) {
           return F_true;
         }
+
+        // Ol Onal: U+1E5FB to U+1E5FE.
+        if (sequence >= 0xf09e97bb && sequence <= 0xf09e97be) {
+          return F_true;
+        }
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x94) {
 
+        // Egyptian Hieroglyphs Extended-A: U+143FB to U+143FF.
+        if (sequence >= 0xf0948fbb && sequence <= 0xf0948fbf) {
+          return F_true;
+        }
+
         // Anatolian Hieroglyphs: U+14647 to U+1467F.
         if (sequence >= 0xf0949987 && sequence <= 0xf09499bf) {
           return F_true;
@@ -1937,6 +1997,11 @@ extern "C" {
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) {
 
+        // Gurung Khema: U+1613A to U+1613A.
+        if (sequence >= 0xf09684ba && sequence <= 0xf09684bf) {
+          return F_true;
+        }
+
         // Bamum Supplement: U+16A39 to U+16A3F.
         if (sequence >= 0xf096a8b9 && sequence <= 0xf096a8bf) {
           return F_true;
@@ -1977,6 +2042,11 @@ extern "C" {
           return F_true;
         }
 
+        // Kirat Rai: U+16D7A to U+16D7F.
+        if (sequence >= 0xf096b5ba && sequence <= 0xf096b5bf) {
+          return F_true;
+        }
+
         // Miao: U+16F45 to U+16F4F.
         if (sequence >= 0xf096bd85 && sequence <= 0xf096bd8f) {
           return F_true;
@@ -1988,7 +2058,11 @@ extern "C" {
         }
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) < 0x9b) {
-        // Do nothing.
+
+        // Khitan Small Script: U+18CD6 to U+18CFE.
+        if (sequence >= 0xf098b396 && sequence <= 0xf098b3be) {
+          return F_true;
+        }
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9b) {
 
@@ -2048,7 +2122,21 @@ extern "C" {
         }
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) < 0x9d) {
-        // Do nothing.
+
+        // Khitan Small Script: U+18CD6 to U+18CFE.
+        if (sequence >= 0xf098b396 && sequence <= 0xf098b3be) {
+          return F_true;
+        }
+
+        // Symbols for Legacy Computing Supplement: U+1CEB4 to U+1CEBF.
+        if (sequence >= 0xf09cbab4 && sequence <= 0xf09cbabf) {
+          return F_true;
+        }
+
+        // Symbols for Legacy Computing Supplement: U+1CCFA to U+1CCFF.
+        if (sequence >= 0xf09cb3ba && sequence <= 0xf09cb3bf) {
+          return F_true;
+        }
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) {
 
@@ -2341,48 +2429,33 @@ extern "C" {
           return F_true;
         }
 
-        // Supplemental Arrows C: U+1F80C to U+1F80F.
+        // Supplemental Arrows-C: U+1F80C to U+1F80F.
         if (sequence >= 0xf09fa08c && sequence <= 0xf09fa08f) {
           return F_true;
         }
 
-        // Supplemental Arrows C: U+1F848 to U+1F84F.
+        // Supplemental Arrows-C: U+1F848 to U+1F84F.
         if (sequence >= 0xf09fa188 && sequence <= 0xf09fa18f) {
           return F_true;
         }
 
-        // Supplemental Arrows C: U+1F85A to U+1F85F.
+        // Supplemental Arrows-C: U+1F85A to U+1F85F.
         if (sequence >= 0xf09fa19a && sequence <= 0xf09fa19f) {
           return F_true;
         }
 
-        // Supplemental Arrows C: U+1F888 to U+1F88F.
+        // Supplemental Arrows-C: U+1F888 to U+1F88F.
         if (sequence >= 0xf09fa288 && sequence <= 0xf09fa28f) {
           return F_true;
         }
 
-        // Supplemental Arrows C: U+1F8AE to U+1F8FF.
-        if (sequence >= 0xf09fa2ae && sequence <= 0xf09fa3bf) {
+        // Supplemental Arrows-C: U+1F8AE to U+1F8AF.
+        if (sequence >= 0xf09fa2ae && sequence <= 0xf09fa2af) {
           return F_true;
         }
 
-        // Supplemental Symbols and Pictographs: U+1F900 to U+1F90F.
-        if (sequence >= 0xf09fa480 && sequence <= 0xf09fa48f) {
-          return F_true;
-        }
-
-        // Supplemental Symbols and Pictographs: U+1F919 to U+1F97F.
-        if (sequence >= 0xf09fa499 && sequence <= 0xf09fa5bf) {
-          return F_true;
-        }
-
-        // Supplemental Symbols and Pictographs: U+1F985 to U+1F9BF.
-        if (sequence >= 0xf09fa685 && sequence <= 0xf09fa6bf) {
-          return F_true;
-        }
-
-        // Supplemental Symbols and Pictographs: U+1F9C1 to U+1F9FF.
-        if (sequence >= 0xf09fa781 && sequence <= 0xf09fa7bf) {
+        // Supplemental Arrows-C: U+1F8B2 to U+1F8FF.
+        if (sequence >= 0xf09fa2b2 && sequence <= 0xf09fa3bf) {
           return F_true;
         }
 
@@ -2396,23 +2469,23 @@ extern "C" {
           return F_true;
         }
 
-        // Symbols and Pictographs Extended-A: U+1FABE.
-        if (sequence == 0xf09faabe) {
+        // Symbols and Pictographs Extended-A: U+1FA8A to U+1FA8E.
+        if (sequence >= 0xf09faa8a && sequence <= 0xf09faa8e) {
           return F_true;
         }
 
-        // Symbols and Pictographs Extended-A: U+1FAC6 to U+1FACD.
-        if (sequence >= 0xf09fab86 && sequence <= 0xf09fab8d) {
+        // Symbols and Pictographs Extended-A: U+1FAC7 to U+1FACD.
+        if (sequence >= 0xf09fab87 && sequence <= 0xf09fab8d) {
           return F_true;
         }
 
-        // Symbols and Pictographs Extended-A: U+1FADC to U+1FADF.
-        if (sequence >= 0xf09fab9c && sequence <= 0xf09fab9f) {
+        // Symbols and Pictographs Extended-A: U+1FADD to U+1FADE.
+        if (sequence >= 0xf09fab9d && sequence <= 0xf09fab9e) {
           return F_true;
         }
 
-        // Symbols and Pictographs Extended-A: U+1FAE9 to U+1FAEF.
-        if (sequence >= 0xf09faba9 && sequence <= 0xf09fabaf) {
+        // Symbols and Pictographs Extended-A: U+1FAEA to U+1FAEF.
+        if (sequence >= 0xf09fabaa && sequence <= 0xf09fabaf) {
           return F_true;
         }
 
@@ -2421,13 +2494,18 @@ extern "C" {
           return F_true;
         }
 
-        // Not Assigned: U+1FB00 to U+1FFFF.
-        if (sequence >= 0xf09fac80 && sequence <= 0xf09fbfbf) {
+        // Symbols for Legacy Computing: U+1FBFA to U+1CEBF.
+        if (sequence >= 0xf09fafba && sequence <= 0xf09cbabf) {
+          return F_true;
+        }
+
+        // Symbols for Legacy Computing and others not assigned: U+1FBFA to U+1FFFF.
+        if (sequence >= 0xf09fafba && sequence <= 0xf09fbfbf) {
           return F_true;
         }
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) < 0xaa) {
-        // Do nothing.
+        // There are none here.
       }
       else if (macro_f_utf_char_t_to_char_2(sequence) < 0xb0) {
 
index fe9c99872cf00595912e747b5af7d483e90276f4..81bcb8310f000d206328381699c82e692c881cfb 100644 (file)
@@ -48,6 +48,7 @@ extern "C" {
 
       // For first byte 0xe0, only second byte ranges 0xa0 to 0xbf are valid.
       if (macro_f_utf_char_t_to_char_1(sequence) == 0xe0) {
+
         if (macro_f_utf_char_t_to_char_2(sequence) < 0xa0 || macro_f_utf_char_t_to_char_2(sequence) > 0xbf) {
           return F_false;
         }
@@ -55,6 +56,7 @@ extern "C" {
 
       // For first byte 0xed, only second byte ranges 0x80 to 0x9f are valid.
       else if (macro_f_utf_char_t_to_char_1(sequence) == 0xed) {
+
         if (macro_f_utf_char_t_to_char_2(sequence) < 0x80 || macro_f_utf_char_t_to_char_2(sequence) > 0x9f) {
           return F_false;
         }
index 816e17d2cacc338d35f9d9138b340105f40690ac..00ee17a25ca0c1fbcae1fe98537d33a8abf18c52 100644 (file)
@@ -431,6 +431,8 @@ extern "C" {
 /**
  * Check to see if the entire byte block of the character is an ASCII or UTF-8 symbol character.
  *
+ * This function considers a symbol character a non-alphabetic, non-digit, non-combining, non-whitespace character that is a graph character.
+ *
  * @param sequence
  *   The byte sequence to validate as a character.
  *
index b95a2062e56739299c5206a0fad6e373c9006ebb..43db01bf844e82ed4e1bbb2bb51cfcebabe8dffb 100644 (file)
@@ -31,6 +31,7 @@ build_sources_program test-utf-character_is_alphabetic_digit.c test-utf-is_alpha
 build_sources_program test-utf-character_is_alphabetic_numeric.c test-utf-is_alphabetic_numeric.c
 build_sources_program test-utf-character_is_combining.c test-utf-is_combining.c
 build_sources_program test-utf-character_is_control.c test-utf-is_control.c
+build_sources_program test-utf-character_is_control_picture.c test-utf-is_control_picture.c
 build_sources_program test-utf-character_is_digit.c test-utf-is_digit.c
 build_sources_program test-utf-character_is_emoji.c test-utf-is_emoji.c
 build_sources_program test-utf-character_is_numeric.c test-utf-is_numeric.c
index 426d6d4551f1c61bfe7029f518c05909cf63338b..91585cc7a0c23a0d037d94f6b34a6b94d721ab1d 100644 (file)
@@ -12,6 +12,10 @@ f_utf_character_is_symbol
 .SH DESCRIPTION
 .PP
 Check to see if the entire byte block of the character is an ASCII or UTF-8 symbol character.
+.PP
+.PP
+This function considers a symbol character a non-alphabetic, non-digit, non-combining, non-whitespace character that is a graph character.
+.PP
 .SH PARAMETERS
 .TP
 .B sequence
index a8926d5a61cddc04b2fb148f1b29c4ab9db16fe9..35d28d114ad395278cf86f0f81b9943c10f69381 100644 (file)
 14721433
 14721434
 14721435
+14721687
 14721688
 14721689
 14721690
 4036012223
 4036012965
 4036012966
+4036015529
+4036015530
+4036017084
 4036017085
 4036017086
 4036017087
 4036069258
 4036069259
 4036069260
-4036082816
-4036082817
-4036082818
-4036082819
-4036082868
-4036082869
-4036082870
-4036082871
-4036082872
-4036082873
-4036082874
-4036082878
-4036082879
-4036083072
-4036083073
-4036083074
-4036919951
-4036924332
-4036924333
-4036924334
-4036924335
 4036069551
 4036069552
 4036069553
 4036070834
 4036070835
 4036070836
+4036071096
+4036071097
+4036071098
+4036071099
+4036071100
+4036071101
+4036071102
+4036071103
+4036071296
+4036071298
+4036071301
+4036071303
+4036071304
+4036071305
+4036071306
+4036071308
+4036071309
+4036071310
+4036071311
+4036071312
+4036071313
+4036071314
+4036071329
+4036071330
 4036072115
 4036072116
 4036072117
 4036074665
 4036074666
 4036074667
+4036082816
+4036082817
+4036082818
+4036082819
+4036082868
+4036082869
+4036082870
+4036082871
+4036082872
+4036082873
+4036082874
+4036082878
+4036082879
+4036083072
+4036083073
+4036083074
+4036083098
 14781853
 14781854
 14781855
+4036396190
+4036396191
+4036396192
+4036396202
+4036396203
+4036396204
+4036396205
+4036396206
+4036396207
 4036406192
 4036406193
 4036406194
 14789761
 14789762
 14789763
+14789764
 14789812
+14789813
 14789814
 14789815
 14789816
 14789817
 14789818
+14789819
 14789820
+14789821
+14789822
+14789823
 14790018
 14790059
 14790060
 14791568
 14791569
 14791570
-14791571
 14791572
 14791573
 14791574
 14791582
 14791583
 14791584
+14791585
 14791586
 14791587
 14791588
 14792637
 14792638
 14792639
+4036919951
+4036924332
+4036924333
+4036924334
+4036924335
 4036928400
 4036928401
 4036928402
 15374986
 15374987
 15374988
+15374988
 15374989
 15374990
 15374991
diff --git a/level_0/f_utf/data/tests/bytesequences/control_picture-all.txt b/level_0/f_utf/data/tests/bytesequences/control_picture-all.txt
new file mode 100644 (file)
index 0000000..b626794
--- /dev/null
@@ -0,0 +1,42 @@
+14848128
+14848129
+14848130
+14848131
+14848132
+14848133
+14848134
+14848135
+14848136
+14848137
+14848138
+14848139
+14848140
+14848141
+14848142
+14848143
+14848144
+14848145
+14848146
+14848147
+14848148
+14848149
+14848150
+14848151
+14848152
+14848153
+14848154
+14848155
+14848156
+14848157
+14848158
+14848159
+14848160
+14848161
+14848162
+14848163
+14848164
+14848165
+14848166
+14848167
+14848168
+14848169
index 0d0aae1858676d5bf79b35ef8a661b1c5693a3a7..55e4f92c64a19ca7b1033c525250ac7d5795923a 100644 (file)
 4036924343
 4036924344
 4036924345
+4036015488
+4036015489
+4036015490
+4036015491
+4036015492
+4036015493
+4036015494
+4036015495
+4036015496
+4036015497
+4036074384
+4036074385
+4036074386
+4036074387
+4036074388
+4036074389
+4036074390
+4036074391
+4036074392
+4036074393
+4036074394
+4036074395
+4036074396
+4036074397
+4036074398
+4036074399
+4036074400
+4036074401
+4036074402
+4036074403
+4036079536
+4036079537
+4036079538
+4036079539
+4036079540
+4036079541
+4036079542
+4036079543
+4036079544
+4036079545
+4036396208
+4036396209
+4036396210
+4036396211
+4036396212
+4036396213
+4036396214
+4036396215
+4036396216
+4036396217
+4036408752
+4036408753
+4036408754
+4036408755
+4036408756
+4036408757
+4036408758
+4036408759
+4036408760
+4036408761
+4036925361
+4036925362
+4036925363
+4036925364
+4036925365
+4036925366
+4036925367
+4036925368
+4036925369
+4036925370
index 09ad40e3d8dca54559f156aee528106e01554681..7b8ca3d0c5510f8520f1f2bad1088e9e1ac7e515 100644 (file)
 4036995718
 4036995719
 4036995720
+4036995721
+4036995727
 4036995728
 4036995729
 4036995730
 4036995771
 4036995772
 4036995773
+4036995774
 4036995775
 4036995968
 4036995969
 4036995971
 4036995972
 4036995973
+4036995974
 4036995982
 4036995983
 4036995984
 4036995991
 4036995992
 4036995993
-4036995994
-4036995995
 4036996000
 4036996001
 4036996002
index a4b419ae4c064ac28912d2ca57aec9252bb85838..e89415dcdcca990c01a8ccf6d6a2a98b9bacf861 100644 (file)
@@ -8,6 +8,12 @@
 55
 56
 57
+49842
+49843
+49849
+49852
+49853
+49854
 55712
 55713
 55714
 14722989
 14722990
 14722991
+14722996
+14722997
+14722998
+14722999
+14723000
+14723001
 14723494
 14723495
 14723496
 14724525
 14724526
 14724527
+14724530
+14724531
+14724532
+14724533
+14724534
+14724535
 14725030
 14725031
 14725032
 14725037
 14725038
 14725039
+14725040
+14725041
+14725042
 14725542
 14725543
 14725544
 14725549
 14725550
 14725551
+14725560
+14725561
+14725562
+14725563
+14725564
+14725565
+14725566
 14726054
 14726055
 14726056
 14726061
 14726062
 14726063
+14726552
+14726553
+14726554
+14726555
+14726556
+14726557
+14726558
 14726566
 14726567
 14726568
 14726573
 14726574
 14726575
+14726576
+14726577
+14726578
+14726579
+14726580
+14726581
+14726582
+14726583
+14726584
 14727078
 14727079
 14727080
 14728359
 14728360
 14728361
+14728362
+14728363
+14728364
+14728365
+14728366
+14728367
+14728368
+14728369
+14728370
+14728371
+4036002951
+4036002952
+4036002953
+4036002954
+4036002955
+4036002956
+4036002957
+4036002958
+4036002959
+4036002960
+4036002961
+4036002962
+4036002963
+4036002964
+4036002965
+4036002966
+4036002967
+4036002968
+4036002969
+4036002970
+4036002971
+4036002972
+4036002973
+4036002974
+4036002975
+4036002976
+4036002977
+4036002978
+4036002979
+4036002980
+4036002981
+4036002982
+4036002983
+4036002984
+4036002985
+4036002986
+4036002987
+4036002988
+4036002989
+4036002990
+4036002991
+4036002992
+4036002993
+4036002994
+4036002995
+4036003200
+4036003201
+4036003202
+4036003203
+4036003204
+4036003205
+4036003206
+4036003207
+4036003208
+4036003209
+4036003210
+4036003211
+4036003212
+4036003213
+4036003214
+4036003215
+4036003216
+4036003217
+4036003218
+4036003219
+4036003220
+4036003221
+4036003222
+4036003223
+4036003224
+4036003225
+4036003226
+4036003227
+4036003228
+4036003229
+4036003230
+4036003231
+4036003232
+4036003233
+4036003234
+4036003235
+4036003236
+4036003237
+4036003238
+4036003239
+4036003240
+4036003241
+4036003242
+4036003243
+4036003244
+4036003245
+4036003246
+4036003247
+4036003248
+4036003249
+4036003250
+4036003251
+4036003252
+4036003253
+4036003254
+4036003255
+4036003256
+4036003466
+4036003467
+4036004769
+4036004770
+4036004771
+4036004772
+4036004773
+4036004774
+4036004775
+4036004776
+4036004777
+4036004778
+4036004779
+4036004780
+4036004781
+4036004782
+4036004783
+4036004784
+4036004785
+4036004786
+4036004787
+4036004788
+4036004789
+4036004790
+4036004791
+4036004792
+4036004793
+4036004794
+4036004795
+4036005024
+4036005025
+4036005026
+4036005027
+4036005249
+4036005258
+4036005777
+4036005778
+4036005779
+4036005780
+4036005781
 14778752
 14778753
 14778754
 14778759
 14778760
 14778761
+4036006560
+4036006561
+4036006562
+4036006563
+4036006564
+4036006565
+4036006566
+4036006567
+4036006568
+4036006569
+4036010392
+4036010393
+4036010394
+4036010395
+4036010396
+4036010397
+4036010398
+4036010399
+4036010425
+4036010426
+4036010427
+4036010428
+4036010429
+4036010430
+4036010431
+4036010663
+4036010664
+4036010665
+4036010666
+4036010667
+4036010668
+4036010669
+4036010670
+4036010671
+4036010939
+4036010940
+4036010941
+4036010942
+4036010943
 14779024
 14779025
+4036011158
+4036011159
+4036011160
+4036011161
+4036011162
+4036011163
 14779026
 14779027
 14779028
 14779031
 14779032
 14779033
-14786464
-14786465
-14786466
-14786467
-14786468
-14786469
-14786470
-14786471
-14786472
-14786473
-14786704
-14786705
-14786706
-14786707
-14786708
-14786709
-14786710
-14786711
-14786712
-14786713
-14787974
-14787975
-14787976
-14787977
-14787978
-14787979
-14787980
-14787981
-14787982
-14787983
-14788496
-14788497
-14788498
-14788499
-14788500
-14788501
-14788502
-14788503
-14788504
-14788505
-14789248
-14789249
-14789250
-14789251
-14789252
-14789253
-14789254
-14789255
-14789256
-14789257
-14789264
-14789265
-14789266
-14789267
-14789268
-14789269
-14789270
-14789271
-14789272
-14789273
-14790032
-14790033
-14790034
-14790035
-14790036
-14790037
-14790038
-14790039
-14790040
-14790041
-14790320
-14790321
-14790322
-14790323
-14790324
-14790325
-14790326
-14790327
-14790328
-14790329
-14791040
-14791041
-14791042
-14791043
-14791044
-14791045
-14791046
-14791047
-14791048
-14791049
-14791056
-14791057
-14791058
-14791059
-14791060
-14791061
-14791062
-14791063
-14791064
-14791065
-14845344
-14845345
-14845346
-14845347
-14845348
-14845349
-14845350
-14845351
-14845352
-14845353
-14845354
-14845355
-14845356
-14845357
-14845358
-14845359
-14845360
-14845361
-14845362
-14845363
-14845364
-14845365
-14845366
-14845367
-14845368
-14845369
-14845370
-14845371
-14845372
-14845373
-14845374
-14845375
-14845568
-14845569
-14845570
-14845571
-14845572
-14845573
-14845574
-14845575
-14845576
-15374496
-15374497
-15374498
-15374499
-15374500
-15374501
-15374502
-15374503
-15374504
-15374505
-15377296
-15377297
-15377298
-15377299
-15377300
-15377301
-15377302
-15377303
-15377304
-15377305
-15377536
-15377537
-15377538
-15377539
-15377540
-15377541
-15377542
-15377543
-15377544
-15377545
-15378320
-15378321
-15378322
-15378323
-15378324
-15378325
-15378326
-15378327
-15378328
-15378329
-15378352
-15378353
-15378354
-15378355
-15378356
-15378357
-15378358
-15378359
-15378360
-15378361
-15378832
-15378833
-15378834
-15378835
-15378836
-15378837
-15378838
-15378839
-15378840
-15378841
-15380400
-15380401
-15380402
-15380403
-15380404
-15380405
-15380406
-15380407
-15380408
-15380409
-15711376
-15711377
-15711378
-15711379
-15711380
-15711381
-15711382
-15711383
-15711384
-15711385
-4036006560
-4036006561
-4036006562
-4036006563
-4036006564
-4036006565
-4036006566
-4036006567
-4036006568
-4036006569
-4036015280
-4036015281
-4036015282
-4036015283
-4036015284
-4036015285
-4036015286
-4036015287
-4036015288
-4036015289
-4036067750
-4036067751
-4036067752
-4036067753
-4036067754
-4036067755
-4036067756
-4036067757
-4036067758
-4036067759
-4036068272
-4036068273
-4036068274
-4036068275
-4036068276
-4036068277
-4036068278
-4036068279
-4036068280
-4036068281
-4036068534
-4036068535
-4036068536
-4036068537
-4036068538
-4036068539
-4036068540
-4036068541
-4036068542
-4036068543
-4036069264
-4036069265
-4036069266
-4036069267
-4036069268
-4036069269
-4036069270
-4036069271
-4036069272
-4036069273
-4036070320
-4036070321
-4036070322
-4036070323
-4036070324
-4036070325
-4036070326
-4036070327
-4036070328
-4036070329
-4036071824
-4036071825
-4036071826
-4036071827
-4036071828
-4036071829
-4036071830
-4036071831
-4036071832
-4036071833
-4036072336
-4036072337
-4036072338
-4036072339
-4036072340
-4036072341
-4036072342
-4036072343
-4036072344
-4036072345
-4036073872
-4036073873
-4036073874
-4036073875
-4036073876
-4036073877
-4036073878
-4036073879
-4036073880
-4036073881
-4036074368
-4036074369
-4036074370
-4036074371
-4036074372
-4036074373
-4036074374
-4036074375
-4036074376
-4036074377
-4036074672
-4036074673
-4036074674
-4036074675
-4036074676
-4036074677
-4036074678
-4036074679
-4036074680
-4036074681
-4036076448
-4036076449
-4036076450
-4036076451
-4036076452
-4036076453
-4036076454
-4036076455
-4036076456
-4036076457
-4036076944
-4036076945
-4036076946
-4036076947
-4036076948
-4036076949
-4036076950
-4036076951
-4036076952
-4036076953
-4036080016
-4036080017
-4036080018
-4036080019
-4036080020
-4036080021
-4036080022
-4036080023
-4036080024
-4036080025
-4036081040
-4036081041
-4036081042
-4036081043
-4036081044
-4036081045
-4036081046
-4036081047
-4036081048
-4036081049
-4036081312
-4036081313
-4036081314
-4036081315
-4036081316
-4036081317
-4036081318
-4036081319
-4036081320
-4036081321
-4036405664
-4036405665
-4036405666
-4036405667
-4036405668
-4036405669
-4036405670
-4036405671
-4036405672
-4036405673
-4036406144
-4036406145
-4036406146
-4036406147
-4036406148
-4036406149
-4036406150
-4036406151
-4036406152
-4036406153
-4036406672
-4036406673
-4036406674
-4036406675
-4036406676
-4036406677
-4036406678
-4036406679
-4036406680
-4036406681
-4036861838
-4036861839
-4036861840
-4036861841
-4036861842
-4036861843
-4036861844
-4036861845
-4036861846
-4036861847
-4036861848
-4036861849
-4036861850
-4036861851
-4036861852
-4036861853
-4036861854
-4036861855
-4036861856
-4036861857
-4036861858
-4036861859
-4036861860
-4036861861
-4036861862
-4036861863
-4036861864
-4036861865
-4036861866
-4036861867
-4036861868
-4036861869
-4036861870
-4036861871
-4036861872
-4036861873
-4036861874
-4036861875
-4036861876
-4036861877
-4036861878
-4036861879
-4036861880
-4036861881
-4036861882
-4036861883
-4036861884
-4036861885
-4036861886
-4036861887
-4036920704
-4036920705
-4036920706
-4036920707
-4036920708
-4036920709
-4036920710
-4036920711
-4036920712
-4036920713
-4036922288
-4036922289
-4036922290
-4036922291
-4036922292
-4036922293
-4036922294
-4036922295
-4036922296
-4036922297
-4036928912
-4036928913
-4036928914
-4036928915
-4036928916
-4036928917
-4036928918
-4036928919
-4036928920
-4036928921
-4036997040
-4036997041
-4036997042
-4036997043
-4036997044
-4036997045
-4036997046
-4036997047
-4036997048
-4036997049
-14785454
-14785455
-14785456
-14845344
-14845345
-14845346
-14845347
-14845348
-14845349
-14845350
-14845351
-14845352
-14845353
-14845354
-14845355
-14845356
-14845357
-14845358
-14845359
-14845360
-14845361
-14845362
-14845363
-14845364
-14845365
-14845366
-14845367
-14845368
-14845369
-14845370
-14845371
-14845372
-14845373
-14845374
-14845375
-14845568
-14845569
-14845570
-14845573
-14845574
-14845575
-14845576
-14909575
-14909601
-14909602
-14909603
-14909604
-14909605
-14909606
-14909607
-14909608
-14909609
-14909624
-14909625
-14909626
-15375270
-15375271
-15375272
-15375273
-15375274
-15375275
-15375276
-15375277
-15375278
-15375279
-4036003200
-4036003201
-4036003202
-4036003203
-4036003204
-4036003205
-4036003206
-4036003207
-4036003208
-4036003209
-4036003210
-4036003211
-4036003212
-4036003213
-4036003214
-4036003215
-4036003216
-4036003217
-4036003218
-4036003219
-4036003220
-4036003221
-4036003222
-4036003223
-4036003224
-4036003225
-4036003226
-4036003227
-4036003228
-4036003229
-4036003230
-4036003231
-4036003232
-4036003233
-4036003234
-4036003235
-4036003236
-4036003237
-4036003238
-4036003239
-4036003240
-4036003241
-4036003242
-4036003243
-4036003244
-4036003245
-4036003246
-4036003247
-4036003248
-4036003249
-4036003250
-4036003251
-4036003252
-4036005249
-4036005258
-4036005777
-4036005778
-4036005779
-4036005780
-4036005781
-4036137088
-4036137089
-4036137090
-4036137091
-4036137092
-4036137093
-4036137094
-4036137095
-4036137096
-4036137097
-4036137098
-4036137099
-4036137100
-4036137101
-4036137102
-4036137103
-4036137104
-4036137105
-4036137106
-4036137107
-4036137108
-4036137109
-4036137110
-4036137111
-4036137112
-4036137113
-4036137114
-4036137115
-4036137116
-4036137117
-4036137118
-4036137119
-4036137120
-4036137121
-4036137122
-4036137123
-4036137124
-4036137125
-4036137126
-4036137127
-4036137128
-4036137129
-4036137130
-4036137131
-4036137132
-4036137133
-4036137134
-4036137135
-4036137136
-4036137137
-4036137138
-4036137139
-4036137140
-4036137141
-4036137142
-4036137143
-4036137144
-4036137145
-4036137146
-4036137147
-4036137148
-4036137149
-4036137150
-4036137151
-4036137344
-4036137345
-4036137346
-4036137347
-4036137348
-4036137349
-4036137350
-4036137351
-4036137352
-4036137353
-4036137354
-4036137355
-4036137356
-4036137357
-4036137358
-4036137359
-4036137360
-4036137361
-4036137362
-4036137363
-4036137364
-4036137365
-4036137366
-4036137367
-4036137368
-4036137369
-4036137370
-4036137371
-4036137372
-4036137373
-4036137374
-4036137375
-4036137376
-4036137377
-4036137378
-4036137379
-4036137380
-4036137381
-4036137382
-4036137383
-4036137384
-4036137385
-4036137386
-4036137387
-4036137388
-4036137389
-4036137390
-49842
-49843
-49849
-49852
-49853
-49854
-14722996
-14722997
-14722998
-14722999
-14723000
-14723001
-14724530
-14724531
-14724532
-14724533
-14724534
-14724535
-14725040
-14725041
-14725042
-14725560
-14725561
-14725562
-14725563
-14725564
-14725565
-14725566
-14726552
-14726553
-14726554
-14726555
-14726556
-14726557
-14726558
-14726576
-14726577
-14726578
-14726579
-14726580
-14726581
-14726582
-14726583
-14726584
-14728362
-14728363
-14728364
-14728365
-14728366
-14728367
-14728368
-14728369
-14728370
-14728371
-14781865
-14781866
-14781867
-14781868
-14781869
-14781870
-14781871
-14781872
-14781873
-14781874
-14781875
-14781876
-14781877
-14781878
-14781879
-14781880
-14781881
-14781882
-14781883
-14781884
-14786480
-14786481
-14786482
-14786483
-14786484
-14786485
-14786486
-14786487
-14786488
-14786489
-14788506
-14844336
-14844340
-14844341
-14844342
-14844343
-14844344
-14844345
-14844544
-14844545
-14844546
-14844547
-14844548
-14844549
-14844550
-14844551
-14844552
-14844553
-14845328
-14845329
-14845330
-14845331
-14845332
-14845333
-14845334
-14845335
-14845336
-14845337
-14845338
-14845339
-14845340
-14845341
-14845342
-14845343
-14845577
-14848416
-14848417
-14848418
-14848419
-14848420
-14848421
-14848422
-14848423
-14848424
-14848425
-14848426
-14848427
-14848428
-14848429
-14848430
-14848431
-14848432
-14848433
-14848434
-14848435
-14848436
-14848437
-14848438
-14848439
-14848440
-14848441
-14848442
-14848443
-14848444
-14848445
-14848446
-14848447
-14848640
-14848641
-14848642
-14848643
-14848644
-14848645
-14848646
-14848647
-14848648
-14848649
-14848650
-14848651
-14848652
-14848653
-14848654
-14848655
-14848656
-14848657
-14848658
-14848659
-14848660
-14848661
-14848662
-14848663
-14848664
-14848665
-14848666
-14848667
-14848938
-14848939
-14848940
-14848941
-14848942
-14848943
-14848944
-14848945
-14848946
-14848947
-14848948
-14848949
-14848950
-14848951
-14848952
-14848953
-14848954
-14848955
-14848956
-14848957
-14848958
-14848959
-14851510
-14851511
-14851512
-14851513
-14851514
-14851515
-14851516
-14851517
-14851518
-14851519
-14851712
-14851713
-14851714
-14851715
-14851716
-14851717
-14851718
-14851719
-14851720
-14851721
-14851722
-14851723
-14851724
-14851725
-14851726
-14851727
-14851728
-14851729
-14851730
-14851731
-14857149
-14911122
-14911123
-14911124
-14911125
-14911648
-14911649
-14911650
-14911651
-14911652
-14911653
-14911654
-14911655
-14911656
-14911657
-14911880
-14911881
-14911882
-14911883
-14911884
-14911885
-14911886
-14911887
-14911889
-14911890
-14911891
-14911892
-14911893
-14911894
-14911895
-14911896
-14911897
-14911898
-14911899
-14911900
-14911901
-14911902
-14911903
-14912128
-14912129
-14912130
-14912131
-14912132
-14912133
-14912134
-14912135
-14912136
-14912137
-14912177
-14912178
-14912179
-14912180
-14912181
-14912182
-14912183
-14912184
-14912185
-14912186
-14912187
-14912188
-14912189
-14912190
-14912191
-15376560
-15376561
-15376562
-15376563
-15376564
-15376565
-4036002951
-4036002952
-4036002953
-4036002954
-4036002955
-4036002956
-4036002957
-4036002958
-4036002959
-4036002960
-4036002961
-4036002962
-4036002963
-4036002964
-4036002965
-4036002966
-4036002967
-4036002968
-4036002969
-4036002970
-4036002971
-4036002972
-4036002973
-4036002974
-4036002975
-4036002976
-4036002977
-4036002978
-4036002979
-4036002980
-4036002981
-4036002982
-4036002983
-4036002984
-4036002985
-4036002986
-4036002987
-4036002988
-4036002989
-4036002990
-4036002991
-4036002992
-4036002993
-4036002994
-4036002995
-4036003253
-4036003254
-4036003255
-4036003256
-4036003466
-4036003467
-4036004769
-4036004770
-4036004771
-4036004772
-4036004773
-4036004774
-4036004775
-4036004776
-4036004777
-4036004778
-4036004779
-4036004780
-4036004781
-4036004782
-4036004783
-4036004784
-4036004785
-4036004786
-4036004787
-4036004788
-4036004789
-4036004790
-4036004791
-4036004792
-4036004793
-4036004794
-4036004795
-4036005024
-4036005025
-4036005026
-4036005027
-4036010392
-4036010393
-4036010394
-4036010395
-4036010396
-4036010397
-4036010398
-4036010399
-4036010425
-4036010426
-4036010427
-4036010428
-4036010429
-4036010430
-4036010431
-4036010663
-4036010664
-4036010665
-4036010666
-4036010667
-4036010668
-4036010669
-4036010670
-4036010671
-4036010939
-4036010940
-4036010941
-4036010942
-4036010943
-4036011158
-4036011159
-4036011160
-4036011161
-4036011162
-4036011163
 4036011708
 4036011709
 4036011904
 4036015037
 4036015038
 4036015039
+4036015280
+4036015281
+4036015282
+4036015283
+4036015284
+4036015285
+4036015286
+4036015287
+4036015288
+4036015289
+4036015488
+4036015489
+4036015490
+4036015491
+4036015492
+4036015493
+4036015494
+4036015495
+4036015496
+4036015497
 4036016544
 4036016545
 4036016546
 4036067747
 4036067748
 4036067749
+4036067750
+4036067751
+4036067752
+4036067753
+4036067754
+4036067755
+4036067756
+4036067757
+4036067758
+4036067759
+4036068272
+4036068273
+4036068274
+4036068275
+4036068276
+4036068277
+4036068278
+4036068279
+4036068280
+4036068281
+4036068534
+4036068535
+4036068536
+4036068537
+4036068538
+4036068539
+4036068540
+4036068541
+4036068542
+4036068543
+4036069264
+4036069265
+4036069266
+4036069267
+4036069268
+4036069269
+4036069270
+4036069271
+4036069272
+4036069273
 4036069281
 4036069282
 4036069283
 4036069298
 4036069299
 4036069300
+4036070320
+4036070321
+4036070322
+4036070323
+4036070324
+4036070325
+4036070326
+4036070327
+4036070328
+4036070329
+4036071824
+4036071825
+4036071826
+4036071827
+4036071828
+4036071829
+4036071830
+4036071831
+4036071832
+4036071833
+4036072336
+4036072337
+4036072338
+4036072339
+4036072340
+4036072341
+4036072342
+4036072343
+4036072344
+4036072345
+4036073872
+4036073873
+4036073874
+4036073875
+4036073876
+4036073877
+4036073878
+4036073879
+4036073880
+4036073881
+4036074368
+4036074369
+4036074370
+4036074371
+4036074372
+4036074373
+4036074374
+4036074375
+4036074376
+4036074377
+4036074384
+4036074385
+4036074386
+4036074387
+4036074388
+4036074389
+4036074390
+4036074391
+4036074392
+4036074393
+4036074394
+4036074395
+4036074396
+4036074397
+4036074398
+4036074399
+4036074400
+4036074401
+4036074402
+4036074403
+4036074672
+4036074673
+4036074674
+4036074675
+4036074676
+4036074677
+4036074678
+4036074679
+4036074680
+4036074681
 4036074682
 4036074683
+4036076448
+4036076449
+4036076450
+4036076451
+4036076452
+4036076453
+4036076454
+4036076455
+4036076456
+4036076457
 4036076458
 4036076459
 4036076460
 4036076464
 4036076465
 4036076466
+4036076944
+4036076945
+4036076946
+4036076947
+4036076948
+4036076949
+4036076950
+4036076951
+4036076952
+4036076953
+4036079536
+4036079537
+4036079538
+4036079539
+4036079540
+4036079541
+4036079542
+4036079543
+4036079544
+4036079545
+4036080016
+4036080017
+4036080018
+4036080019
+4036080020
+4036080021
+4036080022
+4036080023
+4036080024
+4036080025
 4036080026
 4036080027
 4036080028
 4036080042
 4036080043
 4036080044
+4036081040
+4036081041
+4036081042
+4036081043
+4036081044
+4036081045
+4036081046
+4036081047
+4036081048
+4036081049
+4036081312
+4036081313
+4036081314
+4036081315
+4036081316
+4036081317
+4036081318
+4036081319
+4036081320
+4036081321
 4036083584
 4036083585
 4036083586
 4036083602
 4036083603
 4036083604
+4036137088
+4036137089
+4036137090
+4036137091
+4036137092
+4036137093
+4036137094
+4036137095
+4036137096
+4036137097
+4036137098
+4036137099
+4036137100
+4036137101
+4036137102
+4036137103
+4036137104
+4036137105
+4036137106
+4036137107
+4036137108
+4036137109
+4036137110
+4036137111
+4036137112
+4036137113
+4036137114
+4036137115
+4036137116
+4036137117
+4036137118
+4036137119
+4036137120
+4036137121
+4036137122
+4036137123
+4036137124
+4036137125
+4036137126
+4036137127
+4036137128
+4036137129
+4036137130
+4036137131
+4036137132
+4036137133
+4036137134
+4036137135
+4036137136
+4036137137
+4036137138
+4036137139
+4036137140
+4036137141
+4036137142
+4036137143
+4036137144
+4036137145
+4036137146
+4036137147
+4036137148
+4036137149
+4036137150
+4036137151
+4036137344
+4036137345
+4036137346
+4036137347
+4036137348
+4036137349
+4036137350
+4036137351
+4036137352
+4036137353
+4036137354
+4036137355
+4036137356
+4036137357
+4036137358
+4036137359
+4036137360
+4036137361
+4036137362
+4036137363
+4036137364
+4036137365
+4036137366
+4036137367
+4036137368
+4036137369
+4036137370
+4036137371
+4036137372
+4036137373
+4036137374
+4036137375
+4036137376
+4036137377
+4036137378
+4036137379
+4036137380
+4036137381
+4036137382
+4036137383
+4036137384
+4036137385
+4036137386
+4036137387
+4036137388
+4036137389
+4036137390
+14781865
+14781866
+14781867
+14781868
+14781869
+14781870
+14781871
+14781872
+14781873
+14781874
+14781875
+14781876
+14781877
+14781878
+14781879
+14781880
+14781881
+14781882
+14781883
+14781884
+4036396208
+4036396209
+4036396210
+4036396211
+4036396212
+4036396213
+4036396214
+4036396215
+4036396216
+4036396217
+4036405664
+4036405665
+4036405666
+4036405667
+4036405668
+4036405669
+4036405670
+4036405671
+4036405672
+4036405673
+4036406144
+4036406145
+4036406146
+4036406147
+4036406148
+4036406149
+4036406150
+4036406151
+4036406152
+4036406153
+4036406672
+4036406673
+4036406674
+4036406675
+4036406676
+4036406677
+4036406678
+4036406679
+4036406680
+4036406681
 4036406683
 4036406684
 4036406685
 4036406687
 4036406688
 4036406689
+4036408752
+4036408753
+4036408754
+4036408755
+4036408756
+4036408757
+4036408758
+4036408759
+4036408760
+4036408761
 4036409984
 4036409985
 4036409986
 4036410004
 4036410005
 4036410006
+14785454
+14785455
+14785456
+14786464
+14786465
+14786466
+14786467
+14786468
+14786469
+14786470
+14786471
+14786472
+14786473
+14786480
+14786481
+14786482
+14786483
+14786484
+14786485
+14786486
+14786487
+14786488
+14786489
+14786704
+14786705
+14786706
+14786707
+14786708
+14786709
+14786710
+14786711
+14786712
+14786713
+14787974
+14787975
+14787976
+14787977
+14787978
+14787979
+14787980
+14787981
+14787982
+14787983
+14788496
+14788497
+14788498
+14788499
+14788500
+14788501
+14788502
+14788503
+14788504
+14788505
+14788506
+14789248
+14789249
+14789250
+14789251
+14789252
+14789253
+14789254
+14789255
+14789256
+14789257
+14789264
+14789265
+14789266
+14789267
+14789268
+14789269
+14789270
+14789271
+14789272
+14789273
+14790032
+14790033
+14790034
+14790035
+14790036
+14790037
+14790038
+14790039
+14790040
+14790041
+14790320
+14790321
+14790322
+14790323
+14790324
+14790325
+14790326
+14790327
+14790328
+14790329
+14791040
+14791041
+14791042
+14791043
+14791044
+14791045
+14791046
+14791047
+14791048
+14791049
+14791056
+14791057
+14791058
+14791059
+14791060
+14791061
+14791062
+14791063
+14791064
+14791065
 4036856736
 4036856737
 4036856738
 4036857270
 4036857271
 4036857272
+4036861838
+4036861839
+4036861840
+4036861841
+4036861842
+4036861843
+4036861844
+4036861845
+4036861846
+4036861847
+4036861848
+4036861849
+4036861850
+4036861851
+4036861852
+4036861853
+4036861854
+4036861855
+4036861856
+4036861857
+4036861858
+4036861859
+4036861860
+4036861861
+4036861862
+4036861863
+4036861864
+4036861865
+4036861866
+4036861867
+4036861868
+4036861869
+4036861870
+4036861871
+4036861872
+4036861873
+4036861874
+4036861875
+4036861876
+4036861877
+4036861878
+4036861879
+4036861880
+4036861881
+4036861882
+4036861883
+4036861884
+4036861885
+4036861886
+4036861887
+4036920704
+4036920705
+4036920706
+4036920707
+4036920708
+4036920709
+4036920710
+4036920711
+4036920712
+4036920713
+4036922288
+4036922289
+4036922290
+4036922291
+4036922292
+4036922293
+4036922294
+4036922295
+4036922296
+4036922297
+4036925361
+4036925362
+4036925363
+4036925364
+4036925365
+4036925366
+4036925367
+4036925368
+4036925369
 4036928391
 4036928392
 4036928393
 4036928397
 4036928398
 4036928399
+4036928912
+4036928913
+4036928914
+4036928915
+4036928916
+4036928917
+4036928918
+4036928919
+4036928920
+4036928921
 4036932017
 4036932018
 4036932019
 4036985994
 4036985995
 4036985996
+4036997040
+4036997041
+4036997042
+4036997043
+4036997044
+4036997045
+4036997046
+4036997047
+4036997048
+4036997049
+14844336
+14844340
+14844341
+14844342
+14844343
+14844344
+14844345
+14844544
+14844545
+14844546
+14844547
+14844548
+14844549
+14844550
+14844551
+14844552
+14844553
+14845328
+14845329
+14845330
+14845331
+14845332
+14845333
+14845334
+14845335
+14845336
+14845337
+14845338
+14845339
+14845340
+14845341
+14845342
+14845343
+14845344
+14845345
+14845346
+14845347
+14845348
+14845349
+14845350
+14845351
+14845352
+14845353
+14845354
+14845355
+14845356
+14845357
+14845358
+14845359
+14845360
+14845361
+14845362
+14845363
+14845364
+14845365
+14845366
+14845367
+14845368
+14845369
+14845370
+14845371
+14845372
+14845373
+14845374
+14845375
+14845568
+14845569
+14845570
+14845571
+14845572
+14845573
+14845574
+14845575
+14845576
+14845577
+14848416
+14848417
+14848418
+14848419
+14848420
+14848421
+14848422
+14848423
+14848424
+14848425
+14848426
+14848427
+14848428
+14848429
+14848430
+14848431
+14848432
+14848433
+14848434
+14848435
+14848436
+14848437
+14848438
+14848439
+14848440
+14848441
+14848442
+14848443
+14848444
+14848445
+14848446
+14848447
+14848640
+14848641
+14848642
+14848643
+14848644
+14848645
+14848646
+14848647
+14848648
+14848649
+14848650
+14848651
+14848652
+14848653
+14848654
+14848655
+14848656
+14848657
+14848658
+14848659
+14848660
+14848661
+14848662
+14848663
+14848664
+14848665
+14848666
+14848667
+14848938
+14848939
+14848940
+14848941
+14848942
+14848943
+14848944
+14848945
+14848946
+14848947
+14848948
+14848949
+14848950
+14848951
+14848952
+14848953
+14848954
+14848955
+14848956
+14848957
+14848958
+14848959
+14851510
+14851511
+14851512
+14851513
+14851514
+14851515
+14851516
+14851517
+14851518
+14851519
+14851712
+14851713
+14851714
+14851715
+14851716
+14851717
+14851718
+14851719
+14851720
+14851721
+14851722
+14851723
+14851724
+14851725
+14851726
+14851727
+14851728
+14851729
+14851730
+14851731
+14857149
+14909575
+14909601
+14909602
+14909603
+14909604
+14909605
+14909606
+14909607
+14909608
+14909609
+14909624
+14909625
+14909626
+14911122
+14911123
+14911124
+14911125
+14911648
+14911649
+14911650
+14911651
+14911652
+14911653
+14911654
+14911655
+14911656
+14911657
+14911880
+14911881
+14911882
+14911883
+14911884
+14911885
+14911886
+14911887
+14911889
+14911890
+14911891
+14911892
+14911893
+14911894
+14911895
+14911896
+14911897
+14911898
+14911899
+14911900
+14911901
+14911902
+14911903
+14912128
+14912129
+14912130
+14912131
+14912132
+14912133
+14912134
+14912135
+14912136
+14912137
+14912177
+14912178
+14912179
+14912180
+14912181
+14912182
+14912183
+14912184
+14912185
+14912186
+14912187
+14912188
+14912189
+14912190
+14912191
+15374496
+15374497
+15374498
+15374499
+15374500
+15374501
+15374502
+15374503
+15374504
+15374505
+15375270
+15375271
+15375272
+15375273
+15375274
+15375275
+15375276
+15375277
+15375278
+15375279
+15376560
+15376561
+15376562
+15376563
+15376564
+15376565
+15377296
+15377297
+15377298
+15377299
+15377300
+15377301
+15377302
+15377303
+15377304
+15377305
+15377536
+15377537
+15377538
+15377539
+15377540
+15377541
+15377542
+15377543
+15377544
+15377545
+15378320
+15378321
+15378322
+15378323
+15378324
+15378325
+15378326
+15378327
+15378328
+15378329
+15378352
+15378353
+15378354
+15378355
+15378356
+15378357
+15378358
+15378359
+15378360
+15378361
+15378832
+15378833
+15378834
+15378835
+15378836
+15378837
+15378838
+15378839
+15378840
+15378841
+15380400
+15380401
+15380402
+15380403
+15380404
+15380405
+15380406
+15380407
+15380408
+15380409
+15711376
+15711377
+15711378
+15711379
+15711380
+15711381
+15711382
+15711383
+15711384
+15711385
index c51ad3e9d4c778abc7f5d2026575d0e723afc753..32ae9280cf812d0590ad79b3c3bcd0cc4e73cefc 100644 (file)
 14792381
 14792382
 14792383
+15376014
index a0632ede59db2b52591890b0d63364519c9d0e52..8378a189909bc7939ab87550942127292ed483fe 100644 (file)
@@ -293,6 +293,8 @@ U+082D
 U+0859
 U+085A
 U+085B
+U+0896
+U+0897
 U+0898
 U+0899
 U+089A
@@ -658,6 +660,9 @@ U+10A3A
 U+10A3F
 U+10AE5
 U+10AE6
+U+10D69
+U+10D6A
+U+10EFC
 U+10EFD
 U+10EFE
 U+10EFF
@@ -717,27 +722,6 @@ U+111BE
 U+111CA
 U+111CB
 U+111CC
-U+11F00
-U+11F01
-U+11F02
-U+11F03
-U+11F34
-U+11F35
-U+11F36
-U+11F37
-U+11F38
-U+11F39
-U+11F3A
-U+11F3E
-U+11F3F
-U+11F40
-U+11F41
-U+11F42
-U+1E08F
-U+1E4EC
-U+1E4ED
-U+1E4EE
-U+1E4EF
 U+1122F
 U+11230
 U+11231
@@ -769,6 +753,30 @@ U+11371
 U+11372
 U+11373
 U+11374
+U+113B8
+U+113B9
+U+113BA
+U+113BB
+U+113BC
+U+113BD
+U+113BE
+U+113BF
+U+113C0
+U+113C2
+U+113C5
+U+113C7
+U+113C8
+U+113C9
+U+113CA
+U+113CC
+U+113CD
+U+113CE
+U+113CF
+U+113D0
+U+113D1
+U+113D2
+U+113E1
+U+113E2
 U+114B3
 U+114B4
 U+114B5
@@ -823,9 +831,35 @@ U+11728
 U+11729
 U+1172A
 U+1172B
+U+11F00
+U+11F01
+U+11F02
+U+11F03
+U+11F34
+U+11F35
+U+11F36
+U+11F37
+U+11F38
+U+11F39
+U+11F3A
+U+11F3E
+U+11F3F
+U+11F40
+U+11F41
+U+11F42
+U+11F5A
 U+135D
 U+135E
 U+135F
+U+1611E
+U+1611F
+U+16120
+U+1612A
+U+1612B
+U+1612C
+U+1612D
+U+1612E
+U+1612F
 U+16AF0
 U+16AF1
 U+16AF2
@@ -954,13 +988,19 @@ U+1B00
 U+1B01
 U+1B02
 U+1B03
+U+1B04
 U+1B34
+U+1B35
 U+1B36
 U+1B37
 U+1B38
 U+1B39
 U+1B3A
+U+1B3B
 U+1B3C
+U+1B3D
+U+1B3E
+U+1B3F
 U+1B42
 U+1B6B
 U+1B6C
@@ -1004,7 +1044,6 @@ U+1C37
 U+1CD0
 U+1CD1
 U+1CD2
-U+1CD3
 U+1CD4
 U+1CD5
 U+1CD6
@@ -1018,6 +1057,7 @@ U+1CDD
 U+1CDE
 U+1CDF
 U+1CE0
+U+1CE1
 U+1CE2
 U+1CE3
 U+1CE4
@@ -1245,6 +1285,11 @@ U+1DFC
 U+1DFD
 U+1DFE
 U+1DFF
+U+1E08F
+U+1E4EC
+U+1E4ED
+U+1E4EE
+U+1E4EF
 U+1E8D0
 U+1E8D1
 U+1E8D2
@@ -1320,6 +1365,7 @@ U+A689
 U+A68A
 U+A68B
 U+A68C
+U+A68C
 U+A68D
 U+A68E
 U+A68F
diff --git a/level_0/f_utf/data/tests/codepoints/control_picture-all.txt b/level_0/f_utf/data/tests/codepoints/control_picture-all.txt
new file mode 100644 (file)
index 0000000..ff3a126
--- /dev/null
@@ -0,0 +1,43 @@
+
+U+2400
+U+2401
+U+2402
+U+2403
+U+2404
+U+2405
+U+2406
+U+2407
+U+2408
+U+2409
+U+240A
+U+240B
+U+240C
+U+240D
+U+240E
+U+240F
+U+2410
+U+2411
+U+2412
+U+2413
+U+2414
+U+2415
+U+2416
+U+2417
+U+2418
+U+2419
+U+241A
+U+241B
+U+241C
+U+241D
+U+241E
+U+241F
+U+2420
+U+2421
+U+2422
+U+2423
+U+2424
+U+2425
+U+2426
+U+2427
+U+2428
+U+2429
index 7c17dbcc8311284ca72c9fdfbaa93c4aaa9a59b4..cd488f5da0d17240b09add77bc430f63518b27a1 100644 (file)
-U+0030 
-U+0031 
-U+0032 
-U+0033 
-U+0034 
-U+0035 
-U+0036 
-U+0037 
-U+0038 
-U+0039 
-U+0660 
-U+0661 
-U+0662 
-U+0663 
-U+0664 
-U+0665 
-U+0666 
-U+0667 
-U+0668 
-U+0669 
-U+06F0 
-U+06F1 
-U+06F2 
-U+06F3 
-U+06F4 
-U+06F5 
-U+06F6 
-U+06F7 
-U+06F8 
-U+06F9 
-U+07C0 
-U+07C1 
-U+07C2 
-U+07C3 
-U+07C4 
-U+07C5 
-U+07C6 
-U+07C7 
-U+07C8 
-U+07C9 
-U+0966 
-U+0967 
-U+0968 
-U+0969 
-U+096A 
-U+096B 
-U+096C 
-U+096D 
-U+096E 
-U+096F 
-U+09E6 
-U+09E7 
-U+09E8 
-U+09E9 
-U+09EA 
-U+09EB 
-U+09EC 
-U+09ED 
-U+09EE 
-U+09EF 
-U+0A66 
-U+0A67 
-U+0A68 
-U+0A69 
-U+0A6A 
-U+0A6B 
-U+0A6C 
-U+0A6D 
-U+0A6E 
-U+0A6F 
-U+0AE6 
-U+0AE7 
-U+0AE8 
-U+0AE9 
-U+0AEA 
-U+0AEB 
-U+0AEC 
-U+0AED 
-U+0AEE 
-U+0AEF 
-U+0B66 
-U+0B67 
-U+0B68 
-U+0B69 
-U+0B6A 
-U+0B6B 
-U+0B6C 
-U+0B6D 
-U+0B6E 
-U+0B6F 
-U+0BE6 
-U+0BE7 
-U+0BE8 
-U+0BE9 
-U+0BEA 
-U+0BEB 
-U+0BEC 
-U+0BED 
-U+0BEE 
-U+0BEF 
-U+0C66 
-U+0C67 
-U+0C68 
-U+0C69 
-U+0C6A 
-U+0C6B 
-U+0C6C 
-U+0C6D 
-U+0C6E 
-U+0C6F 
-U+0CE6 
-U+0CE7 
-U+0CE8 
-U+0CE9 
-U+0CEA 
-U+0CEB 
-U+0CEC 
-U+0CED 
-U+0CEE 
-U+0CEF 
-U+0D66 
-U+0D67 
-U+0D68 
-U+0D69 
-U+0D6A 
-U+0D6B 
-U+0D6C 
-U+0D6D 
-U+0D6E 
-U+0D6F 
-U+0DE6 
-U+0DE7 
-U+0DE8 
-U+0DE9 
-U+0DEA 
-U+0DEB 
-U+0DEC 
-U+0DED 
-U+0DEE 
-U+0DEF 
-U+0E50 
-U+0E51 
-U+0E52 
-U+0E53 
-U+0E54 
-U+0E55 
-U+0E56 
-U+0E57 
-U+0E58 
-U+0E59 
-U+0ED0 
-U+0ED1 
-U+0ED2 
-U+0ED3 
-U+0ED4 
-U+0ED5 
-U+0ED6 
-U+0ED7 
-U+0ED8 
-U+0ED9 
-U+0F20 
-U+0F21 
-U+0F22 
-U+0F23 
-U+0F24 
-U+0F25 
-U+0F26 
-U+0F27 
-U+0F28 
-U+0F29 
-U+1040 
-U+1041 
-U+1042 
-U+1043 
-U+1044 
-U+1045 
-U+1046 
-U+1047 
-U+1048 
-U+1049 
-U+1090 
-U+1091 
-U+1092 
-U+1093 
-U+1094 
-U+1095 
-U+1096 
-U+1097 
-U+1098 
-U+1099 
-U+17E0 
-U+17E1 
-U+17E2 
-U+17E3 
-U+17E4 
-U+17E5 
-U+17E6 
-U+17E7 
-U+17E8 
-U+17E9 
-U+1810 
-U+1811 
-U+1812 
-U+1813 
-U+1814 
-U+1815 
-U+1816 
-U+1817 
-U+1818 
-U+1819 
-U+1946 
-U+1947 
-U+1948 
-U+1949 
-U+194A 
-U+194B 
-U+194C 
-U+194D 
-U+194E 
-U+194F 
-U+19D0 
-U+19D1 
-U+19D2 
-U+19D3 
-U+19D4 
-U+19D5 
-U+19D6 
-U+19D7 
-U+19D8 
-U+19D9 
-U+1A80 
-U+1A81 
-U+1A82 
-U+1A83 
-U+1A84 
-U+1A85 
-U+1A86 
-U+1A87 
-U+1A88 
-U+1A89 
-U+1A90 
-U+1A91 
-U+1A92 
-U+1A93 
-U+1A94 
-U+1A95 
-U+1A96 
-U+1A97 
-U+1A98 
-U+1A99 
-U+1B50 
-U+1B51 
-U+1B52 
-U+1B53 
-U+1B54 
-U+1B55 
-U+1B56 
-U+1B57 
-U+1B58 
-U+1B59 
-U+1BB0 
-U+1BB1 
-U+1BB2 
-U+1BB3 
-U+1BB4 
-U+1BB5 
-U+1BB6 
-U+1BB7 
-U+1BB8 
-U+1BB9 
-U+1C40 
-U+1C41 
-U+1C42 
-U+1C43 
-U+1C44 
-U+1C45 
-U+1C46 
-U+1C47 
-U+1C48 
-U+1C49 
-U+1C50 
-U+1C51 
-U+1C52 
-U+1C53 
-U+1C54 
-U+1C55 
-U+1C56 
-U+1C57 
-U+1C58 
-U+1C59 
+U+0030
+U+0031
+U+0032
+U+0033
+U+0034
+U+0035
+U+0036
+U+0037
+U+0038
+U+0039
+U+0660
+U+0661
+U+0662
+U+0663
+U+0664
+U+0665
+U+0666
+U+0667
+U+0668
+U+0669
+U+06F0
+U+06F1
+U+06F2
+U+06F3
+U+06F4
+U+06F5
+U+06F6
+U+06F7
+U+06F8
+U+06F9
+U+07C0
+U+07C1
+U+07C2
+U+07C3
+U+07C4
+U+07C5
+U+07C6
+U+07C7
+U+07C8
+U+07C9
+U+0966
+U+0967
+U+0968
+U+0969
+U+096A
+U+096B
+U+096C
+U+096D
+U+096E
+U+096F
+U+09E6
+U+09E7
+U+09E8
+U+09E9
+U+09EA
+U+09EB
+U+09EC
+U+09ED
+U+09EE
+U+09EF
+U+0A66
+U+0A67
+U+0A68
+U+0A69
+U+0A6A
+U+0A6B
+U+0A6C
+U+0A6D
+U+0A6E
+U+0A6F
+U+0AE6
+U+0AE7
+U+0AE8
+U+0AE9
+U+0AEA
+U+0AEB
+U+0AEC
+U+0AED
+U+0AEE
+U+0AEF
+U+0B66
+U+0B67
+U+0B68
+U+0B69
+U+0B6A
+U+0B6B
+U+0B6C
+U+0B6D
+U+0B6E
+U+0B6F
+U+0BE6
+U+0BE7
+U+0BE8
+U+0BE9
+U+0BEA
+U+0BEB
+U+0BEC
+U+0BED
+U+0BEE
+U+0BEF
+U+0C66
+U+0C67
+U+0C68
+U+0C69
+U+0C6A
+U+0C6B
+U+0C6C
+U+0C6D
+U+0C6E
+U+0C6F
+U+0CE6
+U+0CE7
+U+0CE8
+U+0CE9
+U+0CEA
+U+0CEB
+U+0CEC
+U+0CED
+U+0CEE
+U+0CEF
+U+0D66
+U+0D67
+U+0D68
+U+0D69
+U+0D6A
+U+0D6B
+U+0D6C
+U+0D6D
+U+0D6E
+U+0D6F
+U+0DE6
+U+0DE7
+U+0DE8
+U+0DE9
+U+0DEA
+U+0DEB
+U+0DEC
+U+0DED
+U+0DEE
+U+0DEF
+U+0E50
+U+0E51
+U+0E52
+U+0E53
+U+0E54
+U+0E55
+U+0E56
+U+0E57
+U+0E58
+U+0E59
+U+0ED0
+U+0ED1
+U+0ED2
+U+0ED3
+U+0ED4
+U+0ED5
+U+0ED6
+U+0ED7
+U+0ED8
+U+0ED9
+U+0F20
+U+0F21
+U+0F22
+U+0F23
+U+0F24
+U+0F25
+U+0F26
+U+0F27
+U+0F28
+U+0F29
+U+1040
+U+1041
+U+1042
+U+1043
+U+1044
+U+1045
+U+1046
+U+1047
+U+1048
+U+1049
+U+1090
+U+1091
+U+1092
+U+1093
+U+1094
+U+1095
+U+1096
+U+1097
+U+1098
+U+1099
+U+17E0
+U+17E1
+U+17E2
+U+17E3
+U+17E4
+U+17E5
+U+17E6
+U+17E7
+U+17E8
+U+17E9
+U+1810
+U+1811
+U+1812
+U+1813
+U+1814
+U+1815
+U+1816
+U+1817
+U+1818
+U+1819
+U+1946
+U+1947
+U+1948
+U+1949
+U+194A
+U+194B
+U+194C
+U+194D
+U+194E
+U+194F
+U+19D0
+U+19D1
+U+19D2
+U+19D3
+U+19D4
+U+19D5
+U+19D6
+U+19D7
+U+19D8
+U+19D9
+U+1A80
+U+1A81
+U+1A82
+U+1A83
+U+1A84
+U+1A85
+U+1A86
+U+1A87
+U+1A88
+U+1A89
+U+1A90
+U+1A91
+U+1A92
+U+1A93
+U+1A94
+U+1A95
+U+1A96
+U+1A97
+U+1A98
+U+1A99
+U+1B50
+U+1B51
+U+1B52
+U+1B53
+U+1B54
+U+1B55
+U+1B56
+U+1B57
+U+1B58
+U+1B59
+U+1BB0
+U+1BB1
+U+1BB2
+U+1BB3
+U+1BB4
+U+1BB5
+U+1BB6
+U+1BB7
+U+1BB8
+U+1BB9
+U+1C40
+U+1C41
+U+1C42
+U+1C43
+U+1C44
+U+1C45
+U+1C46
+U+1C47
+U+1C48
+U+1C49
+U+1C50
+U+1C51
+U+1C52
+U+1C53
+U+1C54
+U+1C55
+U+1C56
+U+1C57
+U+1C58
+U+1C59
 U+2160
 U+2161
 U+2162
@@ -329,86 +329,86 @@ U+2185
 U+2186
 U+2187
 U+2188
-U+A620 
-U+A621 
-U+A622 
-U+A623 
-U+A624 
-U+A625 
-U+A626 
-U+A627 
-U+A628 
-U+A629 
-U+A8D0 
-U+A8D1 
-U+A8D2 
-U+A8D3 
-U+A8D4 
-U+A8D5 
-U+A8D6 
-U+A8D7 
-U+A8D8 
-U+A8D9 
-U+A900 
-U+A901 
-U+A902 
-U+A903 
-U+A904 
-U+A905 
-U+A906 
-U+A907 
-U+A908 
-U+A909 
-U+A9D0 
-U+A9D1 
-U+A9D2 
-U+A9D3 
-U+A9D4 
-U+A9D5 
-U+A9D6 
-U+A9D7 
-U+A9D8 
-U+A9D9 
-U+A9F0 
-U+A9F1 
-U+A9F2 
-U+A9F3 
-U+A9F4 
-U+A9F5 
-U+A9F6 
-U+A9F7 
-U+A9F8 
-U+A9F9 
-U+AA50 
-U+AA51 
-U+AA52 
-U+AA53 
-U+AA54 
-U+AA55 
-U+AA56 
-U+AA57 
-U+AA58 
-U+AA59 
-U+ABF0 
-U+ABF1 
-U+ABF2 
-U+ABF3 
-U+ABF4 
-U+ABF5 
-U+ABF6 
-U+ABF7 
-U+ABF8 
-U+ABF9 
-U+FF10 
-U+FF11 
-U+FF12 
-U+FF13 
-U+FF14 
-U+FF15 
-U+FF16 
-U+FF17 
-U+FF18 
-U+FF19 
+U+A620
+U+A621
+U+A622
+U+A623
+U+A624
+U+A625
+U+A626
+U+A627
+U+A628
+U+A629
+U+A8D0
+U+A8D1
+U+A8D2
+U+A8D3
+U+A8D4
+U+A8D5
+U+A8D6
+U+A8D7
+U+A8D8
+U+A8D9
+U+A900
+U+A901
+U+A902
+U+A903
+U+A904
+U+A905
+U+A906
+U+A907
+U+A908
+U+A909
+U+A9D0
+U+A9D1
+U+A9D2
+U+A9D3
+U+A9D4
+U+A9D5
+U+A9D6
+U+A9D7
+U+A9D8
+U+A9D9
+U+A9F0
+U+A9F1
+U+A9F2
+U+A9F3
+U+A9F4
+U+A9F5
+U+A9F6
+U+A9F7
+U+A9F8
+U+A9F9
+U+AA50
+U+AA51
+U+AA52
+U+AA53
+U+AA54
+U+AA55
+U+AA56
+U+AA57
+U+AA58
+U+AA59
+U+ABF0
+U+ABF1
+U+ABF2
+U+ABF3
+U+ABF4
+U+ABF5
+U+ABF6
+U+ABF7
+U+ABF8
+U+ABF9
+U+FF10
+U+FF11
+U+FF12
+U+FF13
+U+FF14
+U+FF15
+U+FF16
+U+FF17
+U+FF18
+U+FF19
 U+104A0
 U+104A1
 U+104A2
@@ -1641,3 +1641,73 @@ U+1E4F6
 U+1E4F7
 U+1E4F8
 U+1E4F9
+U+10D40
+U+10D41
+U+10D42
+U+10D43
+U+10D44
+U+10D45
+U+10D46
+U+10D47
+U+10D48
+U+10D49
+U+116D0
+U+116D1
+U+116D2
+U+116D3
+U+116D4
+U+116D5
+U+116D6
+U+116D7
+U+116D8
+U+116D9
+U+116DA
+U+116DB
+U+116DC
+U+116DD
+U+116DE
+U+116DF
+U+116E0
+U+116E1
+U+116E2
+U+116E3
+U+11BF0
+U+11BF1
+U+11BF2
+U+11BF3
+U+11BF4
+U+11BF5
+U+11BF6
+U+11BF7
+U+11BF8
+U+11BF9
+U+16130
+U+16131
+U+16132
+U+16133
+U+16134
+U+16135
+U+16136
+U+16137
+U+16138
+U+16139
+U+16D70
+U+16D71
+U+16D72
+U+16D73
+U+16D74
+U+16D75
+U+16D76
+U+16D77
+U+16D78
+U+16D79
+U+1E5F1
+U+1E5F2
+U+1E5F3
+U+1E5F4
+U+1E5F5
+U+1E5F6
+U+1E5F7
+U+1E5F8
+U+1E5F9
+U+1E5FA
index 6fd5e16e1936c396f91707c9801b22fca1461189..74b050c15e678a9ce456a22678a87da7c59aba49 100644 (file)
@@ -1,7 +1,7 @@
 U+00A9
 U+00AE
 U+1F004
-U+1F0CF 
+U+1F0CF
 U+1F170
 U+1F171
 U+1F17F
@@ -1130,6 +1130,8 @@ U+1FA85
 U+1FA86
 U+1FA87
 U+1FA88
+U+1FA89
+U+1FA8F
 U+1FA90
 U+1FA91
 U+1FA92
@@ -1176,6 +1178,7 @@ U+1FABA
 U+1FABB
 U+1FABC
 U+1FABD
+U+1FABE
 U+1FABF
 U+1FAC0
 U+1FAC1
@@ -1183,6 +1186,7 @@ U+1FAC2
 U+1FAC3
 U+1FAC4
 U+1FAC5
+U+1FAC6
 U+1FACE
 U+1FACF
 U+1FAD0
index b108d1ae7122e8d537afc45d83e1fa88e8a0d745..74755ea70e5a4e4c9583a82755f4c7fb89aefc14 100644 (file)
@@ -8,6 +8,12 @@ U+0036
 U+0037
 U+0038
 U+0039
+U+00B2
+U+00B3
+U+00B9
+U+00BC
+U+00BD
+U+00BE
 U+0660
 U+0661
 U+0662
@@ -58,6 +64,12 @@ U+09EC
 U+09ED
 U+09EE
 U+09EF
+U+09F4
+U+09F5
+U+09F6
+U+09F7
+U+09F8
+U+09F9
 U+0A66
 U+0A67
 U+0A68
@@ -88,6 +100,12 @@ U+0B6C
 U+0B6D
 U+0B6E
 U+0B6F
+U+0B72
+U+0B73
+U+0B74
+U+0B75
+U+0B76
+U+0B77
 U+0BE6
 U+0BE7
 U+0BE8
@@ -98,6 +116,9 @@ U+0BEC
 U+0BED
 U+0BEE
 U+0BEF
+U+0BF0
+U+0BF1
+U+0BF2
 U+0C66
 U+0C67
 U+0C68
@@ -108,6 +129,13 @@ U+0C6C
 U+0C6D
 U+0C6E
 U+0C6F
+U+0C78
+U+0C79
+U+0C7A
+U+0C7B
+U+0C7C
+U+0C7D
+U+0C7E
 U+0CE6
 U+0CE7
 U+0CE8
@@ -118,6 +146,13 @@ U+0CEC
 U+0CED
 U+0CEE
 U+0CEF
+U+0D58
+U+0D59
+U+0D5A
+U+0D5B
+U+0D5C
+U+0D5D
+U+0D5E
 U+0D66
 U+0D67
 U+0D68
@@ -128,6 +163,15 @@ U+0D6C
 U+0D6D
 U+0D6E
 U+0D6F
+U+0D70
+U+0D71
+U+0D72
+U+0D73
+U+0D74
+U+0D75
+U+0D76
+U+0D77
+U+0D78
 U+0DE6
 U+0DE7
 U+0DE8
@@ -168,6 +212,158 @@ U+0F26
 U+0F27
 U+0F28
 U+0F29
+U+0F2A
+U+0F2B
+U+0F2C
+U+0F2D
+U+0F2E
+U+0F2F
+U+0F30
+U+0F31
+U+0F32
+U+0F33
+U+10107
+U+10108
+U+10109
+U+1010A
+U+1010B
+U+1010C
+U+1010D
+U+1010E
+U+1010F
+U+10110
+U+10111
+U+10112
+U+10113
+U+10114
+U+10115
+U+10116
+U+10117
+U+10118
+U+10119
+U+1011A
+U+1011B
+U+1011C
+U+1011D
+U+1011E
+U+1011F
+U+10120
+U+10121
+U+10122
+U+10123
+U+10124
+U+10125
+U+10126
+U+10127
+U+10128
+U+10129
+U+1012A
+U+1012B
+U+1012C
+U+1012D
+U+1012E
+U+1012F
+U+10130
+U+10131
+U+10132
+U+10133
+U+10140
+U+10141
+U+10142
+U+10143
+U+10144
+U+10145
+U+10146
+U+10147
+U+10148
+U+10149
+U+1014A
+U+1014B
+U+1014C
+U+1014D
+U+1014E
+U+1014F
+U+10150
+U+10151
+U+10152
+U+10153
+U+10154
+U+10155
+U+10156
+U+10157
+U+10158
+U+10159
+U+1015A
+U+1015B
+U+1015C
+U+1015D
+U+1015E
+U+1015F
+U+10160
+U+10161
+U+10162
+U+10163
+U+10164
+U+10165
+U+10166
+U+10167
+U+10168
+U+10169
+U+1016A
+U+1016B
+U+1016C
+U+1016D
+U+1016E
+U+1016F
+U+10170
+U+10171
+U+10172
+U+10173
+U+10174
+U+10175
+U+10176
+U+10177
+U+10178
+U+1018A
+U+1018B
+U+102E1
+U+102E2
+U+102E3
+U+102E4
+U+102E5
+U+102E6
+U+102E7
+U+102E8
+U+102E9
+U+102EA
+U+102EB
+U+102EC
+U+102ED
+U+102EE
+U+102EF
+U+102F0
+U+102F1
+U+102F2
+U+102F3
+U+102F4
+U+102F5
+U+102F6
+U+102F7
+U+102F8
+U+102F9
+U+102FA
+U+102FB
+U+10320
+U+10321
+U+10322
+U+10323
+U+10341
+U+1034A
+U+103D1
+U+103D2
+U+103D3
+U+103D4
+U+103D5
 U+1040
 U+1041
 U+1042
@@ -178,8 +374,53 @@ U+1046
 U+1047
 U+1048
 U+1049
+U+104A0
+U+104A1
+U+104A2
+U+104A3
+U+104A4
+U+104A5
+U+104A6
+U+104A7
+U+104A8
+U+104A9
+U+10858
+U+10859
+U+1085A
+U+1085B
+U+1085C
+U+1085D
+U+1085E
+U+1085F
+U+10879
+U+1087A
+U+1087B
+U+1087C
+U+1087D
+U+1087E
+U+1087F
+U+108A7
+U+108A8
+U+108A9
+U+108AA
+U+108AB
+U+108AC
+U+108AD
+U+108AE
+U+108AF
+U+108FB
+U+108FC
+U+108FD
+U+108FE
+U+108FF
 U+1090
 U+1091
+U+10916
+U+10917
+U+10918
+U+10919
+U+1091A
+U+1091B
 U+1092
 U+1093
 U+1094
@@ -188,1170 +429,6 @@ U+1096
 U+1097
 U+1098
 U+1099
-U+17E0
-U+17E1
-U+17E2
-U+17E3
-U+17E4
-U+17E5
-U+17E6
-U+17E7
-U+17E8
-U+17E9
-U+1810
-U+1811
-U+1812
-U+1813
-U+1814
-U+1815
-U+1816
-U+1817
-U+1818
-U+1819
-U+1946
-U+1947
-U+1948
-U+1949
-U+194A
-U+194B
-U+194C
-U+194D
-U+194E
-U+194F
-U+19D0
-U+19D1
-U+19D2
-U+19D3
-U+19D4
-U+19D5
-U+19D6
-U+19D7
-U+19D8
-U+19D9
-U+1A80
-U+1A81
-U+1A82
-U+1A83
-U+1A84
-U+1A85
-U+1A86
-U+1A87
-U+1A88
-U+1A89
-U+1A90
-U+1A91
-U+1A92
-U+1A93
-U+1A94
-U+1A95
-U+1A96
-U+1A97
-U+1A98
-U+1A99
-U+1B50
-U+1B51
-U+1B52
-U+1B53
-U+1B54
-U+1B55
-U+1B56
-U+1B57
-U+1B58
-U+1B59
-U+1BB0
-U+1BB1
-U+1BB2
-U+1BB3
-U+1BB4
-U+1BB5
-U+1BB6
-U+1BB7
-U+1BB8
-U+1BB9
-U+1C40
-U+1C41
-U+1C42
-U+1C43
-U+1C44
-U+1C45
-U+1C46
-U+1C47
-U+1C48
-U+1C49
-U+1C50
-U+1C51
-U+1C52
-U+1C53
-U+1C54
-U+1C55
-U+1C56
-U+1C57
-U+1C58
-U+1C59
-U+2160
-U+2161
-U+2162
-U+2163
-U+2164
-U+2165
-U+2166
-U+2167
-U+2168
-U+2169
-U+216A
-U+216B
-U+216C
-U+216D
-U+216E
-U+216F
-U+2170
-U+2171
-U+2172
-U+2173
-U+2174
-U+2175
-U+2176
-U+2177
-U+2178
-U+2179
-U+217A
-U+217B
-U+217C
-U+217D
-U+217E
-U+217F
-U+2180
-U+2181
-U+2182
-U+2183
-U+2184
-U+2185
-U+2186
-U+2187
-U+2188
-U+A620
-U+A621
-U+A622
-U+A623
-U+A624
-U+A625
-U+A626
-U+A627
-U+A628
-U+A629
-U+A8D0
-U+A8D1
-U+A8D2
-U+A8D3
-U+A8D4
-U+A8D5
-U+A8D6
-U+A8D7
-U+A8D8
-U+A8D9
-U+A900
-U+A901
-U+A902
-U+A903
-U+A904
-U+A905
-U+A906
-U+A907
-U+A908
-U+A909
-U+A9D0
-U+A9D1
-U+A9D2
-U+A9D3
-U+A9D4
-U+A9D5
-U+A9D6
-U+A9D7
-U+A9D8
-U+A9D9
-U+A9F0
-U+A9F1
-U+A9F2
-U+A9F3
-U+A9F4
-U+A9F5
-U+A9F6
-U+A9F7
-U+A9F8
-U+A9F9
-U+AA50
-U+AA51
-U+AA52
-U+AA53
-U+AA54
-U+AA55
-U+AA56
-U+AA57
-U+AA58
-U+AA59
-U+ABF0
-U+ABF1
-U+ABF2
-U+ABF3
-U+ABF4
-U+ABF5
-U+ABF6
-U+ABF7
-U+ABF8
-U+ABF9
-U+FF10
-U+FF11
-U+FF12
-U+FF13
-U+FF14
-U+FF15
-U+FF16
-U+FF17
-U+FF18
-U+FF19
-U+104A0
-U+104A1
-U+104A2
-U+104A3
-U+104A4
-U+104A5
-U+104A6
-U+104A7
-U+104A8
-U+104A9
-U+10D30
-U+10D31
-U+10D32
-U+10D33
-U+10D34
-U+10D35
-U+10D36
-U+10D37
-U+10D38
-U+10D39
-U+11066
-U+11067
-U+11068
-U+11069
-U+1106A
-U+1106B
-U+1106C
-U+1106D
-U+1106E
-U+1106F
-U+110F0
-U+110F1
-U+110F2
-U+110F3
-U+110F4
-U+110F5
-U+110F6
-U+110F7
-U+110F8
-U+110F9
-U+11136
-U+11137
-U+11138
-U+11139
-U+1113A
-U+1113B
-U+1113C
-U+1113D
-U+1113E
-U+1113F
-U+111D0
-U+111D1
-U+111D2
-U+111D3
-U+111D4
-U+111D5
-U+111D6
-U+111D7
-U+111D8
-U+111D9
-U+112F0
-U+112F1
-U+112F2
-U+112F3
-U+112F4
-U+112F5
-U+112F6
-U+112F7
-U+112F8
-U+112F9
-U+11450
-U+11451
-U+11452
-U+11453
-U+11454
-U+11455
-U+11456
-U+11457
-U+11458
-U+11459
-U+114D0
-U+114D1
-U+114D2
-U+114D3
-U+114D4
-U+114D5
-U+114D6
-U+114D7
-U+114D8
-U+114D9
-U+11650
-U+11651
-U+11652
-U+11653
-U+11654
-U+11655
-U+11656
-U+11657
-U+11658
-U+11659
-U+116C0
-U+116C1
-U+116C2
-U+116C3
-U+116C4
-U+116C5
-U+116C6
-U+116C7
-U+116C8
-U+116C9
-U+11730
-U+11731
-U+11732
-U+11733
-U+11734
-U+11735
-U+11736
-U+11737
-U+11738
-U+11739
-U+118E0
-U+118E1
-U+118E2
-U+118E3
-U+118E4
-U+118E5
-U+118E6
-U+118E7
-U+118E8
-U+118E9
-U+11950
-U+11951
-U+11952
-U+11953
-U+11954
-U+11955
-U+11956
-U+11957
-U+11958
-U+11959
-U+11C50
-U+11C51
-U+11C52
-U+11C53
-U+11C54
-U+11C55
-U+11C56
-U+11C57
-U+11C58
-U+11C59
-U+11D50
-U+11D51
-U+11D52
-U+11D53
-U+11D54
-U+11D55
-U+11D56
-U+11D57
-U+11D58
-U+11D59
-U+11DA0
-U+11DA1
-U+11DA2
-U+11DA3
-U+11DA4
-U+11DA5
-U+11DA6
-U+11DA7
-U+11DA8
-U+11DA9
-U+16A60
-U+16A61
-U+16A62
-U+16A63
-U+16A64
-U+16A65
-U+16A66
-U+16A67
-U+16A68
-U+16A69
-U+16AC0
-U+16AC1
-U+16AC2
-U+16AC3
-U+16AC4
-U+16AC5
-U+16AC6
-U+16AC7
-U+16AC8
-U+16AC9
-U+16B50
-U+16B51
-U+16B52
-U+16B53
-U+16B54
-U+16B55
-U+16B56
-U+16B57
-U+16B58
-U+16B59
-U+1D7CE
-U+1D7CF
-U+1D7D0
-U+1D7D1
-U+1D7D2
-U+1D7D3
-U+1D7D4
-U+1D7D5
-U+1D7D6
-U+1D7D7
-U+1D7D8
-U+1D7D9
-U+1D7DA
-U+1D7DB
-U+1D7DC
-U+1D7DD
-U+1D7DE
-U+1D7DF
-U+1D7E0
-U+1D7E1
-U+1D7E2
-U+1D7E3
-U+1D7E4
-U+1D7E5
-U+1D7E6
-U+1D7E7
-U+1D7E8
-U+1D7E9
-U+1D7EA
-U+1D7EB
-U+1D7EC
-U+1D7ED
-U+1D7EE
-U+1D7EF
-U+1D7F0
-U+1D7F1
-U+1D7F2
-U+1D7F3
-U+1D7F4
-U+1D7F5
-U+1D7F6
-U+1D7F7
-U+1D7F8
-U+1D7F9
-U+1D7FA
-U+1D7FB
-U+1D7FC
-U+1D7FD
-U+1D7FE
-U+1D7FF
-U+1E140
-U+1E141
-U+1E142
-U+1E143
-U+1E144
-U+1E145
-U+1E146
-U+1E147
-U+1E148
-U+1E149
-U+1E2F0
-U+1E2F1
-U+1E2F2
-U+1E2F3
-U+1E2F4
-U+1E2F5
-U+1E2F6
-U+1E2F7
-U+1E2F8
-U+1E2F9
-U+1E950
-U+1E951
-U+1E952
-U+1E953
-U+1E954
-U+1E955
-U+1E956
-U+1E957
-U+1E958
-U+1E959
-U+1FBF0
-U+1FBF1
-U+1FBF2
-U+1FBF3
-U+1FBF4
-U+1FBF5
-U+1FBF6
-U+1FBF7
-U+1FBF8
-U+1FBF9
-U+16EE
-U+16EF
-U+16F0
-U+2160
-U+2161
-U+2162
-U+2163
-U+2164
-U+2165
-U+2166
-U+2167
-U+2168
-U+2169
-U+216A
-U+216B
-U+216C
-U+216D
-U+216E
-U+216F
-U+2170
-U+2171
-U+2172
-U+2173
-U+2174
-U+2175
-U+2176
-U+2177
-U+2178
-U+2179
-U+217A
-U+217B
-U+217C
-U+217D
-U+217E
-U+217F
-U+2180
-U+2181
-U+2182
-U+2185
-U+2186
-U+2187
-U+2188
-U+3007
-U+3021
-U+3022
-U+3023
-U+3024
-U+3025
-U+3026
-U+3027
-U+3028
-U+3029
-U+3038
-U+3039
-U+303A
-U+A6E6
-U+A6E7
-U+A6E8
-U+A6E9
-U+A6EA
-U+A6EB
-U+A6EC
-U+A6ED
-U+A6EE
-U+A6EF
-U+10140
-U+10141
-U+10142
-U+10143
-U+10144
-U+10145
-U+10146
-U+10147
-U+10148
-U+10149
-U+1014A
-U+1014B
-U+1014C
-U+1014D
-U+1014E
-U+1014F
-U+10150
-U+10151
-U+10152
-U+10153
-U+10154
-U+10155
-U+10156
-U+10157
-U+10158
-U+10159
-U+1015A
-U+1015B
-U+1015C
-U+1015D
-U+1015E
-U+1015F
-U+10160
-U+10161
-U+10162
-U+10163
-U+10164
-U+10165
-U+10166
-U+10167
-U+10168
-U+10169
-U+1016A
-U+1016B
-U+1016C
-U+1016D
-U+1016E
-U+1016F
-U+10170
-U+10171
-U+10172
-U+10173
-U+10174
-U+10341
-U+1034A
-U+103D1
-U+103D2
-U+103D3
-U+103D4
-U+103D5
-U+12400
-U+12401
-U+12402
-U+12403
-U+12404
-U+12405
-U+12406
-U+12407
-U+12408
-U+12409
-U+1240A
-U+1240B
-U+1240C
-U+1240D
-U+1240E
-U+1240F
-U+12410
-U+12411
-U+12412
-U+12413
-U+12414
-U+12415
-U+12416
-U+12417
-U+12418
-U+12419
-U+1241A
-U+1241B
-U+1241C
-U+1241D
-U+1241E
-U+1241F
-U+12420
-U+12421
-U+12422
-U+12423
-U+12424
-U+12425
-U+12426
-U+12427
-U+12428
-U+12429
-U+1242A
-U+1242B
-U+1242C
-U+1242D
-U+1242E
-U+1242F
-U+12430
-U+12431
-U+12432
-U+12433
-U+12434
-U+12435
-U+12436
-U+12437
-U+12438
-U+12439
-U+1243A
-U+1243B
-U+1243C
-U+1243D
-U+1243E
-U+1243F
-U+12440
-U+12441
-U+12442
-U+12443
-U+12444
-U+12445
-U+12446
-U+12447
-U+12448
-U+12449
-U+1244A
-U+1244B
-U+1244C
-U+1244D
-U+1244E
-U+1244F
-U+12450
-U+12451
-U+12452
-U+12453
-U+12454
-U+12455
-U+12456
-U+12457
-U+12458
-U+12459
-U+1245A
-U+1245B
-U+1245C
-U+1245D
-U+1245E
-U+1245F
-U+12460
-U+12461
-U+12462
-U+12463
-U+12464
-U+12465
-U+12466
-U+12467
-U+12468
-U+12469
-U+1246A
-U+1246B
-U+1246C
-U+1246D
-U+1246E
-U+00B2
-U+00B3
-U+00B9
-U+00BC
-U+00BD
-U+00BE
-U+09F4
-U+09F5
-U+09F6
-U+09F7
-U+09F8
-U+09F9
-U+0B72
-U+0B73
-U+0B74
-U+0B75
-U+0B76
-U+0B77
-U+0BF0
-U+0BF1
-U+0BF2
-U+0C78
-U+0C79
-U+0C7A
-U+0C7B
-U+0C7C
-U+0C7D
-U+0C7E
-U+0D58
-U+0D59
-U+0D5A
-U+0D5B
-U+0D5C
-U+0D5D
-U+0D5E
-U+0D70
-U+0D71
-U+0D72
-U+0D73
-U+0D74
-U+0D75
-U+0D76
-U+0D77
-U+0D78
-U+0F2A
-U+0F2B
-U+0F2C
-U+0F2D
-U+0F2E
-U+0F2F
-U+0F30
-U+0F31
-U+0F32
-U+0F33
-U+1369
-U+136A
-U+136B
-U+136C
-U+136D
-U+136E
-U+136F
-U+1370
-U+1371
-U+1372
-U+1373
-U+1374
-U+1375
-U+1376
-U+1377
-U+1378
-U+1379
-U+137A
-U+137B
-U+137C
-U+17F0
-U+17F1
-U+17F2
-U+17F3
-U+17F4
-U+17F5
-U+17F6
-U+17F7
-U+17F8
-U+17F9
-U+19DA
-U+2070
-U+2074
-U+2075
-U+2076
-U+2077
-U+2078
-U+2079
-U+2080
-U+2081
-U+2082
-U+2083
-U+2084
-U+2085
-U+2086
-U+2087
-U+2088
-U+2089
-U+2150
-U+2151
-U+2152
-U+2153
-U+2154
-U+2155
-U+2156
-U+2157
-U+2158
-U+2159
-U+215A
-U+215B
-U+215C
-U+215D
-U+215E
-U+215F
-U+2189
-U+2460
-U+2461
-U+2462
-U+2463
-U+2464
-U+2465
-U+2466
-U+2467
-U+2468
-U+2469
-U+246A
-U+246B
-U+246C
-U+246D
-U+246E
-U+246F
-U+2470
-U+2471
-U+2472
-U+2473
-U+2474
-U+2475
-U+2476
-U+2477
-U+2478
-U+2479
-U+247A
-U+247B
-U+247C
-U+247D
-U+247E
-U+247F
-U+2480
-U+2481
-U+2482
-U+2483
-U+2484
-U+2485
-U+2486
-U+2487
-U+2488
-U+2489
-U+248A
-U+248B
-U+248C
-U+248D
-U+248E
-U+248F
-U+2490
-U+2491
-U+2492
-U+2493
-U+2494
-U+2495
-U+2496
-U+2497
-U+2498
-U+2499
-U+249A
-U+249B
-U+24EA
-U+24EB
-U+24EC
-U+24ED
-U+24EE
-U+24EF
-U+24F0
-U+24F1
-U+24F2
-U+24F3
-U+24F4
-U+24F5
-U+24F6
-U+24F7
-U+24F8
-U+24F9
-U+24FA
-U+24FB
-U+24FC
-U+24FD
-U+24FE
-U+24FF
-U+2776
-U+2777
-U+2778
-U+2779
-U+277A
-U+277B
-U+277C
-U+277D
-U+277E
-U+277F
-U+2780
-U+2781
-U+2782
-U+2783
-U+2784
-U+2785
-U+2786
-U+2787
-U+2788
-U+2789
-U+278A
-U+278B
-U+278C
-U+278D
-U+278E
-U+278F
-U+2790
-U+2791
-U+2792
-U+2793
-U+2CFD
-U+3192
-U+3193
-U+3194
-U+3195
-U+3220
-U+3221
-U+3222
-U+3223
-U+3224
-U+3225
-U+3226
-U+3227
-U+3228
-U+3229
-U+3248
-U+3249
-U+324A
-U+324B
-U+324C
-U+324D
-U+324E
-U+324F
-U+3251
-U+3252
-U+3253
-U+3254
-U+3255
-U+3256
-U+3257
-U+3258
-U+3259
-U+325A
-U+325B
-U+325C
-U+325D
-U+325E
-U+325F
-U+3280
-U+3281
-U+3282
-U+3283
-U+3284
-U+3285
-U+3286
-U+3287
-U+3288
-U+3289
-U+32B1
-U+32B2
-U+32B3
-U+32B4
-U+32B5
-U+32B6
-U+32B7
-U+32B8
-U+32B9
-U+32BA
-U+32BB
-U+32BC
-U+32BD
-U+32BE
-U+32BF
-U+A830
-U+A831
-U+A832
-U+A833
-U+A834
-U+A835
-U+10107
-U+10108
-U+10109
-U+1010A
-U+1010B
-U+1010C
-U+1010D
-U+1010E
-U+1010F
-U+10110
-U+10111
-U+10112
-U+10113
-U+10114
-U+10115
-U+10116
-U+10117
-U+10118
-U+10119
-U+1011A
-U+1011B
-U+1011C
-U+1011D
-U+1011E
-U+1011F
-U+10120
-U+10121
-U+10122
-U+10123
-U+10124
-U+10125
-U+10126
-U+10127
-U+10128
-U+10129
-U+1012A
-U+1012B
-U+1012C
-U+1012D
-U+1012E
-U+1012F
-U+10130
-U+10131
-U+10132
-U+10133
-U+10175
-U+10176
-U+10177
-U+10178
-U+1018A
-U+1018B
-U+102E1
-U+102E2
-U+102E3
-U+102E4
-U+102E5
-U+102E6
-U+102E7
-U+102E8
-U+102E9
-U+102EA
-U+102EB
-U+102EC
-U+102ED
-U+102EE
-U+102EF
-U+102F0
-U+102F1
-U+102F2
-U+102F3
-U+102F4
-U+102F5
-U+102F6
-U+102F7
-U+102F8
-U+102F9
-U+102FA
-U+102FB
-U+10320
-U+10321
-U+10322
-U+10323
-U+10858
-U+10859
-U+1085A
-U+1085B
-U+1085C
-U+1085D
-U+1085E
-U+1085F
-U+10879
-U+1087A
-U+1087B
-U+1087C
-U+1087D
-U+1087E
-U+1087F
-U+108A7
-U+108A8
-U+108A9
-U+108AA
-U+108AB
-U+108AC
-U+108AD
-U+108AE
-U+108AF
-U+108FB
-U+108FC
-U+108FD
-U+108FE
-U+108FF
-U+10916
-U+10917
-U+10918
-U+10919
-U+1091A
-U+1091B
 U+109BC
 U+109BD
 U+109C0
@@ -1464,6 +541,26 @@ U+10CFC
 U+10CFD
 U+10CFE
 U+10CFF
+U+10D30
+U+10D31
+U+10D32
+U+10D33
+U+10D34
+U+10D35
+U+10D36
+U+10D37
+U+10D38
+U+10D39
+U+10D40
+U+10D41
+U+10D42
+U+10D43
+U+10D44
+U+10D45
+U+10D46
+U+10D47
+U+10D48
+U+10D49
 U+10E60
 U+10E61
 U+10E62
@@ -1536,6 +633,46 @@ U+11062
 U+11063
 U+11064
 U+11065
+U+11066
+U+11067
+U+11068
+U+11069
+U+1106A
+U+1106B
+U+1106C
+U+1106D
+U+1106E
+U+1106F
+U+110F0
+U+110F1
+U+110F2
+U+110F3
+U+110F4
+U+110F5
+U+110F6
+U+110F7
+U+110F8
+U+110F9
+U+11136
+U+11137
+U+11138
+U+11139
+U+1113A
+U+1113B
+U+1113C
+U+1113D
+U+1113E
+U+1113F
+U+111D0
+U+111D1
+U+111D2
+U+111D3
+U+111D4
+U+111D5
+U+111D6
+U+111D7
+U+111D8
+U+111D9
 U+111E1
 U+111E2
 U+111E3
@@ -1556,8 +693,98 @@ U+111F1
 U+111F2
 U+111F3
 U+111F4
+U+112F0
+U+112F1
+U+112F2
+U+112F3
+U+112F4
+U+112F5
+U+112F6
+U+112F7
+U+112F8
+U+112F9
+U+11450
+U+11451
+U+11452
+U+11453
+U+11454
+U+11455
+U+11456
+U+11457
+U+11458
+U+11459
+U+114D0
+U+114D1
+U+114D2
+U+114D3
+U+114D4
+U+114D5
+U+114D6
+U+114D7
+U+114D8
+U+114D9
+U+11650
+U+11651
+U+11652
+U+11653
+U+11654
+U+11655
+U+11656
+U+11657
+U+11658
+U+11659
+U+116C0
+U+116C1
+U+116C2
+U+116C3
+U+116C4
+U+116C5
+U+116C6
+U+116C7
+U+116C8
+U+116C9
+U+116D0
+U+116D1
+U+116D2
+U+116D3
+U+116D4
+U+116D5
+U+116D6
+U+116D7
+U+116D8
+U+116D9
+U+116DA
+U+116DB
+U+116DC
+U+116DD
+U+116DE
+U+116DF
+U+116E0
+U+116E1
+U+116E2
+U+116E3
+U+11730
+U+11731
+U+11732
+U+11733
+U+11734
+U+11735
+U+11736
+U+11737
+U+11738
+U+11739
 U+1173A
 U+1173B
+U+118E0
+U+118E1
+U+118E2
+U+118E3
+U+118E4
+U+118E5
+U+118E6
+U+118E7
+U+118E8
+U+118E9
 U+118EA
 U+118EB
 U+118EC
@@ -1567,6 +794,36 @@ U+118EF
 U+118F0
 U+118F1
 U+118F2
+U+11950
+U+11951
+U+11952
+U+11953
+U+11954
+U+11955
+U+11956
+U+11957
+U+11958
+U+11959
+U+11BF0
+U+11BF1
+U+11BF2
+U+11BF3
+U+11BF4
+U+11BF5
+U+11BF6
+U+11BF7
+U+11BF8
+U+11BF9
+U+11C50
+U+11C51
+U+11C52
+U+11C53
+U+11C54
+U+11C55
+U+11C56
+U+11C57
+U+11C58
+U+11C59
 U+11C5A
 U+11C5B
 U+11C5C
@@ -1586,6 +843,26 @@ U+11C69
 U+11C6A
 U+11C6B
 U+11C6C
+U+11D50
+U+11D51
+U+11D52
+U+11D53
+U+11D54
+U+11D55
+U+11D56
+U+11D57
+U+11D58
+U+11D59
+U+11DA0
+U+11DA1
+U+11DA2
+U+11DA3
+U+11DA4
+U+11DA5
+U+11DA6
+U+11DA7
+U+11DA8
+U+11DA9
 U+11FC0
 U+11FC1
 U+11FC2
@@ -1607,6 +884,177 @@ U+11FD1
 U+11FD2
 U+11FD3
 U+11FD4
+U+12400
+U+12401
+U+12402
+U+12403
+U+12404
+U+12405
+U+12406
+U+12407
+U+12408
+U+12409
+U+1240A
+U+1240B
+U+1240C
+U+1240D
+U+1240E
+U+1240F
+U+12410
+U+12411
+U+12412
+U+12413
+U+12414
+U+12415
+U+12416
+U+12417
+U+12418
+U+12419
+U+1241A
+U+1241B
+U+1241C
+U+1241D
+U+1241E
+U+1241F
+U+12420
+U+12421
+U+12422
+U+12423
+U+12424
+U+12425
+U+12426
+U+12427
+U+12428
+U+12429
+U+1242A
+U+1242B
+U+1242C
+U+1242D
+U+1242E
+U+1242F
+U+12430
+U+12431
+U+12432
+U+12433
+U+12434
+U+12435
+U+12436
+U+12437
+U+12438
+U+12439
+U+1243A
+U+1243B
+U+1243C
+U+1243D
+U+1243E
+U+1243F
+U+12440
+U+12441
+U+12442
+U+12443
+U+12444
+U+12445
+U+12446
+U+12447
+U+12448
+U+12449
+U+1244A
+U+1244B
+U+1244C
+U+1244D
+U+1244E
+U+1244F
+U+12450
+U+12451
+U+12452
+U+12453
+U+12454
+U+12455
+U+12456
+U+12457
+U+12458
+U+12459
+U+1245A
+U+1245B
+U+1245C
+U+1245D
+U+1245E
+U+1245F
+U+12460
+U+12461
+U+12462
+U+12463
+U+12464
+U+12465
+U+12466
+U+12467
+U+12468
+U+12469
+U+1246A
+U+1246B
+U+1246C
+U+1246D
+U+1246E
+U+1369
+U+136A
+U+136B
+U+136C
+U+136D
+U+136E
+U+136F
+U+1370
+U+1371
+U+1372
+U+1373
+U+1374
+U+1375
+U+1376
+U+1377
+U+1378
+U+1379
+U+137A
+U+137B
+U+137C
+U+16130
+U+16131
+U+16132
+U+16133
+U+16134
+U+16135
+U+16136
+U+16137
+U+16138
+U+16139
+U+16A60
+U+16A61
+U+16A62
+U+16A63
+U+16A64
+U+16A65
+U+16A66
+U+16A67
+U+16A68
+U+16A69
+U+16AC0
+U+16AC1
+U+16AC2
+U+16AC3
+U+16AC4
+U+16AC5
+U+16AC6
+U+16AC7
+U+16AC8
+U+16AC9
+U+16B50
+U+16B51
+U+16B52
+U+16B53
+U+16B54
+U+16B55
+U+16B56
+U+16B57
+U+16B58
+U+16B59
 U+16B5B
 U+16B5C
 U+16B5D
@@ -1614,6 +1062,16 @@ U+16B5E
 U+16B5F
 U+16B60
 U+16B61
+U+16D70
+U+16D71
+U+16D72
+U+16D73
+U+16D74
+U+16D75
+U+16D76
+U+16D77
+U+16D78
+U+16D79
 U+16E80
 U+16E81
 U+16E82
@@ -1637,6 +1095,120 @@ U+16E93
 U+16E94
 U+16E95
 U+16E96
+U+16EE
+U+16EF
+U+16F0
+U+17E0
+U+17E1
+U+17E2
+U+17E3
+U+17E4
+U+17E5
+U+17E6
+U+17E7
+U+17E8
+U+17E9
+U+17F0
+U+17F1
+U+17F2
+U+17F3
+U+17F4
+U+17F5
+U+17F6
+U+17F7
+U+17F8
+U+17F9
+U+1810
+U+1811
+U+1812
+U+1813
+U+1814
+U+1815
+U+1816
+U+1817
+U+1818
+U+1819
+U+1946
+U+1947
+U+1948
+U+1949
+U+194A
+U+194B
+U+194C
+U+194D
+U+194E
+U+194F
+U+19D0
+U+19D1
+U+19D2
+U+19D3
+U+19D4
+U+19D5
+U+19D6
+U+19D7
+U+19D8
+U+19D9
+U+19DA
+U+1A80
+U+1A81
+U+1A82
+U+1A83
+U+1A84
+U+1A85
+U+1A86
+U+1A87
+U+1A88
+U+1A89
+U+1A90
+U+1A91
+U+1A92
+U+1A93
+U+1A94
+U+1A95
+U+1A96
+U+1A97
+U+1A98
+U+1A99
+U+1B50
+U+1B51
+U+1B52
+U+1B53
+U+1B54
+U+1B55
+U+1B56
+U+1B57
+U+1B58
+U+1B59
+U+1BB0
+U+1BB1
+U+1BB2
+U+1BB3
+U+1BB4
+U+1BB5
+U+1BB6
+U+1BB7
+U+1BB8
+U+1BB9
+U+1C40
+U+1C41
+U+1C42
+U+1C43
+U+1C44
+U+1C45
+U+1C46
+U+1C47
+U+1C48
+U+1C49
+U+1C50
+U+1C51
+U+1C52
+U+1C53
+U+1C54
+U+1C55
+U+1C56
+U+1C57
+U+1C58
+U+1C59
 U+1D2E0
 U+1D2E1
 U+1D2E2
@@ -1682,6 +1254,86 @@ U+1D375
 U+1D376
 U+1D377
 U+1D378
+U+1D7CE
+U+1D7CF
+U+1D7D0
+U+1D7D1
+U+1D7D2
+U+1D7D3
+U+1D7D4
+U+1D7D5
+U+1D7D6
+U+1D7D7
+U+1D7D8
+U+1D7D9
+U+1D7DA
+U+1D7DB
+U+1D7DC
+U+1D7DD
+U+1D7DE
+U+1D7DF
+U+1D7E0
+U+1D7E1
+U+1D7E2
+U+1D7E3
+U+1D7E4
+U+1D7E5
+U+1D7E6
+U+1D7E7
+U+1D7E8
+U+1D7E9
+U+1D7EA
+U+1D7EB
+U+1D7EC
+U+1D7ED
+U+1D7EE
+U+1D7EF
+U+1D7F0
+U+1D7F1
+U+1D7F2
+U+1D7F3
+U+1D7F4
+U+1D7F5
+U+1D7F6
+U+1D7F7
+U+1D7F8
+U+1D7F9
+U+1D7FA
+U+1D7FB
+U+1D7FC
+U+1D7FD
+U+1D7FE
+U+1D7FF
+U+1E140
+U+1E141
+U+1E142
+U+1E143
+U+1E144
+U+1E145
+U+1E146
+U+1E147
+U+1E148
+U+1E149
+U+1E2F0
+U+1E2F1
+U+1E2F2
+U+1E2F3
+U+1E2F4
+U+1E2F5
+U+1E2F6
+U+1E2F7
+U+1E2F8
+U+1E2F9
+U+1E5F1
+U+1E5F2
+U+1E5F3
+U+1E5F4
+U+1E5F5
+U+1E5F6
+U+1E5F7
+U+1E5F8
+U+1E5F9
+U+1E5FAU+0030
 U+1E8C7
 U+1E8C8
 U+1E8C9
@@ -1691,6 +1343,16 @@ U+1E8CC
 U+1E8CD
 U+1E8CE
 U+1E8CF
+U+1E950
+U+1E951
+U+1E952
+U+1E953
+U+1E954
+U+1E955
+U+1E956
+U+1E957
+U+1E958
+U+1E959
 U+1EC71
 U+1EC72
 U+1EC73
@@ -1830,3 +1492,372 @@ U+1F109
 U+1F10A
 U+1F10B
 U+1F10C
+U+1FBF0
+U+1FBF1
+U+1FBF2
+U+1FBF3
+U+1FBF4
+U+1FBF5
+U+1FBF6
+U+1FBF7
+U+1FBF8
+U+1FBF9
+U+2070
+U+2074
+U+2075
+U+2076
+U+2077
+U+2078
+U+2079
+U+2080
+U+2081
+U+2082
+U+2083
+U+2084
+U+2085
+U+2086
+U+2087
+U+2088
+U+2089
+U+2150
+U+2151
+U+2152
+U+2153
+U+2154
+U+2155
+U+2156
+U+2157
+U+2158
+U+2159
+U+215A
+U+215B
+U+215C
+U+215D
+U+215E
+U+215F
+U+2160
+U+2161
+U+2162
+U+2163
+U+2164
+U+2165
+U+2166
+U+2167
+U+2168
+U+2169
+U+216A
+U+216B
+U+216C
+U+216D
+U+216E
+U+216F
+U+2170
+U+2171
+U+2172
+U+2173
+U+2174
+U+2175
+U+2176
+U+2177
+U+2178
+U+2179
+U+217A
+U+217B
+U+217C
+U+217D
+U+217E
+U+217F
+U+2180
+U+2181
+U+2182
+U+2183
+U+2184
+U+2185
+U+2186
+U+2187
+U+2188
+U+2189
+U+2460
+U+2461
+U+2462
+U+2463
+U+2464
+U+2465
+U+2466
+U+2467
+U+2468
+U+2469
+U+246A
+U+246B
+U+246C
+U+246D
+U+246E
+U+246F
+U+2470
+U+2471
+U+2472
+U+2473
+U+2474
+U+2475
+U+2476
+U+2477
+U+2478
+U+2479
+U+247A
+U+247B
+U+247C
+U+247D
+U+247E
+U+247F
+U+2480
+U+2481
+U+2482
+U+2483
+U+2484
+U+2485
+U+2486
+U+2487
+U+2488
+U+2489
+U+248A
+U+248B
+U+248C
+U+248D
+U+248E
+U+248F
+U+2490
+U+2491
+U+2492
+U+2493
+U+2494
+U+2495
+U+2496
+U+2497
+U+2498
+U+2499
+U+249A
+U+249B
+U+24EA
+U+24EB
+U+24EC
+U+24ED
+U+24EE
+U+24EF
+U+24F0
+U+24F1
+U+24F2
+U+24F3
+U+24F4
+U+24F5
+U+24F6
+U+24F7
+U+24F8
+U+24F9
+U+24FA
+U+24FB
+U+24FC
+U+24FD
+U+24FE
+U+24FF
+U+2776
+U+2777
+U+2778
+U+2779
+U+277A
+U+277B
+U+277C
+U+277D
+U+277E
+U+277F
+U+2780
+U+2781
+U+2782
+U+2783
+U+2784
+U+2785
+U+2786
+U+2787
+U+2788
+U+2789
+U+278A
+U+278B
+U+278C
+U+278D
+U+278E
+U+278F
+U+2790
+U+2791
+U+2792
+U+2793
+U+2CFD
+U+3007
+U+3021
+U+3022
+U+3023
+U+3024
+U+3025
+U+3026
+U+3027
+U+3028
+U+3029
+U+3038
+U+3039
+U+303A
+U+3192
+U+3193
+U+3194
+U+3195
+U+3220
+U+3221
+U+3222
+U+3223
+U+3224
+U+3225
+U+3226
+U+3227
+U+3228
+U+3229
+U+3248
+U+3249
+U+324A
+U+324B
+U+324C
+U+324D
+U+324E
+U+324F
+U+3251
+U+3252
+U+3253
+U+3254
+U+3255
+U+3256
+U+3257
+U+3258
+U+3259
+U+325A
+U+325B
+U+325C
+U+325D
+U+325E
+U+325F
+U+3280
+U+3281
+U+3282
+U+3283
+U+3284
+U+3285
+U+3286
+U+3287
+U+3288
+U+3289
+U+32B1
+U+32B2
+U+32B3
+U+32B4
+U+32B5
+U+32B6
+U+32B7
+U+32B8
+U+32B9
+U+32BA
+U+32BB
+U+32BC
+U+32BD
+U+32BE
+U+32BF
+U+A620
+U+A621
+U+A622
+U+A623
+U+A624
+U+A625
+U+A626
+U+A627
+U+A628
+U+A629
+U+A6E6
+U+A6E7
+U+A6E8
+U+A6E9
+U+A6EA
+U+A6EB
+U+A6EC
+U+A6ED
+U+A6EE
+U+A6EF
+U+A830
+U+A831
+U+A832
+U+A833
+U+A834
+U+A835
+U+A8D0
+U+A8D1
+U+A8D2
+U+A8D3
+U+A8D4
+U+A8D5
+U+A8D6
+U+A8D7
+U+A8D8
+U+A8D9
+U+A900
+U+A901
+U+A902
+U+A903
+U+A904
+U+A905
+U+A906
+U+A907
+U+A908
+U+A909
+U+A9D0
+U+A9D1
+U+A9D2
+U+A9D3
+U+A9D4
+U+A9D5
+U+A9D6
+U+A9D7
+U+A9D8
+U+A9D9
+U+A9F0
+U+A9F1
+U+A9F2
+U+A9F3
+U+A9F4
+U+A9F5
+U+A9F6
+U+A9F7
+U+A9F8
+U+A9F9
+U+AA50
+U+AA51
+U+AA52
+U+AA53
+U+AA54
+U+AA55
+U+AA56
+U+AA57
+U+AA58
+U+AA59
+U+ABF0
+U+ABF1
+U+ABF2
+U+ABF3
+U+ABF4
+U+ABF5
+U+ABF6
+U+ABF7
+U+ABF8
+U+ABF9
+U+FF10
+U+FF11
+U+FF12
+U+FF13
+U+FF14
+U+FF15
+U+FF16
+U+FF17
+U+FF18
+U+FF19
index 0c2849fd1097bc292b3d8458f1c85b62ae85e1c1..382b4c377b098425f436d50145049c52bcce49a6 100644 (file)
@@ -190,3 +190,4 @@ U+1DBC
 U+1DBD
 U+1DBE
 U+1DBF
+U+A78E
index 6440757dcac67304fbb04265ef674c389130c953..b56dbdb45dc51e6014497fd909fe7cd9a47dcfc7 100644 (file)
@@ -384,6 +384,7 @@ U+1B5F
 U+1B60
 U+1B7D
 U+1B7E
+U+1B7F
 U+1BC9F
 U+1BFC
 U+1BFD
index 3b7d7b52e8c4b4f7da7f7921406a3e6db3ed995e..1007b9b84dc08bf151da8b4d65a4050aac63fc93 100644 (file)
@@ -3834,6 +3834,65 @@ U+1FA83
 U+1FA84
 U+1FA85
 U+1FA86
+U+1FA87
+U+1FA88
+U+1FA89
+U+1FA8F
+U+1FA90
+U+1FA91
+U+1FA92
+U+1FA93
+U+1FA94
+U+1FA95
+U+1FA96
+U+1FA97
+U+1FA98
+U+1FA99
+U+1FA9A
+U+1FA9B
+U+1FA9C
+U+1FA9D
+U+1FA9E
+U+1FA9F
+U+1FAA0
+U+1FAA1
+U+1FAA2
+U+1FAA3
+U+1FAA4
+U+1FAA5
+U+1FAA6
+U+1FAA7
+U+1FAA8
+U+1FAA9
+U+1FAAA
+U+1FAAB
+U+1FAAC
+U+1FAAD
+U+1FAAE
+U+1FAAF
+U+1FAB0
+U+1FAB1
+U+1FAB2
+U+1FAB3
+U+1FAB4
+U+1FAB5
+U+1FAB6
+U+1FAB7
+U+1FAB8
+U+1FAB9
+U+1FABA
+U+1FABB
+U+1FABC
+U+1FABD
+U+1FABE
+U+1FABF
+U+1FAC0
+U+1FAC1
+U+1FAC2
+U+1FAC3
+U+1FAC4
+U+1FAC5
+U+1FAC6
 U+1FA90
 U+1FA91
 U+1FA92
index b66bfc5c6808cef00a855d4431cde07749083116..795de0518531f1e85748948843cf644af21caf2c 100644 (file)
@@ -19,6 +19,11 @@ FILE *data__bytesequence_file_open__control(void) {
   return fopen("./data/tests/bytesequences/control-all.txt", "r");
 }
 
+FILE *data__bytesequence_file_open__control_picture(void) {
+
+  return fopen("./data/tests/bytesequences/control_picture-all.txt", "r");
+}
+
 FILE *data__bytesequence_file_open__digit(void) {
 
   return fopen("./data/tests/bytesequences/digit-all.txt", "r");
@@ -129,7 +134,9 @@ FILE *data__bytesequence_file_open__zero_width(void) {
   return fopen("./data/tests/bytesequences/zero_width-all.txt", "r");
 }
 
-ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const character) {
+ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const character, long long * const number) {
+
+  if (!file || !character || !number) return -1;
 
   size_t length = 0;
   char *line = 0;
@@ -144,29 +151,31 @@ ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const char
     return bytes;
   }
 
-  const long long number = atoll(line);
+  *number = atoll(line);
 
   if (line) {
     free(line);
   }
 
-  if (!number && bytes != 2 && line[0] != '0') return -1;
+  if (!*number && bytes != 2 && line[0] != '0') return -1;
+
+  memset(character, 0, sizeof(f_utf_char_t));
 
   #ifdef _is_F_endian_little
-    if ((F_utf_char_mask_byte_1_le_d & number) == number) {
-      *character = (f_utf_char_t) ((F_utf_char_mask_byte_1_le_d & number) << 24);
+    if ((F_utf_char_mask_byte_1_le_d & (*number)) == (*number)) {
+      *character = (f_utf_char_t) ((F_utf_char_mask_byte_1_le_d & (*number)) << 24);
     }
-    else if ((F_utf_char_mask_byte_2_le_d & number) == number) {
-      *character = (f_utf_char_t) ((F_utf_char_mask_byte_2_le_d & number) << 16);
+    else if ((F_utf_char_mask_byte_2_le_d & (*number)) == (*number)) {
+      *character = (f_utf_char_t) ((F_utf_char_mask_byte_2_le_d & (*number)) << 16);
     }
-    else if ((F_utf_char_mask_byte_3_le_d & number) == number) {
-      *character = (f_utf_char_t) ((F_utf_char_mask_byte_3_le_d & number) << 8);
+    else if ((F_utf_char_mask_byte_3_le_d & (*number)) == (*number)) {
+      *character = (f_utf_char_t) ((F_utf_char_mask_byte_3_le_d & (*number)) << 8);
     }
-    else if ((F_utf_char_mask_byte_4_le_d & number) == number) {
-      *character = (f_utf_char_t) ((F_utf_char_mask_byte_4_le_d & number));
+    else if ((F_utf_char_mask_byte_4_le_d & (*number)) == (*number)) {
+      *character = (f_utf_char_t) ((F_utf_char_mask_byte_4_le_d & (*number)));
     }
   #else
-    *character = (f_utf_char_t) number;
+    *character = (f_utf_char_t) (*number);
   #endif // _is_F_endian_little
 
   return bytes;
index df060d340387ede97cca190e799ab27beb2e1eb2..7d9a2ba953fcd5265bb8d9c6bbfdb1e8e0437d98 100644 (file)
@@ -67,6 +67,21 @@ extern FILE *data__bytesequence_file_open__combining(void);
  */
 extern FILE *data__bytesequence_file_open__control(void);
 
+/**
+ * Open the "control_picture" bytesequence file.
+ *
+ * This assumes the following:
+ * - The file path is relative to the current working directory (tests are run from project root).
+ * - The file path is "data/tests/bytesequences/control_picture-all.txt".
+ *
+ * @return
+ *   Non-zero on success.
+ *   0 on failure.
+ *
+ * @see fopen()
+ */
+extern FILE *data__bytesequence_file_open__control_picture(void);
+
 /**
  * Open the "digit" bytesequence file.
  *
@@ -412,6 +427,8 @@ extern FILE *data__bytesequence_file_open__zero_width(void);
  *   The file stream.
  * @param character
  *   The character read from the file at the current line in the stream.
+ * @param number
+ *   The number retrieved from the file for the current line.
  *
  * @return
  *   positive number on success where number represents bytes read.
@@ -421,7 +438,7 @@ extern FILE *data__bytesequence_file_open__zero_width(void);
  * @see atoll()
  * @see getline()
  */
-extern ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const character);
+extern ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const character, long long * const number);
 
 /**
  * Open the "decimal_number" values file.
index 68627572a06626978807dfac468a6dde6cf2e98f..a8f73d0a33aef51f6eb455c70fc0239e9ea11fc9 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_combining__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_combining(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 093dfca106ca3325e689eace779ddeb0ec3dd422..b2651b2d947f1986da8cf75ef25c27a487947043 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_control__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_control(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.c
new file mode 100644 (file)
index 0000000..4532f29
--- /dev/null
@@ -0,0 +1,44 @@
+#include "test-utf.h"
+#include "test-utf-character_is_control_picture.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_utf_character_is_control_picture__works(void **state) {
+
+  {
+    FILE *file = data__bytesequence_file_open__control_picture();
+
+    assert_non_null(file);
+
+    f_utf_char_t sequence = 0;
+    ssize_t bytes = 0;
+    long long code = 0;
+
+    f_number_unsigned_t line = 0;
+
+    do {
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
+
+      if (bytes > 0) {
+        const f_status_t status = f_utf_character_is_control_picture(sequence);
+
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
+        assert_int_equal(status, F_true);
+      }
+
+      ++line;
+
+    } while (bytes > 0);
+
+    fclose(file);
+  }
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.h b/level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.h
new file mode 100644 (file)
index 0000000..29686c9
--- /dev/null
@@ -0,0 +1,20 @@
+/**
+ * FLL - Level 0
+ *
+ * Project: UTF
+ * API Version: 0.8
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the function in the utf project.
+ */
+#ifndef _TEST__F_utf_character_is_control_picture_h
+#define _TEST__F_utf_character_is_control_picture_h
+
+/**
+ * Test that the function works.
+ *
+ * @see f_utf_character_is_control_picture()
+ */
+extern void test__f_utf_character_is_control_picture__works(void **state);
+
+#endif // _TEST__F_utf_character_is_control_picture_h
index e00cae85283ee8f0588291506396a27ff26dd6fc..fee0f747b83ab388170b42aa1faeed17c520e6a0 100644 (file)
@@ -19,9 +19,10 @@ void test__f_utf_character_is_digit__works(void **state) {
     ssize_t bytes_number = 0;
     uint64_t number = 0;
     f_array_length_t line = 0;
+    long long code = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
       bytes_number = data__value_get_line_long_long(file_number, &number);
 
       if (bytes > 0 && bytes_number > 0) {
@@ -29,6 +30,10 @@ void test__f_utf_character_is_digit__works(void **state) {
 
         const f_status_t status = f_utf_character_is_digit(sequence, &value);
 
+        if (status != F_true || value != number) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
         assert_int_equal(value, number);
       }
index f12a764a4f8470196da3d6679bd16f7c3f6498c5..8842e0df8433d827d4627ef0518973ec273f7a11 100644 (file)
@@ -14,14 +14,19 @@ void test__f_utf_character_is_emoji__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_emoji(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index b26013476171e66013474f31282ac821b3cfe273..0d8b4604f8c5b1f3432bbff6aed1df9a19a447a9 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_numeric__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_numeric(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 44b0fdcc881c14ab9631e7127f6d4e42a0de4cb6..f5d7ad6ffed97d0dc5b93b745ec5103cbb48f646 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_phonetic__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_phonetic(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 3b750331b3d4ca307e5a8e147bbe1e8f1b2a6ca8..c13237c545b89012e0491ee3af18f953282fb9ee 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_private__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_private(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 75ea00dc6f691eb765e550214d830a1cacc02aee..a6c74ae56c6f705ca336a4e4594b0da0252fe2a4 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_punctuation__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_punctuation(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index dbf2cef3dc09f7827ad28a30bdc310ae3b648e4f..4c300dd37331f9476865cfc66a96f558007395a4 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_subscript__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_subscript(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 7c22ad15c1a60e8bd445fa4b677b876548b48d3e..15cf46eb526aa028632c598736c87650909340e0 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_superscript__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_superscript(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 5ee9b208e09338c55a1ec5c6f336f64bb6e0c8b0..dbdb15d08492ef8436e71b23664dda35a6a11bf1 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_symbol__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_symbol(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 2733816f137ec8a723e6f007afc124075a6a9499..2d3b3a6bd32f781ca77f1adf9d145f0c8e41b1f7 100644 (file)
@@ -27,24 +27,40 @@ void test__f_utf_character_is_valid__works(void **state) {
 
     // All remaining bytes after width must be zero for valid sequence.
     if (width == 0 && (second || third || fourth)) {
+      if (status != F_false) {
+        printf("[ -------> ] --- Failure [00], width == 0 test, at sequence='%0x'.\n", sequence);
+      }
+
       assert_int_equal(status, F_false);
 
       continue;
     }
 
     if (width == 1) {
+      if (status != F_status_set_error(F_utf_fragment)) {
+        printf("[ -------> ] --- Failure [01], width == 1 test, at sequence='%0x'.\n", sequence);
+      }
+
       assert_int_equal(status, F_status_set_error(F_utf_fragment));
 
       continue;
     }
 
     if (width == 2 && (third || fourth)) {
+      if (status != F_false) {
+        printf("[ -------> ] --- Failure [02], width == 2 test, at sequence='%0x'.\n", sequence);
+      }
+
       assert_int_equal(status, F_false);
 
       continue;
     }
 
     if (width == 3 && fourth) {
+      if (status != F_false) {
+        printf("[ -------> ] --- Failure [03], width == 3 test, at sequence='%0x'.\n", sequence);
+      }
+
       assert_int_equal(status, F_false);
 
       continue;
@@ -52,6 +68,10 @@ void test__f_utf_character_is_valid__works(void **state) {
 
     // Invalid: 11111xxx xxxxxxxx xxxxxxxx xxxxxxxx.
     if ((first & 0b11111000) == 0b11111000) {
+      if (status != F_false) {
+        printf("[ -------> ] --- Failure [04], first byte 0b11111000 test, at sequence='%0x'.\n", sequence);
+      }
+
       assert_int_equal(status, F_false);
 
       continue;
@@ -63,6 +83,10 @@ void test__f_utf_character_is_valid__works(void **state) {
       // For first byte 0xf0, only second byte ranges 0x90 to 0xbf are valid.
       if (first == 0xf0) {
         if (second < 0x90 || second > 0xbf) {
+          if (status != F_false) {
+            printf("[ -------> ] --- Failure [05], first byte 0b11110000: 0xf0 test, at sequence='%0x'.\n", sequence);
+          }
+
           assert_int_equal(status, F_false);
 
           continue;
@@ -72,6 +96,10 @@ void test__f_utf_character_is_valid__works(void **state) {
       // For first byte 0xf4, only second byte ranges 0x80 to 0x8f are valid.
       else if (first == 0xf4) {
         if (second < 0x80 || second > 0x8f) {
+          if (status != F_false) {
+            printf("[ -------> ] --- Failure [06], first byte 0b11110000: 0xf4 test, at sequence='%0x'.\n", sequence);
+          }
+
           assert_int_equal(status, F_false);
 
           continue;
@@ -80,17 +108,29 @@ void test__f_utf_character_is_valid__works(void **state) {
 
       // For first byte greater than 0xf4 are all invalid.
       else if (first > 0xf4) {
+        if (status != F_false) {
+          printf("[ -------> ] --- Failure [07], first byte 0b11110000: > 0xf4 test, at sequence='%0x'.\n", sequence);
+        }
+
         assert_int_equal(status, F_false);
 
         continue;
       }
 
       if ((second & 0b11000000) == 0b10000000 && (third & 0b11000000) == 0b10000000 && (fourth & 0b11000000) == 0b10000000) {
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure [08], first byte 0b11110000: match test, at sequence='%0x'.\n", sequence);
+        }
+
         assert_int_equal(status, F_true);
 
         continue;
       }
 
+      if (status != F_false) {
+        printf("[ -------> ] --- Failure [09], first byte 0b11110000: all else test, at sequence='%0x'.\n", sequence);
+      }
+
       assert_int_equal(status, F_false);
 
       continue;
@@ -102,6 +142,10 @@ void test__f_utf_character_is_valid__works(void **state) {
       // For first byte 0xe0, only second byte ranges 0xa0 to 0xbf are valid.
       if (first == 0xe0) {
         if (second < 0xa0 || second > 0xbf) {
+          if (status != F_false) {
+            printf("[ -------> ] --- Failure [10], first byte 0b11100000: 0xe0 test, at sequence='%0x'.\n", sequence);
+          }
+
           assert_int_equal(status, F_false);
 
           continue;
@@ -111,6 +155,10 @@ void test__f_utf_character_is_valid__works(void **state) {
       // For first byte 0xed, only second byte ranges 0x80 to 0x9f are valid.
       else if (first == 0xed) {
         if (second < 0x80 || second > 0x9f) {
+          if (status != F_false) {
+            printf("[ -------> ] --- Failure [11], first byte 0b11100000: 0xed test, at sequence='%0x'.\n", sequence);
+          }
+
           assert_int_equal(status, F_false);
 
           continue;
@@ -118,11 +166,19 @@ void test__f_utf_character_is_valid__works(void **state) {
       }
 
       if ((second & 0b11000000) == 0b10000000 && (third & 0b11000000) == 0b10000000) {
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure [12], first byte 0b11100000: match test, at sequence='%0x'.\n", sequence);
+        }
+
         assert_int_equal(status, F_true);
 
         continue;
       }
 
+      if (status != F_false) {
+        printf("[ -------> ] --- Failure [13], first byte 0b11100000: all else test, at sequence='%0x'.\n", sequence);
+      }
+
       assert_int_equal(status, F_false);
 
       continue;
@@ -133,17 +189,29 @@ void test__f_utf_character_is_valid__works(void **state) {
 
       // Only first byte ranges 0xc2 or greater are valid.
       if (first < 0xc2) {
+        if (status != F_false) {
+          printf("[ -------> ] --- Failure [14], first byte 0b11000000: < 0xc2 test, at sequence='%0x'.\n", sequence);
+        }
+
         assert_int_equal(status, F_false);
 
         continue;
       }
 
       if ((second & 0b11000000) == 0b10000000) {
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure [15], first byte 0b11000000: match test, at sequence='%0x'.\n", sequence);
+        }
+
         assert_int_equal(status, F_true);
 
         continue;
       }
 
+      if (status != F_false) {
+        printf("[ -------> ] --- Failure [16], first byte 0b11000000: all else test, at sequence='%0x'.\n", sequence);
+      }
+
       assert_int_equal(status, F_false);
 
       continue;
@@ -151,6 +219,10 @@ void test__f_utf_character_is_valid__works(void **state) {
 
     // Invalid (UTF Fragment): 10xxxxxx ???????? ???????? ????????.
     if ((first & 0b11000000) == 0b10000000) {
+      if (status != F_status_set_error(F_utf_fragment)) {
+        printf("[ -------> ] --- Failure [17], invalid fragment test, at sequence='%0x'.\n", sequence);
+      }
+
       assert_int_equal(status, F_status_set_error(F_utf_fragment));
 
       continue;
@@ -158,11 +230,19 @@ void test__f_utf_character_is_valid__works(void **state) {
 
     // Valid: 0xxxxxxx ???????? ???????? ????????.
     if (first < 0x80) {
+      if (status != F_true) {
+        printf("[ -------> ] --- Failure [18], < 0x80 test, at sequence='%0x'.\n", sequence);
+      }
+
       assert_int_equal(status, F_true);
 
       continue;
     }
 
+    if (status != F_false) {
+      printf("[ -------> ] --- Failure [19], all others test, at sequence='%0x'.\n", sequence);
+    }
+
     // All other values > 0x7f are invalid.
     assert_int_equal(status, F_false);
   } // for
index 801d43d445a1eeebc9f8a5b7ac260ea6af3303f6..cfae30db378db6acc0d3fafd697e2b018f6e4f28 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_whitespace__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_whitespace(sequence, F_true);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 47c6308bdd1b35dd6669d538031858e279d766fd..d9594340cd1e3be258188f39bdd33f971131d294 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_whitespace_modifier__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_whitespace_modifier(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index de038a195540d7a08692a14cb9b9c61d40e0ce0c..02d135de954f6f885622beb22b5d476fa500ac94 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_whitespace_other__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_whitespace_other(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index dca191974ab60b420601e72a746e1ec63386004e..da4ec0c29795c61d1ebb254173956e6c23bad661 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_whitespace_zero_width__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_whitespace_zero_width(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 6f937a582ace229187400877cf6c04ae16c2a180..8382030eef168b072c2e88d0430d2375c745d3ef 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_wide__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_wide(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index c433a15a0598e79d0254ec415c61d5e010572098..a87750146892ca1291876946c3a85d2657b6ddab 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_word__strict_is_false(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_word(sequence, F_false);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
@@ -43,11 +48,12 @@ void test__f_utf_character_is_word__strict_is_true(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_word(sequence, F_true);
index 580cf92544477765d102a563496ba0990e80b440..7eb18557a641c76bdc7481255fbe126b52384434 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_word_dash__strict_is_false(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_word_dash(sequence, F_false);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
@@ -43,15 +48,20 @@ void test__f_utf_character_is_word_dash__strict_is_true(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_word_dash(sequence, F_true);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 6d2a76fbf0d118b9895799523dab71ecc7bc8c27..f82bf64dd615d17d6e61f6fac99522e40c406334 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_word_dash_plus__strict_is_false(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_word_dash_plus(sequence, F_false);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
@@ -43,15 +48,20 @@ void test__f_utf_character_is_word_dash_plus__strict_is_true(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_word_dash_plus(sequence, F_true);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index a1d8f6c513efea84827cf1c15f97f5363e0d30fa..7ec39d864d7241afb2396f2e67d07dfc68b22823 100644 (file)
@@ -14,15 +14,20 @@ void test__f_utf_character_is_zero_width__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const f_status_t status = f_utf_character_is_zero_width(sequence);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 0c0a63a8d1f26e036a0f8346d6b3133a0648ab79..9a4b9f1034838076895ac8598a56fa4f80329aff 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_combining__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_combining__works(void **state) {
 
         const f_status_t status = f_utf_is_combining(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 43087b877e88affd50f0d08a5f97d6ceee1d0076..8eef18e7f0f1156dbe87b3c9595f76a32b5fe893 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_control__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_control__works(void **state) {
 
         const f_status_t status = f_utf_is_control(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_control_picture.c b/level_0/f_utf/tests/unit/c/test-utf-is_control_picture.c
new file mode 100644 (file)
index 0000000..4ce0850
--- /dev/null
@@ -0,0 +1,61 @@
+#include "test-utf.h"
+#include "test-utf-is_control_picture.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_utf_is_control_picture__works(void **state) {
+
+  {
+    FILE *file = data__bytesequence_file_open__control_picture();
+
+    assert_non_null(file);
+
+    f_utf_char_t sequence = 0;
+    ssize_t bytes = 0;
+    long long code = 0;
+
+    f_number_unsigned_t line = 0;
+
+    do {
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
+
+      if (bytes > 0) {
+        const uint8_t width = macro_f_utf_char_t_width(sequence);
+        char buffer[5] = { 0, 0, 0, 0, 0 };
+
+        buffer[0] = macro_f_utf_char_t_to_char_1(sequence);
+
+        if (width > 1) {
+          buffer[1] = macro_f_utf_char_t_to_char_2(sequence);
+
+          if (width > 2) {
+            buffer[2] = macro_f_utf_char_t_to_char_3(sequence);
+
+            if (width > 3) {
+              buffer[3] = macro_f_utf_char_t_to_char_4(sequence);
+            }
+          }
+        }
+
+        const f_status_t status = f_utf_is_control_picture(buffer, 5);
+
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
+        assert_int_equal(status, F_true);
+      }
+
+      ++line;
+
+    } while (bytes > 0);
+
+    fclose(file);
+  }
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_control_picture.h b/level_0/f_utf/tests/unit/c/test-utf-is_control_picture.h
new file mode 100644 (file)
index 0000000..91d1795
--- /dev/null
@@ -0,0 +1,20 @@
+/**
+ * FLL - Level 0
+ *
+ * Project: UTF
+ * API Version: 0.8
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the function in the utf project.
+ */
+#ifndef _TEST__F_utf_is_control_picture_h
+#define _TEST__F_utf_is_control_picture_h
+
+/**
+ * Test that the function works.
+ *
+ * @see f_utf_is_control_picture()
+ */
+extern void test__f_utf_is_control_picture__works(void **state);
+
+#endif // _TEST__F_utf_is_control_picture_h
index 9a7852e283b8c13d4f6e041b265e67d8fb74cc2a..60e8ef8927a3ecd1cf9f48816eb76f00984a42e4 100644 (file)
@@ -19,9 +19,10 @@ void test__f_utf_is_digit__works(void **state) {
     ssize_t bytes_number = 0;
     uint64_t number = 0;
     f_array_length_t line = 0;
+    long long code = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
       bytes_number = data__value_get_line_long_long(file_number, &number);
 
       if (bytes > 0 && bytes_number > 0) {
@@ -46,6 +47,10 @@ void test__f_utf_is_digit__works(void **state) {
 
         const f_status_t status = f_utf_is_digit(buffer, 5, &value);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
         assert_int_equal(value, number);
       }
index 014d35064c7102f6d7be2f304af71cca15b6f604..11c93fb46ef04261760f7a448d437df954ca58dd 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_emoji__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_emoji__works(void **state) {
 
         const f_status_t status = f_utf_is_emoji(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index c3974860cfbd4e29b07d240daa7e34e17524995f..19d035dc32c1b7c8fec7b7a6602baa513e35c78d 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_numeric__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_numeric__works(void **state) {
 
         const f_status_t status = f_utf_is_numeric(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 4e2b3aaae4155f99c4d673c2fdf8f852b5a31016..7a4ad27d68cf46c6aa03f7dab1e9b76b98a5b5e7 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_phonetic__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_phonetic__works(void **state) {
 
         const f_status_t status = f_utf_is_phonetic(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index e9d5f522766ad609fc3cbbdc548e6622a3cfde19..f5733146d3e0243d3a27b7df42282b1c0d6bd6e4 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_private__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_private__works(void **state) {
 
         const f_status_t status = f_utf_is_private(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index ca7f9e2f9be021ba77a575bc509e98add89145ff..6e923e217926f36af7d22024e75232030fad1ec5 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_punctuation__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_punctuation__works(void **state) {
 
         const f_status_t status = f_utf_is_punctuation(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 492493181a84df83713da84ee1a01c3076c8e8c9..9d7e48cbb76d5680596f49060ff57dd1f683905c 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_subscript__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_subscript__works(void **state) {
 
         const f_status_t status = f_utf_is_subscript(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 9180f95db946a55464ddf18a5978b8350791a5d4..e0095980c7bfbf83658602a0930b4e3d6f60ca6e 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_superscript__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_superscript__works(void **state) {
 
         const f_status_t status = f_utf_is_superscript(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 0646b0b0edc30159af92c7b05684978eaf2884d5..00f3cbd1a78387130388d373dbe6049004c9d573 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_symbol__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_symbol__works(void **state) {
 
         const f_status_t status = f_utf_is_symbol(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index ba7889480a05c6c87d47ba805575ac4b512f4c17..cd32f0bff5de448888d64ee9fd17c17939631e53 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_whitespace__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_whitespace__works(void **state) {
 
         const f_status_t status = f_utf_is_whitespace(buffer, 5, F_true);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 57c57712130a6dc9c76039bebe3ba192afa791f3..799cde0cad49df9eb4307c6dd89579f53c1a921f 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_whitespace_modifier__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_whitespace_modifier__works(void **state) {
 
         const f_status_t status = f_utf_is_whitespace_modifier(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 569011064c25d4b2a410b3aaf1aa8c164b214e7f..56697f473bfd53a29dd2e1e622e45ed1cbc57cc1 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_whitespace_other__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_whitespace_other__works(void **state) {
 
         const f_status_t status = f_utf_is_whitespace_other(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index bc5dbe957e69e2a78ecbbfefe40bb444854f20b8..fce825a865b1972ca3cbc9e90ef92b21b6b3b787 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_whitespace_zero_width__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_whitespace_zero_width__works(void **state) {
 
         const f_status_t status = f_utf_is_whitespace_zero_width(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index ddab706e6ce9e3579a910fa33b3f6c1e30c17b34..066c14c295896123313d2d2a23f103bb8054b732 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_wide__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_wide__works(void **state) {
 
         const f_status_t status = f_utf_is_wide(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 3d35ba461102fe44ca32078e26f38c1f561c26e9..0beb63d0da7aeae543d58b44cdda38cf80da0b66 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_word__strict_is_false(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -60,11 +61,12 @@ void test__f_utf_is_word__strict_is_true(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -86,6 +88,10 @@ void test__f_utf_is_word__strict_is_true(void **state) {
 
         const f_status_t status = f_utf_is_word(buffer, 5, F_true);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index d65d1ae2a43bbadf52d689b46b51325d311233ae..fa3037a06fd1d9bd027f9110eb60afab535875db 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_word_dash__strict_is_false(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -60,11 +61,12 @@ void test__f_utf_is_word_dash__strict_is_true(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -86,6 +88,10 @@ void test__f_utf_is_word_dash__strict_is_true(void **state) {
 
         const f_status_t status = f_utf_is_word_dash(buffer, 5, F_true);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 50da2760b81a3c46b87d696358b7a5da48b11944..d773264d6b15d0f587ea2633a948021d335aa413 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_word_dash_plus__strict_is_false(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -60,11 +61,12 @@ void test__f_utf_is_word_dash_plus__strict_is_true(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -86,6 +88,10 @@ void test__f_utf_is_word_dash_plus__strict_is_true(void **state) {
 
         const f_status_t status = f_utf_is_word_dash_plus(buffer, 5, F_true);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index a3c183e67e8f436abefd7174dcd05a2c7eef486d..48f624a24dc72bb0af2fd2e5a4514066bff2c851 100644 (file)
@@ -14,11 +14,12 @@ void test__f_utf_is_zero_width__works(void **state) {
 
     f_utf_char_t sequence = 0;
     ssize_t bytes = 0;
+    long long code = 0;
 
     f_array_length_t line = 0;
 
     do {
-      bytes = data__bytesequence_get_line(file, &sequence);
+      bytes = data__bytesequence_get_line(file, &sequence, &code);
 
       if (bytes > 0) {
         const uint8_t width = macro_f_utf_char_t_width(sequence);
@@ -40,6 +41,10 @@ void test__f_utf_is_zero_width__works(void **state) {
 
         const f_status_t status = f_utf_is_zero_width(buffer, 5);
 
+        if (status != F_true) {
+          printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code);
+        }
+
         assert_int_equal(status, F_true);
       }
 
index 0401e5674f7bb42012bd5c7a71b5522a650f4c99..d811f69c1e7e4dc6baa7953e15ccb9b44d9a5368 100644 (file)
@@ -29,6 +29,7 @@ int main(void) {
     cmocka_unit_test(test__f_utf_character_is_alphabetic_numeric__works),
     cmocka_unit_test(test__f_utf_character_is_combining__works),
     cmocka_unit_test(test__f_utf_character_is_control__works),
+    cmocka_unit_test(test__f_utf_character_is_control_picture__works),
     cmocka_unit_test(test__f_utf_character_is_digit__works),
     cmocka_unit_test(test__f_utf_character_is_emoji__works),
     cmocka_unit_test(test__f_utf_character_is_numeric__works),
@@ -148,6 +149,7 @@ int main(void) {
     cmocka_unit_test(test__f_utf_is_alphabetic_numeric__works),
     cmocka_unit_test(test__f_utf_is_combining__works),
     cmocka_unit_test(test__f_utf_is_control__works),
+    cmocka_unit_test(test__f_utf_is_control_picture__works),
     cmocka_unit_test(test__f_utf_is_digit__works),
     cmocka_unit_test(test__f_utf_is_emoji__works),
     cmocka_unit_test(test__f_utf_is_numeric__works),
index 21c20903e6cf9795ae4d558a871625d0ff638fd0..e5d25cc0d9980c76cedbf31b97d67f406527d6e8 100644 (file)
@@ -38,6 +38,7 @@
 #include "test-utf-character_is_alphabetic_numeric.h"
 #include "test-utf-character_is_combining.h"
 #include "test-utf-character_is_control.h"
+#include "test-utf-character_is_control_picture.h"
 #include "test-utf-character_is_digit.h"
 #include "test-utf-character_is_digit.h"
 #include "test-utf-character_is_emoji.h"
 #include "test-utf-is_alphabetic_numeric.h"
 #include "test-utf-is_combining.h"
 #include "test-utf-is_control.h"
+#include "test-utf-is_control_picture.h"
 #include "test-utf-is_digit.h"
 #include "test-utf-is_digit.h"
 #include "test-utf-is_emoji.h"