Package org.apache.abdera.i18n.iri

Source Code of org.apache.abdera.i18n.iri.Nameprep

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  The ASF licenses this file to You
* under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.  For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.abdera.i18n.iri;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.BitSet;

import org.apache.abdera.i18n.ChainableBitSet;
import org.apache.abdera.i18n.io.CodepointIterator;
import org.apache.abdera.i18n.iri.Nameprep;
import org.apache.abdera.i18n.iri.NameprepCodepointIterator;
import org.apache.abdera.i18n.unicode.Normalizer;


/**
* Implements the Nameprep protocol
*/
public class Nameprep {

  public static String prep(String s, boolean allowunassigned) {
    NameprepCodepointIterator r = null;
    try {
      StringBuffer buf = new StringBuffer();
      CodepointIterator ci = CodepointIterator.forCharSequence(s);
      r = new NameprepCodepointIterator(ci,allowunassigned);
      while(r.hasNext()) {
        int i = r.next();
        if (i != -1)
        buf.append((char)i);
      }
      return Normalizer.normalize(buf.toString(),Normalizer.Form.KC).toString();
    } catch (Throwable e) {
      throw new RuntimeException(e);
    }
  }
 
  public static String prep(String s) {
    return prep(s,false);
  }
 
  public static final BitSet B1 = new ChainableBitSet()
    .set2('\u00AD','\u034F','\u1806','\u180B','\u180C','\u180D','\u200B',
          '\u200C','\u200D','\u2060','\uFE00','\uFE01','\uFE02','\uFE03',
          '\uFE04','\uFE05','\uFE06','\uFE07','\uFE08','\uFE09','\uFE0A',
          '\uFE0B','\uFE0C','\uFE0D','\uFE0E','\uFE0F','\uFEFF',
          // Not listed in B1, but treated as map-to-nothing by others
          0x8F,0xA0,0x86,0x8b,0x80,0x81,0x88
          );
 
  public static final int[][] B2 = loadb2();
 
  public static final int[] B2(int c) {  
    return (B2[c] != null) ? B2[c] : null;
  }
 
  private static int[] parse(String rep) {
    String[] tokens = rep.trim().split(" ");
    int[] i = new int[tokens.length];
    for (int n = 0; n < tokens.length; n++) {
      i[n]=Integer.parseInt(tokens[n],16);
    }
    return i;
  }
 
  private static final String B2DAT = "/org/apache/abdera/i18n/iri/data/B2.dat";
 
  public static int[][] loadb2() {
    int[][] map = new int[120764][];
    try {
      InputStream in = Nameprep.class.getResourceAsStream(B2DAT);
      InputStreamReader rdr = new InputStreamReader(in);
      BufferedReader bufr = new BufferedReader(rdr);
      String line = null;
      while((line = bufr.readLine()) != null) {
        String[] tokens = line.trim().split("\\s*;\\s*");
        int n = Integer.parseInt(tokens[0],16);
        int[] i = parse(tokens[1]);
        map[n] = i;
      }
    } catch (IOException e) {
    }
    return map;
  }
 
  public static final BitSet UNASSIGNED = new ChainableBitSet() 
  .set2('\u0221')
  .set2('\u0234','\u024F')
  .set2('\u02AE','\u02AF')
  .set2('\u02EF','\u02FF')
  .set2('\u0350','\u035F')
  .set2('\u0370','\u0373')
  .set2('\u0376','\u0379')
  .set2('\u037B','\u037D')
  .set2('\u037F','\u0383')
  .set2('\u038B')
  .set2('\u038D')
  .set2('\u03A2')
  .set2('\u03CF')
  .set2('\u03F7','\u03FF')
  .set2('\u0487')
  .set2('\u04CF')
  .set2('\u04F6','\u04F7')
  .set2('\u04FA','\u04FF')
  .set2('\u0510','\u0530')
  .set2('\u0557','\u0558')
  .set2('\u0560')
  .set2('\u0588')
  .set2('\u058B','\u0590')
  .set2('\u05A2')
  .set2('\u05BA')
  .set2('\u05C5','\u05CF')
  .set2('\u05EB','\u05EF')
  .set2('\u05F5','\u060B')
  .set2('\u060D','\u061A')
  .set2('\u061C','\u061E')
  .set2('\u0620')
  .set2('\u063B','\u063F')
  .set2('\u0656','\u065F')
  .set2('\u06EE','\u06EF')
  .set2('\u06FF')
  .set2('\u070E')
  .set2('\u072D','\u072F')
  .set2('\u074B','\u077F')
  .set2('\u07B2','\u0900')
  .set2('\u0904')
  .set2('\u093A','\u093B')
  .set2('\u094E','\u094F')
  .set2('\u0955','\u0957')
  .set2('\u0971','\u0980')
  .set2('\u0984')
  .set2('\u098D','\u098E')
  .set2('\u0991','\u0992')
  .set2('\u09A9')
  .set2('\u09B1')
  .set2('\u09B3','\u09B5')
  .set2('\u09BA','\u09BB')
  .set2('\u09BD')
  .set2('\u09C5','\u09C6')
  .set2('\u09C9','\u09CA')
  .set2('\u09CE','\u09D6')
  .set2('\u09D8','\u09DB')
  .set2('\u09DE')
  .set2('\u09E4','\u09E5')
  .set2('\u09FB','\u0A01')
  .set2('\u0A03','\u0A04')
  .set2('\u0A0B','\u0A0E')
  .set2('\u0A11','\u0A12')
  .set2('\u0A29')
  .set2('\u0A31')
  .set2('\u0A34')
  .set2('\u0A37')
  .set2('\u0A3A','\u0A3B')
  .set2('\u0A3D')
  .set2('\u0A43','\u0A46')
  .set2('\u0A49','\u0A4A')
  .set2('\u0A4E','\u0A58')
  .set2('\u0A5D')
  .set2('\u0A5F','\u0A65')
  .set2('\u0A75','\u0A80')
  .set2('\u0A84')
  .set2('\u0A8C')
  .set2('\u0A8E')
  .set2('\u0A92')
  .set2('\u0AA9')
  .set2('\u0AB1')
  .set2('\u0AB4')
  .set2('\u0ABA','\u0ABB')
  .set2('\u0AC6')
  .set2('\u0ACA')
  .set2('\u0ACE','\u0ACF')
  .set2('\u0AD1','\u0ADF')
  .set2('\u0AE1','\u0AE5')
  .set2('\u0AF0','\u0B00')
  .set2('\u0B04')
  .set2('\u0B0D','\u0B0E')
  .set2('\u0B11','\u0B12')
  .set2('\u0B29')
  .set2('\u0B31')
  .set2('\u0B34','\u0B35')
  .set2('\u0B3A','\u0B3B')
  .set2('\u0B44','\u0B46')
  .set2('\u0B49','\u0B4A')
  .set2('\u0B4E','\u0B55')
  .set2('\u0B58','\u0B5B')
  .set2('\u0B5E')
  .set2('\u0B62','\u0B65')
  .set2('\u0B71','\u0B81')
  .set2('\u0B84')
  .set2('\u0B8B','\u0B8D')
  .set2('\u0B91')
  .set2('\u0B96','\u0B98')
  .set2('\u0B9B')
  .set2('\u0B9D')
  .set2('\u0BA0','\u0BA2')
  .set2('\u0BA5','\u0BA7')
  .set2('\u0BAB','\u0BAD')
  .set2('\u0BB6')
  .set2('\u0BBA','\u0BBD')
  .set2('\u0BC3','\u0BC5')
  .set2('\u0BC9')
  .set2('\u0BCE','\u0BD6')
  .set2('\u0BD8','\u0BE6')
  .set2('\u0BF3','\u0C00')
  .set2('\u0C04')
  .set2('\u0C0D')
  .set2('\u0C11')
  .set2('\u0C29')
  .set2('\u0C34')
  .set2('\u0C3A','\u0C3D')
  .set2('\u0C45')
  .set2('\u0C49')
  .set2('\u0C4E','\u0C54')
  .set2('\u0C57','\u0C5F')
  .set2('\u0C62','\u0C65')
  .set2('\u0C70','\u0C81')
  .set2('\u0C84')
  .set2('\u0C8D')
  .set2('\u0C91')
  .set2('\u0CA9')
  .set2('\u0CB4')
  .set2('\u0CBA','\u0CBD')
  .set2('\u0CC5')
  .set2('\u0CC9')
  .set2('\u0CCE','\u0CD4')
  .set2('\u0CD7','\u0CDD')
  .set2('\u0CDF')
  .set2('\u0CE2','\u0CE5')
  .set2('\u0CF0','\u0D01')
  .set2('\u0D04')
  .set2('\u0D0D')
  .set2('\u0D11')
  .set2('\u0D29')
  .set2('\u0D3A','\u0D3D')
  .set2('\u0D44','\u0D45')
  .set2('\u0D49')
  .set2('\u0D4E','\u0D56')
  .set2('\u0D58','\u0D5F')
  .set2('\u0D62','\u0D65')
  .set2('\u0D70','\u0D81')
  .set2('\u0D84')
  .set2('\u0D97','\u0D99')
  .set2('\u0DB2')
  .set2('\u0DBC')
  .set2('\u0DBE','\u0DBF')
  .set2('\u0DC7','\u0DC9')
  .set2('\u0DCB','\u0DCE')
  .set2('\u0DD5')
  .set2('\u0DD7')
  .set2('\u0DE0','\u0DF1')
  .set2('\u0DF5','\u0E00')
  .set2('\u0E3B','\u0E3E')
  .set2('\u0E5C','\u0E80')
  .set2('\u0E83')
  .set2('\u0E85','\u0E86')
  .set2('\u0E89')
  .set2('\u0E8B','\u0E8C')
  .set2('\u0E8E','\u0E93')
  .set2('\u0E98')
  .set2('\u0EA0')
  .set2('\u0EA4')
  .set2('\u0EA6')
  .set2('\u0EA8','\u0EA9')
  .set2('\u0EAC')
  .set2('\u0EBA')
  .set2('\u0EBE','\u0EBF')
  .set2('\u0EC5')
  .set2('\u0EC7')
  .set2('\u0ECE','\u0ECF')
  .set2('\u0EDA','\u0EDB')
  .set2('\u0EDE','\u0EFF')
  .set2('\u0F48')
  .set2('\u0F6B','\u0F70')
  .set2('\u0F8C','\u0F8F')
  .set2('\u0F98')
  .set2('\u0FBD')
  .set2('\u0FCD','\u0FCE')
  .set2('\u0FD0','\u0FFF')
  .set2('\u1022')
  .set2('\u1028')
  .set2('\u102B')
  .set2('\u1033','\u1035')
  .set2('\u103A','\u103F')
  .set2('\u105A','\u109F')
  .set2('\u10C6','\u10CF')
  .set2('\u10F9','\u10FA')
  .set2('\u10FC','\u10FF')
  .set2('\u115A','\u115E')
  .set2('\u11A3','\u11A7')
  .set2('\u11FA','\u11FF')
  .set2('\u1207')
  .set2('\u1247')
  .set2('\u1249')
  .set2('\u124E','\u124F')
  .set2('\u1257')
  .set2('\u1259')
  .set2('\u125E','\u125F')
  .set2('\u1287')
  .set2('\u1289')
  .set2('\u128E','\u128F')
  .set2('\u12AF')
  .set2('\u12B1')
  .set2('\u12B6','\u12B7')
  .set2('\u12BF')
  .set2('\u12C1')
  .set2('\u12C6','\u12C7')
  .set2('\u12CF')
  .set2('\u12D7')
  .set2('\u12EF')
  .set2('\u130F')
  .set2('\u1311')
  .set2('\u1316','\u1317')
  .set2('\u131F')
  .set2('\u1347')
  .set2('\u135B','\u1360')
  .set2('\u137D','\u139F')
  .set2('\u13F5','\u1400')
  .set2('\u1677','\u167F')
  .set2('\u169D','\u169F')
  .set2('\u16F1','\u16FF')
  .set2('\u170D')
  .set2('\u1715','\u171F')
  .set2('\u1737','\u173F')
  .set2('\u1754','\u175F')
  .set2('\u176D')
  .set2('\u1771')
  .set2('\u1774','\u177F')
  .set2('\u17DD','\u17DF')
  .set2('\u17EA','\u17FF')
  .set2('\u180F')
  .set2('\u181A','\u181F')
  .set2('\u1878','\u187F')
  .set2('\u18AA','\u1DFF')
  .set2('\u1E9C','\u1E9F')
  .set2('\u1EFA','\u1EFF')
  .set2('\u1F16','\u1F17')
  .set2('\u1F1E','\u1F1F')
  .set2('\u1F46','\u1F47')
  .set2('\u1F4E','\u1F4F')
  .set2('\u1F58')
  .set2('\u1F5A')
  .set2('\u1F5C')
  .set2('\u1F5E')
  .set2('\u1F7E','\u1F7F')
  .set2('\u1FB5')
  .set2('\u1FC5')
  .set2('\u1FD4','\u1FD5')
  .set2('\u1FDC')
  .set2('\u1FF0','\u1FF1')
  .set2('\u1FF5')
  .set2('\u1FFF')
  .set2('\u2053','\u2056')
  .set2('\u2058','\u205E')
  .set2('\u2064','\u2069')
  .set2('\u2072','\u2073')
  .set2('\u208F','\u209F')
  .set2('\u20B2','\u20CF')
  .set2('\u20EB','\u20FF')
  .set2('\u213B','\u213C')
  .set2('\u214C','\u2152')
  .set2('\u2184','\u218F')
  .set2('\u23CF','\u23FF')
  .set2('\u2427','\u243F')
  .set2('\u244B','\u245F')
  .set2('\u24FF')
  .set2('\u2614','\u2615')
  .set2('\u2618')
  .set2('\u267E','\u267F')
  .set2('\u268A','\u2700')
  .set2('\u2705')
  .set2('\u270A','\u270B')
  .set2('\u2728')
  .set2('\u274C')
  .set2('\u274E')
  .set2('\u2753','\u2755')
  .set2('\u2757')
  .set2('\u275F','\u2760')
  .set2('\u2795','\u2797')
  .set2('\u27B0')
  .set2('\u27BF','\u27CF')
  .set2('\u27EC','\u27EF')
  .set2('\u2B00','\u2E7F')
  .set2('\u2E9A')
  .set2('\u2EF4','\u2EFF')
  .set2('\u2FD6','\u2FEF')
  .set2('\u2FFC','\u2FFF')
  .set2('\u3040')
  .set2('\u3097','\u3098')
  .set2('\u3100','\u3104')
  .set2('\u312D','\u3130')
  .set2('\u318F')
  .set2('\u31B8','\u31EF')
  .set2('\u321D','\u321F')
  .set2('\u3244','\u3250')
  .set2('\u327C','\u327E')
  .set2('\u32CC','\u32CF')
  .set2('\u32FF')
  .set2('\u3377','\u337A')
  .set2('\u33DE','\u33DF')
  .set2('\u33FF')
  .set2('\u4DB6','\u4DFF')
  .set2('\u9FA6','\u9FFF')
  .set2('\uA48D','\uA48F')
  .set2('\uA4C7','\uABFF')
  .set2('\uD7A4','\uD7FF')
  .set2('\uFA2E','\uFA2F')
  .set2('\uFA6B','\uFAFF')
  .set2('\uFB07','\uFB12')
  .set2('\uFB18','\uFB1C')
  .set2('\uFB37')
  .set2('\uFB3D')
  .set2('\uFB3F')
  .set2('\uFB42')
  .set2('\uFB45')
  .set2('\uFBB2','\uFBD2')
  .set2('\uFD40','\uFD4F')
  .set2('\uFD90','\uFD91')
  .set2('\uFDC8','\uFDCF')
  .set2('\uFDFD','\uFDFF')
  .set2('\uFE10','\uFE1F')
  .set2('\uFE24','\uFE2F')
  .set2('\uFE47','\uFE48')
  .set2('\uFE53')
  .set2('\uFE67')
  .set2('\uFE6C','\uFE6F')
  .set2('\uFE75')
  .set2('\uFEFD','\uFEFE')
  .set2('\uFF00')
  .set2('\uFFBF','\uFFC1')
  .set2('\uFFC8','\uFFC9')
  .set2('\uFFD0','\uFFD1')
  .set2('\uFFD8','\uFFD9')
  .set2('\uFFDD','\uFFDF')
  .set2('\uFFE7')
  .set2('\uFFEF','\uFFF8')
  .set2(0x10000,0x102FF)
  .set2(0x1031F)
  .set2(0x10324,0x1032F)
  .set2(0x1034B,0x103FF)
  .set2(0x10426,0x10427)
  .set2(0x1044E,0x1CFFF)
  .set2(0x1D0F6,0x1D0FF)
  .set2(0x1D127,0x1D129)
  .set2(0x1D1DE,0x1D3FF)
  .set2(0x1D455)
  .set2(0x1D49D)
  .set2(0x1D4A0,0x1D4A1)
  .set2(0x1D4A3,0x1D4A4)
  .set2(0x1D4A7,0x1D4A8)
  .set2(0x1D4AD)
  .set2(0x1D4BA)
  .set2(0x1D4BC)
  .set2(0x1D4C1)
  .set2(0x1D4C4)
  .set2(0x1D506)
  .set2(0x1D50B,0x1D50C)
  .set2(0x1D515)
  .set2(0x1D51D)
  .set2(0x1D53A)
  .set2(0x1D53F)
  .set2(0x1D545)
  .set2(0x1D547,0x1D549)
  .set2(0x1D551)
  .set2(0x1D6A4,0x1D6A7)
  .set2(0x1D7CA,0x1D7CD)
  .set2(0x1D800,0x1FFFD)
  .set2(0x2A6D7,0x2F7FF)
  .set2(0x2FA1E,0x2FFFD)
  .set2(0x30000,0x3FFFD)
  .set2(0x40000,0x4FFFD)
  .set2(0x50000,0x5FFFD)
  .set2(0x60000,0x6FFFD)
  .set2(0x70000,0x7FFFD)
  .set2(0x80000,0x8FFFD)
  .set2(0x90000,0x9FFFD)
  .set2(0xA0000,0xAFFFD)
  .set2(0xB0000,0xBFFFD)
  .set2(0xC0000,0xCFFFD)
  .set2(0xD0000,0xDFFFD)
  .set2(0xE0000)
  .set2(0xE0002,0xE001F)
  .set2(0xE0080,0xEFFFD);

 
  public static final ChainableBitSet PROHIBITED = new ChainableBitSet()

  // c.1.2
   .set2('\u00A0').set2('\u1680').set2('\u2000','\u200B')
   .set2('\u202F').set2('\u205F').set2('\u3000')

  // c.2.2
   .set2('\u0080','\u009F').set2('\u06DD').set2('\u070F')
   .set2('\u180E').set2('\u200C').set2('\u200D').set2('\u2028')
   .set2('\u2029').set2('\u2060').set2('\u2061').set2('\u2062')
   .set2('\u2063').set2('\u206A','\u206F').set2('\uFEFF')
   .set2('\uFFF9','\uFFFC').set2(0x1D173,0x1D17A)
                                            
  // c.3
   .set2('\uE000','\uF8FF').set2(0xF0000,0xFFFFD).set2(0x100000,0x10FFFD)
                  
  // c.4
   .set2('\uFDD0','\uFDEF').set2('\uFFFE','\uFFFF').set2(0x1FFFE,0x1FFFF)
   .set2(0x2FFFE,0x2FFFF).set2(0x3FFFE,0x3FFFF).set2(0x4FFFE,0x4FFFF)
   .set2(0x5FFFE,0x5FFFF).set2(0x6FFFE,0x6FFFF).set2(0x7FFFE,0x7FFFF)
   .set2(0x8FFFE,0x8FFFF).set2(0x9FFFE,0x9FFFF).set2(0xAFFFE,0xAFFFF)
   .set2(0xBFFFE,0xBFFFF).set2(0xCFFFE,0xCFFFF).set2(0xDFFFE,0xDFFFF)
   .set2(0xEFFFE,0xEFFFF).set2(0xFFFFE,0xFFFFF).set2(0x10FFFE,0x10FFFF)
  
// c.5
   .set2('\uD800','\uDFFF')
  
// c.6
   .set2('\uFFF9','\uFFFD')
  
// c.7
   .set2('\u2FF0','\u2FFB')
  
// c.8
   .set2('\u0340').set2('\u0341').set2('\u200E')
   .set2('\u200F').set2('\u202A').set2('\u202B')
   .set2('\u202C').set2('\u202D').set2('\u202E')
   .set2('\u206A').set2('\u206B').set2('\u206C')
   .set2('\u206D').set2('\u206E').set2('\u206F')
  
// c.9
   .set2(0xE0001).set2(0xE0020,0xE007F)
 
// unassigned
   .set2(UNASSIGNED);
 
 
  public static final BitSet RandAL = new ChainableBitSet()
   .set2('\u05BE').set2('\u05C0').set2('\u05C3')
   .set2('\u05D0','\u05EA').set2('\u05F0','\u05F4')
   .set2('\u061B').set2('\u061F').set2('\u0621','\u063A')
   .set2('\u0640','\u064A').set2('\u066D','\u066F').set2('\u0671','\u06D5')
   .set2('\u06DD').set2('\u06E5','\u06E6').set2('\u06FA','\u06FE')
   .set2('\u0700','\u070D').set2('\u0710').set2('\u0712','\u072C')
   .set2('\u0780','\u07A5').set2('\u07B1').set2('\u200F')
   .set2('\uFB1D').set2('\uFB1F','\uFB28').set2('\uFB2A','\uFB36')
   .set2('\uFB38','\uFB3C').set2('\uFB3E').set2('\uFB40','\uFB41')
   .set2('\uFB43','\uFB44').set2('\uFB46','\uFBB1').set2('\uFBD3','\uFD3D')
   .set2('\uFD50','\uFD8F').set2('\uFD92','\uFDC7').set2('\uFDF0','\uFDFC')
   .set2('\uFE70','\uFE74').set2('\uFE76','\uFEFC');
 
  public static final BitSet LCat = new ChainableBitSet()
    .set2('\u0041','\u005A')
    .set2('\u0061','\u007A')
    .set2('\u00AA')
    .set2('\u00B5')
    .set2('\u00BA')
    .set2('\u00C0','\u00D6')
    .set2('\u00D8','\u00F6')
    .set2('\u00F8','\u0220')
    .set2('\u0222','\u0233')
    .set2('\u0250','\u02AD')
    .set2('\u02B0','\u02B8')
    .set2('\u02BB','\u02C1')
    .set2('\u02D0','\u02D1')
    .set2('\u02E0','\u02E4')
    .set2('\u02EE')
    .set2('\u037A')
    .set2('\u0386')
    .set2('\u0388','\u038A')
    .set2('\u038C')
    .set2('\u038E','\u03A1')
    .set2('\u03A3','\u03CE')
    .set2('\u03D0','\u03F5')
    .set2('\u0400','\u0482')
    .set2('\u048A','\u04CE')
    .set2('\u04D0','\u04F5')
    .set2('\u04F8','\u04F9')
    .set2('\u0500','\u050F')
    .set2('\u0531','\u0556')
    .set2('\u0559','\u055F')
    .set2('\u0561','\u0587')
    .set2('\u0589')
    .set2('\u0903')
    .set2('\u0905','\u0939')
    .set2('\u093D','\u0940')
    .set2('\u0949','\u094C')
    .set2('\u0950')
    .set2('\u0958','\u0961')
    .set2('\u0964','\u0970')
    .set2('\u0982','\u0983')
    .set2('\u0985','\u098C')
    .set2('\u098F','\u0990')
    .set2('\u0993','\u09A8')
    .set2('\u09AA','\u09B0')
    .set2('\u09B2')
    .set2('\u09B6','\u09B9')
    .set2('\u09BE','\u09C0')
    .set2('\u09C7','\u09C8')
    .set2('\u09CB','\u09CC')
    .set2('\u09D7')
    .set2('\u09DC','\u09DD')
    .set2('\u09DF','\u09E1')
    .set2('\u09E6','\u09F1')
    .set2('\u09F4','\u09FA')
    .set2('\u0A05','\u0A0A')
    .set2('\u0A0F','\u0A10')
    .set2('\u0A13','\u0A28')
    .set2('\u0A2A','\u0A30')
    .set2('\u0A32','\u0A33')
    .set2('\u0A35','\u0A36')
    .set2('\u0A38','\u0A39')
    .set2('\u0A3E','\u0A40')
    .set2('\u0A59','\u0A5C')
    .set2('\u0A5E')
    .set2('\u0A66','\u0A6F')
    .set2('\u0A72','\u0A74')
    .set2('\u0A83')
    .set2('\u0A85','\u0A8B')
    .set2('\u0A8D')
    .set2('\u0A8F','\u0A91')
    .set2('\u0A93','\u0AA8')
    .set2('\u0AAA','\u0AB0')
    .set2('\u0AB2','\u0AB3')
    .set2('\u0AB5','\u0AB9')
    .set2('\u0ABD','\u0AC0')
    .set2('\u0AC9')
    .set2('\u0ACB','\u0ACC')
    .set2('\u0AD0')
    .set2('\u0AE0')
    .set2('\u0AE6','\u0AEF')
    .set2('\u0B02','\u0B03')
    .set2('\u0B05','\u0B0C')
    .set2('\u0B0F','\u0B10')
    .set2('\u0B13','\u0B28')
    .set2('\u0B2A','\u0B30')
    .set2('\u0B32','\u0B33')
    .set2('\u0B36','\u0B39')
    .set2('\u0B3D','\u0B3E')
    .set2('\u0B40')
    .set2('\u0B47','\u0B48')
    .set2('\u0B4B','\u0B4C')
    .set2('\u0B57')
    .set2('\u0B5C','\u0B5D')
    .set2('\u0B5F','\u0B61')
    .set2('\u0B66','\u0B70')
    .set2('\u0B83')
    .set2('\u0B85','\u0B8A')
    .set2('\u0B8E','\u0B90')
    .set2('\u0B92','\u0B95')
    .set2('\u0B99','\u0B9A')
    .set2('\u0B9C')
    .set2('\u0B9E','\u0B9F')
    .set2('\u0BA3','\u0BA4')
    .set2('\u0BA8','\u0BAA')
    .set2('\u0BAE','\u0BB5')
    .set2('\u0BB7','\u0BB9')
    .set2('\u0BBE','\u0BBF')
    .set2('\u0BC1','\u0BC2')
    .set2('\u0BC6','\u0BC8')
    .set2('\u0BCA','\u0BCC')
    .set2('\u0BD7')
    .set2('\u0BE7','\u0BF2')
    .set2('\u0C01','\u0C03')
    .set2('\u0C05','\u0C0C')
    .set2('\u0C0E','\u0C10')
    .set2('\u0C12','\u0C28')
    .set2('\u0C2A','\u0C33')
    .set2('\u0C35','\u0C39')
    .set2('\u0C41','\u0C44')
    .set2('\u0C60','\u0C61')
    .set2('\u0C66','\u0C6F')
    .set2('\u0C82','\u0C83')
    .set2('\u0C85','\u0C8C')
    .set2('\u0C8E','\u0C90')
    .set2('\u0C92','\u0CA8')
    .set2('\u0CAA','\u0CB3')
    .set2('\u0CB5','\u0CB9')
    .set2('\u0CBE')
    .set2('\u0CC0','\u0CC4')
    .set2('\u0CC7','\u0CC8')
    .set2('\u0CCA','\u0CCB')
    .set2('\u0CD5','\u0CD6')
    .set2('\u0CDE')
    .set2('\u0CE0','\u0CE1')
    .set2('\u0CE6','\u0CEF')
    .set2('\u0D02','\u0D03')
    .set2('\u0D05','\u0D0C')
    .set2('\u0D0E','\u0D10')
    .set2('\u0D12','\u0D28')
    .set2('\u0D2A','\u0D39')
    .set2('\u0D3E','\u0D40')
    .set2('\u0D46','\u0D48')
    .set2('\u0D4A','\u0D4C')
    .set2('\u0D57')
    .set2('\u0D60','\u0D61')
    .set2('\u0D66','\u0D6F')
    .set2('\u0D82','\u0D83')
    .set2('\u0D85','\u0D96')
    .set2('\u0D9A','\u0DB1')
    .set2('\u0DB3','\u0DBB')
    .set2('\u0DBD')
    .set2('\u0DC0','\u0DC6')
    .set2('\u0DCF','\u0DD1')
    .set2('\u0DD8','\u0DDF')
    .set2('\u0DF2','\u0DF4')
    .set2('\u0E01','\u0E30')
    .set2('\u0E32','\u0E33')
    .set2('\u0E40','\u0E46')
    .set2('\u0E4F','\u0E5B')
    .set2('\u0E81','\u0E82')
    .set2('\u0E84')
    .set2('\u0E87','\u0E88')
    .set2('\u0E8A')
    .set2('\u0E8D')
    .set2('\u0E94','\u0E97')
    .set2('\u0E99','\u0E9F')
    .set2('\u0EA1','\u0EA3')
    .set2('\u0EA5')
    .set2('\u0EA7')
    .set2('\u0EAA','\u0EAB')
    .set2('\u0EAD','\u0EB0')
    .set2('\u0EB2','\u0EB3')
    .set2('\u0EBD')
    .set2('\u0EC0','\u0EC4')
    .set2('\u0EC6')
    .set2('\u0ED0','\u0ED9')
    .set2('\u0EDC','\u0EDD')
    .set2('\u0F00','\u0F17')
    .set2('\u0F1A','\u0F34')
    .set2('\u0F36')
    .set2('\u0F38')
    .set2('\u0F3E','\u0F47')
    .set2('\u0F49','\u0F6A')
    .set2('\u0F7F')
    .set2('\u0F85')
    .set2('\u0F88','\u0F8B')
    .set2('\u0FBE','\u0FC5')
    .set2('\u0FC7','\u0FCC')
    .set2('\u0FCF')
    .set2('\u1000','\u1021')
    .set2('\u1023','\u1027')
    .set2('\u1029','\u102A')
    .set2('\u102C')
    .set2('\u1031')
    .set2('\u1038')
    .set2('\u1040','\u1057')
    .set2('\u10A0','\u10C5')
    .set2('\u10D0','\u10F8')
    .set2('\u10FB')
    .set2('\u1100','\u1159')
    .set2('\u115F','\u11A2')
    .set2('\u11A8','\u11F9')
    .set2('\u1200','\u1206')
    .set2('\u1208','\u1246')
    .set2('\u1248')
    .set2('\u124A','\u124D')
    .set2('\u1250','\u1256')
    .set2('\u1258')
    .set2('\u125A','\u125D')
    .set2('\u1260','\u1286')
    .set2('\u1288')
    .set2('\u128A','\u128D')
    .set2('\u1290','\u12AE')
    .set2('\u12B0')
    .set2('\u12B2','\u12B5')
    .set2('\u12B8','\u12BE')
    .set2('\u12C0')
    .set2('\u12C2','\u12C5')
    .set2('\u12C8','\u12CE')
    .set2('\u12D0','\u12D6')
    .set2('\u12D8','\u12EE')
    .set2('\u12F0','\u130E')
    .set2('\u1310')
    .set2('\u1312','\u1315')
    .set2('\u1318','\u131E')
    .set2('\u1320','\u1346')
    .set2('\u1348','\u135A')
    .set2('\u1361','\u137C')
    .set2('\u13A0','\u13F4')
    .set2('\u1401','\u1676')
    .set2('\u1681','\u169A')
    .set2('\u16A0','\u16F0')
    .set2('\u1700','\u170C')
    .set2('\u170E','\u1711')
    .set2('\u1720','\u1731')
    .set2('\u1735','\u1736')
    .set2('\u1740','\u1751')
    .set2('\u1760','\u176C')
    .set2('\u176E','\u1770')
    .set2('\u1780','\u17B6')
    .set2('\u17BE','\u17C5')
    .set2('\u17C7','\u17C8')
    .set2('\u17D4','\u17DA')
    .set2('\u17DC')
    .set2('\u17E0','\u17E9')
    .set2('\u1810','\u1819')
    .set2('\u1820','\u1877')
    .set2('\u1880','\u18A8')
    .set2('\u1E00','\u1E9B')
    .set2('\u1EA0','\u1EF9')
    .set2('\u1F00','\u1F15')
    .set2('\u1F18','\u1F1D')
    .set2('\u1F20','\u1F45')
    .set2('\u1F48','\u1F4D')
    .set2('\u1F50','\u1F57')
    .set2('\u1F59')
    .set2('\u1F5B')
    .set2('\u1F5D')
    .set2('\u1F5F','\u1F7D')
    .set2('\u1F80','\u1FB4')
    .set2('\u1FB6','\u1FBC')
    .set2('\u1FBE')
    .set2('\u1FC2','\u1FC4')
    .set2('\u1FC6','\u1FCC')
    .set2('\u1FD0','\u1FD3')
    .set2('\u1FD6','\u1FDB')
    .set2('\u1FE0','\u1FEC')
    .set2('\u1FF2','\u1FF4')
    .set2('\u1FF6','\u1FFC')
    .set2('\u200E')
    .set2('\u2071')
    .set2('\u207F')
    .set2('\u2102')
    .set2('\u2107')
    .set2('\u210A','\u2113')
    .set2('\u2115')
    .set2('\u2119','\u211D')
    .set2('\u2124')
    .set2('\u2126')
    .set2('\u2128')
    .set2('\u212A','\u212D')
    .set2('\u212F','\u2131')
    .set2('\u2133','\u2139')
    .set2('\u213D','\u213F')
    .set2('\u2145','\u2149')
    .set2('\u2160','\u2183')
    .set2('\u2336','\u237A')
    .set2('\u2395')
    .set2('\u249C','\u24E9')
    .set2('\u3005','\u3007')
    .set2('\u3021','\u3029')
    .set2('\u3031','\u3035')
    .set2('\u3038','\u303C')
    .set2('\u3041','\u3096')
    .set2('\u309D','\u309F')
    .set2('\u30A1','\u30FA')
    .set2('\u30FC','\u30FF')
    .set2('\u3105','\u312C')
    .set2('\u3131','\u318E')
    .set2('\u3190','\u31B7')
    .set2('\u31F0','\u321C')
    .set2('\u3220','\u3243')
    .set2('\u3260','\u327B')
    .set2('\u327F','\u32B0')
    .set2('\u32C0','\u32CB')
    .set2('\u32D0','\u32FE')
    .set2('\u3300','\u3376')
    .set2('\u337B','\u33DD')
    .set2('\u33E0','\u33FE')
    .set2('\u3400','\u4DB5')
    .set2('\u4E00','\u9FA5')
    .set2('\uA000','\uA48C')
    .set2('\uAC00','\uD7A3')
    .set2('\uD800','\uFA2D')
    .set2('\uFA30','\uFA6A')
    .set2('\uFB00','\uFB06')
    .set2('\uFB13','\uFB17')
    .set2('\uFF21','\uFF3A')
    .set2('\uFF41','\uFF5A')
    .set2('\uFF66','\uFFBE')
    .set2('\uFFC2','\uFFC7')
    .set2('\uFFCA','\uFFCF')
    .set2('\uFFD2','\uFFD7')
    .set2('\uFFDA','\uFFDC')
    .set2(0x10300,0x1031E)
    .set2(0x10320,0x10323)
    .set2(0x10330,0x1034A)
    .set2(0x10400,0x10425)
    .set2(0x10428,0x1044D)
    .set2(0x1D000,0x1D0F5)
    .set2(0x1D100,0x1D126)
    .set2(0x1D12A,0x1D166)
    .set2(0x1D16A,0x1D172)
    .set2(0x1D183,0x1D184)
    .set2(0x1D18C,0x1D1A9)
    .set2(0x1D1AE,0x1D1DD)
    .set2(0x1D400,0x1D454)
    .set2(0x1D456,0x1D49C)
    .set2(0x1D49E,0x1D49F)
    .set2(0x1D4A2)
    .set2(0x1D4A5,0x1D4A6)
    .set2(0x1D4A9,0x1D4AC)
    .set2(0x1D4AE,0x1D4B9)
    .set2(0x1D4BB)
    .set2(0x1D4BD,0x1D4C0)
    .set2(0x1D4C2,0x1D4C3)
    .set2(0x1D4C5,0x1D505)
    .set2(0x1D507,0x1D50A)
    .set2(0x1D50D,0x1D514)
    .set2(0x1D516,0x1D51C)
    .set2(0x1D51E,0x1D539)
    .set2(0x1D53B,0x1D53E)
    .set2(0x1D540,0x1D544)
    .set2(0x1D546)
    .set2(0x1D54A,0x1D550)
    .set2(0x1D552,0x1D6A3)
    .set2(0x1D6A8,0x1D7C9)
    .set2(0x20000,0x2A6D6)
    .set2(0x2F800,0x2FA1D)
    .set2(0xF0000,0xFFFFD)
    .set2(0x100000,0x10FFFD);
}
TOP

Related Classes of org.apache.abdera.i18n.iri.Nameprep

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.