LCOV - code coverage report
Current view: top level - src/base - pdf-text-ucd-wordbreak.c (source / functions) Hit Total Coverage
Test: libgnupdf.info Lines: 104 124 83.9 %
Date: 2011-12-09 Functions: 15 15 100.0 %
Branches: 140 208 67.3 %

           Branch data     Line data    Source code
       1                 :            : /* -*- mode: C -*-
       2                 :            :  *
       3                 :            :  *       File:         pdf-text-ucd-wordbreak.c
       4                 :            :  *       Date:         Sun Mar 09 12:59:01 2008
       5                 :            :  *
       6                 :            :  *       GNU PDF Library - Unicode Character Database - WordBreak Property
       7                 :            :  *
       8                 :            :  *    WARNING! The contents of the arrays in this file are self-generated
       9                 :            :  *     from the WordBreakProperty.txt file, using the `pdf_text_generate_ucd'
      10                 :            :  *     utility
      11                 :            :  *
      12                 :            :  */
      13                 :            : 
      14                 :            : /* Copyright (C) 2008-2011 Free Software Foundation, Inc. */
      15                 :            : 
      16                 :            : /* This program is free software: you can redistribute it and/or modify
      17                 :            :  * it under the terms of the GNU General Public License as published by
      18                 :            :  * the Free Software Foundation, either version 3 of the License, or
      19                 :            :  * (at your option) any later version.
      20                 :            :  *
      21                 :            :  * This program is distributed in the hope that it will be useful,
      22                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      23                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      24                 :            :  * GNU General Public License for more details.
      25                 :            :  *
      26                 :            :  * You should have received a copy of the GNU General Public License
      27                 :            :  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
      28                 :            :  */
      29                 :            : 
      30                 :            : #include <config.h>
      31                 :            : 
      32                 :            : #include <string.h>
      33                 :            : 
      34                 :            : #include <pdf-text-ucd-wordbreak.h>
      35                 :            : 
      36                 :            : typedef struct _unicode_wordbreak_info_s {
      37                 :            :   pdf_u32_t interval_start;
      38                 :            :   pdf_u32_t interval_stop;
      39                 :            :   enum pdf_text_ucd_wb_property_e wb_property;
      40                 :            : } unicode_wordbreak_info_t;
      41                 :            : 
      42                 :            : /*************** START OF SELF-GENERATED DATA *********************************/
      43                 :            : 
      44                 :            : /* Index of first 'CR' interval */
      45                 :            : #define UCD_WB_CR_F 0
      46                 :            : /* Index of last 'CR' interval */
      47                 :            : #define UCD_WB_CR_L 0
      48                 :            : /* Index of first 'LF' interval */
      49                 :            : #define UCD_WB_LF_F 1
      50                 :            : /* Index of last 'LF' interval */
      51                 :            : #define UCD_WB_LF_L 1
      52                 :            : /* Index of first 'NEWLINE' interval */
      53                 :            : #define UCD_WB_NEWLINE_F 2
      54                 :            : /* Index of last 'NEWLINE' interval */
      55                 :            : #define UCD_WB_NEWLINE_L 5
      56                 :            : /* Index of first 'EXTEND' interval */
      57                 :            : #define UCD_WB_EXTEND_F 6
      58                 :            : /* Index of last 'EXTEND' interval */
      59                 :            : #define UCD_WB_EXTEND_L 257
      60                 :            : /* Index of first 'FORMAT' interval */
      61                 :            : #define UCD_WB_FORMAT_F 258
      62                 :            : /* Index of last 'FORMAT' interval */
      63                 :            : #define UCD_WB_FORMAT_L 272
      64                 :            : /* Index of first 'KATAKANA' interval */
      65                 :            : #define UCD_WB_KATAKANA_F 273
      66                 :            : /* Index of last 'KATAKANA' interval */
      67                 :            : #define UCD_WB_KATAKANA_L 284
      68                 :            : /* Index of first 'ALETTER' interval */
      69                 :            : #define UCD_WB_ALETTER_F 285
      70                 :            : /* Index of last 'ALETTER' interval */
      71                 :            : #define UCD_WB_ALETTER_L 668
      72                 :            : /* Index of first 'MIDLETTER' interval */
      73                 :            : #define UCD_WB_MIDLETTER_F 669
      74                 :            : /* Index of last 'MIDLETTER' interval */
      75                 :            : #define UCD_WB_MIDLETTER_L 676
      76                 :            : /* Index of first 'MIDNUM' interval */
      77                 :            : #define UCD_WB_MIDNUM_F 677
      78                 :            : /* Index of last 'MIDNUM' interval */
      79                 :            : #define UCD_WB_MIDNUM_L 690
      80                 :            : /* Index of first 'MIDNUMLET' interval */
      81                 :            : #define UCD_WB_MIDNUMLET_F 691
      82                 :            : /* Index of last 'MIDNUMLET' interval */
      83                 :            : #define UCD_WB_MIDNUMLET_L 698
      84                 :            : /* Index of first 'NUMERIC' interval */
      85                 :            : #define UCD_WB_NUMERIC_F 699
      86                 :            : /* Index of last 'NUMERIC' interval */
      87                 :            : #define UCD_WB_NUMERIC_L 731
      88                 :            : /* Index of first 'EXTENDNUMLET' interval */
      89                 :            : #define UCD_WB_EXTENDNUMLET_F 732
      90                 :            : /* Index of last 'EXTENDNUMLET' interval */
      91                 :            : #define UCD_WB_EXTENDNUMLET_L 737
      92                 :            : #define UCD_WB_INFO_N   738  /* Maximum number of elements in array    */
      93                 :            : 
      94                 :            : 
      95                 :            : static unicode_wordbreak_info_t unicode_wordbreak_info[UCD_WB_INFO_N] = {
      96                 :            :   { 0x000D, 0x000D, PDF_TEXT_UCD_WBP_CR  }, /* 0 */
      97                 :            :   { 0x000A, 0x000A, PDF_TEXT_UCD_WBP_LF  }, /* 1 */
      98                 :            :   { 0x000B, 0x000C, PDF_TEXT_UCD_WBP_Newline  }, /* 2 */
      99                 :            :   { 0x0085, 0x0085, PDF_TEXT_UCD_WBP_Newline  }, /* 3 */
     100                 :            :   { 0x2028, 0x2028, PDF_TEXT_UCD_WBP_Newline  }, /* 4 */
     101                 :            :   { 0x2029, 0x2029, PDF_TEXT_UCD_WBP_Newline  }, /* 5 */
     102                 :            :   { 0x0300, 0x036F, PDF_TEXT_UCD_WBP_Extend  }, /* 6 */
     103                 :            :   { 0x0483, 0x0487, PDF_TEXT_UCD_WBP_Extend  }, /* 7 */
     104                 :            :   { 0x0488, 0x0489, PDF_TEXT_UCD_WBP_Extend  }, /* 8 */
     105                 :            :   { 0x0591, 0x05BD, PDF_TEXT_UCD_WBP_Extend  }, /* 9 */
     106                 :            :   { 0x05BF, 0x05BF, PDF_TEXT_UCD_WBP_Extend  }, /* 10 */
     107                 :            :   { 0x05C1, 0x05C2, PDF_TEXT_UCD_WBP_Extend  }, /* 11 */
     108                 :            :   { 0x05C4, 0x05C5, PDF_TEXT_UCD_WBP_Extend  }, /* 12 */
     109                 :            :   { 0x05C7, 0x05C7, PDF_TEXT_UCD_WBP_Extend  }, /* 13 */
     110                 :            :   { 0x0610, 0x061A, PDF_TEXT_UCD_WBP_Extend  }, /* 14 */
     111                 :            :   { 0x064B, 0x065E, PDF_TEXT_UCD_WBP_Extend  }, /* 15 */
     112                 :            :   { 0x0670, 0x0670, PDF_TEXT_UCD_WBP_Extend  }, /* 16 */
     113                 :            :   { 0x06D6, 0x06DC, PDF_TEXT_UCD_WBP_Extend  }, /* 17 */
     114                 :            :   { 0x06DE, 0x06DE, PDF_TEXT_UCD_WBP_Extend  }, /* 18 */
     115                 :            :   { 0x06DF, 0x06E4, PDF_TEXT_UCD_WBP_Extend  }, /* 19 */
     116                 :            :   { 0x06E7, 0x06E8, PDF_TEXT_UCD_WBP_Extend  }, /* 20 */
     117                 :            :   { 0x06EA, 0x06ED, PDF_TEXT_UCD_WBP_Extend  }, /* 21 */
     118                 :            :   { 0x0711, 0x0711, PDF_TEXT_UCD_WBP_Extend  }, /* 22 */
     119                 :            :   { 0x0730, 0x074A, PDF_TEXT_UCD_WBP_Extend  }, /* 23 */
     120                 :            :   { 0x07A6, 0x07B0, PDF_TEXT_UCD_WBP_Extend  }, /* 24 */
     121                 :            :   { 0x07EB, 0x07F3, PDF_TEXT_UCD_WBP_Extend  }, /* 25 */
     122                 :            :   { 0x0901, 0x0902, PDF_TEXT_UCD_WBP_Extend  }, /* 26 */
     123                 :            :   { 0x0903, 0x0903, PDF_TEXT_UCD_WBP_Extend  }, /* 27 */
     124                 :            :   { 0x093C, 0x093C, PDF_TEXT_UCD_WBP_Extend  }, /* 28 */
     125                 :            :   { 0x093E, 0x0940, PDF_TEXT_UCD_WBP_Extend  }, /* 29 */
     126                 :            :   { 0x0941, 0x0948, PDF_TEXT_UCD_WBP_Extend  }, /* 30 */
     127                 :            :   { 0x0949, 0x094C, PDF_TEXT_UCD_WBP_Extend  }, /* 31 */
     128                 :            :   { 0x094D, 0x094D, PDF_TEXT_UCD_WBP_Extend  }, /* 32 */
     129                 :            :   { 0x0951, 0x0954, PDF_TEXT_UCD_WBP_Extend  }, /* 33 */
     130                 :            :   { 0x0962, 0x0963, PDF_TEXT_UCD_WBP_Extend  }, /* 34 */
     131                 :            :   { 0x0981, 0x0981, PDF_TEXT_UCD_WBP_Extend  }, /* 35 */
     132                 :            :   { 0x0982, 0x0983, PDF_TEXT_UCD_WBP_Extend  }, /* 36 */
     133                 :            :   { 0x09BC, 0x09BC, PDF_TEXT_UCD_WBP_Extend  }, /* 37 */
     134                 :            :   { 0x09BE, 0x09C0, PDF_TEXT_UCD_WBP_Extend  }, /* 38 */
     135                 :            :   { 0x09C1, 0x09C4, PDF_TEXT_UCD_WBP_Extend  }, /* 39 */
     136                 :            :   { 0x09C7, 0x09C8, PDF_TEXT_UCD_WBP_Extend  }, /* 40 */
     137                 :            :   { 0x09CB, 0x09CC, PDF_TEXT_UCD_WBP_Extend  }, /* 41 */
     138                 :            :   { 0x09CD, 0x09CD, PDF_TEXT_UCD_WBP_Extend  }, /* 42 */
     139                 :            :   { 0x09D7, 0x09D7, PDF_TEXT_UCD_WBP_Extend  }, /* 43 */
     140                 :            :   { 0x09E2, 0x09E3, PDF_TEXT_UCD_WBP_Extend  }, /* 44 */
     141                 :            :   { 0x0A01, 0x0A02, PDF_TEXT_UCD_WBP_Extend  }, /* 45 */
     142                 :            :   { 0x0A03, 0x0A03, PDF_TEXT_UCD_WBP_Extend  }, /* 46 */
     143                 :            :   { 0x0A3C, 0x0A3C, PDF_TEXT_UCD_WBP_Extend  }, /* 47 */
     144                 :            :   { 0x0A3E, 0x0A40, PDF_TEXT_UCD_WBP_Extend  }, /* 48 */
     145                 :            :   { 0x0A41, 0x0A42, PDF_TEXT_UCD_WBP_Extend  }, /* 49 */
     146                 :            :   { 0x0A47, 0x0A48, PDF_TEXT_UCD_WBP_Extend  }, /* 50 */
     147                 :            :   { 0x0A4B, 0x0A4D, PDF_TEXT_UCD_WBP_Extend  }, /* 51 */
     148                 :            :   { 0x0A51, 0x0A51, PDF_TEXT_UCD_WBP_Extend  }, /* 52 */
     149                 :            :   { 0x0A70, 0x0A71, PDF_TEXT_UCD_WBP_Extend  }, /* 53 */
     150                 :            :   { 0x0A75, 0x0A75, PDF_TEXT_UCD_WBP_Extend  }, /* 54 */
     151                 :            :   { 0x0A81, 0x0A82, PDF_TEXT_UCD_WBP_Extend  }, /* 55 */
     152                 :            :   { 0x0A83, 0x0A83, PDF_TEXT_UCD_WBP_Extend  }, /* 56 */
     153                 :            :   { 0x0ABC, 0x0ABC, PDF_TEXT_UCD_WBP_Extend  }, /* 57 */
     154                 :            :   { 0x0ABE, 0x0AC0, PDF_TEXT_UCD_WBP_Extend  }, /* 58 */
     155                 :            :   { 0x0AC1, 0x0AC5, PDF_TEXT_UCD_WBP_Extend  }, /* 59 */
     156                 :            :   { 0x0AC7, 0x0AC8, PDF_TEXT_UCD_WBP_Extend  }, /* 60 */
     157                 :            :   { 0x0AC9, 0x0AC9, PDF_TEXT_UCD_WBP_Extend  }, /* 61 */
     158                 :            :   { 0x0ACB, 0x0ACC, PDF_TEXT_UCD_WBP_Extend  }, /* 62 */
     159                 :            :   { 0x0ACD, 0x0ACD, PDF_TEXT_UCD_WBP_Extend  }, /* 63 */
     160                 :            :   { 0x0AE2, 0x0AE3, PDF_TEXT_UCD_WBP_Extend  }, /* 64 */
     161                 :            :   { 0x0B01, 0x0B01, PDF_TEXT_UCD_WBP_Extend  }, /* 65 */
     162                 :            :   { 0x0B02, 0x0B03, PDF_TEXT_UCD_WBP_Extend  }, /* 66 */
     163                 :            :   { 0x0B3C, 0x0B3C, PDF_TEXT_UCD_WBP_Extend  }, /* 67 */
     164                 :            :   { 0x0B3E, 0x0B3E, PDF_TEXT_UCD_WBP_Extend  }, /* 68 */
     165                 :            :   { 0x0B3F, 0x0B3F, PDF_TEXT_UCD_WBP_Extend  }, /* 69 */
     166                 :            :   { 0x0B40, 0x0B40, PDF_TEXT_UCD_WBP_Extend  }, /* 70 */
     167                 :            :   { 0x0B41, 0x0B44, PDF_TEXT_UCD_WBP_Extend  }, /* 71 */
     168                 :            :   { 0x0B47, 0x0B48, PDF_TEXT_UCD_WBP_Extend  }, /* 72 */
     169                 :            :   { 0x0B4B, 0x0B4C, PDF_TEXT_UCD_WBP_Extend  }, /* 73 */
     170                 :            :   { 0x0B4D, 0x0B4D, PDF_TEXT_UCD_WBP_Extend  }, /* 74 */
     171                 :            :   { 0x0B56, 0x0B56, PDF_TEXT_UCD_WBP_Extend  }, /* 75 */
     172                 :            :   { 0x0B57, 0x0B57, PDF_TEXT_UCD_WBP_Extend  }, /* 76 */
     173                 :            :   { 0x0B62, 0x0B63, PDF_TEXT_UCD_WBP_Extend  }, /* 77 */
     174                 :            :   { 0x0B82, 0x0B82, PDF_TEXT_UCD_WBP_Extend  }, /* 78 */
     175                 :            :   { 0x0BBE, 0x0BBF, PDF_TEXT_UCD_WBP_Extend  }, /* 79 */
     176                 :            :   { 0x0BC0, 0x0BC0, PDF_TEXT_UCD_WBP_Extend  }, /* 80 */
     177                 :            :   { 0x0BC1, 0x0BC2, PDF_TEXT_UCD_WBP_Extend  }, /* 81 */
     178                 :            :   { 0x0BC6, 0x0BC8, PDF_TEXT_UCD_WBP_Extend  }, /* 82 */
     179                 :            :   { 0x0BCA, 0x0BCC, PDF_TEXT_UCD_WBP_Extend  }, /* 83 */
     180                 :            :   { 0x0BCD, 0x0BCD, PDF_TEXT_UCD_WBP_Extend  }, /* 84 */
     181                 :            :   { 0x0BD7, 0x0BD7, PDF_TEXT_UCD_WBP_Extend  }, /* 85 */
     182                 :            :   { 0x0C01, 0x0C03, PDF_TEXT_UCD_WBP_Extend  }, /* 86 */
     183                 :            :   { 0x0C3E, 0x0C40, PDF_TEXT_UCD_WBP_Extend  }, /* 87 */
     184                 :            :   { 0x0C41, 0x0C44, PDF_TEXT_UCD_WBP_Extend  }, /* 88 */
     185                 :            :   { 0x0C46, 0x0C48, PDF_TEXT_UCD_WBP_Extend  }, /* 89 */
     186                 :            :   { 0x0C4A, 0x0C4D, PDF_TEXT_UCD_WBP_Extend  }, /* 90 */
     187                 :            :   { 0x0C55, 0x0C56, PDF_TEXT_UCD_WBP_Extend  }, /* 91 */
     188                 :            :   { 0x0C62, 0x0C63, PDF_TEXT_UCD_WBP_Extend  }, /* 92 */
     189                 :            :   { 0x0C82, 0x0C83, PDF_TEXT_UCD_WBP_Extend  }, /* 93 */
     190                 :            :   { 0x0CBC, 0x0CBC, PDF_TEXT_UCD_WBP_Extend  }, /* 94 */
     191                 :            :   { 0x0CBE, 0x0CBE, PDF_TEXT_UCD_WBP_Extend  }, /* 95 */
     192                 :            :   { 0x0CBF, 0x0CBF, PDF_TEXT_UCD_WBP_Extend  }, /* 96 */
     193                 :            :   { 0x0CC0, 0x0CC4, PDF_TEXT_UCD_WBP_Extend  }, /* 97 */
     194                 :            :   { 0x0CC6, 0x0CC6, PDF_TEXT_UCD_WBP_Extend  }, /* 98 */
     195                 :            :   { 0x0CC7, 0x0CC8, PDF_TEXT_UCD_WBP_Extend  }, /* 99 */
     196                 :            :   { 0x0CCA, 0x0CCB, PDF_TEXT_UCD_WBP_Extend  }, /* 100 */
     197                 :            :   { 0x0CCC, 0x0CCD, PDF_TEXT_UCD_WBP_Extend  }, /* 101 */
     198                 :            :   { 0x0CD5, 0x0CD6, PDF_TEXT_UCD_WBP_Extend  }, /* 102 */
     199                 :            :   { 0x0CE2, 0x0CE3, PDF_TEXT_UCD_WBP_Extend  }, /* 103 */
     200                 :            :   { 0x0D02, 0x0D03, PDF_TEXT_UCD_WBP_Extend  }, /* 104 */
     201                 :            :   { 0x0D3E, 0x0D40, PDF_TEXT_UCD_WBP_Extend  }, /* 105 */
     202                 :            :   { 0x0D41, 0x0D44, PDF_TEXT_UCD_WBP_Extend  }, /* 106 */
     203                 :            :   { 0x0D46, 0x0D48, PDF_TEXT_UCD_WBP_Extend  }, /* 107 */
     204                 :            :   { 0x0D4A, 0x0D4C, PDF_TEXT_UCD_WBP_Extend  }, /* 108 */
     205                 :            :   { 0x0D4D, 0x0D4D, PDF_TEXT_UCD_WBP_Extend  }, /* 109 */
     206                 :            :   { 0x0D57, 0x0D57, PDF_TEXT_UCD_WBP_Extend  }, /* 110 */
     207                 :            :   { 0x0D62, 0x0D63, PDF_TEXT_UCD_WBP_Extend  }, /* 111 */
     208                 :            :   { 0x0D82, 0x0D83, PDF_TEXT_UCD_WBP_Extend  }, /* 112 */
     209                 :            :   { 0x0DCA, 0x0DCA, PDF_TEXT_UCD_WBP_Extend  }, /* 113 */
     210                 :            :   { 0x0DCF, 0x0DD1, PDF_TEXT_UCD_WBP_Extend  }, /* 114 */
     211                 :            :   { 0x0DD2, 0x0DD4, PDF_TEXT_UCD_WBP_Extend  }, /* 115 */
     212                 :            :   { 0x0DD6, 0x0DD6, PDF_TEXT_UCD_WBP_Extend  }, /* 116 */
     213                 :            :   { 0x0DD8, 0x0DDF, PDF_TEXT_UCD_WBP_Extend  }, /* 117 */
     214                 :            :   { 0x0DF2, 0x0DF3, PDF_TEXT_UCD_WBP_Extend  }, /* 118 */
     215                 :            :   { 0x0E31, 0x0E31, PDF_TEXT_UCD_WBP_Extend  }, /* 119 */
     216                 :            :   { 0x0E34, 0x0E3A, PDF_TEXT_UCD_WBP_Extend  }, /* 120 */
     217                 :            :   { 0x0E47, 0x0E4E, PDF_TEXT_UCD_WBP_Extend  }, /* 121 */
     218                 :            :   { 0x0EB1, 0x0EB1, PDF_TEXT_UCD_WBP_Extend  }, /* 122 */
     219                 :            :   { 0x0EB4, 0x0EB9, PDF_TEXT_UCD_WBP_Extend  }, /* 123 */
     220                 :            :   { 0x0EBB, 0x0EBC, PDF_TEXT_UCD_WBP_Extend  }, /* 124 */
     221                 :            :   { 0x0EC8, 0x0ECD, PDF_TEXT_UCD_WBP_Extend  }, /* 125 */
     222                 :            :   { 0x0F18, 0x0F19, PDF_TEXT_UCD_WBP_Extend  }, /* 126 */
     223                 :            :   { 0x0F35, 0x0F35, PDF_TEXT_UCD_WBP_Extend  }, /* 127 */
     224                 :            :   { 0x0F37, 0x0F37, PDF_TEXT_UCD_WBP_Extend  }, /* 128 */
     225                 :            :   { 0x0F39, 0x0F39, PDF_TEXT_UCD_WBP_Extend  }, /* 129 */
     226                 :            :   { 0x0F3E, 0x0F3F, PDF_TEXT_UCD_WBP_Extend  }, /* 130 */
     227                 :            :   { 0x0F71, 0x0F7E, PDF_TEXT_UCD_WBP_Extend  }, /* 131 */
     228                 :            :   { 0x0F7F, 0x0F7F, PDF_TEXT_UCD_WBP_Extend  }, /* 132 */
     229                 :            :   { 0x0F80, 0x0F84, PDF_TEXT_UCD_WBP_Extend  }, /* 133 */
     230                 :            :   { 0x0F86, 0x0F87, PDF_TEXT_UCD_WBP_Extend  }, /* 134 */
     231                 :            :   { 0x0F90, 0x0F97, PDF_TEXT_UCD_WBP_Extend  }, /* 135 */
     232                 :            :   { 0x0F99, 0x0FBC, PDF_TEXT_UCD_WBP_Extend  }, /* 136 */
     233                 :            :   { 0x0FC6, 0x0FC6, PDF_TEXT_UCD_WBP_Extend  }, /* 137 */
     234                 :            :   { 0x102B, 0x102C, PDF_TEXT_UCD_WBP_Extend  }, /* 138 */
     235                 :            :   { 0x102D, 0x1030, PDF_TEXT_UCD_WBP_Extend  }, /* 139 */
     236                 :            :   { 0x1031, 0x1031, PDF_TEXT_UCD_WBP_Extend  }, /* 140 */
     237                 :            :   { 0x1032, 0x1037, PDF_TEXT_UCD_WBP_Extend  }, /* 141 */
     238                 :            :   { 0x1038, 0x1038, PDF_TEXT_UCD_WBP_Extend  }, /* 142 */
     239                 :            :   { 0x1039, 0x103A, PDF_TEXT_UCD_WBP_Extend  }, /* 143 */
     240                 :            :   { 0x103B, 0x103C, PDF_TEXT_UCD_WBP_Extend  }, /* 144 */
     241                 :            :   { 0x103D, 0x103E, PDF_TEXT_UCD_WBP_Extend  }, /* 145 */
     242                 :            :   { 0x1056, 0x1057, PDF_TEXT_UCD_WBP_Extend  }, /* 146 */
     243                 :            :   { 0x1058, 0x1059, PDF_TEXT_UCD_WBP_Extend  }, /* 147 */
     244                 :            :   { 0x105E, 0x1060, PDF_TEXT_UCD_WBP_Extend  }, /* 148 */
     245                 :            :   { 0x1062, 0x1064, PDF_TEXT_UCD_WBP_Extend  }, /* 149 */
     246                 :            :   { 0x1067, 0x106D, PDF_TEXT_UCD_WBP_Extend  }, /* 150 */
     247                 :            :   { 0x1071, 0x1074, PDF_TEXT_UCD_WBP_Extend  }, /* 151 */
     248                 :            :   { 0x1082, 0x1082, PDF_TEXT_UCD_WBP_Extend  }, /* 152 */
     249                 :            :   { 0x1083, 0x1084, PDF_TEXT_UCD_WBP_Extend  }, /* 153 */
     250                 :            :   { 0x1085, 0x1086, PDF_TEXT_UCD_WBP_Extend  }, /* 154 */
     251                 :            :   { 0x1087, 0x108C, PDF_TEXT_UCD_WBP_Extend  }, /* 155 */
     252                 :            :   { 0x108D, 0x108D, PDF_TEXT_UCD_WBP_Extend  }, /* 156 */
     253                 :            :   { 0x108F, 0x108F, PDF_TEXT_UCD_WBP_Extend  }, /* 157 */
     254                 :            :   { 0x135F, 0x135F, PDF_TEXT_UCD_WBP_Extend  }, /* 158 */
     255                 :            :   { 0x1712, 0x1714, PDF_TEXT_UCD_WBP_Extend  }, /* 159 */
     256                 :            :   { 0x1732, 0x1734, PDF_TEXT_UCD_WBP_Extend  }, /* 160 */
     257                 :            :   { 0x1752, 0x1753, PDF_TEXT_UCD_WBP_Extend  }, /* 161 */
     258                 :            :   { 0x1772, 0x1773, PDF_TEXT_UCD_WBP_Extend  }, /* 162 */
     259                 :            :   { 0x17B6, 0x17B6, PDF_TEXT_UCD_WBP_Extend  }, /* 163 */
     260                 :            :   { 0x17B7, 0x17BD, PDF_TEXT_UCD_WBP_Extend  }, /* 164 */
     261                 :            :   { 0x17BE, 0x17C5, PDF_TEXT_UCD_WBP_Extend  }, /* 165 */
     262                 :            :   { 0x17C6, 0x17C6, PDF_TEXT_UCD_WBP_Extend  }, /* 166 */
     263                 :            :   { 0x17C7, 0x17C8, PDF_TEXT_UCD_WBP_Extend  }, /* 167 */
     264                 :            :   { 0x17C9, 0x17D3, PDF_TEXT_UCD_WBP_Extend  }, /* 168 */
     265                 :            :   { 0x17DD, 0x17DD, PDF_TEXT_UCD_WBP_Extend  }, /* 169 */
     266                 :            :   { 0x180B, 0x180D, PDF_TEXT_UCD_WBP_Extend  }, /* 170 */
     267                 :            :   { 0x18A9, 0x18A9, PDF_TEXT_UCD_WBP_Extend  }, /* 171 */
     268                 :            :   { 0x1920, 0x1922, PDF_TEXT_UCD_WBP_Extend  }, /* 172 */
     269                 :            :   { 0x1923, 0x1926, PDF_TEXT_UCD_WBP_Extend  }, /* 173 */
     270                 :            :   { 0x1927, 0x1928, PDF_TEXT_UCD_WBP_Extend  }, /* 174 */
     271                 :            :   { 0x1929, 0x192B, PDF_TEXT_UCD_WBP_Extend  }, /* 175 */
     272                 :            :   { 0x1930, 0x1931, PDF_TEXT_UCD_WBP_Extend  }, /* 176 */
     273                 :            :   { 0x1932, 0x1932, PDF_TEXT_UCD_WBP_Extend  }, /* 177 */
     274                 :            :   { 0x1933, 0x1938, PDF_TEXT_UCD_WBP_Extend  }, /* 178 */
     275                 :            :   { 0x1939, 0x193B, PDF_TEXT_UCD_WBP_Extend  }, /* 179 */
     276                 :            :   { 0x19B0, 0x19C0, PDF_TEXT_UCD_WBP_Extend  }, /* 180 */
     277                 :            :   { 0x19C8, 0x19C9, PDF_TEXT_UCD_WBP_Extend  }, /* 181 */
     278                 :            :   { 0x1A17, 0x1A18, PDF_TEXT_UCD_WBP_Extend  }, /* 182 */
     279                 :            :   { 0x1A19, 0x1A1B, PDF_TEXT_UCD_WBP_Extend  }, /* 183 */
     280                 :            :   { 0x1B00, 0x1B03, PDF_TEXT_UCD_WBP_Extend  }, /* 184 */
     281                 :            :   { 0x1B04, 0x1B04, PDF_TEXT_UCD_WBP_Extend  }, /* 185 */
     282                 :            :   { 0x1B34, 0x1B34, PDF_TEXT_UCD_WBP_Extend  }, /* 186 */
     283                 :            :   { 0x1B35, 0x1B35, PDF_TEXT_UCD_WBP_Extend  }, /* 187 */
     284                 :            :   { 0x1B36, 0x1B3A, PDF_TEXT_UCD_WBP_Extend  }, /* 188 */
     285                 :            :   { 0x1B3B, 0x1B3B, PDF_TEXT_UCD_WBP_Extend  }, /* 189 */
     286                 :            :   { 0x1B3C, 0x1B3C, PDF_TEXT_UCD_WBP_Extend  }, /* 190 */
     287                 :            :   { 0x1B3D, 0x1B41, PDF_TEXT_UCD_WBP_Extend  }, /* 191 */
     288                 :            :   { 0x1B42, 0x1B42, PDF_TEXT_UCD_WBP_Extend  }, /* 192 */
     289                 :            :   { 0x1B43, 0x1B44, PDF_TEXT_UCD_WBP_Extend  }, /* 193 */
     290                 :            :   { 0x1B6B, 0x1B73, PDF_TEXT_UCD_WBP_Extend  }, /* 194 */
     291                 :            :   { 0x1B80, 0x1B81, PDF_TEXT_UCD_WBP_Extend  }, /* 195 */
     292                 :            :   { 0x1B82, 0x1B82, PDF_TEXT_UCD_WBP_Extend  }, /* 196 */
     293                 :            :   { 0x1BA1, 0x1BA1, PDF_TEXT_UCD_WBP_Extend  }, /* 197 */
     294                 :            :   { 0x1BA2, 0x1BA5, PDF_TEXT_UCD_WBP_Extend  }, /* 198 */
     295                 :            :   { 0x1BA6, 0x1BA7, PDF_TEXT_UCD_WBP_Extend  }, /* 199 */
     296                 :            :   { 0x1BA8, 0x1BA9, PDF_TEXT_UCD_WBP_Extend  }, /* 200 */
     297                 :            :   { 0x1BAA, 0x1BAA, PDF_TEXT_UCD_WBP_Extend  }, /* 201 */
     298                 :            :   { 0x1C24, 0x1C2B, PDF_TEXT_UCD_WBP_Extend  }, /* 202 */
     299                 :            :   { 0x1C2C, 0x1C33, PDF_TEXT_UCD_WBP_Extend  }, /* 203 */
     300                 :            :   { 0x1C34, 0x1C35, PDF_TEXT_UCD_WBP_Extend  }, /* 204 */
     301                 :            :   { 0x1C36, 0x1C37, PDF_TEXT_UCD_WBP_Extend  }, /* 205 */
     302                 :            :   { 0x1DC0, 0x1DE6, PDF_TEXT_UCD_WBP_Extend  }, /* 206 */
     303                 :            :   { 0x1DFE, 0x1DFF, PDF_TEXT_UCD_WBP_Extend  }, /* 207 */
     304                 :            :   { 0x200C, 0x200D, PDF_TEXT_UCD_WBP_Extend  }, /* 208 */
     305                 :            :   { 0x20D0, 0x20DC, PDF_TEXT_UCD_WBP_Extend  }, /* 209 */
     306                 :            :   { 0x20DD, 0x20E0, PDF_TEXT_UCD_WBP_Extend  }, /* 210 */
     307                 :            :   { 0x20E1, 0x20E1, PDF_TEXT_UCD_WBP_Extend  }, /* 211 */
     308                 :            :   { 0x20E2, 0x20E4, PDF_TEXT_UCD_WBP_Extend  }, /* 212 */
     309                 :            :   { 0x20E5, 0x20F0, PDF_TEXT_UCD_WBP_Extend  }, /* 213 */
     310                 :            :   { 0x2DE0, 0x2DFF, PDF_TEXT_UCD_WBP_Extend  }, /* 214 */
     311                 :            :   { 0x302A, 0x302F, PDF_TEXT_UCD_WBP_Extend  }, /* 215 */
     312                 :            :   { 0x3099, 0x309A, PDF_TEXT_UCD_WBP_Extend  }, /* 216 */
     313                 :            :   { 0xA66F, 0xA66F, PDF_TEXT_UCD_WBP_Extend  }, /* 217 */
     314                 :            :   { 0xA670, 0xA672, PDF_TEXT_UCD_WBP_Extend  }, /* 218 */
     315                 :            :   { 0xA67C, 0xA67D, PDF_TEXT_UCD_WBP_Extend  }, /* 219 */
     316                 :            :   { 0xA802, 0xA802, PDF_TEXT_UCD_WBP_Extend  }, /* 220 */
     317                 :            :   { 0xA806, 0xA806, PDF_TEXT_UCD_WBP_Extend  }, /* 221 */
     318                 :            :   { 0xA80B, 0xA80B, PDF_TEXT_UCD_WBP_Extend  }, /* 222 */
     319                 :            :   { 0xA823, 0xA824, PDF_TEXT_UCD_WBP_Extend  }, /* 223 */
     320                 :            :   { 0xA825, 0xA826, PDF_TEXT_UCD_WBP_Extend  }, /* 224 */
     321                 :            :   { 0xA827, 0xA827, PDF_TEXT_UCD_WBP_Extend  }, /* 225 */
     322                 :            :   { 0xA880, 0xA881, PDF_TEXT_UCD_WBP_Extend  }, /* 226 */
     323                 :            :   { 0xA8B4, 0xA8C3, PDF_TEXT_UCD_WBP_Extend  }, /* 227 */
     324                 :            :   { 0xA8C4, 0xA8C4, PDF_TEXT_UCD_WBP_Extend  }, /* 228 */
     325                 :            :   { 0xA926, 0xA92D, PDF_TEXT_UCD_WBP_Extend  }, /* 229 */
     326                 :            :   { 0xA947, 0xA951, PDF_TEXT_UCD_WBP_Extend  }, /* 230 */
     327                 :            :   { 0xA952, 0xA953, PDF_TEXT_UCD_WBP_Extend  }, /* 231 */
     328                 :            :   { 0xAA29, 0xAA2E, PDF_TEXT_UCD_WBP_Extend  }, /* 232 */
     329                 :            :   { 0xAA2F, 0xAA30, PDF_TEXT_UCD_WBP_Extend  }, /* 233 */
     330                 :            :   { 0xAA31, 0xAA32, PDF_TEXT_UCD_WBP_Extend  }, /* 234 */
     331                 :            :   { 0xAA33, 0xAA34, PDF_TEXT_UCD_WBP_Extend  }, /* 235 */
     332                 :            :   { 0xAA35, 0xAA36, PDF_TEXT_UCD_WBP_Extend  }, /* 236 */
     333                 :            :   { 0xAA43, 0xAA43, PDF_TEXT_UCD_WBP_Extend  }, /* 237 */
     334                 :            :   { 0xAA4C, 0xAA4C, PDF_TEXT_UCD_WBP_Extend  }, /* 238 */
     335                 :            :   { 0xAA4D, 0xAA4D, PDF_TEXT_UCD_WBP_Extend  }, /* 239 */
     336                 :            :   { 0xFB1E, 0xFB1E, PDF_TEXT_UCD_WBP_Extend  }, /* 240 */
     337                 :            :   { 0xFE00, 0xFE0F, PDF_TEXT_UCD_WBP_Extend  }, /* 241 */
     338                 :            :   { 0xFE20, 0xFE26, PDF_TEXT_UCD_WBP_Extend  }, /* 242 */
     339                 :            :   { 0xFF9E, 0xFF9F, PDF_TEXT_UCD_WBP_Extend  }, /* 243 */
     340                 :            :   { 0x101FD, 0x101FD, PDF_TEXT_UCD_WBP_Extend  }, /* 244 */
     341                 :            :   { 0x10A01, 0x10A03, PDF_TEXT_UCD_WBP_Extend  }, /* 245 */
     342                 :            :   { 0x10A05, 0x10A06, PDF_TEXT_UCD_WBP_Extend  }, /* 246 */
     343                 :            :   { 0x10A0C, 0x10A0F, PDF_TEXT_UCD_WBP_Extend  }, /* 247 */
     344                 :            :   { 0x10A38, 0x10A3A, PDF_TEXT_UCD_WBP_Extend  }, /* 248 */
     345                 :            :   { 0x10A3F, 0x10A3F, PDF_TEXT_UCD_WBP_Extend  }, /* 249 */
     346                 :            :   { 0x1D165, 0x1D166, PDF_TEXT_UCD_WBP_Extend  }, /* 250 */
     347                 :            :   { 0x1D167, 0x1D169, PDF_TEXT_UCD_WBP_Extend  }, /* 251 */
     348                 :            :   { 0x1D16D, 0x1D172, PDF_TEXT_UCD_WBP_Extend  }, /* 252 */
     349                 :            :   { 0x1D17B, 0x1D182, PDF_TEXT_UCD_WBP_Extend  }, /* 253 */
     350                 :            :   { 0x1D185, 0x1D18B, PDF_TEXT_UCD_WBP_Extend  }, /* 254 */
     351                 :            :   { 0x1D1AA, 0x1D1AD, PDF_TEXT_UCD_WBP_Extend  }, /* 255 */
     352                 :            :   { 0x1D242, 0x1D244, PDF_TEXT_UCD_WBP_Extend  }, /* 256 */
     353                 :            :   { 0xE0100, 0xE01EF, PDF_TEXT_UCD_WBP_Extend  }, /* 257 */
     354                 :            :   { 0x00AD, 0x00AD, PDF_TEXT_UCD_WBP_Format  }, /* 258 */
     355                 :            :   { 0x0600, 0x0603, PDF_TEXT_UCD_WBP_Format  }, /* 259 */
     356                 :            :   { 0x06DD, 0x06DD, PDF_TEXT_UCD_WBP_Format  }, /* 260 */
     357                 :            :   { 0x070F, 0x070F, PDF_TEXT_UCD_WBP_Format  }, /* 261 */
     358                 :            :   { 0x17B4, 0x17B5, PDF_TEXT_UCD_WBP_Format  }, /* 262 */
     359                 :            :   { 0x200B, 0x200B, PDF_TEXT_UCD_WBP_Format  }, /* 263 */
     360                 :            :   { 0x200E, 0x200F, PDF_TEXT_UCD_WBP_Format  }, /* 264 */
     361                 :            :   { 0x202A, 0x202E, PDF_TEXT_UCD_WBP_Format  }, /* 265 */
     362                 :            :   { 0x2060, 0x2064, PDF_TEXT_UCD_WBP_Format  }, /* 266 */
     363                 :            :   { 0x206A, 0x206F, PDF_TEXT_UCD_WBP_Format  }, /* 267 */
     364                 :            :   { 0xFEFF, 0xFEFF, PDF_TEXT_UCD_WBP_Format  }, /* 268 */
     365                 :            :   { 0xFFF9, 0xFFFB, PDF_TEXT_UCD_WBP_Format  }, /* 269 */
     366                 :            :   { 0x1D173, 0x1D17A, PDF_TEXT_UCD_WBP_Format  }, /* 270 */
     367                 :            :   { 0xE0001, 0xE0001, PDF_TEXT_UCD_WBP_Format  }, /* 271 */
     368                 :            :   { 0xE0020, 0xE007F, PDF_TEXT_UCD_WBP_Format  }, /* 272 */
     369                 :            :   { 0x3031, 0x3035, PDF_TEXT_UCD_WBP_Katakana  }, /* 273 */
     370                 :            :   { 0x309B, 0x309C, PDF_TEXT_UCD_WBP_Katakana  }, /* 274 */
     371                 :            :   { 0x30A0, 0x30A0, PDF_TEXT_UCD_WBP_Katakana  }, /* 275 */
     372                 :            :   { 0x30A1, 0x30FA, PDF_TEXT_UCD_WBP_Katakana  }, /* 276 */
     373                 :            :   { 0x30FC, 0x30FE, PDF_TEXT_UCD_WBP_Katakana  }, /* 277 */
     374                 :            :   { 0x30FF, 0x30FF, PDF_TEXT_UCD_WBP_Katakana  }, /* 278 */
     375                 :            :   { 0x31F0, 0x31FF, PDF_TEXT_UCD_WBP_Katakana  }, /* 279 */
     376                 :            :   { 0x32D0, 0x32FE, PDF_TEXT_UCD_WBP_Katakana  }, /* 280 */
     377                 :            :   { 0x3300, 0x3357, PDF_TEXT_UCD_WBP_Katakana  }, /* 281 */
     378                 :            :   { 0xFF66, 0xFF6F, PDF_TEXT_UCD_WBP_Katakana  }, /* 282 */
     379                 :            :   { 0xFF70, 0xFF70, PDF_TEXT_UCD_WBP_Katakana  }, /* 283 */
     380                 :            :   { 0xFF71, 0xFF9D, PDF_TEXT_UCD_WBP_Katakana  }, /* 284 */
     381                 :            :   { 0x0041, 0x005A, PDF_TEXT_UCD_WBP_ALetter  }, /* 285 */
     382                 :            :   { 0x0061, 0x007A, PDF_TEXT_UCD_WBP_ALetter  }, /* 286 */
     383                 :            :   { 0x00AA, 0x00AA, PDF_TEXT_UCD_WBP_ALetter  }, /* 287 */
     384                 :            :   { 0x00B5, 0x00B5, PDF_TEXT_UCD_WBP_ALetter  }, /* 288 */
     385                 :            :   { 0x00BA, 0x00BA, PDF_TEXT_UCD_WBP_ALetter  }, /* 289 */
     386                 :            :   { 0x00C0, 0x00D6, PDF_TEXT_UCD_WBP_ALetter  }, /* 290 */
     387                 :            :   { 0x00D8, 0x00F6, PDF_TEXT_UCD_WBP_ALetter  }, /* 291 */
     388                 :            :   { 0x00F8, 0x01BA, PDF_TEXT_UCD_WBP_ALetter  }, /* 292 */
     389                 :            :   { 0x01BB, 0x01BB, PDF_TEXT_UCD_WBP_ALetter  }, /* 293 */
     390                 :            :   { 0x01BC, 0x01BF, PDF_TEXT_UCD_WBP_ALetter  }, /* 294 */
     391                 :            :   { 0x01C0, 0x01C3, PDF_TEXT_UCD_WBP_ALetter  }, /* 295 */
     392                 :            :   { 0x01C4, 0x0293, PDF_TEXT_UCD_WBP_ALetter  }, /* 296 */
     393                 :            :   { 0x0294, 0x0294, PDF_TEXT_UCD_WBP_ALetter  }, /* 297 */
     394                 :            :   { 0x0295, 0x02AF, PDF_TEXT_UCD_WBP_ALetter  }, /* 298 */
     395                 :            :   { 0x02B0, 0x02C1, PDF_TEXT_UCD_WBP_ALetter  }, /* 299 */
     396                 :            :   { 0x02C6, 0x02D1, PDF_TEXT_UCD_WBP_ALetter  }, /* 300 */
     397                 :            :   { 0x02E0, 0x02E4, PDF_TEXT_UCD_WBP_ALetter  }, /* 301 */
     398                 :            :   { 0x02EC, 0x02EC, PDF_TEXT_UCD_WBP_ALetter  }, /* 302 */
     399                 :            :   { 0x02EE, 0x02EE, PDF_TEXT_UCD_WBP_ALetter  }, /* 303 */
     400                 :            :   { 0x0370, 0x0373, PDF_TEXT_UCD_WBP_ALetter  }, /* 304 */
     401                 :            :   { 0x0374, 0x0374, PDF_TEXT_UCD_WBP_ALetter  }, /* 305 */
     402                 :            :   { 0x0376, 0x0377, PDF_TEXT_UCD_WBP_ALetter  }, /* 306 */
     403                 :            :   { 0x037A, 0x037A, PDF_TEXT_UCD_WBP_ALetter  }, /* 307 */
     404                 :            :   { 0x037B, 0x037D, PDF_TEXT_UCD_WBP_ALetter  }, /* 308 */
     405                 :            :   { 0x0386, 0x0386, PDF_TEXT_UCD_WBP_ALetter  }, /* 309 */
     406                 :            :   { 0x0388, 0x038A, PDF_TEXT_UCD_WBP_ALetter  }, /* 310 */
     407                 :            :   { 0x038C, 0x038C, PDF_TEXT_UCD_WBP_ALetter  }, /* 311 */
     408                 :            :   { 0x038E, 0x03A1, PDF_TEXT_UCD_WBP_ALetter  }, /* 312 */
     409                 :            :   { 0x03A3, 0x03F5, PDF_TEXT_UCD_WBP_ALetter  }, /* 313 */
     410                 :            :   { 0x03F7, 0x0481, PDF_TEXT_UCD_WBP_ALetter  }, /* 314 */
     411                 :            :   { 0x048A, 0x0523, PDF_TEXT_UCD_WBP_ALetter  }, /* 315 */
     412                 :            :   { 0x0531, 0x0556, PDF_TEXT_UCD_WBP_ALetter  }, /* 316 */
     413                 :            :   { 0x0559, 0x0559, PDF_TEXT_UCD_WBP_ALetter  }, /* 317 */
     414                 :            :   { 0x0561, 0x0587, PDF_TEXT_UCD_WBP_ALetter  }, /* 318 */
     415                 :            :   { 0x05D0, 0x05EA, PDF_TEXT_UCD_WBP_ALetter  }, /* 319 */
     416                 :            :   { 0x05F0, 0x05F2, PDF_TEXT_UCD_WBP_ALetter  }, /* 320 */
     417                 :            :   { 0x05F3, 0x05F3, PDF_TEXT_UCD_WBP_ALetter  }, /* 321 */
     418                 :            :   { 0x0621, 0x063F, PDF_TEXT_UCD_WBP_ALetter  }, /* 322 */
     419                 :            :   { 0x0640, 0x0640, PDF_TEXT_UCD_WBP_ALetter  }, /* 323 */
     420                 :            :   { 0x0641, 0x064A, PDF_TEXT_UCD_WBP_ALetter  }, /* 324 */
     421                 :            :   { 0x066E, 0x066F, PDF_TEXT_UCD_WBP_ALetter  }, /* 325 */
     422                 :            :   { 0x0671, 0x06D3, PDF_TEXT_UCD_WBP_ALetter  }, /* 326 */
     423                 :            :   { 0x06D5, 0x06D5, PDF_TEXT_UCD_WBP_ALetter  }, /* 327 */
     424                 :            :   { 0x06E5, 0x06E6, PDF_TEXT_UCD_WBP_ALetter  }, /* 328 */
     425                 :            :   { 0x06EE, 0x06EF, PDF_TEXT_UCD_WBP_ALetter  }, /* 329 */
     426                 :            :   { 0x06FA, 0x06FC, PDF_TEXT_UCD_WBP_ALetter  }, /* 330 */
     427                 :            :   { 0x06FF, 0x06FF, PDF_TEXT_UCD_WBP_ALetter  }, /* 331 */
     428                 :            :   { 0x0710, 0x0710, PDF_TEXT_UCD_WBP_ALetter  }, /* 332 */
     429                 :            :   { 0x0712, 0x072F, PDF_TEXT_UCD_WBP_ALetter  }, /* 333 */
     430                 :            :   { 0x074D, 0x07A5, PDF_TEXT_UCD_WBP_ALetter  }, /* 334 */
     431                 :            :   { 0x07B1, 0x07B1, PDF_TEXT_UCD_WBP_ALetter  }, /* 335 */
     432                 :            :   { 0x07CA, 0x07EA, PDF_TEXT_UCD_WBP_ALetter  }, /* 336 */
     433                 :            :   { 0x07F4, 0x07F5, PDF_TEXT_UCD_WBP_ALetter  }, /* 337 */
     434                 :            :   { 0x07FA, 0x07FA, PDF_TEXT_UCD_WBP_ALetter  }, /* 338 */
     435                 :            :   { 0x0904, 0x0939, PDF_TEXT_UCD_WBP_ALetter  }, /* 339 */
     436                 :            :   { 0x093D, 0x093D, PDF_TEXT_UCD_WBP_ALetter  }, /* 340 */
     437                 :            :   { 0x0950, 0x0950, PDF_TEXT_UCD_WBP_ALetter  }, /* 341 */
     438                 :            :   { 0x0958, 0x0961, PDF_TEXT_UCD_WBP_ALetter  }, /* 342 */
     439                 :            :   { 0x0971, 0x0971, PDF_TEXT_UCD_WBP_ALetter  }, /* 343 */
     440                 :            :   { 0x0972, 0x0972, PDF_TEXT_UCD_WBP_ALetter  }, /* 344 */
     441                 :            :   { 0x097B, 0x097F, PDF_TEXT_UCD_WBP_ALetter  }, /* 345 */
     442                 :            :   { 0x0985, 0x098C, PDF_TEXT_UCD_WBP_ALetter  }, /* 346 */
     443                 :            :   { 0x098F, 0x0990, PDF_TEXT_UCD_WBP_ALetter  }, /* 347 */
     444                 :            :   { 0x0993, 0x09A8, PDF_TEXT_UCD_WBP_ALetter  }, /* 348 */
     445                 :            :   { 0x09AA, 0x09B0, PDF_TEXT_UCD_WBP_ALetter  }, /* 349 */
     446                 :            :   { 0x09B2, 0x09B2, PDF_TEXT_UCD_WBP_ALetter  }, /* 350 */
     447                 :            :   { 0x09B6, 0x09B9, PDF_TEXT_UCD_WBP_ALetter  }, /* 351 */
     448                 :            :   { 0x09BD, 0x09BD, PDF_TEXT_UCD_WBP_ALetter  }, /* 352 */
     449                 :            :   { 0x09CE, 0x09CE, PDF_TEXT_UCD_WBP_ALetter  }, /* 353 */
     450                 :            :   { 0x09DC, 0x09DD, PDF_TEXT_UCD_WBP_ALetter  }, /* 354 */
     451                 :            :   { 0x09DF, 0x09E1, PDF_TEXT_UCD_WBP_ALetter  }, /* 355 */
     452                 :            :   { 0x09F0, 0x09F1, PDF_TEXT_UCD_WBP_ALetter  }, /* 356 */
     453                 :            :   { 0x0A05, 0x0A0A, PDF_TEXT_UCD_WBP_ALetter  }, /* 357 */
     454                 :            :   { 0x0A0F, 0x0A10, PDF_TEXT_UCD_WBP_ALetter  }, /* 358 */
     455                 :            :   { 0x0A13, 0x0A28, PDF_TEXT_UCD_WBP_ALetter  }, /* 359 */
     456                 :            :   { 0x0A2A, 0x0A30, PDF_TEXT_UCD_WBP_ALetter  }, /* 360 */
     457                 :            :   { 0x0A32, 0x0A33, PDF_TEXT_UCD_WBP_ALetter  }, /* 361 */
     458                 :            :   { 0x0A35, 0x0A36, PDF_TEXT_UCD_WBP_ALetter  }, /* 362 */
     459                 :            :   { 0x0A38, 0x0A39, PDF_TEXT_UCD_WBP_ALetter  }, /* 363 */
     460                 :            :   { 0x0A59, 0x0A5C, PDF_TEXT_UCD_WBP_ALetter  }, /* 364 */
     461                 :            :   { 0x0A5E, 0x0A5E, PDF_TEXT_UCD_WBP_ALetter  }, /* 365 */
     462                 :            :   { 0x0A72, 0x0A74, PDF_TEXT_UCD_WBP_ALetter  }, /* 366 */
     463                 :            :   { 0x0A85, 0x0A8D, PDF_TEXT_UCD_WBP_ALetter  }, /* 367 */
     464                 :            :   { 0x0A8F, 0x0A91, PDF_TEXT_UCD_WBP_ALetter  }, /* 368 */
     465                 :            :   { 0x0A93, 0x0AA8, PDF_TEXT_UCD_WBP_ALetter  }, /* 369 */
     466                 :            :   { 0x0AAA, 0x0AB0, PDF_TEXT_UCD_WBP_ALetter  }, /* 370 */
     467                 :            :   { 0x0AB2, 0x0AB3, PDF_TEXT_UCD_WBP_ALetter  }, /* 371 */
     468                 :            :   { 0x0AB5, 0x0AB9, PDF_TEXT_UCD_WBP_ALetter  }, /* 372 */
     469                 :            :   { 0x0ABD, 0x0ABD, PDF_TEXT_UCD_WBP_ALetter  }, /* 373 */
     470                 :            :   { 0x0AD0, 0x0AD0, PDF_TEXT_UCD_WBP_ALetter  }, /* 374 */
     471                 :            :   { 0x0AE0, 0x0AE1, PDF_TEXT_UCD_WBP_ALetter  }, /* 375 */
     472                 :            :   { 0x0B05, 0x0B0C, PDF_TEXT_UCD_WBP_ALetter  }, /* 376 */
     473                 :            :   { 0x0B0F, 0x0B10, PDF_TEXT_UCD_WBP_ALetter  }, /* 377 */
     474                 :            :   { 0x0B13, 0x0B28, PDF_TEXT_UCD_WBP_ALetter  }, /* 378 */
     475                 :            :   { 0x0B2A, 0x0B30, PDF_TEXT_UCD_WBP_ALetter  }, /* 379 */
     476                 :            :   { 0x0B32, 0x0B33, PDF_TEXT_UCD_WBP_ALetter  }, /* 380 */
     477                 :            :   { 0x0B35, 0x0B39, PDF_TEXT_UCD_WBP_ALetter  }, /* 381 */
     478                 :            :   { 0x0B3D, 0x0B3D, PDF_TEXT_UCD_WBP_ALetter  }, /* 382 */
     479                 :            :   { 0x0B5C, 0x0B5D, PDF_TEXT_UCD_WBP_ALetter  }, /* 383 */
     480                 :            :   { 0x0B5F, 0x0B61, PDF_TEXT_UCD_WBP_ALetter  }, /* 384 */
     481                 :            :   { 0x0B71, 0x0B71, PDF_TEXT_UCD_WBP_ALetter  }, /* 385 */
     482                 :            :   { 0x0B83, 0x0B83, PDF_TEXT_UCD_WBP_ALetter  }, /* 386 */
     483                 :            :   { 0x0B85, 0x0B8A, PDF_TEXT_UCD_WBP_ALetter  }, /* 387 */
     484                 :            :   { 0x0B8E, 0x0B90, PDF_TEXT_UCD_WBP_ALetter  }, /* 388 */
     485                 :            :   { 0x0B92, 0x0B95, PDF_TEXT_UCD_WBP_ALetter  }, /* 389 */
     486                 :            :   { 0x0B99, 0x0B9A, PDF_TEXT_UCD_WBP_ALetter  }, /* 390 */
     487                 :            :   { 0x0B9C, 0x0B9C, PDF_TEXT_UCD_WBP_ALetter  }, /* 391 */
     488                 :            :   { 0x0B9E, 0x0B9F, PDF_TEXT_UCD_WBP_ALetter  }, /* 392 */
     489                 :            :   { 0x0BA3, 0x0BA4, PDF_TEXT_UCD_WBP_ALetter  }, /* 393 */
     490                 :            :   { 0x0BA8, 0x0BAA, PDF_TEXT_UCD_WBP_ALetter  }, /* 394 */
     491                 :            :   { 0x0BAE, 0x0BB9, PDF_TEXT_UCD_WBP_ALetter  }, /* 395 */
     492                 :            :   { 0x0BD0, 0x0BD0, PDF_TEXT_UCD_WBP_ALetter  }, /* 396 */
     493                 :            :   { 0x0C05, 0x0C0C, PDF_TEXT_UCD_WBP_ALetter  }, /* 397 */
     494                 :            :   { 0x0C0E, 0x0C10, PDF_TEXT_UCD_WBP_ALetter  }, /* 398 */
     495                 :            :   { 0x0C12, 0x0C28, PDF_TEXT_UCD_WBP_ALetter  }, /* 399 */
     496                 :            :   { 0x0C2A, 0x0C33, PDF_TEXT_UCD_WBP_ALetter  }, /* 400 */
     497                 :            :   { 0x0C35, 0x0C39, PDF_TEXT_UCD_WBP_ALetter  }, /* 401 */
     498                 :            :   { 0x0C3D, 0x0C3D, PDF_TEXT_UCD_WBP_ALetter  }, /* 402 */
     499                 :            :   { 0x0C58, 0x0C59, PDF_TEXT_UCD_WBP_ALetter  }, /* 403 */
     500                 :            :   { 0x0C60, 0x0C61, PDF_TEXT_UCD_WBP_ALetter  }, /* 404 */
     501                 :            :   { 0x0C85, 0x0C8C, PDF_TEXT_UCD_WBP_ALetter  }, /* 405 */
     502                 :            :   { 0x0C8E, 0x0C90, PDF_TEXT_UCD_WBP_ALetter  }, /* 406 */
     503                 :            :   { 0x0C92, 0x0CA8, PDF_TEXT_UCD_WBP_ALetter  }, /* 407 */
     504                 :            :   { 0x0CAA, 0x0CB3, PDF_TEXT_UCD_WBP_ALetter  }, /* 408 */
     505                 :            :   { 0x0CB5, 0x0CB9, PDF_TEXT_UCD_WBP_ALetter  }, /* 409 */
     506                 :            :   { 0x0CBD, 0x0CBD, PDF_TEXT_UCD_WBP_ALetter  }, /* 410 */
     507                 :            :   { 0x0CDE, 0x0CDE, PDF_TEXT_UCD_WBP_ALetter  }, /* 411 */
     508                 :            :   { 0x0CE0, 0x0CE1, PDF_TEXT_UCD_WBP_ALetter  }, /* 412 */
     509                 :            :   { 0x0D05, 0x0D0C, PDF_TEXT_UCD_WBP_ALetter  }, /* 413 */
     510                 :            :   { 0x0D0E, 0x0D10, PDF_TEXT_UCD_WBP_ALetter  }, /* 414 */
     511                 :            :   { 0x0D12, 0x0D28, PDF_TEXT_UCD_WBP_ALetter  }, /* 415 */
     512                 :            :   { 0x0D2A, 0x0D39, PDF_TEXT_UCD_WBP_ALetter  }, /* 416 */
     513                 :            :   { 0x0D3D, 0x0D3D, PDF_TEXT_UCD_WBP_ALetter  }, /* 417 */
     514                 :            :   { 0x0D60, 0x0D61, PDF_TEXT_UCD_WBP_ALetter  }, /* 418 */
     515                 :            :   { 0x0D7A, 0x0D7F, PDF_TEXT_UCD_WBP_ALetter  }, /* 419 */
     516                 :            :   { 0x0D85, 0x0D96, PDF_TEXT_UCD_WBP_ALetter  }, /* 420 */
     517                 :            :   { 0x0D9A, 0x0DB1, PDF_TEXT_UCD_WBP_ALetter  }, /* 421 */
     518                 :            :   { 0x0DB3, 0x0DBB, PDF_TEXT_UCD_WBP_ALetter  }, /* 422 */
     519                 :            :   { 0x0DBD, 0x0DBD, PDF_TEXT_UCD_WBP_ALetter  }, /* 423 */
     520                 :            :   { 0x0DC0, 0x0DC6, PDF_TEXT_UCD_WBP_ALetter  }, /* 424 */
     521                 :            :   { 0x0F00, 0x0F00, PDF_TEXT_UCD_WBP_ALetter  }, /* 425 */
     522                 :            :   { 0x0F40, 0x0F47, PDF_TEXT_UCD_WBP_ALetter  }, /* 426 */
     523                 :            :   { 0x0F49, 0x0F6C, PDF_TEXT_UCD_WBP_ALetter  }, /* 427 */
     524                 :            :   { 0x0F88, 0x0F8B, PDF_TEXT_UCD_WBP_ALetter  }, /* 428 */
     525                 :            :   { 0x10A0, 0x10C5, PDF_TEXT_UCD_WBP_ALetter  }, /* 429 */
     526                 :            :   { 0x10D0, 0x10FA, PDF_TEXT_UCD_WBP_ALetter  }, /* 430 */
     527                 :            :   { 0x10FC, 0x10FC, PDF_TEXT_UCD_WBP_ALetter  }, /* 431 */
     528                 :            :   { 0x1100, 0x1159, PDF_TEXT_UCD_WBP_ALetter  }, /* 432 */
     529                 :            :   { 0x115F, 0x11A2, PDF_TEXT_UCD_WBP_ALetter  }, /* 433 */
     530                 :            :   { 0x11A8, 0x11F9, PDF_TEXT_UCD_WBP_ALetter  }, /* 434 */
     531                 :            :   { 0x1200, 0x1248, PDF_TEXT_UCD_WBP_ALetter  }, /* 435 */
     532                 :            :   { 0x124A, 0x124D, PDF_TEXT_UCD_WBP_ALetter  }, /* 436 */
     533                 :            :   { 0x1250, 0x1256, PDF_TEXT_UCD_WBP_ALetter  }, /* 437 */
     534                 :            :   { 0x1258, 0x1258, PDF_TEXT_UCD_WBP_ALetter  }, /* 438 */
     535                 :            :   { 0x125A, 0x125D, PDF_TEXT_UCD_WBP_ALetter  }, /* 439 */
     536                 :            :   { 0x1260, 0x1288, PDF_TEXT_UCD_WBP_ALetter  }, /* 440 */
     537                 :            :   { 0x128A, 0x128D, PDF_TEXT_UCD_WBP_ALetter  }, /* 441 */
     538                 :            :   { 0x1290, 0x12B0, PDF_TEXT_UCD_WBP_ALetter  }, /* 442 */
     539                 :            :   { 0x12B2, 0x12B5, PDF_TEXT_UCD_WBP_ALetter  }, /* 443 */
     540                 :            :   { 0x12B8, 0x12BE, PDF_TEXT_UCD_WBP_ALetter  }, /* 444 */
     541                 :            :   { 0x12C0, 0x12C0, PDF_TEXT_UCD_WBP_ALetter  }, /* 445 */
     542                 :            :   { 0x12C2, 0x12C5, PDF_TEXT_UCD_WBP_ALetter  }, /* 446 */
     543                 :            :   { 0x12C8, 0x12D6, PDF_TEXT_UCD_WBP_ALetter  }, /* 447 */
     544                 :            :   { 0x12D8, 0x1310, PDF_TEXT_UCD_WBP_ALetter  }, /* 448 */
     545                 :            :   { 0x1312, 0x1315, PDF_TEXT_UCD_WBP_ALetter  }, /* 449 */
     546                 :            :   { 0x1318, 0x135A, PDF_TEXT_UCD_WBP_ALetter  }, /* 450 */
     547                 :            :   { 0x1380, 0x138F, PDF_TEXT_UCD_WBP_ALetter  }, /* 451 */
     548                 :            :   { 0x13A0, 0x13F4, PDF_TEXT_UCD_WBP_ALetter  }, /* 452 */
     549                 :            :   { 0x1401, 0x166C, PDF_TEXT_UCD_WBP_ALetter  }, /* 453 */
     550                 :            :   { 0x166F, 0x1676, PDF_TEXT_UCD_WBP_ALetter  }, /* 454 */
     551                 :            :   { 0x1681, 0x169A, PDF_TEXT_UCD_WBP_ALetter  }, /* 455 */
     552                 :            :   { 0x16A0, 0x16EA, PDF_TEXT_UCD_WBP_ALetter  }, /* 456 */
     553                 :            :   { 0x16EE, 0x16F0, PDF_TEXT_UCD_WBP_ALetter  }, /* 457 */
     554                 :            :   { 0x1700, 0x170C, PDF_TEXT_UCD_WBP_ALetter  }, /* 458 */
     555                 :            :   { 0x170E, 0x1711, PDF_TEXT_UCD_WBP_ALetter  }, /* 459 */
     556                 :            :   { 0x1720, 0x1731, PDF_TEXT_UCD_WBP_ALetter  }, /* 460 */
     557                 :            :   { 0x1740, 0x1751, PDF_TEXT_UCD_WBP_ALetter  }, /* 461 */
     558                 :            :   { 0x1760, 0x176C, PDF_TEXT_UCD_WBP_ALetter  }, /* 462 */
     559                 :            :   { 0x176E, 0x1770, PDF_TEXT_UCD_WBP_ALetter  }, /* 463 */
     560                 :            :   { 0x1820, 0x1842, PDF_TEXT_UCD_WBP_ALetter  }, /* 464 */
     561                 :            :   { 0x1843, 0x1843, PDF_TEXT_UCD_WBP_ALetter  }, /* 465 */
     562                 :            :   { 0x1844, 0x1877, PDF_TEXT_UCD_WBP_ALetter  }, /* 466 */
     563                 :            :   { 0x1880, 0x18A8, PDF_TEXT_UCD_WBP_ALetter  }, /* 467 */
     564                 :            :   { 0x18AA, 0x18AA, PDF_TEXT_UCD_WBP_ALetter  }, /* 468 */
     565                 :            :   { 0x1900, 0x191C, PDF_TEXT_UCD_WBP_ALetter  }, /* 469 */
     566                 :            :   { 0x1A00, 0x1A16, PDF_TEXT_UCD_WBP_ALetter  }, /* 470 */
     567                 :            :   { 0x1B05, 0x1B33, PDF_TEXT_UCD_WBP_ALetter  }, /* 471 */
     568                 :            :   { 0x1B45, 0x1B4B, PDF_TEXT_UCD_WBP_ALetter  }, /* 472 */
     569                 :            :   { 0x1B83, 0x1BA0, PDF_TEXT_UCD_WBP_ALetter  }, /* 473 */
     570                 :            :   { 0x1BAE, 0x1BAF, PDF_TEXT_UCD_WBP_ALetter  }, /* 474 */
     571                 :            :   { 0x1C00, 0x1C23, PDF_TEXT_UCD_WBP_ALetter  }, /* 475 */
     572                 :            :   { 0x1C4D, 0x1C4F, PDF_TEXT_UCD_WBP_ALetter  }, /* 476 */
     573                 :            :   { 0x1C5A, 0x1C77, PDF_TEXT_UCD_WBP_ALetter  }, /* 477 */
     574                 :            :   { 0x1C78, 0x1C7D, PDF_TEXT_UCD_WBP_ALetter  }, /* 478 */
     575                 :            :   { 0x1D00, 0x1D2B, PDF_TEXT_UCD_WBP_ALetter  }, /* 479 */
     576                 :            :   { 0x1D2C, 0x1D61, PDF_TEXT_UCD_WBP_ALetter  }, /* 480 */
     577                 :            :   { 0x1D62, 0x1D77, PDF_TEXT_UCD_WBP_ALetter  }, /* 481 */
     578                 :            :   { 0x1D78, 0x1D78, PDF_TEXT_UCD_WBP_ALetter  }, /* 482 */
     579                 :            :   { 0x1D79, 0x1D9A, PDF_TEXT_UCD_WBP_ALetter  }, /* 483 */
     580                 :            :   { 0x1D9B, 0x1DBF, PDF_TEXT_UCD_WBP_ALetter  }, /* 484 */
     581                 :            :   { 0x1E00, 0x1F15, PDF_TEXT_UCD_WBP_ALetter  }, /* 485 */
     582                 :            :   { 0x1F18, 0x1F1D, PDF_TEXT_UCD_WBP_ALetter  }, /* 486 */
     583                 :            :   { 0x1F20, 0x1F45, PDF_TEXT_UCD_WBP_ALetter  }, /* 487 */
     584                 :            :   { 0x1F48, 0x1F4D, PDF_TEXT_UCD_WBP_ALetter  }, /* 488 */
     585                 :            :   { 0x1F50, 0x1F57, PDF_TEXT_UCD_WBP_ALetter  }, /* 489 */
     586                 :            :   { 0x1F59, 0x1F59, PDF_TEXT_UCD_WBP_ALetter  }, /* 490 */
     587                 :            :   { 0x1F5B, 0x1F5B, PDF_TEXT_UCD_WBP_ALetter  }, /* 491 */
     588                 :            :   { 0x1F5D, 0x1F5D, PDF_TEXT_UCD_WBP_ALetter  }, /* 492 */
     589                 :            :   { 0x1F5F, 0x1F7D, PDF_TEXT_UCD_WBP_ALetter  }, /* 493 */
     590                 :            :   { 0x1F80, 0x1FB4, PDF_TEXT_UCD_WBP_ALetter  }, /* 494 */
     591                 :            :   { 0x1FB6, 0x1FBC, PDF_TEXT_UCD_WBP_ALetter  }, /* 495 */
     592                 :            :   { 0x1FBE, 0x1FBE, PDF_TEXT_UCD_WBP_ALetter  }, /* 496 */
     593                 :            :   { 0x1FC2, 0x1FC4, PDF_TEXT_UCD_WBP_ALetter  }, /* 497 */
     594                 :            :   { 0x1FC6, 0x1FCC, PDF_TEXT_UCD_WBP_ALetter  }, /* 498 */
     595                 :            :   { 0x1FD0, 0x1FD3, PDF_TEXT_UCD_WBP_ALetter  }, /* 499 */
     596                 :            :   { 0x1FD6, 0x1FDB, PDF_TEXT_UCD_WBP_ALetter  }, /* 500 */
     597                 :            :   { 0x1FE0, 0x1FEC, PDF_TEXT_UCD_WBP_ALetter  }, /* 501 */
     598                 :            :   { 0x1FF2, 0x1FF4, PDF_TEXT_UCD_WBP_ALetter  }, /* 502 */
     599                 :            :   { 0x1FF6, 0x1FFC, PDF_TEXT_UCD_WBP_ALetter  }, /* 503 */
     600                 :            :   { 0x2071, 0x2071, PDF_TEXT_UCD_WBP_ALetter  }, /* 504 */
     601                 :            :   { 0x207F, 0x207F, PDF_TEXT_UCD_WBP_ALetter  }, /* 505 */
     602                 :            :   { 0x2090, 0x2094, PDF_TEXT_UCD_WBP_ALetter  }, /* 506 */
     603                 :            :   { 0x2102, 0x2102, PDF_TEXT_UCD_WBP_ALetter  }, /* 507 */
     604                 :            :   { 0x2107, 0x2107, PDF_TEXT_UCD_WBP_ALetter  }, /* 508 */
     605                 :            :   { 0x210A, 0x2113, PDF_TEXT_UCD_WBP_ALetter  }, /* 509 */
     606                 :            :   { 0x2115, 0x2115, PDF_TEXT_UCD_WBP_ALetter  }, /* 510 */
     607                 :            :   { 0x2119, 0x211D, PDF_TEXT_UCD_WBP_ALetter  }, /* 511 */
     608                 :            :   { 0x2124, 0x2124, PDF_TEXT_UCD_WBP_ALetter  }, /* 512 */
     609                 :            :   { 0x2126, 0x2126, PDF_TEXT_UCD_WBP_ALetter  }, /* 513 */
     610                 :            :   { 0x2128, 0x2128, PDF_TEXT_UCD_WBP_ALetter  }, /* 514 */
     611                 :            :   { 0x212A, 0x212D, PDF_TEXT_UCD_WBP_ALetter  }, /* 515 */
     612                 :            :   { 0x212F, 0x2134, PDF_TEXT_UCD_WBP_ALetter  }, /* 516 */
     613                 :            :   { 0x2135, 0x2138, PDF_TEXT_UCD_WBP_ALetter  }, /* 517 */
     614                 :            :   { 0x2139, 0x2139, PDF_TEXT_UCD_WBP_ALetter  }, /* 518 */
     615                 :            :   { 0x213C, 0x213F, PDF_TEXT_UCD_WBP_ALetter  }, /* 519 */
     616                 :            :   { 0x2145, 0x2149, PDF_TEXT_UCD_WBP_ALetter  }, /* 520 */
     617                 :            :   { 0x214E, 0x214E, PDF_TEXT_UCD_WBP_ALetter  }, /* 521 */
     618                 :            :   { 0x2160, 0x2182, PDF_TEXT_UCD_WBP_ALetter  }, /* 522 */
     619                 :            :   { 0x2183, 0x2184, PDF_TEXT_UCD_WBP_ALetter  }, /* 523 */
     620                 :            :   { 0x2185, 0x2188, PDF_TEXT_UCD_WBP_ALetter  }, /* 524 */
     621                 :            :   { 0x24B6, 0x24E9, PDF_TEXT_UCD_WBP_ALetter  }, /* 525 */
     622                 :            :   { 0x2C00, 0x2C2E, PDF_TEXT_UCD_WBP_ALetter  }, /* 526 */
     623                 :            :   { 0x2C30, 0x2C5E, PDF_TEXT_UCD_WBP_ALetter  }, /* 527 */
     624                 :            :   { 0x2C60, 0x2C6F, PDF_TEXT_UCD_WBP_ALetter  }, /* 528 */
     625                 :            :   { 0x2C71, 0x2C7C, PDF_TEXT_UCD_WBP_ALetter  }, /* 529 */
     626                 :            :   { 0x2C7D, 0x2C7D, PDF_TEXT_UCD_WBP_ALetter  }, /* 530 */
     627                 :            :   { 0x2C80, 0x2CE4, PDF_TEXT_UCD_WBP_ALetter  }, /* 531 */
     628                 :            :   { 0x2D00, 0x2D25, PDF_TEXT_UCD_WBP_ALetter  }, /* 532 */
     629                 :            :   { 0x2D30, 0x2D65, PDF_TEXT_UCD_WBP_ALetter  }, /* 533 */
     630                 :            :   { 0x2D6F, 0x2D6F, PDF_TEXT_UCD_WBP_ALetter  }, /* 534 */
     631                 :            :   { 0x2D80, 0x2D96, PDF_TEXT_UCD_WBP_ALetter  }, /* 535 */
     632                 :            :   { 0x2DA0, 0x2DA6, PDF_TEXT_UCD_WBP_ALetter  }, /* 536 */
     633                 :            :   { 0x2DA8, 0x2DAE, PDF_TEXT_UCD_WBP_ALetter  }, /* 537 */
     634                 :            :   { 0x2DB0, 0x2DB6, PDF_TEXT_UCD_WBP_ALetter  }, /* 538 */
     635                 :            :   { 0x2DB8, 0x2DBE, PDF_TEXT_UCD_WBP_ALetter  }, /* 539 */
     636                 :            :   { 0x2DC0, 0x2DC6, PDF_TEXT_UCD_WBP_ALetter  }, /* 540 */
     637                 :            :   { 0x2DC8, 0x2DCE, PDF_TEXT_UCD_WBP_ALetter  }, /* 541 */
     638                 :            :   { 0x2DD0, 0x2DD6, PDF_TEXT_UCD_WBP_ALetter  }, /* 542 */
     639                 :            :   { 0x2DD8, 0x2DDE, PDF_TEXT_UCD_WBP_ALetter  }, /* 543 */
     640                 :            :   { 0x2E2F, 0x2E2F, PDF_TEXT_UCD_WBP_ALetter  }, /* 544 */
     641                 :            :   { 0x3005, 0x3005, PDF_TEXT_UCD_WBP_ALetter  }, /* 545 */
     642                 :            :   { 0x303B, 0x303B, PDF_TEXT_UCD_WBP_ALetter  }, /* 546 */
     643                 :            :   { 0x303C, 0x303C, PDF_TEXT_UCD_WBP_ALetter  }, /* 547 */
     644                 :            :   { 0x3105, 0x312D, PDF_TEXT_UCD_WBP_ALetter  }, /* 548 */
     645                 :            :   { 0x3131, 0x318E, PDF_TEXT_UCD_WBP_ALetter  }, /* 549 */
     646                 :            :   { 0x31A0, 0x31B7, PDF_TEXT_UCD_WBP_ALetter  }, /* 550 */
     647                 :            :   { 0xA000, 0xA014, PDF_TEXT_UCD_WBP_ALetter  }, /* 551 */
     648                 :            :   { 0xA015, 0xA015, PDF_TEXT_UCD_WBP_ALetter  }, /* 552 */
     649                 :            :   { 0xA016, 0xA48C, PDF_TEXT_UCD_WBP_ALetter  }, /* 553 */
     650                 :            :   { 0xA500, 0xA60B, PDF_TEXT_UCD_WBP_ALetter  }, /* 554 */
     651                 :            :   { 0xA60C, 0xA60C, PDF_TEXT_UCD_WBP_ALetter  }, /* 555 */
     652                 :            :   { 0xA610, 0xA61F, PDF_TEXT_UCD_WBP_ALetter  }, /* 556 */
     653                 :            :   { 0xA62A, 0xA62B, PDF_TEXT_UCD_WBP_ALetter  }, /* 557 */
     654                 :            :   { 0xA640, 0xA65F, PDF_TEXT_UCD_WBP_ALetter  }, /* 558 */
     655                 :            :   { 0xA662, 0xA66D, PDF_TEXT_UCD_WBP_ALetter  }, /* 559 */
     656                 :            :   { 0xA66E, 0xA66E, PDF_TEXT_UCD_WBP_ALetter  }, /* 560 */
     657                 :            :   { 0xA67F, 0xA67F, PDF_TEXT_UCD_WBP_ALetter  }, /* 561 */
     658                 :            :   { 0xA680, 0xA697, PDF_TEXT_UCD_WBP_ALetter  }, /* 562 */
     659                 :            :   { 0xA717, 0xA71F, PDF_TEXT_UCD_WBP_ALetter  }, /* 563 */
     660                 :            :   { 0xA722, 0xA76F, PDF_TEXT_UCD_WBP_ALetter  }, /* 564 */
     661                 :            :   { 0xA770, 0xA770, PDF_TEXT_UCD_WBP_ALetter  }, /* 565 */
     662                 :            :   { 0xA771, 0xA787, PDF_TEXT_UCD_WBP_ALetter  }, /* 566 */
     663                 :            :   { 0xA788, 0xA788, PDF_TEXT_UCD_WBP_ALetter  }, /* 567 */
     664                 :            :   { 0xA78B, 0xA78C, PDF_TEXT_UCD_WBP_ALetter  }, /* 568 */
     665                 :            :   { 0xA7FB, 0xA801, PDF_TEXT_UCD_WBP_ALetter  }, /* 569 */
     666                 :            :   { 0xA803, 0xA805, PDF_TEXT_UCD_WBP_ALetter  }, /* 570 */
     667                 :            :   { 0xA807, 0xA80A, PDF_TEXT_UCD_WBP_ALetter  }, /* 571 */
     668                 :            :   { 0xA80C, 0xA822, PDF_TEXT_UCD_WBP_ALetter  }, /* 572 */
     669                 :            :   { 0xA840, 0xA873, PDF_TEXT_UCD_WBP_ALetter  }, /* 573 */
     670                 :            :   { 0xA882, 0xA8B3, PDF_TEXT_UCD_WBP_ALetter  }, /* 574 */
     671                 :            :   { 0xA90A, 0xA925, PDF_TEXT_UCD_WBP_ALetter  }, /* 575 */
     672                 :            :   { 0xA930, 0xA946, PDF_TEXT_UCD_WBP_ALetter  }, /* 576 */
     673                 :            :   { 0xAA00, 0xAA28, PDF_TEXT_UCD_WBP_ALetter  }, /* 577 */
     674                 :            :   { 0xAA40, 0xAA42, PDF_TEXT_UCD_WBP_ALetter  }, /* 578 */
     675                 :            :   { 0xAA44, 0xAA4B, PDF_TEXT_UCD_WBP_ALetter  }, /* 579 */
     676                 :            :   { 0xAC00, 0xD7A3, PDF_TEXT_UCD_WBP_ALetter  }, /* 580 */
     677                 :            :   { 0xFB00, 0xFB06, PDF_TEXT_UCD_WBP_ALetter  }, /* 581 */
     678                 :            :   { 0xFB13, 0xFB17, PDF_TEXT_UCD_WBP_ALetter  }, /* 582 */
     679                 :            :   { 0xFB1D, 0xFB1D, PDF_TEXT_UCD_WBP_ALetter  }, /* 583 */
     680                 :            :   { 0xFB1F, 0xFB28, PDF_TEXT_UCD_WBP_ALetter  }, /* 584 */
     681                 :            :   { 0xFB2A, 0xFB36, PDF_TEXT_UCD_WBP_ALetter  }, /* 585 */
     682                 :            :   { 0xFB38, 0xFB3C, PDF_TEXT_UCD_WBP_ALetter  }, /* 586 */
     683                 :            :   { 0xFB3E, 0xFB3E, PDF_TEXT_UCD_WBP_ALetter  }, /* 587 */
     684                 :            :   { 0xFB40, 0xFB41, PDF_TEXT_UCD_WBP_ALetter  }, /* 588 */
     685                 :            :   { 0xFB43, 0xFB44, PDF_TEXT_UCD_WBP_ALetter  }, /* 589 */
     686                 :            :   { 0xFB46, 0xFBB1, PDF_TEXT_UCD_WBP_ALetter  }, /* 590 */
     687                 :            :   { 0xFBD3, 0xFD3D, PDF_TEXT_UCD_WBP_ALetter  }, /* 591 */
     688                 :            :   { 0xFD50, 0xFD8F, PDF_TEXT_UCD_WBP_ALetter  }, /* 592 */
     689                 :            :   { 0xFD92, 0xFDC7, PDF_TEXT_UCD_WBP_ALetter  }, /* 593 */
     690                 :            :   { 0xFDF0, 0xFDFB, PDF_TEXT_UCD_WBP_ALetter  }, /* 594 */
     691                 :            :   { 0xFE70, 0xFE74, PDF_TEXT_UCD_WBP_ALetter  }, /* 595 */
     692                 :            :   { 0xFE76, 0xFEFC, PDF_TEXT_UCD_WBP_ALetter  }, /* 596 */
     693                 :            :   { 0xFF21, 0xFF3A, PDF_TEXT_UCD_WBP_ALetter  }, /* 597 */
     694                 :            :   { 0xFF41, 0xFF5A, PDF_TEXT_UCD_WBP_ALetter  }, /* 598 */
     695                 :            :   { 0xFFA0, 0xFFBE, PDF_TEXT_UCD_WBP_ALetter  }, /* 599 */
     696                 :            :   { 0xFFC2, 0xFFC7, PDF_TEXT_UCD_WBP_ALetter  }, /* 600 */
     697                 :            :   { 0xFFCA, 0xFFCF, PDF_TEXT_UCD_WBP_ALetter  }, /* 601 */
     698                 :            :   { 0xFFD2, 0xFFD7, PDF_TEXT_UCD_WBP_ALetter  }, /* 602 */
     699                 :            :   { 0xFFDA, 0xFFDC, PDF_TEXT_UCD_WBP_ALetter  }, /* 603 */
     700                 :            :   { 0x10000, 0x1000B, PDF_TEXT_UCD_WBP_ALetter  }, /* 604 */
     701                 :            :   { 0x1000D, 0x10026, PDF_TEXT_UCD_WBP_ALetter  }, /* 605 */
     702                 :            :   { 0x10028, 0x1003A, PDF_TEXT_UCD_WBP_ALetter  }, /* 606 */
     703                 :            :   { 0x1003C, 0x1003D, PDF_TEXT_UCD_WBP_ALetter  }, /* 607 */
     704                 :            :   { 0x1003F, 0x1004D, PDF_TEXT_UCD_WBP_ALetter  }, /* 608 */
     705                 :            :   { 0x10050, 0x1005D, PDF_TEXT_UCD_WBP_ALetter  }, /* 609 */
     706                 :            :   { 0x10080, 0x100FA, PDF_TEXT_UCD_WBP_ALetter  }, /* 610 */
     707                 :            :   { 0x10140, 0x10174, PDF_TEXT_UCD_WBP_ALetter  }, /* 611 */
     708                 :            :   { 0x10280, 0x1029C, PDF_TEXT_UCD_WBP_ALetter  }, /* 612 */
     709                 :            :   { 0x102A0, 0x102D0, PDF_TEXT_UCD_WBP_ALetter  }, /* 613 */
     710                 :            :   { 0x10300, 0x1031E, PDF_TEXT_UCD_WBP_ALetter  }, /* 614 */
     711                 :            :   { 0x10330, 0x10340, PDF_TEXT_UCD_WBP_ALetter  }, /* 615 */
     712                 :            :   { 0x10341, 0x10341, PDF_TEXT_UCD_WBP_ALetter  }, /* 616 */
     713                 :            :   { 0x10342, 0x10349, PDF_TEXT_UCD_WBP_ALetter  }, /* 617 */
     714                 :            :   { 0x1034A, 0x1034A, PDF_TEXT_UCD_WBP_ALetter  }, /* 618 */
     715                 :            :   { 0x10380, 0x1039D, PDF_TEXT_UCD_WBP_ALetter  }, /* 619 */
     716                 :            :   { 0x103A0, 0x103C3, PDF_TEXT_UCD_WBP_ALetter  }, /* 620 */
     717                 :            :   { 0x103C8, 0x103CF, PDF_TEXT_UCD_WBP_ALetter  }, /* 621 */
     718                 :            :   { 0x103D1, 0x103D5, PDF_TEXT_UCD_WBP_ALetter  }, /* 622 */
     719                 :            :   { 0x10400, 0x1044F, PDF_TEXT_UCD_WBP_ALetter  }, /* 623 */
     720                 :            :   { 0x10450, 0x1049D, PDF_TEXT_UCD_WBP_ALetter  }, /* 624 */
     721                 :            :   { 0x10800, 0x10805, PDF_TEXT_UCD_WBP_ALetter  }, /* 625 */
     722                 :            :   { 0x10808, 0x10808, PDF_TEXT_UCD_WBP_ALetter  }, /* 626 */
     723                 :            :   { 0x1080A, 0x10835, PDF_TEXT_UCD_WBP_ALetter  }, /* 627 */
     724                 :            :   { 0x10837, 0x10838, PDF_TEXT_UCD_WBP_ALetter  }, /* 628 */
     725                 :            :   { 0x1083C, 0x1083C, PDF_TEXT_UCD_WBP_ALetter  }, /* 629 */
     726                 :            :   { 0x1083F, 0x1083F, PDF_TEXT_UCD_WBP_ALetter  }, /* 630 */
     727                 :            :   { 0x10900, 0x10915, PDF_TEXT_UCD_WBP_ALetter  }, /* 631 */
     728                 :            :   { 0x10920, 0x10939, PDF_TEXT_UCD_WBP_ALetter  }, /* 632 */
     729                 :            :   { 0x10A00, 0x10A00, PDF_TEXT_UCD_WBP_ALetter  }, /* 633 */
     730                 :            :   { 0x10A10, 0x10A13, PDF_TEXT_UCD_WBP_ALetter  }, /* 634 */
     731                 :            :   { 0x10A15, 0x10A17, PDF_TEXT_UCD_WBP_ALetter  }, /* 635 */
     732                 :            :   { 0x10A19, 0x10A33, PDF_TEXT_UCD_WBP_ALetter  }, /* 636 */
     733                 :            :   { 0x12000, 0x1236E, PDF_TEXT_UCD_WBP_ALetter  }, /* 637 */
     734                 :            :   { 0x12400, 0x12462, PDF_TEXT_UCD_WBP_ALetter  }, /* 638 */
     735                 :            :   { 0x1D400, 0x1D454, PDF_TEXT_UCD_WBP_ALetter  }, /* 639 */
     736                 :            :   { 0x1D456, 0x1D49C, PDF_TEXT_UCD_WBP_ALetter  }, /* 640 */
     737                 :            :   { 0x1D49E, 0x1D49F, PDF_TEXT_UCD_WBP_ALetter  }, /* 641 */
     738                 :            :   { 0x1D4A2, 0x1D4A2, PDF_TEXT_UCD_WBP_ALetter  }, /* 642 */
     739                 :            :   { 0x1D4A5, 0x1D4A6, PDF_TEXT_UCD_WBP_ALetter  }, /* 643 */
     740                 :            :   { 0x1D4A9, 0x1D4AC, PDF_TEXT_UCD_WBP_ALetter  }, /* 644 */
     741                 :            :   { 0x1D4AE, 0x1D4B9, PDF_TEXT_UCD_WBP_ALetter  }, /* 645 */
     742                 :            :   { 0x1D4BB, 0x1D4BB, PDF_TEXT_UCD_WBP_ALetter  }, /* 646 */
     743                 :            :   { 0x1D4BD, 0x1D4C3, PDF_TEXT_UCD_WBP_ALetter  }, /* 647 */
     744                 :            :   { 0x1D4C5, 0x1D505, PDF_TEXT_UCD_WBP_ALetter  }, /* 648 */
     745                 :            :   { 0x1D507, 0x1D50A, PDF_TEXT_UCD_WBP_ALetter  }, /* 649 */
     746                 :            :   { 0x1D50D, 0x1D514, PDF_TEXT_UCD_WBP_ALetter  }, /* 650 */
     747                 :            :   { 0x1D516, 0x1D51C, PDF_TEXT_UCD_WBP_ALetter  }, /* 651 */
     748                 :            :   { 0x1D51E, 0x1D539, PDF_TEXT_UCD_WBP_ALetter  }, /* 652 */
     749                 :            :   { 0x1D53B, 0x1D53E, PDF_TEXT_UCD_WBP_ALetter  }, /* 653 */
     750                 :            :   { 0x1D540, 0x1D544, PDF_TEXT_UCD_WBP_ALetter  }, /* 654 */
     751                 :            :   { 0x1D546, 0x1D546, PDF_TEXT_UCD_WBP_ALetter  }, /* 655 */
     752                 :            :   { 0x1D54A, 0x1D550, PDF_TEXT_UCD_WBP_ALetter  }, /* 656 */
     753                 :            :   { 0x1D552, 0x1D6A5, PDF_TEXT_UCD_WBP_ALetter  }, /* 657 */
     754                 :            :   { 0x1D6A8, 0x1D6C0, PDF_TEXT_UCD_WBP_ALetter  }, /* 658 */
     755                 :            :   { 0x1D6C2, 0x1D6DA, PDF_TEXT_UCD_WBP_ALetter  }, /* 659 */
     756                 :            :   { 0x1D6DC, 0x1D6FA, PDF_TEXT_UCD_WBP_ALetter  }, /* 660 */
     757                 :            :   { 0x1D6FC, 0x1D714, PDF_TEXT_UCD_WBP_ALetter  }, /* 661 */
     758                 :            :   { 0x1D716, 0x1D734, PDF_TEXT_UCD_WBP_ALetter  }, /* 662 */
     759                 :            :   { 0x1D736, 0x1D74E, PDF_TEXT_UCD_WBP_ALetter  }, /* 663 */
     760                 :            :   { 0x1D750, 0x1D76E, PDF_TEXT_UCD_WBP_ALetter  }, /* 664 */
     761                 :            :   { 0x1D770, 0x1D788, PDF_TEXT_UCD_WBP_ALetter  }, /* 665 */
     762                 :            :   { 0x1D78A, 0x1D7A8, PDF_TEXT_UCD_WBP_ALetter  }, /* 666 */
     763                 :            :   { 0x1D7AA, 0x1D7C2, PDF_TEXT_UCD_WBP_ALetter  }, /* 667 */
     764                 :            :   { 0x1D7C4, 0x1D7CB, PDF_TEXT_UCD_WBP_ALetter  }, /* 668 */
     765                 :            :   { 0x003A, 0x003A, PDF_TEXT_UCD_WBP_MidLetter  }, /* 669 */
     766                 :            :   { 0x00B7, 0x00B7, PDF_TEXT_UCD_WBP_MidLetter  }, /* 670 */
     767                 :            :   { 0x0387, 0x0387, PDF_TEXT_UCD_WBP_MidLetter  }, /* 671 */
     768                 :            :   { 0x05F4, 0x05F4, PDF_TEXT_UCD_WBP_MidLetter  }, /* 672 */
     769                 :            :   { 0x2027, 0x2027, PDF_TEXT_UCD_WBP_MidLetter  }, /* 673 */
     770                 :            :   { 0xFE13, 0xFE13, PDF_TEXT_UCD_WBP_MidLetter  }, /* 674 */
     771                 :            :   { 0xFE55, 0xFE55, PDF_TEXT_UCD_WBP_MidLetter  }, /* 675 */
     772                 :            :   { 0xFF1A, 0xFF1A, PDF_TEXT_UCD_WBP_MidLetter  }, /* 676 */
     773                 :            :   { 0x002C, 0x002C, PDF_TEXT_UCD_WBP_MidNum  }, /* 677 */
     774                 :            :   { 0x003B, 0x003B, PDF_TEXT_UCD_WBP_MidNum  }, /* 678 */
     775                 :            :   { 0x037E, 0x037E, PDF_TEXT_UCD_WBP_MidNum  }, /* 679 */
     776                 :            :   { 0x0589, 0x0589, PDF_TEXT_UCD_WBP_MidNum  }, /* 680 */
     777                 :            :   { 0x060C, 0x060D, PDF_TEXT_UCD_WBP_MidNum  }, /* 681 */
     778                 :            :   { 0x066C, 0x066C, PDF_TEXT_UCD_WBP_MidNum  }, /* 682 */
     779                 :            :   { 0x07F8, 0x07F8, PDF_TEXT_UCD_WBP_MidNum  }, /* 683 */
     780                 :            :   { 0x2044, 0x2044, PDF_TEXT_UCD_WBP_MidNum  }, /* 684 */
     781                 :            :   { 0xFE10, 0xFE10, PDF_TEXT_UCD_WBP_MidNum  }, /* 685 */
     782                 :            :   { 0xFE14, 0xFE14, PDF_TEXT_UCD_WBP_MidNum  }, /* 686 */
     783                 :            :   { 0xFE50, 0xFE50, PDF_TEXT_UCD_WBP_MidNum  }, /* 687 */
     784                 :            :   { 0xFE54, 0xFE54, PDF_TEXT_UCD_WBP_MidNum  }, /* 688 */
     785                 :            :   { 0xFF0C, 0xFF0C, PDF_TEXT_UCD_WBP_MidNum  }, /* 689 */
     786                 :            :   { 0xFF1B, 0xFF1B, PDF_TEXT_UCD_WBP_MidNum  }, /* 690 */
     787                 :            :   { 0x0027, 0x0027, PDF_TEXT_UCD_WBP_MidNumLet  }, /* 691 */
     788                 :            :   { 0x002E, 0x002E, PDF_TEXT_UCD_WBP_MidNumLet  }, /* 692 */
     789                 :            :   { 0x2018, 0x2018, PDF_TEXT_UCD_WBP_MidNumLet  }, /* 693 */
     790                 :            :   { 0x2019, 0x2019, PDF_TEXT_UCD_WBP_MidNumLet  }, /* 694 */
     791                 :            :   { 0x2024, 0x2024, PDF_TEXT_UCD_WBP_MidNumLet  }, /* 695 */
     792                 :            :   { 0xFE52, 0xFE52, PDF_TEXT_UCD_WBP_MidNumLet  }, /* 696 */
     793                 :            :   { 0xFF07, 0xFF07, PDF_TEXT_UCD_WBP_MidNumLet  }, /* 697 */
     794                 :            :   { 0xFF0E, 0xFF0E, PDF_TEXT_UCD_WBP_MidNumLet  }, /* 698 */
     795                 :            :   { 0x0030, 0x0039, PDF_TEXT_UCD_WBP_Numeric  }, /* 699 */
     796                 :            :   { 0x0660, 0x0669, PDF_TEXT_UCD_WBP_Numeric  }, /* 700 */
     797                 :            :   { 0x066B, 0x066B, PDF_TEXT_UCD_WBP_Numeric  }, /* 701 */
     798                 :            :   { 0x06F0, 0x06F9, PDF_TEXT_UCD_WBP_Numeric  }, /* 702 */
     799                 :            :   { 0x07C0, 0x07C9, PDF_TEXT_UCD_WBP_Numeric  }, /* 703 */
     800                 :            :   { 0x0966, 0x096F, PDF_TEXT_UCD_WBP_Numeric  }, /* 704 */
     801                 :            :   { 0x09E6, 0x09EF, PDF_TEXT_UCD_WBP_Numeric  }, /* 705 */
     802                 :            :   { 0x0A66, 0x0A6F, PDF_TEXT_UCD_WBP_Numeric  }, /* 706 */
     803                 :            :   { 0x0AE6, 0x0AEF, PDF_TEXT_UCD_WBP_Numeric  }, /* 707 */
     804                 :            :   { 0x0B66, 0x0B6F, PDF_TEXT_UCD_WBP_Numeric  }, /* 708 */
     805                 :            :   { 0x0BE6, 0x0BEF, PDF_TEXT_UCD_WBP_Numeric  }, /* 709 */
     806                 :            :   { 0x0C66, 0x0C6F, PDF_TEXT_UCD_WBP_Numeric  }, /* 710 */
     807                 :            :   { 0x0CE6, 0x0CEF, PDF_TEXT_UCD_WBP_Numeric  }, /* 711 */
     808                 :            :   { 0x0D66, 0x0D6F, PDF_TEXT_UCD_WBP_Numeric  }, /* 712 */
     809                 :            :   { 0x0E50, 0x0E59, PDF_TEXT_UCD_WBP_Numeric  }, /* 713 */
     810                 :            :   { 0x0ED0, 0x0ED9, PDF_TEXT_UCD_WBP_Numeric  }, /* 714 */
     811                 :            :   { 0x0F20, 0x0F29, PDF_TEXT_UCD_WBP_Numeric  }, /* 715 */
     812                 :            :   { 0x1040, 0x1049, PDF_TEXT_UCD_WBP_Numeric  }, /* 716 */
     813                 :            :   { 0x1090, 0x1099, PDF_TEXT_UCD_WBP_Numeric  }, /* 717 */
     814                 :            :   { 0x17E0, 0x17E9, PDF_TEXT_UCD_WBP_Numeric  }, /* 718 */
     815                 :            :   { 0x1810, 0x1819, PDF_TEXT_UCD_WBP_Numeric  }, /* 719 */
     816                 :            :   { 0x1946, 0x194F, PDF_TEXT_UCD_WBP_Numeric  }, /* 720 */
     817                 :            :   { 0x19D0, 0x19D9, PDF_TEXT_UCD_WBP_Numeric  }, /* 721 */
     818                 :            :   { 0x1B50, 0x1B59, PDF_TEXT_UCD_WBP_Numeric  }, /* 722 */
     819                 :            :   { 0x1BB0, 0x1BB9, PDF_TEXT_UCD_WBP_Numeric  }, /* 723 */
     820                 :            :   { 0x1C40, 0x1C49, PDF_TEXT_UCD_WBP_Numeric  }, /* 724 */
     821                 :            :   { 0x1C50, 0x1C59, PDF_TEXT_UCD_WBP_Numeric  }, /* 725 */
     822                 :            :   { 0xA620, 0xA629, PDF_TEXT_UCD_WBP_Numeric  }, /* 726 */
     823                 :            :   { 0xA8D0, 0xA8D9, PDF_TEXT_UCD_WBP_Numeric  }, /* 727 */
     824                 :            :   { 0xA900, 0xA909, PDF_TEXT_UCD_WBP_Numeric  }, /* 728 */
     825                 :            :   { 0xAA50, 0xAA59, PDF_TEXT_UCD_WBP_Numeric  }, /* 729 */
     826                 :            :   { 0x104A0, 0x104A9, PDF_TEXT_UCD_WBP_Numeric  }, /* 730 */
     827                 :            :   { 0x1D7CE, 0x1D7FF, PDF_TEXT_UCD_WBP_Numeric  }, /* 731 */
     828                 :            :   { 0x005F, 0x005F, PDF_TEXT_UCD_WBP_ExtendNumLet  }, /* 732 */
     829                 :            :   { 0x203F, 0x2040, PDF_TEXT_UCD_WBP_ExtendNumLet  }, /* 733 */
     830                 :            :   { 0x2054, 0x2054, PDF_TEXT_UCD_WBP_ExtendNumLet  }, /* 734 */
     831                 :            :   { 0xFE33, 0xFE34, PDF_TEXT_UCD_WBP_ExtendNumLet  }, /* 735 */
     832                 :            :   { 0xFE4D, 0xFE4F, PDF_TEXT_UCD_WBP_ExtendNumLet  }, /* 736 */
     833                 :            :   { 0xFF3F, 0xFF3F, PDF_TEXT_UCD_WBP_ExtendNumLet  }, /* 737 */
     834                 :            : };
     835                 :            : 
     836                 :            : /***************** END OF SELF-GENERATED DATA *********************************/
     837                 :            : 
     838                 :            : static pdf_bool_t
     839                 :            : pdf_text_ucd_wb_in_interval (pdf_u32_t character,
     840                 :            :                              pdf_u32_t first_interval,
     841                 :            :                              pdf_u32_t last_interval)
     842                 :            : {
     843                 :            :   int i;
     844                 :            : 
     845 [ +  + ][ +  + ]:     137645 :   for (i=first_interval; i<=last_interval; ++i)
         [ +  + ][ +  + ]
         [ +  + ][ +  + ]
         [ +  + ][ +  + ]
         [ +  + ][ +  + ]
         [ +  + ][ +  + ]
     846                 :            :     {
     847 [ +  - ][ -  + ]:     135541 :       if ((character >= unicode_wordbreak_info[i].interval_start) &&
         [ +  - ][ -  + ]
         [ +  + ][ -  + ]
         [ +  + ][ +  - ]
         [ +  + ][ -  + ]
         [ -  + ][ #  # ]
         [ +  + ][ +  + ]
         [ +  + ][ +  + ]
         [ +  + ][ -  + ]
         [ +  + ][ +  + ]
         [ +  + ][ -  + ]
         [ -  + ][ #  # ]
     848                 :       4628 :           (character <= unicode_wordbreak_info[i].interval_stop))
     849                 :            :         {
     850                 :        464 :           return PDF_TRUE;
     851                 :            :         }
     852                 :            :     }
     853                 :       2104 :   return PDF_FALSE;
     854                 :            : }
     855                 :            : 
     856                 :            : /* Returns true if the given UTF-32HE unicode point has the CR value
     857                 :            :  *  in the WordBreak property */
     858                 :            : pdf_bool_t
     859                 :        177 : pdf_text_ucd_wb_is_cr (pdf_u32_t character)
     860                 :            : {
     861                 :        177 :   return pdf_text_ucd_wb_in_interval (character,
     862                 :            :                                       UCD_WB_CR_F,
     863                 :            :                                       UCD_WB_CR_L);
     864                 :            : }
     865                 :            : 
     866                 :            : /* Returns true if the given UTF-32HE unicode point has the LF value
     867                 :            :  *  in the WordBreak property */
     868                 :            : pdf_bool_t
     869                 :        177 : pdf_text_ucd_wb_is_lf (pdf_u32_t character)
     870                 :            : {
     871                 :        177 :   return pdf_text_ucd_wb_in_interval (character,
     872                 :            :                                       UCD_WB_LF_F,
     873                 :            :                                       UCD_WB_LF_L);
     874                 :            : }
     875                 :            : 
     876                 :            : /* Returns true if the given UTF-32HE unicode point has the Newline value
     877                 :            :  *  in the WordBreak property */
     878                 :            : pdf_bool_t
     879                 :        177 : pdf_text_ucd_wb_is_newline (pdf_u32_t character)
     880                 :            : {
     881                 :        177 :   return pdf_text_ucd_wb_in_interval (character,
     882                 :            :                                       UCD_WB_NEWLINE_F,
     883                 :            :                                       UCD_WB_NEWLINE_L);
     884                 :            : }
     885                 :            : 
     886                 :            : /* Returns true if the given UTF-32HE unicode point has the Extend value
     887                 :            :  *  in the WordBreak property */
     888                 :            : pdf_bool_t
     889                 :        177 : pdf_text_ucd_wb_is_extend (pdf_u32_t character)
     890                 :            : {
     891                 :        177 :   return pdf_text_ucd_wb_in_interval (character,
     892                 :            :                                       UCD_WB_EXTEND_F,
     893                 :            :                                       UCD_WB_EXTEND_L);
     894                 :            : }
     895                 :            : 
     896                 :            : /* Returns true if the given UTF-32HE unicode point has the Format value
     897                 :            :  *  in the WordBreak property */
     898                 :            : pdf_bool_t
     899                 :        177 : pdf_text_ucd_wb_is_format (pdf_u32_t character)
     900                 :            : {
     901                 :        177 :   return pdf_text_ucd_wb_in_interval (character,
     902                 :            :                                       UCD_WB_FORMAT_F,
     903                 :            :                                       UCD_WB_FORMAT_L);
     904                 :            : }
     905                 :            : 
     906                 :            : /* Returns true if the given UTF-32HE unicode point has the Katakana value
     907                 :            :  *  in the WordBreak property */
     908                 :            : pdf_bool_t
     909                 :        124 : pdf_text_ucd_wb_is_katakana (pdf_u32_t character)
     910                 :            : {
     911                 :        124 :   return pdf_text_ucd_wb_in_interval (character,
     912                 :            :                                       UCD_WB_KATAKANA_F,
     913                 :            :                                       UCD_WB_KATAKANA_L);
     914                 :            : }
     915                 :            : 
     916                 :            : /* Returns true if the given UTF-32HE unicode point has the ALetter value
     917                 :            :  *  in the WordBreak property */
     918                 :            : pdf_bool_t
     919                 :        584 : pdf_text_ucd_wb_is_aletter (pdf_u32_t character)
     920                 :            : {
     921                 :        584 :   return pdf_text_ucd_wb_in_interval (character,
     922                 :            :                                       UCD_WB_ALETTER_F,
     923                 :            :                                       UCD_WB_ALETTER_L);
     924                 :            : }
     925                 :            : 
     926                 :            : /* Returns true if the given UTF-32HE unicode point has the MidLetter value
     927                 :            :  *  in the WordBreak property */
     928                 :            : pdf_bool_t
     929                 :        228 : pdf_text_ucd_wb_is_midletter (pdf_u32_t character)
     930                 :            : {
     931                 :        228 :   return pdf_text_ucd_wb_in_interval (character,
     932                 :            :                                       UCD_WB_MIDLETTER_F,
     933                 :            :                                       UCD_WB_MIDLETTER_L);
     934                 :            : }
     935                 :            : 
     936                 :            : /* Returns true if the given UTF-32HE unicode point has the MidNum value
     937                 :            :  *  in the WordBreak property */
     938                 :            : pdf_bool_t
     939                 :        205 : pdf_text_ucd_wb_is_midnum (pdf_u32_t character)
     940                 :            : {
     941                 :        205 :   return pdf_text_ucd_wb_in_interval (character,
     942                 :            :                                       UCD_WB_MIDNUM_F,
     943                 :            :                                       UCD_WB_MIDNUM_L);
     944                 :            : }
     945                 :            : 
     946                 :            : /* Returns true if the given UTF-32HE unicode point has the MidNumLet value
     947                 :            :  *  in the WordBreak property */
     948                 :            : pdf_bool_t
     949                 :        213 : pdf_text_ucd_wb_is_midnumlet (pdf_u32_t character)
     950                 :            : {
     951                 :        213 :   return pdf_text_ucd_wb_in_interval (character,
     952                 :            :                                       UCD_WB_MIDNUMLET_F,
     953                 :            :                                       UCD_WB_MIDNUMLET_L);
     954                 :            : }
     955                 :            : 
     956                 :            : /* Returns true if the given UTF-32HE unicode point has the Numeric value
     957                 :            :  *  in the WordBreak property */
     958                 :            : pdf_bool_t
     959                 :        205 : pdf_text_ucd_wb_is_numeric (pdf_u32_t character)
     960                 :            : {
     961                 :        205 :   return pdf_text_ucd_wb_in_interval (character,
     962                 :            :                                       UCD_WB_NUMERIC_F,
     963                 :            :                                       UCD_WB_NUMERIC_L);
     964                 :            : }
     965                 :            : 
     966                 :            : /* Returns true if the given UTF-32HE unicode point has the ExtendNumLet value
     967                 :            :  *  in the WordBreak property */
     968                 :            : pdf_bool_t
     969                 :        124 : pdf_text_ucd_wb_is_extendnumlet (pdf_u32_t character)
     970                 :            : {
     971                 :        124 :   return pdf_text_ucd_wb_in_interval (character,
     972                 :            :                                       UCD_WB_EXTENDNUMLET_F,
     973                 :            :                                       UCD_WB_EXTENDNUMLET_L);
     974                 :            : }
     975                 :            : 
     976                 :            : 
     977                 :            : enum pdf_text_ucd_wb_property_e
     978                 :        584 : pdf_text_ucd_wb_get_property (pdf_u32_t character)
     979                 :            : {
     980         [ +  + ]:        584 :   if (pdf_text_ucd_wb_is_aletter (character))
     981                 :        368 :     return PDF_TEXT_UCD_WBP_ALetter;
     982         [ +  + ]:        216 :   if (pdf_text_ucd_wb_is_midletter (character))
     983                 :         11 :     return PDF_TEXT_UCD_WBP_MidLetter;
     984         [ -  + ]:        205 :   if (pdf_text_ucd_wb_is_numeric (character))
     985                 :          0 :     return PDF_TEXT_UCD_WBP_Numeric;
     986         [ -  + ]:        205 :   if (pdf_text_ucd_wb_is_midnum (character))
     987                 :          0 :     return PDF_TEXT_UCD_WBP_MidNum;
     988         [ +  + ]:        205 :   if (pdf_text_ucd_wb_is_midnumlet (character))
     989                 :         28 :     return PDF_TEXT_UCD_WBP_MidNumLet;
     990         [ -  + ]:        177 :   if (pdf_text_ucd_wb_is_format (character))
     991                 :          0 :     return PDF_TEXT_UCD_WBP_Format;
     992         [ -  + ]:        177 :   if (pdf_text_ucd_wb_is_cr (character))
     993                 :          0 :     return PDF_TEXT_UCD_WBP_CR;
     994         [ -  + ]:        177 :   if (pdf_text_ucd_wb_is_lf (character))
     995                 :          0 :     return PDF_TEXT_UCD_WBP_LF;
     996         [ -  + ]:        177 :   if (pdf_text_ucd_wb_is_newline (character))
     997                 :          0 :     return PDF_TEXT_UCD_WBP_Newline;
     998         [ +  + ]:        177 :   if (pdf_text_ucd_wb_is_extend (character))
     999                 :         53 :     return PDF_TEXT_UCD_WBP_Extend;
    1000         [ -  + ]:        124 :   if (pdf_text_ucd_wb_is_katakana (character))
    1001                 :          0 :     return PDF_TEXT_UCD_WBP_Katakana;
    1002         [ -  + ]:        124 :   if (pdf_text_ucd_wb_is_extendnumlet (character))
    1003                 :          0 :     return PDF_TEXT_UCD_WBP_ExtendNumLet;
    1004                 :        584 :   return PDF_TEXT_UCD_WBP_None;
    1005                 :            : }
    1006                 :            : 
    1007                 :            : /* Maximum number of code points needed for a word break check */
    1008                 :            : #define PDF_TEXT_UCD_MWBCP  4
    1009                 :            : 
    1010                 :            : /* Word break property information */
    1011                 :            : typedef struct pdf_text_ucd_wb_s {
    1012                 :            :   pdf_char_t *walker;
    1013                 :            :   pdf_u32_t utf32val;
    1014                 :            :   enum pdf_text_ucd_wb_property_e wbp;
    1015                 :            : } pdf_text_ucd_wb_t;
    1016                 :            : 
    1017                 :            : /* RULE WB3: Do not break within CRLF (CR x LF) */
    1018                 :            : static pdf_bool_t
    1019                 :            : pdf_text_ucd_wb_rule_3 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1020                 :            : {
    1021 [ -  + ][ #  # ]:        286 :   return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_CR) &&
    1022                 :          0 :           (buffer[2].wbp == PDF_TEXT_UCD_WBP_LF)) ?
    1023                 :            :           PDF_TRUE : PDF_FALSE);
    1024                 :            : }
    1025                 :            : 
    1026                 :            : /* RULE WB3a: Break before and after Newlines (including CR and LF) */
    1027                 :            : static pdf_bool_t
    1028                 :            : pdf_text_ucd_wb_rule_3a (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1029                 :            : {
    1030                 :        286 :   return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_CR) ||
    1031                 :            :            (buffer[1].wbp == PDF_TEXT_UCD_WBP_LF) ||
    1032                 :            :            (buffer[1].wbp == PDF_TEXT_UCD_WBP_Newline)) ?
    1033                 :            :           PDF_TRUE : PDF_FALSE);
    1034                 :            : }
    1035                 :            : 
    1036                 :            : /* RULE WB3b: Break before and after Newlines (including CR and LF) */
    1037                 :            : static pdf_bool_t
    1038                 :            : pdf_text_ucd_wb_rule_3b (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1039                 :            : {
    1040                 :        286 :   return (((buffer[2].wbp == PDF_TEXT_UCD_WBP_CR) ||
    1041                 :            :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_LF) ||
    1042                 :            :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_Newline)) ?
    1043                 :            :           PDF_TRUE : PDF_FALSE);
    1044                 :            : }
    1045                 :            : 
    1046                 :            : /* RULE WB4: Ignore Format and Extend characters, except when they appear at
    1047                 :            :  *  the beginning of a region of text. */
    1048                 :            : static pdf_bool_t
    1049                 :            : pdf_text_ucd_wb_rule_4 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1050                 :            : {
    1051                 :        286 :   return (((buffer[2].wbp == PDF_TEXT_UCD_WBP_Extend) ||
    1052                 :            :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_Format)) ?
    1053                 :            :           PDF_TRUE : PDF_FALSE);
    1054                 :            : }
    1055                 :            : 
    1056                 :            : /* RULE WB5: Do not break between most letters (ALetter X ALetter) */
    1057                 :            : static pdf_bool_t
    1058                 :            : pdf_text_ucd_wb_rule_5 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1059                 :            : {
    1060 [ +  + ][ +  + ]:        250 :   return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_ALetter) &&
    1061                 :        157 :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_ALetter)) ?
    1062                 :            :           PDF_TRUE : PDF_FALSE);
    1063                 :            : }
    1064                 :            : 
    1065                 :            : /* RULE WB6: Do not break letters across certain puntuation
    1066                 :            :  *  (ALetter X MidLetter ALetter) */
    1067                 :            : static pdf_bool_t
    1068                 :            : pdf_text_ucd_wb_rule_6 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1069                 :            : {
    1070 [ +  + ][ +  + ]:        142 :   return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_ALetter) &&
                 [ +  - ]
    1071                 :         49 :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_MidLetter) &&
    1072                 :          4 :            (buffer[3].wbp == PDF_TEXT_UCD_WBP_ALetter)) ?
    1073                 :            :           PDF_TRUE : PDF_FALSE);
    1074                 :            : }
    1075                 :            : 
    1076                 :            : /* RULE WB7: Do not break letters across certain punctuation
    1077                 :            :  *  (ALetter MidLetter X ALetter) */
    1078                 :            : static pdf_bool_t
    1079                 :            : pdf_text_ucd_wb_rule_7 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1080                 :            : {
    1081 [ +  + ][ +  + ]:        138 :   return (((buffer[0].wbp == PDF_TEXT_UCD_WBP_ALetter) &&
                 [ +  - ]
    1082                 :         39 :            (buffer[1].wbp == PDF_TEXT_UCD_WBP_MidLetter) &&
    1083                 :          4 :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_ALetter)) ?
    1084                 :            :           PDF_TRUE : PDF_FALSE);
    1085                 :            : }
    1086                 :            : 
    1087                 :            : /* RULE WB8: Do not break within sequences of digits, or digits adjacent
    1088                 :            :  *  to letters (Numeric X Numeric) */
    1089                 :            : static pdf_bool_t
    1090                 :            : pdf_text_ucd_wb_rule_8 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1091                 :            : {
    1092 [ -  + ][ #  # ]:        134 :   return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_Numeric) &&
    1093                 :          0 :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_Numeric)) ?
    1094                 :            :           PDF_TRUE : PDF_FALSE);
    1095                 :            : }
    1096                 :            : 
    1097                 :            : /* RULE WB9: Do not break within sequences of digits, or digits adjacent
    1098                 :            :  *  to letters (ALetter X Numeric) */
    1099                 :            : static pdf_bool_t
    1100                 :            : pdf_text_ucd_wb_rule_9 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1101                 :            : {
    1102 [ +  + ][ -  + ]:        134 :   return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_ALetter) &&
    1103                 :         45 :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_Numeric)) ?
    1104                 :            :           PDF_TRUE : PDF_FALSE);
    1105                 :            : }
    1106                 :            : 
    1107                 :            : /* RULE WB10: Do not break within sequences of digits, or digits adjacent
    1108                 :            :  *  to letters (Numeric X ALetter) */
    1109                 :            : static pdf_bool_t
    1110                 :            : pdf_text_ucd_wb_rule_10 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1111                 :            : {
    1112 [ -  + ][ #  # ]:        134 :   return (((buffer[0].wbp == PDF_TEXT_UCD_WBP_Numeric) &&
    1113                 :          0 :            (buffer[1].wbp == PDF_TEXT_UCD_WBP_ALetter)) ? PDF_TRUE : PDF_FALSE);
    1114                 :            : }
    1115                 :            : 
    1116                 :            : /* RULE WB11: Do not break within sequences such as "3.2"
    1117                 :            :  *  (Numeric MidNum X Numeric) */
    1118                 :            : static pdf_bool_t
    1119                 :            : pdf_text_ucd_wb_rule_11 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1120                 :            : {
    1121 [ -  + ][ #  # ]:        134 :   return (((buffer[0].wbp == PDF_TEXT_UCD_WBP_Numeric) &&
                 [ #  # ]
    1122                 :          0 :            (buffer[1].wbp == PDF_TEXT_UCD_WBP_MidNum) &&
    1123                 :          0 :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_Numeric)) ?
    1124                 :            :           PDF_TRUE : PDF_FALSE);
    1125                 :            : }
    1126                 :            : 
    1127                 :            : /* RULE WB12: Do not break within sequences such as "3.2"
    1128                 :            :  *  (Numeric X MidNum Numeric) */
    1129                 :            : static pdf_bool_t
    1130                 :            : pdf_text_ucd_wb_rule_12 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1131                 :            : {
    1132 [ -  + ][ #  # ]:        134 :   return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_Numeric) &&
                 [ #  # ]
    1133                 :          0 :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_MidNum) &&
    1134                 :          0 :            (buffer[3].wbp == PDF_TEXT_UCD_WBP_Numeric)) ?
    1135                 :            :           PDF_TRUE : PDF_FALSE);
    1136                 :            : }
    1137                 :            : 
    1138                 :            : /* RULE WB13: Do not break between Katakana */
    1139                 :            : static pdf_bool_t
    1140                 :            : pdf_text_ucd_wb_rule_13 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1141                 :            : {
    1142 [ -  + ][ #  # ]:        134 :   return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_Katakana) &&
    1143                 :          0 :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_Katakana)) ?
    1144                 :            :           PDF_TRUE :PDF_FALSE);
    1145                 :            : }
    1146                 :            : 
    1147                 :            : /* RULE WB13a: Do not break from extenders
    1148                 :            :  *  ((ALetter | Numeric | Katakana | ExtendNumLet) X ExtendNumLet) */
    1149                 :            : static pdf_bool_t
    1150                 :            : pdf_text_ucd_wb_rule_13a (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1151                 :            : {
    1152 [ +  + ][ +  - ]:        134 :   return ((((buffer[1].wbp == PDF_TEXT_UCD_WBP_ALetter) ||
         [ -  + ][ -  + ]
    1153                 :        268 :             (buffer[1].wbp == PDF_TEXT_UCD_WBP_Numeric) ||
    1154                 :         89 :             (buffer[1].wbp == PDF_TEXT_UCD_WBP_Katakana) ||
    1155                 :         89 :             (buffer[1].wbp == PDF_TEXT_UCD_WBP_ExtendNumLet)) &&
    1156                 :         45 :            (buffer[2].wbp == PDF_TEXT_UCD_WBP_ExtendNumLet)) ?
    1157                 :            :           PDF_TRUE : PDF_FALSE);
    1158                 :            : }
    1159                 :            : 
    1160                 :            : /* RULE WB13b: Do not break from extenders
    1161                 :            :  *  (ExtendNumLet) X (ALetter | Numeric | Katakana ) */
    1162                 :            : static pdf_bool_t
    1163                 :            : pdf_text_ucd_wb_rule_13b (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1164                 :            : {
    1165 [ -  + ][ #  # ]:        134 :   return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_ExtendNumLet) &&
                 [ #  # ]
    1166                 :          0 :            ((buffer[2].wbp == PDF_TEXT_UCD_WBP_ALetter) ||
    1167                 :          0 :             (buffer[2].wbp == PDF_TEXT_UCD_WBP_Numeric) ||
    1168                 :          0 :             (buffer[2].wbp == PDF_TEXT_UCD_WBP_Katakana))) ?
    1169                 :            :           PDF_TRUE : PDF_FALSE);
    1170                 :            : }
    1171                 :            : 
    1172                 :            : /* Check rules and stop if any of them is true (meaning that shouldn't be a
    1173                 :            :  *  word break) */
    1174                 :            : static pdf_bool_t
    1175                 :        286 : pdf_text_ucd_wb_check_rules (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
    1176                 :            : {
    1177 [ +  - ][ +  - ]:       1888 :   return (((pdf_text_ucd_wb_rule_3(buffer)) ||
         [ +  - ][ +  + ]
         [ +  + ][ +  + ]
         [ +  + ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ -  + ]
    1178                 :            :            (pdf_text_ucd_wb_rule_3a(buffer)) ||
    1179                 :            :            (pdf_text_ucd_wb_rule_3b(buffer)) ||
    1180                 :            :            (pdf_text_ucd_wb_rule_4(buffer)) ||
    1181                 :            :            (pdf_text_ucd_wb_rule_5(buffer)) ||
    1182                 :            :            (pdf_text_ucd_wb_rule_6(buffer)) ||
    1183                 :            :            (pdf_text_ucd_wb_rule_7(buffer)) ||
    1184                 :            :            (pdf_text_ucd_wb_rule_8(buffer)) ||
    1185                 :            :            (pdf_text_ucd_wb_rule_9(buffer)) ||
    1186                 :            :            (pdf_text_ucd_wb_rule_10(buffer)) ||
    1187                 :            :            (pdf_text_ucd_wb_rule_11(buffer)) ||
    1188                 :            :            (pdf_text_ucd_wb_rule_12(buffer)) ||
    1189                 :            :            (pdf_text_ucd_wb_rule_13(buffer)) ||
    1190                 :            :            (pdf_text_ucd_wb_rule_13a(buffer)) ||
    1191                 :            :            (pdf_text_ucd_wb_rule_13b(buffer))) ?
    1192                 :            :           PDF_TRUE : PDF_FALSE);
    1193                 :            : }
    1194                 :            : 
    1195                 :            : /* Word boundary search algorithm, based on Unicode Standard Annex #29
    1196                 :            :  *  "Text Boundaries".
    1197                 :            :  * - `current' points to the next byte after the word break (so it points to the
    1198                 :            :  *    FIRST byte of the word).
    1199                 :            :  * - `next' will point to the previous byte before the next word break (so it
    1200                 :            :  *    points to the LAST byte of the word).
    1201                 :            :  */
    1202                 :            : pdf_bool_t
    1203                 :        192 : pdf_text_ucd_wb_detect_next (const pdf_char_t  *current,
    1204                 :            :                              const pdf_size_t   n_bytes_left_in,
    1205                 :            :                              pdf_char_t       **next,
    1206                 :            :                              pdf_size_t        *n_bytes_left_out)
    1207                 :            : {
    1208                 :            :   /* Buffer to store the unicode points as they are being parsed in the
    1209                 :            :    *  algorithm. Indexes are treated as follows:
    1210                 :            :    *     [0] [1] x [2] [3]
    1211                 :            :    *  This means that possible word breaks are ALWAYS considered between code
    1212                 :            :    *   points [1] and [2], being [0] the previous character to [1] and being
    1213                 :            :    *   [3] the next character to [2].
    1214                 :            :    *  When the buffer is updated, the code points are moved one position to the
    1215                 :            :    *   the left, so that code point in [0] disappears and a new code point
    1216                 :            :    *   enters in [3], and the word break is again checked between [1] and [2].
    1217                 :            :    */
    1218                 :            :   pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP];
    1219                 :            : 
    1220                 :            :   pdf_u32_t i;
    1221                 :            :   pdf_size_t n_bytes;
    1222                 :            :   pdf_bool_t found;
    1223                 :            : 
    1224                 :            :   /* Check validity of input number of bytes */
    1225         [ -  + ]:        192 :   if (n_bytes_left_in % 4 != 0)
    1226                 :          0 :     return PDF_FALSE;
    1227                 :            : 
    1228                 :            :   /* Check if the string is just one character long */
    1229         [ +  + ]:        192 :   if (n_bytes_left_in == 4)
    1230                 :            :     {
    1231                 :         14 :       *n_bytes_left_out = 0;
    1232                 :         14 :       *next = (pdf_char_t *)current;
    1233                 :         14 :       return PDF_TRUE;
    1234                 :            :     }
    1235                 :            : 
    1236                 :            :   /* Initialize buffer with first 3 unicode points, stored in [1],[2],[3] */
    1237         [ +  + ]:        890 :   for (i = 0; i < PDF_TEXT_UCD_MWBCP; ++i)
    1238                 :            :     {
    1239 [ +  + ][ +  + ]:       1222 :       if ((i > 0) &&
    1240                 :        534 :           (n_bytes_left_in >= (4*i)))
    1241                 :            :         {
    1242                 :            :           /* Store pointer */
    1243                 :        510 :           buffer[i].walker = (pdf_char_t *)(&current[4*(i-1)]);
    1244                 :            :           /* Store unsigned 32-bit number */
    1245                 :        510 :           memcpy (&(buffer[i].utf32val), buffer[i].walker, 4);
    1246                 :            :           /* Get Word-Break property value from character */
    1247                 :        510 :           buffer[i].wbp = pdf_text_ucd_wb_get_property(buffer[i].utf32val);
    1248                 :            :         }
    1249                 :            :       else
    1250                 :            :         {
    1251                 :        202 :           buffer[i].walker = NULL;
    1252                 :        202 :           buffer[i].utf32val = 0x0;
    1253                 :        202 :           buffer[i].wbp = PDF_TEXT_UCD_WBP_None;
    1254                 :            :         }
    1255                 :            :     }
    1256                 :            : 
    1257                 :        178 :   n_bytes = n_bytes_left_in;
    1258                 :        178 :   found = 0;
    1259                 :            : 
    1260                 :            :   /* Start walking the unicode points. At each loop at least 2 unicode points
    1261                 :            :    *  (8 bytes) must be available to check the word break!!!! */
    1262 [ +  + ][ +  + ]:        464 :   while ((!found) &&
    1263                 :            :          (n_bytes >= 8))
    1264                 :            :     {
    1265                 :            :       /* If any of the rules returns true, don't break word */
    1266         [ +  + ]:        286 :       if (pdf_text_ucd_wb_check_rules (buffer))
    1267                 :            :         {
    1268                 :            :           /* If word break is not found, continue with next UTF-32 point */
    1269                 :            :           /* Update number of bytes pending */
    1270                 :        152 :           n_bytes -= 4;
    1271                 :            : 
    1272                 :            :           /* Shift left contents of the buffer */
    1273         [ +  + ]:        608 :           for (i = 1; i < PDF_TEXT_UCD_MWBCP; ++i)
    1274                 :            :             {
    1275                 :        456 :               buffer[i-1] = buffer[i];
    1276                 :            :             }
    1277                 :            : 
    1278                 :            :           /* Insert new buffer element in position [3], if available */
    1279         [ +  + ]:        152 :           if (n_bytes >= 12)
    1280                 :            :             {
    1281                 :         74 :               buffer[3].walker = buffer[2].walker + 4;
    1282                 :            :               /* Store unsigned 32-bit number */
    1283                 :         74 :               memcpy (&(buffer[3].utf32val), buffer[3].walker, 4);
    1284                 :            :               /* Get Word-Break property value from character */
    1285                 :         74 :               buffer[3].wbp = pdf_text_ucd_wb_get_property (buffer[3].utf32val);
    1286                 :            :             }
    1287                 :            :         }
    1288                 :            :       else
    1289                 :            :         {
    1290                 :            :           /* RULE WB14: Otherwise, break everywhere (including around
    1291                 :            :            * ideographs) */
    1292                 :        134 :           found = 1;
    1293                 :            :         }
    1294                 :            :     }
    1295                 :            : 
    1296                 :            :   /* The exit of the loop could be due to two different reasons:
    1297                 :            :    *  1. A word break was found in the loop. If it is found, the contents of
    1298                 :            :    *    the buffer remain unchanged, so the word break is between [1] and [2],
    1299                 :            :    *    and n_bytes considers the bytes of [1]
    1300                 :            :    *  2. RULE WB2: Break at end of text ( % EOT). In this case, n_bytes will be
    1301                 :            :    *    equal to 4, and the contents of the buffer would have been shifted left
    1302                 :            :    *    so that the last character is pointed by [1].
    1303                 :            :    *  So, perfect, both cases can be handled in the same way.
    1304                 :            :    */
    1305                 :            : 
    1306                 :        178 :   *next = buffer[1].walker;
    1307                 :        178 :   *n_bytes_left_out = n_bytes - 4;
    1308                 :            : 
    1309                 :        192 :   return PDF_TRUE;
    1310                 :            : }
    1311                 :            : 
    1312                 :            : /* End of pdf-text-ucd-wordbreak.c */

Generated by: LCOV version 1.8