12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052 |
- /* java.lang.Character -- Wrapper class for char, and Unicode subsets
- Copyright (C) 1998, 1999, 2001, 2002, 2005, 2006, 2007
- Free Software Foundation, Inc.
- This file is part of GNU Classpath.
- GNU Classpath is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
- GNU Classpath is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with GNU Classpath; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA.
- Linking this library statically or dynamically with other modules is
- making a combined work based on this library. Thus, the terms and
- conditions of the GNU General Public License cover the whole
- combination.
- As a special exception, the copyright holders of this library give you
- permission to link this library with independent modules to produce an
- executable, regardless of the license terms of these independent
- modules, and to copy and distribute the resulting executable under
- terms of your choice, provided that you also meet, for each linked
- independent module, the terms and conditions of the license of that
- module. An independent module is a module which is not derived from
- or based on this library. If you modify this library, you may extend
- this exception to your version of the library, but you are not
- obligated to do so. If you do not wish to do so, delete this
- exception statement from your version. */
- /*
- * Note: This class must not be merged with Classpath. Gcj uses C-style
- * arrays (see include/java-chartables.h) to store the Unicode character
- * database, whereas Classpath uses Java objects (char[] extracted from
- * String constants) in gnu.java.lang.CharData. Gcj's approach is more
- * efficient, because there is no vtable or data relocation to worry about.
- * However, despite the difference in the database interface, the two
- * versions share identical algorithms.
- */
- package java.lang;
- import java.io.Serializable;
- import java.text.Collator;
- import java.util.Locale;
- /**
- * Wrapper class for the primitive char data type. In addition, this class
- * allows one to retrieve property information and perform transformations
- * on the defined characters in the Unicode Standard, Version 4.0.0.
- * java.lang.Character is designed to be very dynamic, and as such, it
- * retrieves information on the Unicode character set from a separate
- * database, gnu.java.lang.CharData, which can be easily upgraded.
- *
- * <p>For predicates, boundaries are used to describe
- * the set of characters for which the method will return true.
- * This syntax uses fairly normal regular expression notation.
- * See 5.13 of the Unicode Standard, Version 4.0, for the
- * boundary specification.
- *
- * <p>See <a href="http://www.unicode.org">http://www.unicode.org</a>
- * for more information on the Unicode Standard.
- *
- * @author Tom Tromey (tromey@cygnus.com)
- * @author Paul N. Fisher
- * @author Jochen Hoenicke
- * @author Eric Blake (ebb9@email.byu.edu)
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.0
- * @status partly updated to 1.5; some things still missing
- */
- public final class Character implements Serializable, Comparable<Character>
- {
- /**
- * A subset of Unicode blocks.
- *
- * @author Paul N. Fisher
- * @author Eric Blake (ebb9@email.byu.edu)
- * @since 1.2
- */
- public static class Subset
- {
- /** The name of the subset. */
- private final String name;
- /**
- * Construct a new subset of characters.
- *
- * @param name the name of the subset
- * @throws NullPointerException if name is null
- */
- protected Subset(String name)
- {
- // Note that name.toString() is name, unless name was null.
- this.name = name.toString();
- }
- /**
- * Compares two Subsets for equality. This is <code>final</code>, and
- * restricts the comparison on the <code>==</code> operator, so it returns
- * true only for the same object.
- *
- * @param o the object to compare
- * @return true if o is this
- */
- public final boolean equals(Object o)
- {
- return o == this;
- }
- /**
- * Makes the original hashCode of Object final, to be consistent with
- * equals.
- *
- * @return the hash code for this object
- */
- public final int hashCode()
- {
- return super.hashCode();
- }
- /**
- * Returns the name of the subset.
- *
- * @return the name
- */
- public final String toString()
- {
- return name;
- }
- } // class Subset
- /**
- * A family of character subsets in the Unicode specification. A character
- * is in at most one of these blocks.
- *
- * This inner class was generated automatically from
- * <code>libjava/gnu/gcj/convert/Blocks-3.txt</code>, by some perl scripts.
- * This Unicode definition file can be found on the
- * <a href="http://www.unicode.org">http://www.unicode.org</a> website.
- * JDK 1.4 uses Unicode version 3.0.0.
- *
- * @author scripts/unicode-blocks.pl (written by Eric Blake)
- * @since 1.2
- */
- public static final class UnicodeBlock extends Subset
- {
- /** The start of the subset. */
- private final int start;
- /** The end of the subset. */
- private final int end;
- /** The canonical name of the block according to the Unicode standard. */
- private final String canonicalName;
- /** Enumeration for the <code>forName()</code> method */
- private enum NameType { CANONICAL, NO_SPACES, CONSTANT; }
- /**
- * Constructor for strictly defined blocks.
- *
- * @param start the start character of the range
- * @param end the end character of the range
- * @param name the block name
- */
- private UnicodeBlock(int start, int end, String name,
- String canonicalName)
- {
- super(name);
- this.start = start;
- this.end = end;
- this.canonicalName = canonicalName;
- }
- /**
- * Returns the Unicode character block which a character belongs to.
- * <strong>Note</strong>: This method does not support the use of
- * supplementary characters. For such support, <code>of(int)</code>
- * should be used instead.
- *
- * @param ch the character to look up
- * @return the set it belongs to, or null if it is not in one
- */
- public static UnicodeBlock of(char ch)
- {
- return of((int) ch);
- }
- /**
- * Returns the Unicode character block which a code point belongs to.
- *
- * @param codePoint the character to look up
- * @return the set it belongs to, or null if it is not in one.
- * @throws IllegalArgumentException if the specified code point is
- * invalid.
- * @since 1.5
- */
- public static UnicodeBlock of(int codePoint)
- {
- if (codePoint > MAX_CODE_POINT)
- throw new IllegalArgumentException("The supplied integer value is " +
- "too large to be a codepoint.");
- // Simple binary search for the correct block.
- int low = 0;
- int hi = sets.length - 1;
- while (low <= hi)
- {
- int mid = (low + hi) >> 1;
- UnicodeBlock b = sets[mid];
- if (codePoint < b.start)
- hi = mid - 1;
- else if (codePoint > b.end)
- low = mid + 1;
- else
- return b;
- }
- return null;
- }
- /**
- * <p>
- * Returns the <code>UnicodeBlock</code> with the given name, as defined
- * by the Unicode standard. The version of Unicode in use is defined by
- * the <code>Character</code> class, and the names are given in the
- * <code>Blocks-<version>.txt</code> file corresponding to that version.
- * The name may be specified in one of three ways:
- * </p>
- * <ol>
- * <li>The canonical, human-readable name used by the Unicode standard.
- * This is the name with all spaces and hyphens retained. For example,
- * `Basic Latin' retrieves the block, UnicodeBlock.BASIC_LATIN.</li>
- * <li>The canonical name with all spaces removed e.g. `BasicLatin'.</li>
- * <li>The name used for the constants specified by this class, which
- * is the canonical name with all spaces and hyphens replaced with
- * underscores e.g. `BASIC_LATIN'</li>
- * </ol>
- * <p>
- * The names are compared case-insensitively using the case comparison
- * associated with the U.S. English locale. The method recognises the
- * previous names used for blocks as well as the current ones. At
- * present, this simply means that the deprecated `SURROGATES_AREA'
- * will be recognised by this method (the <code>of()</code> methods
- * only return one of the three new surrogate blocks).
- * </p>
- *
- * @param blockName the name of the block to look up.
- * @return the specified block.
- * @throws NullPointerException if the <code>blockName</code> is
- * <code>null</code>.
- * @throws IllegalArgumentException if the name does not match any Unicode
- * block.
- * @since 1.5
- */
- public static final UnicodeBlock forName(String blockName)
- {
- NameType type;
- if (blockName.indexOf(' ') != -1)
- type = NameType.CANONICAL;
- else if (blockName.indexOf('_') != -1)
- type = NameType.CONSTANT;
- else
- type = NameType.NO_SPACES;
- Collator usCollator = Collator.getInstance(Locale.US);
- usCollator.setStrength(Collator.PRIMARY);
- /* Special case for deprecated blocks not in sets */
- switch (type)
- {
- case CANONICAL:
- if (usCollator.compare(blockName, "Surrogates Area") == 0)
- return SURROGATES_AREA;
- break;
- case NO_SPACES:
- if (usCollator.compare(blockName, "SurrogatesArea") == 0)
- return SURROGATES_AREA;
- break;
- case CONSTANT:
- if (usCollator.compare(blockName, "SURROGATES_AREA") == 0)
- return SURROGATES_AREA;
- break;
- }
- /* Other cases */
- switch (type)
- {
- case CANONICAL:
- for (UnicodeBlock block : sets)
- if (usCollator.compare(blockName, block.canonicalName) == 0)
- return block;
- break;
- case NO_SPACES:
- for (UnicodeBlock block : sets)
- {
- String nsName = block.canonicalName.replaceAll(" ","");
- if (usCollator.compare(blockName, nsName) == 0)
- return block;
- }
- break;
- case CONSTANT:
- for (UnicodeBlock block : sets)
- if (usCollator.compare(blockName, block.toString()) == 0)
- return block;
- break;
- }
- throw new IllegalArgumentException("No Unicode block found for " +
- blockName + ".");
- }
- /**
- * Basic Latin.
- * 0x0000 - 0x007F.
- */
- public static final UnicodeBlock BASIC_LATIN
- = new UnicodeBlock(0x0000, 0x007F,
- "BASIC_LATIN",
- "Basic Latin");
- /**
- * Latin-1 Supplement.
- * 0x0080 - 0x00FF.
- */
- public static final UnicodeBlock LATIN_1_SUPPLEMENT
- = new UnicodeBlock(0x0080, 0x00FF,
- "LATIN_1_SUPPLEMENT",
- "Latin-1 Supplement");
- /**
- * Latin Extended-A.
- * 0x0100 - 0x017F.
- */
- public static final UnicodeBlock LATIN_EXTENDED_A
- = new UnicodeBlock(0x0100, 0x017F,
- "LATIN_EXTENDED_A",
- "Latin Extended-A");
- /**
- * Latin Extended-B.
- * 0x0180 - 0x024F.
- */
- public static final UnicodeBlock LATIN_EXTENDED_B
- = new UnicodeBlock(0x0180, 0x024F,
- "LATIN_EXTENDED_B",
- "Latin Extended-B");
- /**
- * IPA Extensions.
- * 0x0250 - 0x02AF.
- */
- public static final UnicodeBlock IPA_EXTENSIONS
- = new UnicodeBlock(0x0250, 0x02AF,
- "IPA_EXTENSIONS",
- "IPA Extensions");
- /**
- * Spacing Modifier Letters.
- * 0x02B0 - 0x02FF.
- */
- public static final UnicodeBlock SPACING_MODIFIER_LETTERS
- = new UnicodeBlock(0x02B0, 0x02FF,
- "SPACING_MODIFIER_LETTERS",
- "Spacing Modifier Letters");
- /**
- * Combining Diacritical Marks.
- * 0x0300 - 0x036F.
- */
- public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS
- = new UnicodeBlock(0x0300, 0x036F,
- "COMBINING_DIACRITICAL_MARKS",
- "Combining Diacritical Marks");
- /**
- * Greek.
- * 0x0370 - 0x03FF.
- */
- public static final UnicodeBlock GREEK
- = new UnicodeBlock(0x0370, 0x03FF,
- "GREEK",
- "Greek");
- /**
- * Cyrillic.
- * 0x0400 - 0x04FF.
- */
- public static final UnicodeBlock CYRILLIC
- = new UnicodeBlock(0x0400, 0x04FF,
- "CYRILLIC",
- "Cyrillic");
- /**
- * Cyrillic Supplementary.
- * 0x0500 - 0x052F.
- * @since 1.5
- */
- public static final UnicodeBlock CYRILLIC_SUPPLEMENTARY
- = new UnicodeBlock(0x0500, 0x052F,
- "CYRILLIC_SUPPLEMENTARY",
- "Cyrillic Supplementary");
- /**
- * Armenian.
- * 0x0530 - 0x058F.
- */
- public static final UnicodeBlock ARMENIAN
- = new UnicodeBlock(0x0530, 0x058F,
- "ARMENIAN",
- "Armenian");
- /**
- * Hebrew.
- * 0x0590 - 0x05FF.
- */
- public static final UnicodeBlock HEBREW
- = new UnicodeBlock(0x0590, 0x05FF,
- "HEBREW",
- "Hebrew");
- /**
- * Arabic.
- * 0x0600 - 0x06FF.
- */
- public static final UnicodeBlock ARABIC
- = new UnicodeBlock(0x0600, 0x06FF,
- "ARABIC",
- "Arabic");
- /**
- * Syriac.
- * 0x0700 - 0x074F.
- * @since 1.4
- */
- public static final UnicodeBlock SYRIAC
- = new UnicodeBlock(0x0700, 0x074F,
- "SYRIAC",
- "Syriac");
- /**
- * Thaana.
- * 0x0780 - 0x07BF.
- * @since 1.4
- */
- public static final UnicodeBlock THAANA
- = new UnicodeBlock(0x0780, 0x07BF,
- "THAANA",
- "Thaana");
- /**
- * Devanagari.
- * 0x0900 - 0x097F.
- */
- public static final UnicodeBlock DEVANAGARI
- = new UnicodeBlock(0x0900, 0x097F,
- "DEVANAGARI",
- "Devanagari");
- /**
- * Bengali.
- * 0x0980 - 0x09FF.
- */
- public static final UnicodeBlock BENGALI
- = new UnicodeBlock(0x0980, 0x09FF,
- "BENGALI",
- "Bengali");
- /**
- * Gurmukhi.
- * 0x0A00 - 0x0A7F.
- */
- public static final UnicodeBlock GURMUKHI
- = new UnicodeBlock(0x0A00, 0x0A7F,
- "GURMUKHI",
- "Gurmukhi");
- /**
- * Gujarati.
- * 0x0A80 - 0x0AFF.
- */
- public static final UnicodeBlock GUJARATI
- = new UnicodeBlock(0x0A80, 0x0AFF,
- "GUJARATI",
- "Gujarati");
- /**
- * Oriya.
- * 0x0B00 - 0x0B7F.
- */
- public static final UnicodeBlock ORIYA
- = new UnicodeBlock(0x0B00, 0x0B7F,
- "ORIYA",
- "Oriya");
- /**
- * Tamil.
- * 0x0B80 - 0x0BFF.
- */
- public static final UnicodeBlock TAMIL
- = new UnicodeBlock(0x0B80, 0x0BFF,
- "TAMIL",
- "Tamil");
- /**
- * Telugu.
- * 0x0C00 - 0x0C7F.
- */
- public static final UnicodeBlock TELUGU
- = new UnicodeBlock(0x0C00, 0x0C7F,
- "TELUGU",
- "Telugu");
- /**
- * Kannada.
- * 0x0C80 - 0x0CFF.
- */
- public static final UnicodeBlock KANNADA
- = new UnicodeBlock(0x0C80, 0x0CFF,
- "KANNADA",
- "Kannada");
- /**
- * Malayalam.
- * 0x0D00 - 0x0D7F.
- */
- public static final UnicodeBlock MALAYALAM
- = new UnicodeBlock(0x0D00, 0x0D7F,
- "MALAYALAM",
- "Malayalam");
- /**
- * Sinhala.
- * 0x0D80 - 0x0DFF.
- * @since 1.4
- */
- public static final UnicodeBlock SINHALA
- = new UnicodeBlock(0x0D80, 0x0DFF,
- "SINHALA",
- "Sinhala");
- /**
- * Thai.
- * 0x0E00 - 0x0E7F.
- */
- public static final UnicodeBlock THAI
- = new UnicodeBlock(0x0E00, 0x0E7F,
- "THAI",
- "Thai");
- /**
- * Lao.
- * 0x0E80 - 0x0EFF.
- */
- public static final UnicodeBlock LAO
- = new UnicodeBlock(0x0E80, 0x0EFF,
- "LAO",
- "Lao");
- /**
- * Tibetan.
- * 0x0F00 - 0x0FFF.
- */
- public static final UnicodeBlock TIBETAN
- = new UnicodeBlock(0x0F00, 0x0FFF,
- "TIBETAN",
- "Tibetan");
- /**
- * Myanmar.
- * 0x1000 - 0x109F.
- * @since 1.4
- */
- public static final UnicodeBlock MYANMAR
- = new UnicodeBlock(0x1000, 0x109F,
- "MYANMAR",
- "Myanmar");
- /**
- * Georgian.
- * 0x10A0 - 0x10FF.
- */
- public static final UnicodeBlock GEORGIAN
- = new UnicodeBlock(0x10A0, 0x10FF,
- "GEORGIAN",
- "Georgian");
- /**
- * Hangul Jamo.
- * 0x1100 - 0x11FF.
- */
- public static final UnicodeBlock HANGUL_JAMO
- = new UnicodeBlock(0x1100, 0x11FF,
- "HANGUL_JAMO",
- "Hangul Jamo");
- /**
- * Ethiopic.
- * 0x1200 - 0x137F.
- * @since 1.4
- */
- public static final UnicodeBlock ETHIOPIC
- = new UnicodeBlock(0x1200, 0x137F,
- "ETHIOPIC",
- "Ethiopic");
- /**
- * Cherokee.
- * 0x13A0 - 0x13FF.
- * @since 1.4
- */
- public static final UnicodeBlock CHEROKEE
- = new UnicodeBlock(0x13A0, 0x13FF,
- "CHEROKEE",
- "Cherokee");
- /**
- * Unified Canadian Aboriginal Syllabics.
- * 0x1400 - 0x167F.
- * @since 1.4
- */
- public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
- = new UnicodeBlock(0x1400, 0x167F,
- "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS",
- "Unified Canadian Aboriginal Syllabics");
- /**
- * Ogham.
- * 0x1680 - 0x169F.
- * @since 1.4
- */
- public static final UnicodeBlock OGHAM
- = new UnicodeBlock(0x1680, 0x169F,
- "OGHAM",
- "Ogham");
- /**
- * Runic.
- * 0x16A0 - 0x16FF.
- * @since 1.4
- */
- public static final UnicodeBlock RUNIC
- = new UnicodeBlock(0x16A0, 0x16FF,
- "RUNIC",
- "Runic");
- /**
- * Tagalog.
- * 0x1700 - 0x171F.
- * @since 1.5
- */
- public static final UnicodeBlock TAGALOG
- = new UnicodeBlock(0x1700, 0x171F,
- "TAGALOG",
- "Tagalog");
- /**
- * Hanunoo.
- * 0x1720 - 0x173F.
- * @since 1.5
- */
- public static final UnicodeBlock HANUNOO
- = new UnicodeBlock(0x1720, 0x173F,
- "HANUNOO",
- "Hanunoo");
- /**
- * Buhid.
- * 0x1740 - 0x175F.
- * @since 1.5
- */
- public static final UnicodeBlock BUHID
- = new UnicodeBlock(0x1740, 0x175F,
- "BUHID",
- "Buhid");
- /**
- * Tagbanwa.
- * 0x1760 - 0x177F.
- * @since 1.5
- */
- public static final UnicodeBlock TAGBANWA
- = new UnicodeBlock(0x1760, 0x177F,
- "TAGBANWA",
- "Tagbanwa");
- /**
- * Khmer.
- * 0x1780 - 0x17FF.
- * @since 1.4
- */
- public static final UnicodeBlock KHMER
- = new UnicodeBlock(0x1780, 0x17FF,
- "KHMER",
- "Khmer");
- /**
- * Mongolian.
- * 0x1800 - 0x18AF.
- * @since 1.4
- */
- public static final UnicodeBlock MONGOLIAN
- = new UnicodeBlock(0x1800, 0x18AF,
- "MONGOLIAN",
- "Mongolian");
- /**
- * Limbu.
- * 0x1900 - 0x194F.
- * @since 1.5
- */
- public static final UnicodeBlock LIMBU
- = new UnicodeBlock(0x1900, 0x194F,
- "LIMBU",
- "Limbu");
- /**
- * Tai Le.
- * 0x1950 - 0x197F.
- * @since 1.5
- */
- public static final UnicodeBlock TAI_LE
- = new UnicodeBlock(0x1950, 0x197F,
- "TAI_LE",
- "Tai Le");
- /**
- * Khmer Symbols.
- * 0x19E0 - 0x19FF.
- * @since 1.5
- */
- public static final UnicodeBlock KHMER_SYMBOLS
- = new UnicodeBlock(0x19E0, 0x19FF,
- "KHMER_SYMBOLS",
- "Khmer Symbols");
- /**
- * Phonetic Extensions.
- * 0x1D00 - 0x1D7F.
- * @since 1.5
- */
- public static final UnicodeBlock PHONETIC_EXTENSIONS
- = new UnicodeBlock(0x1D00, 0x1D7F,
- "PHONETIC_EXTENSIONS",
- "Phonetic Extensions");
- /**
- * Latin Extended Additional.
- * 0x1E00 - 0x1EFF.
- */
- public static final UnicodeBlock LATIN_EXTENDED_ADDITIONAL
- = new UnicodeBlock(0x1E00, 0x1EFF,
- "LATIN_EXTENDED_ADDITIONAL",
- "Latin Extended Additional");
- /**
- * Greek Extended.
- * 0x1F00 - 0x1FFF.
- */
- public static final UnicodeBlock GREEK_EXTENDED
- = new UnicodeBlock(0x1F00, 0x1FFF,
- "GREEK_EXTENDED",
- "Greek Extended");
- /**
- * General Punctuation.
- * 0x2000 - 0x206F.
- */
- public static final UnicodeBlock GENERAL_PUNCTUATION
- = new UnicodeBlock(0x2000, 0x206F,
- "GENERAL_PUNCTUATION",
- "General Punctuation");
- /**
- * Superscripts and Subscripts.
- * 0x2070 - 0x209F.
- */
- public static final UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS
- = new UnicodeBlock(0x2070, 0x209F,
- "SUPERSCRIPTS_AND_SUBSCRIPTS",
- "Superscripts and Subscripts");
- /**
- * Currency Symbols.
- * 0x20A0 - 0x20CF.
- */
- public static final UnicodeBlock CURRENCY_SYMBOLS
- = new UnicodeBlock(0x20A0, 0x20CF,
- "CURRENCY_SYMBOLS",
- "Currency Symbols");
- /**
- * Combining Marks for Symbols.
- * 0x20D0 - 0x20FF.
- */
- public static final UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS
- = new UnicodeBlock(0x20D0, 0x20FF,
- "COMBINING_MARKS_FOR_SYMBOLS",
- "Combining Marks for Symbols");
- /**
- * Letterlike Symbols.
- * 0x2100 - 0x214F.
- */
- public static final UnicodeBlock LETTERLIKE_SYMBOLS
- = new UnicodeBlock(0x2100, 0x214F,
- "LETTERLIKE_SYMBOLS",
- "Letterlike Symbols");
- /**
- * Number Forms.
- * 0x2150 - 0x218F.
- */
- public static final UnicodeBlock NUMBER_FORMS
- = new UnicodeBlock(0x2150, 0x218F,
- "NUMBER_FORMS",
- "Number Forms");
- /**
- * Arrows.
- * 0x2190 - 0x21FF.
- */
- public static final UnicodeBlock ARROWS
- = new UnicodeBlock(0x2190, 0x21FF,
- "ARROWS",
- "Arrows");
- /**
- * Mathematical Operators.
- * 0x2200 - 0x22FF.
- */
- public static final UnicodeBlock MATHEMATICAL_OPERATORS
- = new UnicodeBlock(0x2200, 0x22FF,
- "MATHEMATICAL_OPERATORS",
- "Mathematical Operators");
- /**
- * Miscellaneous Technical.
- * 0x2300 - 0x23FF.
- */
- public static final UnicodeBlock MISCELLANEOUS_TECHNICAL
- = new UnicodeBlock(0x2300, 0x23FF,
- "MISCELLANEOUS_TECHNICAL",
- "Miscellaneous Technical");
- /**
- * Control Pictures.
- * 0x2400 - 0x243F.
- */
- public static final UnicodeBlock CONTROL_PICTURES
- = new UnicodeBlock(0x2400, 0x243F,
- "CONTROL_PICTURES",
- "Control Pictures");
- /**
- * Optical Character Recognition.
- * 0x2440 - 0x245F.
- */
- public static final UnicodeBlock OPTICAL_CHARACTER_RECOGNITION
- = new UnicodeBlock(0x2440, 0x245F,
- "OPTICAL_CHARACTER_RECOGNITION",
- "Optical Character Recognition");
- /**
- * Enclosed Alphanumerics.
- * 0x2460 - 0x24FF.
- */
- public static final UnicodeBlock ENCLOSED_ALPHANUMERICS
- = new UnicodeBlock(0x2460, 0x24FF,
- "ENCLOSED_ALPHANUMERICS",
- "Enclosed Alphanumerics");
- /**
- * Box Drawing.
- * 0x2500 - 0x257F.
- */
- public static final UnicodeBlock BOX_DRAWING
- = new UnicodeBlock(0x2500, 0x257F,
- "BOX_DRAWING",
- "Box Drawing");
- /**
- * Block Elements.
- * 0x2580 - 0x259F.
- */
- public static final UnicodeBlock BLOCK_ELEMENTS
- = new UnicodeBlock(0x2580, 0x259F,
- "BLOCK_ELEMENTS",
- "Block Elements");
- /**
- * Geometric Shapes.
- * 0x25A0 - 0x25FF.
- */
- public static final UnicodeBlock GEOMETRIC_SHAPES
- = new UnicodeBlock(0x25A0, 0x25FF,
- "GEOMETRIC_SHAPES",
- "Geometric Shapes");
- /**
- * Miscellaneous Symbols.
- * 0x2600 - 0x26FF.
- */
- public static final UnicodeBlock MISCELLANEOUS_SYMBOLS
- = new UnicodeBlock(0x2600, 0x26FF,
- "MISCELLANEOUS_SYMBOLS",
- "Miscellaneous Symbols");
- /**
- * Dingbats.
- * 0x2700 - 0x27BF.
- */
- public static final UnicodeBlock DINGBATS
- = new UnicodeBlock(0x2700, 0x27BF,
- "DINGBATS",
- "Dingbats");
- /**
- * Miscellaneous Mathematical Symbols-A.
- * 0x27C0 - 0x27EF.
- * @since 1.5
- */
- public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A
- = new UnicodeBlock(0x27C0, 0x27EF,
- "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A",
- "Miscellaneous Mathematical Symbols-A");
- /**
- * Supplemental Arrows-A.
- * 0x27F0 - 0x27FF.
- * @since 1.5
- */
- public static final UnicodeBlock SUPPLEMENTAL_ARROWS_A
- = new UnicodeBlock(0x27F0, 0x27FF,
- "SUPPLEMENTAL_ARROWS_A",
- "Supplemental Arrows-A");
- /**
- * Braille Patterns.
- * 0x2800 - 0x28FF.
- * @since 1.4
- */
- public static final UnicodeBlock BRAILLE_PATTERNS
- = new UnicodeBlock(0x2800, 0x28FF,
- "BRAILLE_PATTERNS",
- "Braille Patterns");
- /**
- * Supplemental Arrows-B.
- * 0x2900 - 0x297F.
- * @since 1.5
- */
- public static final UnicodeBlock SUPPLEMENTAL_ARROWS_B
- = new UnicodeBlock(0x2900, 0x297F,
- "SUPPLEMENTAL_ARROWS_B",
- "Supplemental Arrows-B");
- /**
- * Miscellaneous Mathematical Symbols-B.
- * 0x2980 - 0x29FF.
- * @since 1.5
- */
- public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B
- = new UnicodeBlock(0x2980, 0x29FF,
- "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B",
- "Miscellaneous Mathematical Symbols-B");
- /**
- * Supplemental Mathematical Operators.
- * 0x2A00 - 0x2AFF.
- * @since 1.5
- */
- public static final UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS
- = new UnicodeBlock(0x2A00, 0x2AFF,
- "SUPPLEMENTAL_MATHEMATICAL_OPERATORS",
- "Supplemental Mathematical Operators");
- /**
- * Miscellaneous Symbols and Arrows.
- * 0x2B00 - 0x2BFF.
- * @since 1.5
- */
- public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS
- = new UnicodeBlock(0x2B00, 0x2BFF,
- "MISCELLANEOUS_SYMBOLS_AND_ARROWS",
- "Miscellaneous Symbols and Arrows");
- /**
- * CJK Radicals Supplement.
- * 0x2E80 - 0x2EFF.
- * @since 1.4
- */
- public static final UnicodeBlock CJK_RADICALS_SUPPLEMENT
- = new UnicodeBlock(0x2E80, 0x2EFF,
- "CJK_RADICALS_SUPPLEMENT",
- "CJK Radicals Supplement");
- /**
- * Kangxi Radicals.
- * 0x2F00 - 0x2FDF.
- * @since 1.4
- */
- public static final UnicodeBlock KANGXI_RADICALS
- = new UnicodeBlock(0x2F00, 0x2FDF,
- "KANGXI_RADICALS",
- "Kangxi Radicals");
- /**
- * Ideographic Description Characters.
- * 0x2FF0 - 0x2FFF.
- * @since 1.4
- */
- public static final UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS
- = new UnicodeBlock(0x2FF0, 0x2FFF,
- "IDEOGRAPHIC_DESCRIPTION_CHARACTERS",
- "Ideographic Description Characters");
- /**
- * CJK Symbols and Punctuation.
- * 0x3000 - 0x303F.
- */
- public static final UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION
- = new UnicodeBlock(0x3000, 0x303F,
- "CJK_SYMBOLS_AND_PUNCTUATION",
- "CJK Symbols and Punctuation");
- /**
- * Hiragana.
- * 0x3040 - 0x309F.
- */
- public static final UnicodeBlock HIRAGANA
- = new UnicodeBlock(0x3040, 0x309F,
- "HIRAGANA",
- "Hiragana");
- /**
- * Katakana.
- * 0x30A0 - 0x30FF.
- */
- public static final UnicodeBlock KATAKANA
- = new UnicodeBlock(0x30A0, 0x30FF,
- "KATAKANA",
- "Katakana");
- /**
- * Bopomofo.
- * 0x3100 - 0x312F.
- */
- public static final UnicodeBlock BOPOMOFO
- = new UnicodeBlock(0x3100, 0x312F,
- "BOPOMOFO",
- "Bopomofo");
- /**
- * Hangul Compatibility Jamo.
- * 0x3130 - 0x318F.
- */
- public static final UnicodeBlock HANGUL_COMPATIBILITY_JAMO
- = new UnicodeBlock(0x3130, 0x318F,
- "HANGUL_COMPATIBILITY_JAMO",
- "Hangul Compatibility Jamo");
- /**
- * Kanbun.
- * 0x3190 - 0x319F.
- */
- public static final UnicodeBlock KANBUN
- = new UnicodeBlock(0x3190, 0x319F,
- "KANBUN",
- "Kanbun");
- /**
- * Bopomofo Extended.
- * 0x31A0 - 0x31BF.
- * @since 1.4
- */
- public static final UnicodeBlock BOPOMOFO_EXTENDED
- = new UnicodeBlock(0x31A0, 0x31BF,
- "BOPOMOFO_EXTENDED",
- "Bopomofo Extended");
- /**
- * Katakana Phonetic Extensions.
- * 0x31F0 - 0x31FF.
- * @since 1.5
- */
- public static final UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS
- = new UnicodeBlock(0x31F0, 0x31FF,
- "KATAKANA_PHONETIC_EXTENSIONS",
- "Katakana Phonetic Extensions");
- /**
- * Enclosed CJK Letters and Months.
- * 0x3200 - 0x32FF.
- */
- public static final UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS
- = new UnicodeBlock(0x3200, 0x32FF,
- "ENCLOSED_CJK_LETTERS_AND_MONTHS",
- "Enclosed CJK Letters and Months");
- /**
- * CJK Compatibility.
- * 0x3300 - 0x33FF.
- */
- public static final UnicodeBlock CJK_COMPATIBILITY
- = new UnicodeBlock(0x3300, 0x33FF,
- "CJK_COMPATIBILITY",
- "CJK Compatibility");
- /**
- * CJK Unified Ideographs Extension A.
- * 0x3400 - 0x4DBF.
- * @since 1.4
- */
- public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
- = new UnicodeBlock(0x3400, 0x4DBF,
- "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A",
- "CJK Unified Ideographs Extension A");
- /**
- * Yijing Hexagram Symbols.
- * 0x4DC0 - 0x4DFF.
- * @since 1.5
- */
- public static final UnicodeBlock YIJING_HEXAGRAM_SYMBOLS
- = new UnicodeBlock(0x4DC0, 0x4DFF,
- "YIJING_HEXAGRAM_SYMBOLS",
- "Yijing Hexagram Symbols");
- /**
- * CJK Unified Ideographs.
- * 0x4E00 - 0x9FFF.
- */
- public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS
- = new UnicodeBlock(0x4E00, 0x9FFF,
- "CJK_UNIFIED_IDEOGRAPHS",
- "CJK Unified Ideographs");
- /**
- * Yi Syllables.
- * 0xA000 - 0xA48F.
- * @since 1.4
- */
- public static final UnicodeBlock YI_SYLLABLES
- = new UnicodeBlock(0xA000, 0xA48F,
- "YI_SYLLABLES",
- "Yi Syllables");
- /**
- * Yi Radicals.
- * 0xA490 - 0xA4CF.
- * @since 1.4
- */
- public static final UnicodeBlock YI_RADICALS
- = new UnicodeBlock(0xA490, 0xA4CF,
- "YI_RADICALS",
- "Yi Radicals");
- /**
- * Hangul Syllables.
- * 0xAC00 - 0xD7AF.
- */
- public static final UnicodeBlock HANGUL_SYLLABLES
- = new UnicodeBlock(0xAC00, 0xD7AF,
- "HANGUL_SYLLABLES",
- "Hangul Syllables");
- /**
- * High Surrogates.
- * 0xD800 - 0xDB7F.
- * @since 1.5
- */
- public static final UnicodeBlock HIGH_SURROGATES
- = new UnicodeBlock(0xD800, 0xDB7F,
- "HIGH_SURROGATES",
- "High Surrogates");
- /**
- * High Private Use Surrogates.
- * 0xDB80 - 0xDBFF.
- * @since 1.5
- */
- public static final UnicodeBlock HIGH_PRIVATE_USE_SURROGATES
- = new UnicodeBlock(0xDB80, 0xDBFF,
- "HIGH_PRIVATE_USE_SURROGATES",
- "High Private Use Surrogates");
- /**
- * Low Surrogates.
- * 0xDC00 - 0xDFFF.
- * @since 1.5
- */
- public static final UnicodeBlock LOW_SURROGATES
- = new UnicodeBlock(0xDC00, 0xDFFF,
- "LOW_SURROGATES",
- "Low Surrogates");
- /**
- * Private Use Area.
- * 0xE000 - 0xF8FF.
- */
- public static final UnicodeBlock PRIVATE_USE_AREA
- = new UnicodeBlock(0xE000, 0xF8FF,
- "PRIVATE_USE_AREA",
- "Private Use Area");
- /**
- * CJK Compatibility Ideographs.
- * 0xF900 - 0xFAFF.
- */
- public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS
- = new UnicodeBlock(0xF900, 0xFAFF,
- "CJK_COMPATIBILITY_IDEOGRAPHS",
- "CJK Compatibility Ideographs");
- /**
- * Alphabetic Presentation Forms.
- * 0xFB00 - 0xFB4F.
- */
- public static final UnicodeBlock ALPHABETIC_PRESENTATION_FORMS
- = new UnicodeBlock(0xFB00, 0xFB4F,
- "ALPHABETIC_PRESENTATION_FORMS",
- "Alphabetic Presentation Forms");
- /**
- * Arabic Presentation Forms-A.
- * 0xFB50 - 0xFDFF.
- */
- public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_A
- = new UnicodeBlock(0xFB50, 0xFDFF,
- "ARABIC_PRESENTATION_FORMS_A",
- "Arabic Presentation Forms-A");
- /**
- * Variation Selectors.
- * 0xFE00 - 0xFE0F.
- * @since 1.5
- */
- public static final UnicodeBlock VARIATION_SELECTORS
- = new UnicodeBlock(0xFE00, 0xFE0F,
- "VARIATION_SELECTORS",
- "Variation Selectors");
- /**
- * Combining Half Marks.
- * 0xFE20 - 0xFE2F.
- */
- public static final UnicodeBlock COMBINING_HALF_MARKS
- = new UnicodeBlock(0xFE20, 0xFE2F,
- "COMBINING_HALF_MARKS",
- "Combining Half Marks");
- /**
- * CJK Compatibility Forms.
- * 0xFE30 - 0xFE4F.
- */
- public static final UnicodeBlock CJK_COMPATIBILITY_FORMS
- = new UnicodeBlock(0xFE30, 0xFE4F,
- "CJK_COMPATIBILITY_FORMS",
- "CJK Compatibility Forms");
- /**
- * Small Form Variants.
- * 0xFE50 - 0xFE6F.
- */
- public static final UnicodeBlock SMALL_FORM_VARIANTS
- = new UnicodeBlock(0xFE50, 0xFE6F,
- "SMALL_FORM_VARIANTS",
- "Small Form Variants");
- /**
- * Arabic Presentation Forms-B.
- * 0xFE70 - 0xFEFF.
- */
- public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_B
- = new UnicodeBlock(0xFE70, 0xFEFF,
- "ARABIC_PRESENTATION_FORMS_B",
- "Arabic Presentation Forms-B");
- /**
- * Halfwidth and Fullwidth Forms.
- * 0xFF00 - 0xFFEF.
- */
- public static final UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS
- = new UnicodeBlock(0xFF00, 0xFFEF,
- "HALFWIDTH_AND_FULLWIDTH_FORMS",
- "Halfwidth and Fullwidth Forms");
- /**
- * Specials.
- * 0xFFF0 - 0xFFFF.
- */
- public static final UnicodeBlock SPECIALS
- = new UnicodeBlock(0xFFF0, 0xFFFF,
- "SPECIALS",
- "Specials");
- /**
- * Linear B Syllabary.
- * 0x10000 - 0x1007F.
- * @since 1.5
- */
- public static final UnicodeBlock LINEAR_B_SYLLABARY
- = new UnicodeBlock(0x10000, 0x1007F,
- "LINEAR_B_SYLLABARY",
- "Linear B Syllabary");
- /**
- * Linear B Ideograms.
- * 0x10080 - 0x100FF.
- * @since 1.5
- */
- public static final UnicodeBlock LINEAR_B_IDEOGRAMS
- = new UnicodeBlock(0x10080, 0x100FF,
- "LINEAR_B_IDEOGRAMS",
- "Linear B Ideograms");
- /**
- * Aegean Numbers.
- * 0x10100 - 0x1013F.
- * @since 1.5
- */
- public static final UnicodeBlock AEGEAN_NUMBERS
- = new UnicodeBlock(0x10100, 0x1013F,
- "AEGEAN_NUMBERS",
- "Aegean Numbers");
- /**
- * Old Italic.
- * 0x10300 - 0x1032F.
- * @since 1.5
- */
- public static final UnicodeBlock OLD_ITALIC
- = new UnicodeBlock(0x10300, 0x1032F,
- "OLD_ITALIC",
- "Old Italic");
- /**
- * Gothic.
- * 0x10330 - 0x1034F.
- * @since 1.5
- */
- public static final UnicodeBlock GOTHIC
- = new UnicodeBlock(0x10330, 0x1034F,
- "GOTHIC",
- "Gothic");
- /**
- * Ugaritic.
- * 0x10380 - 0x1039F.
- * @since 1.5
- */
- public static final UnicodeBlock UGARITIC
- = new UnicodeBlock(0x10380, 0x1039F,
- "UGARITIC",
- "Ugaritic");
- /**
- * Deseret.
- * 0x10400 - 0x1044F.
- * @since 1.5
- */
- public static final UnicodeBlock DESERET
- = new UnicodeBlock(0x10400, 0x1044F,
- "DESERET",
- "Deseret");
- /**
- * Shavian.
- * 0x10450 - 0x1047F.
- * @since 1.5
- */
- public static final UnicodeBlock SHAVIAN
- = new UnicodeBlock(0x10450, 0x1047F,
- "SHAVIAN",
- "Shavian");
- /**
- * Osmanya.
- * 0x10480 - 0x104AF.
- * @since 1.5
- */
- public static final UnicodeBlock OSMANYA
- = new UnicodeBlock(0x10480, 0x104AF,
- "OSMANYA",
- "Osmanya");
- /**
- * Cypriot Syllabary.
- * 0x10800 - 0x1083F.
- * @since 1.5
- */
- public static final UnicodeBlock CYPRIOT_SYLLABARY
- = new UnicodeBlock(0x10800, 0x1083F,
- "CYPRIOT_SYLLABARY",
- "Cypriot Syllabary");
- /**
- * Byzantine Musical Symbols.
- * 0x1D000 - 0x1D0FF.
- * @since 1.5
- */
- public static final UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS
- = new UnicodeBlock(0x1D000, 0x1D0FF,
- "BYZANTINE_MUSICAL_SYMBOLS",
- "Byzantine Musical Symbols");
- /**
- * Musical Symbols.
- * 0x1D100 - 0x1D1FF.
- * @since 1.5
- */
- public static final UnicodeBlock MUSICAL_SYMBOLS
- = new UnicodeBlock(0x1D100, 0x1D1FF,
- "MUSICAL_SYMBOLS",
- "Musical Symbols");
- /**
- * Tai Xuan Jing Symbols.
- * 0x1D300 - 0x1D35F.
- * @since 1.5
- */
- public static final UnicodeBlock TAI_XUAN_JING_SYMBOLS
- = new UnicodeBlock(0x1D300, 0x1D35F,
- "TAI_XUAN_JING_SYMBOLS",
- "Tai Xuan Jing Symbols");
- /**
- * Mathematical Alphanumeric Symbols.
- * 0x1D400 - 0x1D7FF.
- * @since 1.5
- */
- public static final UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS
- = new UnicodeBlock(0x1D400, 0x1D7FF,
- "MATHEMATICAL_ALPHANUMERIC_SYMBOLS",
- "Mathematical Alphanumeric Symbols");
- /**
- * CJK Unified Ideographs Extension B.
- * 0x20000 - 0x2A6DF.
- * @since 1.5
- */
- public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
- = new UnicodeBlock(0x20000, 0x2A6DF,
- "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B",
- "CJK Unified Ideographs Extension B");
- /**
- * CJK Compatibility Ideographs Supplement.
- * 0x2F800 - 0x2FA1F.
- * @since 1.5
- */
- public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT
- = new UnicodeBlock(0x2F800, 0x2FA1F,
- "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT",
- "CJK Compatibility Ideographs Supplement");
- /**
- * Tags.
- * 0xE0000 - 0xE007F.
- * @since 1.5
- */
- public static final UnicodeBlock TAGS
- = new UnicodeBlock(0xE0000, 0xE007F,
- "TAGS",
- "Tags");
- /**
- * Variation Selectors Supplement.
- * 0xE0100 - 0xE01EF.
- * @since 1.5
- */
- public static final UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT
- = new UnicodeBlock(0xE0100, 0xE01EF,
- "VARIATION_SELECTORS_SUPPLEMENT",
- "Variation Selectors Supplement");
- /**
- * Supplementary Private Use Area-A.
- * 0xF0000 - 0xFFFFF.
- * @since 1.5
- */
- public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A
- = new UnicodeBlock(0xF0000, 0xFFFFF,
- "SUPPLEMENTARY_PRIVATE_USE_AREA_A",
- "Supplementary Private Use Area-A");
- /**
- * Supplementary Private Use Area-B.
- * 0x100000 - 0x10FFFF.
- * @since 1.5
- */
- public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B
- = new UnicodeBlock(0x100000, 0x10FFFF,
- "SUPPLEMENTARY_PRIVATE_USE_AREA_B",
- "Supplementary Private Use Area-B");
- /**
- * Surrogates Area.
- * 'D800' - 'DFFF'.
- * @deprecated As of 1.5, the three areas,
- * <a href="#HIGH_SURROGATES">HIGH_SURROGATES</a>,
- * <a href="#HIGH_PRIVATE_USE_SURROGATES">HIGH_PRIVATE_USE_SURROGATES</a>
- * and <a href="#LOW_SURROGATES">LOW_SURROGATES</a>, as defined
- * by the Unicode standard, should be used in preference to
- * this. These are also returned from calls to <code>of(int)</code>
- * and <code>of(char)</code>.
- */
- @Deprecated
- public static final UnicodeBlock SURROGATES_AREA
- = new UnicodeBlock(0xD800, 0xDFFF,
- "SURROGATES_AREA",
- "Surrogates Area");
- /**
- * The defined subsets.
- */
- private static final UnicodeBlock sets[] = {
- BASIC_LATIN,
- LATIN_1_SUPPLEMENT,
- LATIN_EXTENDED_A,
- LATIN_EXTENDED_B,
- IPA_EXTENSIONS,
- SPACING_MODIFIER_LETTERS,
- COMBINING_DIACRITICAL_MARKS,
- GREEK,
- CYRILLIC,
- CYRILLIC_SUPPLEMENTARY,
- ARMENIAN,
- HEBREW,
- ARABIC,
- SYRIAC,
- THAANA,
- DEVANAGARI,
- BENGALI,
- GURMUKHI,
- GUJARATI,
- ORIYA,
- TAMIL,
- TELUGU,
- KANNADA,
- MALAYALAM,
- SINHALA,
- THAI,
- LAO,
- TIBETAN,
- MYANMAR,
- GEORGIAN,
- HANGUL_JAMO,
- ETHIOPIC,
- CHEROKEE,
- UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS,
- OGHAM,
- RUNIC,
- TAGALOG,
- HANUNOO,
- BUHID,
- TAGBANWA,
- KHMER,
- MONGOLIAN,
- LIMBU,
- TAI_LE,
- KHMER_SYMBOLS,
- PHONETIC_EXTENSIONS,
- LATIN_EXTENDED_ADDITIONAL,
- GREEK_EXTENDED,
- GENERAL_PUNCTUATION,
- SUPERSCRIPTS_AND_SUBSCRIPTS,
- CURRENCY_SYMBOLS,
- COMBINING_MARKS_FOR_SYMBOLS,
- LETTERLIKE_SYMBOLS,
- NUMBER_FORMS,
- ARROWS,
- MATHEMATICAL_OPERATORS,
- MISCELLANEOUS_TECHNICAL,
- CONTROL_PICTURES,
- OPTICAL_CHARACTER_RECOGNITION,
- ENCLOSED_ALPHANUMERICS,
- BOX_DRAWING,
- BLOCK_ELEMENTS,
- GEOMETRIC_SHAPES,
- MISCELLANEOUS_SYMBOLS,
- DINGBATS,
- MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A,
- SUPPLEMENTAL_ARROWS_A,
- BRAILLE_PATTERNS,
- SUPPLEMENTAL_ARROWS_B,
- MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B,
- SUPPLEMENTAL_MATHEMATICAL_OPERATORS,
- MISCELLANEOUS_SYMBOLS_AND_ARROWS,
- CJK_RADICALS_SUPPLEMENT,
- KANGXI_RADICALS,
- IDEOGRAPHIC_DESCRIPTION_CHARACTERS,
- CJK_SYMBOLS_AND_PUNCTUATION,
- HIRAGANA,
- KATAKANA,
- BOPOMOFO,
- HANGUL_COMPATIBILITY_JAMO,
- KANBUN,
- BOPOMOFO_EXTENDED,
- KATAKANA_PHONETIC_EXTENSIONS,
- ENCLOSED_CJK_LETTERS_AND_MONTHS,
- CJK_COMPATIBILITY,
- CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A,
- YIJING_HEXAGRAM_SYMBOLS,
- CJK_UNIFIED_IDEOGRAPHS,
- YI_SYLLABLES,
- YI_RADICALS,
- HANGUL_SYLLABLES,
- HIGH_SURROGATES,
- HIGH_PRIVATE_USE_SURROGATES,
- LOW_SURROGATES,
- PRIVATE_USE_AREA,
- CJK_COMPATIBILITY_IDEOGRAPHS,
- ALPHABETIC_PRESENTATION_FORMS,
- ARABIC_PRESENTATION_FORMS_A,
- VARIATION_SELECTORS,
- COMBINING_HALF_MARKS,
- CJK_COMPATIBILITY_FORMS,
- SMALL_FORM_VARIANTS,
- ARABIC_PRESENTATION_FORMS_B,
- HALFWIDTH_AND_FULLWIDTH_FORMS,
- SPECIALS,
- LINEAR_B_SYLLABARY,
- LINEAR_B_IDEOGRAMS,
- AEGEAN_NUMBERS,
- OLD_ITALIC,
- GOTHIC,
- UGARITIC,
- DESERET,
- SHAVIAN,
- OSMANYA,
- CYPRIOT_SYLLABARY,
- BYZANTINE_MUSICAL_SYMBOLS,
- MUSICAL_SYMBOLS,
- TAI_XUAN_JING_SYMBOLS,
- MATHEMATICAL_ALPHANUMERIC_SYMBOLS,
- CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B,
- CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT,
- TAGS,
- VARIATION_SELECTORS_SUPPLEMENT,
- SUPPLEMENTARY_PRIVATE_USE_AREA_A,
- SUPPLEMENTARY_PRIVATE_USE_AREA_B,
- };
- } // class UnicodeBlock
- /**
- * The immutable value of this Character.
- *
- * @serial the value of this Character
- */
- private final char value;
- /**
- * Compatible with JDK 1.0+.
- */
- private static final long serialVersionUID = 3786198910865385080L;
- /**
- * Smallest value allowed for radix arguments in Java. This value is 2.
- *
- * @see #digit(char, int)
- * @see #forDigit(int, int)
- * @see Integer#toString(int, int)
- * @see Integer#valueOf(String)
- */
- public static final int MIN_RADIX = 2;
- /**
- * Largest value allowed for radix arguments in Java. This value is 36.
- *
- * @see #digit(char, int)
- * @see #forDigit(int, int)
- * @see Integer#toString(int, int)
- * @see Integer#valueOf(String)
- */
- public static final int MAX_RADIX = 36;
- /**
- * The minimum value the char data type can hold.
- * This value is <code>'\\u0000'</code>.
- */
- public static final char MIN_VALUE = '\u0000';
- /**
- * The maximum value the char data type can hold.
- * This value is <code>'\\uFFFF'</code>.
- */
- public static final char MAX_VALUE = '\uFFFF';
- /**
- * The minimum Unicode 4.0 code point. This value is <code>0</code>.
- * @since 1.5
- */
- public static final int MIN_CODE_POINT = 0;
- /**
- * The maximum Unicode 4.0 code point, which is greater than the range
- * of the char data type.
- * This value is <code>0x10FFFF</code>.
- * @since 1.5
- */
- public static final int MAX_CODE_POINT = 0x10FFFF;
- /**
- * The minimum Unicode high surrogate code unit, or
- * <emph>leading-surrogate</emph>, in the UTF-16 character encoding.
- * This value is <code>'\uD800'</code>.
- * @since 1.5
- */
- public static final char MIN_HIGH_SURROGATE = '\uD800';
- /**
- * The maximum Unicode high surrogate code unit, or
- * <emph>leading-surrogate</emph>, in the UTF-16 character encoding.
- * This value is <code>'\uDBFF'</code>.
- * @since 1.5
- */
- public static final char MAX_HIGH_SURROGATE = '\uDBFF';
- /**
- * The minimum Unicode low surrogate code unit, or
- * <emph>trailing-surrogate</emph>, in the UTF-16 character encoding.
- * This value is <code>'\uDC00'</code>.
- * @since 1.5
- */
- public static final char MIN_LOW_SURROGATE = '\uDC00';
- /**
- * The maximum Unicode low surrogate code unit, or
- * <emph>trailing-surrogate</emph>, in the UTF-16 character encoding.
- * This value is <code>'\uDFFF'</code>.
- * @since 1.5
- */
- public static final char MAX_LOW_SURROGATE = '\uDFFF';
- /**
- * The minimum Unicode surrogate code unit in the UTF-16 character encoding.
- * This value is <code>'\uD800'</code>.
- * @since 1.5
- */
- public static final char MIN_SURROGATE = MIN_HIGH_SURROGATE;
- /**
- * The maximum Unicode surrogate code unit in the UTF-16 character encoding.
- * This value is <code>'\uDFFF'</code>.
- * @since 1.5
- */
- public static final char MAX_SURROGATE = MAX_LOW_SURROGATE;
- /**
- * The lowest possible supplementary Unicode code point (the first code
- * point outside the basic multilingual plane (BMP)).
- * This value is <code>0x10000</code>.
- */
- public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x10000;
- /**
- * Class object representing the primitive char data type.
- *
- * @since 1.1
- */
- public static final Class<Character> TYPE = (Class<Character>) VMClassLoader.getPrimitiveClass('C');
- /**
- * The number of bits needed to represent a <code>char</code>.
- * @since 1.5
- */
- public static final int SIZE = 16;
- // This caches some Character values, and is used by boxing
- // conversions via valueOf(). We must cache at least 0..127;
- // this constant controls how much we actually cache.
- private static final int MAX_CACHE = 127;
- private static Character[] charCache = new Character[MAX_CACHE + 1];
- /**
- * Lu = Letter, Uppercase (Informative).
- *
- * @since 1.1
- */
- public static final byte UPPERCASE_LETTER = 1;
- /**
- * Ll = Letter, Lowercase (Informative).
- *
- * @since 1.1
- */
- public static final byte LOWERCASE_LETTER = 2;
- /**
- * Lt = Letter, Titlecase (Informative).
- *
- * @since 1.1
- */
- public static final byte TITLECASE_LETTER = 3;
- /**
- * Mn = Mark, Non-Spacing (Normative).
- *
- * @since 1.1
- */
- public static final byte NON_SPACING_MARK = 6;
- /**
- * Mc = Mark, Spacing Combining (Normative).
- *
- * @since 1.1
- */
- public static final byte COMBINING_SPACING_MARK = 8;
- /**
- * Me = Mark, Enclosing (Normative).
- *
- * @since 1.1
- */
- public static final byte ENCLOSING_MARK = 7;
- /**
- * Nd = Number, Decimal Digit (Normative).
- *
- * @since 1.1
- */
- public static final byte DECIMAL_DIGIT_NUMBER = 9;
- /**
- * Nl = Number, Letter (Normative).
- *
- * @since 1.1
- */
- public static final byte LETTER_NUMBER = 10;
- /**
- * No = Number, Other (Normative).
- *
- * @since 1.1
- */
- public static final byte OTHER_NUMBER = 11;
- /**
- * Zs = Separator, Space (Normative).
- *
- * @since 1.1
- */
- public static final byte SPACE_SEPARATOR = 12;
- /**
- * Zl = Separator, Line (Normative).
- *
- * @since 1.1
- */
- public static final byte LINE_SEPARATOR = 13;
- /**
- * Zp = Separator, Paragraph (Normative).
- *
- * @since 1.1
- */
- public static final byte PARAGRAPH_SEPARATOR = 14;
- /**
- * Cc = Other, Control (Normative).
- *
- * @since 1.1
- */
- public static final byte CONTROL = 15;
- /**
- * Cf = Other, Format (Normative).
- *
- * @since 1.1
- */
- public static final byte FORMAT = 16;
- /**
- * Cs = Other, Surrogate (Normative).
- *
- * @since 1.1
- */
- public static final byte SURROGATE = 19;
- /**
- * Co = Other, Private Use (Normative).
- *
- * @since 1.1
- */
- public static final byte PRIVATE_USE = 18;
- /**
- * Cn = Other, Not Assigned (Normative).
- *
- * @since 1.1
- */
- public static final byte UNASSIGNED = 0;
- /**
- * Lm = Letter, Modifier (Informative).
- *
- * @since 1.1
- */
- public static final byte MODIFIER_LETTER = 4;
- /**
- * Lo = Letter, Other (Informative).
- *
- * @since 1.1
- */
- public static final byte OTHER_LETTER = 5;
- /**
- * Pc = Punctuation, Connector (Informative).
- *
- * @since 1.1
- */
- public static final byte CONNECTOR_PUNCTUATION = 23;
- /**
- * Pd = Punctuation, Dash (Informative).
- *
- * @since 1.1
- */
- public static final byte DASH_PUNCTUATION = 20;
- /**
- * Ps = Punctuation, Open (Informative).
- *
- * @since 1.1
- */
- public static final byte START_PUNCTUATION = 21;
- /**
- * Pe = Punctuation, Close (Informative).
- *
- * @since 1.1
- */
- public static final byte END_PUNCTUATION = 22;
- /**
- * Pi = Punctuation, Initial Quote (Informative).
- *
- * @since 1.4
- */
- public static final byte INITIAL_QUOTE_PUNCTUATION = 29;
- /**
- * Pf = Punctuation, Final Quote (Informative).
- *
- * @since 1.4
- */
- public static final byte FINAL_QUOTE_PUNCTUATION = 30;
- /**
- * Po = Punctuation, Other (Informative).
- *
- * @since 1.1
- */
- public static final byte OTHER_PUNCTUATION = 24;
- /**
- * Sm = Symbol, Math (Informative).
- *
- * @since 1.1
- */
- public static final byte MATH_SYMBOL = 25;
- /**
- * Sc = Symbol, Currency (Informative).
- *
- * @since 1.1
- */
- public static final byte CURRENCY_SYMBOL = 26;
- /**
- * Sk = Symbol, Modifier (Informative).
- *
- * @since 1.1
- */
- public static final byte MODIFIER_SYMBOL = 27;
- /**
- * So = Symbol, Other (Informative).
- *
- * @since 1.1
- */
- public static final byte OTHER_SYMBOL = 28;
- /**
- * Undefined bidirectional character type. Undefined char values have
- * undefined directionality in the Unicode specification.
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_UNDEFINED = -1;
- /**
- * Strong bidirectional character type "L".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0;
- /**
- * Strong bidirectional character type "R".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1;
- /**
- * Strong bidirectional character type "AL".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2;
- /**
- * Weak bidirectional character type "EN".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 3;
- /**
- * Weak bidirectional character type "ES".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4;
- /**
- * Weak bidirectional character type "ET".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5;
- /**
- * Weak bidirectional character type "AN".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_ARABIC_NUMBER = 6;
- /**
- * Weak bidirectional character type "CS".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7;
- /**
- * Weak bidirectional character type "NSM".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_NONSPACING_MARK = 8;
- /**
- * Weak bidirectional character type "BN".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 9;
- /**
- * Neutral bidirectional character type "B".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10;
- /**
- * Neutral bidirectional character type "S".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 11;
- /**
- * Strong bidirectional character type "WS".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_WHITESPACE = 12;
- /**
- * Neutral bidirectional character type "ON".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 13;
- /**
- * Strong bidirectional character type "LRE".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14;
- /**
- * Strong bidirectional character type "LRO".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15;
- /**
- * Strong bidirectional character type "RLE".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16;
- /**
- * Strong bidirectional character type "RLO".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17;
- /**
- * Weak bidirectional character type "PDF".
- *
- * @since 1.4
- */
- public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18;
- /**
- * Mask for grabbing the type out of the result of readChar.
- * @see #readChar(char)
- */
- private static final int TYPE_MASK = 0x1F;
- /**
- * Mask for grabbing the non-breaking space flag out of the result of
- * readChar.
- * @see #readChar(char)
- */
- private static final int NO_BREAK_MASK = 0x20;
- /**
- * Mask for grabbing the mirrored directionality flag out of the result
- * of readChar.
- * @see #readChar(char)
- */
- private static final int MIRROR_MASK = 0x40;
- /**
- * Grabs an attribute offset from the Unicode attribute database. The lower
- * 5 bits are the character type, the next 2 bits are flags, and the top
- * 9 bits are the offset into the attribute tables. Note that the top 9
- * bits are meaningless in this context; they are useful only in the native
- * code.
- *
- * @param ch the character to look up
- * @return the character's attribute offset and type
- * @see #TYPE_MASK
- * @see #NO_BREAK_MASK
- * @see #MIRROR_MASK
- */
- private static native char readChar(char ch);
- /**
- * Grabs an attribute offset from the Unicode attribute database. The lower
- * 5 bits are the character type, the next 2 bits are flags, and the top
- * 9 bits are the offset into the attribute tables. Note that the top 9
- * bits are meaningless in this context; they are useful only in the native
- * code.
- *
- * @param codePoint the character to look up
- * @return the character's attribute offset and type
- * @see #TYPE_MASK
- * @see #NO_BREAK_MASK
- * @see #MIRROR_MASK
- */
- private static native char readCodePoint(int codePoint);
- /**
- * Wraps up a character.
- *
- * @param value the character to wrap
- */
- public Character(char value)
- {
- this.value = value;
- }
- /**
- * Returns the character which has been wrapped by this class.
- *
- * @return the character wrapped
- */
- public char charValue()
- {
- return value;
- }
- /**
- * Returns the numerical value (unsigned) of the wrapped character.
- * Range of returned values: 0x0000-0xFFFF.
- *
- * @return the value of the wrapped character
- */
- public int hashCode()
- {
- return value;
- }
- /**
- * Determines if an object is equal to this object. This is only true for
- * another Character object wrapping the same value.
- *
- * @param o object to compare
- * @return true if o is a Character with the same value
- */
- public boolean equals(Object o)
- {
- return o instanceof Character && value == ((Character) o).value;
- }
- /**
- * Converts the wrapped character into a String.
- *
- * @return a String containing one character -- the wrapped character
- * of this instance
- */
- public String toString()
- {
- // This assumes that String.valueOf(char) can create a single-character
- // String more efficiently than through the public API.
- return String.valueOf(value);
- }
- /**
- * Returns a String of length 1 representing the specified character.
- *
- * @param ch the character to convert
- * @return a String containing the character
- * @since 1.4
- */
- public static String toString(char ch)
- {
- // This assumes that String.valueOf(char) can create a single-character
- // String more efficiently than through the public API.
- return String.valueOf(ch);
- }
- /**
- * Determines if a character is a Unicode lowercase letter. For example,
- * <code>'a'</code> is lowercase.
- * <br>
- * lowercase = [Ll]
- *
- * @param ch character to test
- * @return true if ch is a Unicode lowercase letter, else false
- * @see #isUpperCase(char)
- * @see #isTitleCase(char)
- * @see #toLowerCase(char)
- * @see #getType(char)
- */
- public static boolean isLowerCase(char ch)
- {
- return getType(ch) == LOWERCASE_LETTER;
- }
- /**
- * Determines if a character is a Unicode lowercase letter. For example,
- * <code>'a'</code> is lowercase. Unlike isLowerCase(char), this method
- * supports supplementary Unicode code points.
- * <br>
- * lowercase = [Ll]
- *
- * @param codePoint character to test
- * @return true if codePoint is a Unicode lowercase letter, else false
- * @see #isUpperCase(int)
- * @see #isTitleCase(int)
- * @see #toLowerCase(int)
- * @see #getType(int)
- * @since 1.5
- */
- public static boolean isLowerCase(int codePoint)
- {
- return getType(codePoint) == LOWERCASE_LETTER;
- }
- /**
- * Determines if a character is a Unicode uppercase letter. For example,
- * <code>'A'</code> is uppercase.
- * <br>
- * uppercase = [Lu]
- *
- * @param ch character to test
- * @return true if ch is a Unicode uppercase letter, else false
- * @see #isLowerCase(char)
- * @see #isTitleCase(char)
- * @see #toUpperCase(char)
- * @see #getType(char)
- */
- public static boolean isUpperCase(char ch)
- {
- return getType(ch) == UPPERCASE_LETTER;
- }
- /**
- * Determines if a character is a Unicode uppercase letter. For example,
- * <code>'A'</code> is uppercase. Unlike isUpperCase(char), this method
- * supports supplementary Unicode code points.
- * <br>
- * uppercase = [Lu]
- *
- * @param codePoint character to test
- * @return true if codePoint is a Unicode uppercase letter, else false
- * @see #isLowerCase(int)
- * @see #isTitleCase(int)
- * @see #toUpperCase(int)
- * @see #getType(int)
- * @since 1.5
- */
- public static boolean isUpperCase(int codePoint)
- {
- return getType(codePoint) == UPPERCASE_LETTER;
- }
- /**
- * Determines if a character is a Unicode titlecase letter. For example,
- * the character "Lj" (Latin capital L with small letter j) is titlecase.
- * <br>
- * titlecase = [Lt]
- *
- * @param ch character to test
- * @return true if ch is a Unicode titlecase letter, else false
- * @see #isLowerCase(char)
- * @see #isUpperCase(char)
- * @see #toTitleCase(char)
- * @see #getType(char)
- */
- public static boolean isTitleCase(char ch)
- {
- return getType(ch) == TITLECASE_LETTER;
- }
- /**
- * Determines if a character is a Unicode titlecase letter. For example,
- * the character "Lj" (Latin capital L with small letter j) is titlecase.
- * Unlike isTitleCase(char), this method supports supplementary Unicode
- * code points.
- * <br>
- * titlecase = [Lt]
- *
- * @param codePoint character to test
- * @return true if codePoint is a Unicode titlecase letter, else false
- * @see #isLowerCase(int)
- * @see #isUpperCase(int)
- * @see #toTitleCase(int)
- * @see #getType(int)
- * @since 1.5
- */
- public static boolean isTitleCase(int codePoint)
- {
- return getType(codePoint) == TITLECASE_LETTER;
- }
- /**
- * Determines if a character is a Unicode decimal digit. For example,
- * <code>'0'</code> is a digit.
- * <br>
- * Unicode decimal digit = [Nd]
- *
- * @param ch character to test
- * @return true if ch is a Unicode decimal digit, else false
- * @see #digit(char, int)
- * @see #forDigit(int, int)
- * @see #getType(char)
- */
- public static boolean isDigit(char ch)
- {
- return getType(ch) == DECIMAL_DIGIT_NUMBER;
- }
- /**
- * Determines if a character is a Unicode decimal digit. For example,
- * <code>'0'</code> is a digit. Unlike isDigit(char), this method
- * supports supplementary Unicode code points.
- * <br>
- * Unicode decimal digit = [Nd]
- *
- * @param codePoint character to test
- * @return true if ccodePoint is a Unicode decimal digit, else false
- * @see #digit(int, int)
- * @see #forDigit(int, int)
- * @see #getType(int)
- * @since 1.5
- */
- public static boolean isDigit(int codePoint)
- {
- return getType(codePoint) == DECIMAL_DIGIT_NUMBER;
- }
- /**
- * Determines if a character is part of the Unicode Standard. This is an
- * evolving standard, but covers every character in the data file.
- * <br>
- * defined = not [Cn]
- *
- * @param ch character to test
- * @return true if ch is a Unicode character, else false
- * @see #isDigit(char)
- * @see #isLetter(char)
- * @see #isLetterOrDigit(char)
- * @see #isLowerCase(char)
- * @see #isTitleCase(char)
- * @see #isUpperCase(char)
- */
- public static boolean isDefined(char ch)
- {
- return getType(ch) != UNASSIGNED;
- }
- /**
- * Determines if a character is part of the Unicode Standard. This is an
- * evolving standard, but covers every character in the data file. Unlike
- * isDefined(char), this method supports supplementary Unicode code points.
- * <br>
- * defined = not [Cn]
- *
- * @param codePoint character to test
- * @return true if codePoint is a Unicode character, else false
- * @see #isDigit(int)
- * @see #isLetter(int)
- * @see #isLetterOrDigit(int)
- * @see #isLowerCase(int)
- * @see #isTitleCase(int)
- * @see #isUpperCase(int)
- * @since 1.5
- */
- public static boolean isDefined(int codePoint)
- {
- return getType(codePoint) != UNASSIGNED;
- }
- /**
- * Determines if a character is a Unicode letter. Not all letters have case,
- * so this may return true when isLowerCase and isUpperCase return false.
- * <br>
- * letter = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]
- *
- * @param ch character to test
- * @return true if ch is a Unicode letter, else false
- * @see #isDigit(char)
- * @see #isJavaIdentifierStart(char)
- * @see #isJavaLetter(char)
- * @see #isJavaLetterOrDigit(char)
- * @see #isLetterOrDigit(char)
- * @see #isLowerCase(char)
- * @see #isTitleCase(char)
- * @see #isUnicodeIdentifierStart(char)
- * @see #isUpperCase(char)
- */
- public static boolean isLetter(char ch)
- {
- return ((1 << getType(ch))
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER))) != 0;
- }
- /**
- * Determines if a character is a Unicode letter. Not all letters have case,
- * so this may return true when isLowerCase and isUpperCase return false.
- * Unlike isLetter(char), this method supports supplementary Unicode code
- * points.
- * <br>
- * letter = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]
- *
- * @param codePoint character to test
- * @return true if codePoint is a Unicode letter, else false
- * @see #isDigit(int)
- * @see #isJavaIdentifierStart(int)
- * @see #isJavaLetter(int)
- * @see #isJavaLetterOrDigit(int)
- * @see #isLetterOrDigit(int)
- * @see #isLowerCase(int)
- * @see #isTitleCase(int)
- * @see #isUnicodeIdentifierStart(int)
- * @see #isUpperCase(int)
- * @since 1.5
- */
- public static boolean isLetter(int codePoint)
- {
- return ((1 << getType(codePoint))
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER))) != 0;
- }
-
- /**
- * Returns the index into the given CharSequence that is offset
- * <code>codePointOffset</code> code points from <code>index</code>.
- * @param seq the CharSequence
- * @param index the start position in the CharSequence
- * @param codePointOffset the number of code points offset from the start
- * position
- * @return the index into the CharSequence that is codePointOffset code
- * points offset from index
- *
- * @throws NullPointerException if seq is null
- * @throws IndexOutOfBoundsException if index is negative or greater than the
- * length of the sequence.
- * @throws IndexOutOfBoundsException if codePointOffset is positive and the
- * subsequence from index to the end of seq has fewer than codePointOffset
- * code points
- * @throws IndexOutOfBoundsException if codePointOffset is negative and the
- * subsequence from the start of seq to index has fewer than
- * (-codePointOffset) code points
- * @since 1.5
- */
- public static int offsetByCodePoints(CharSequence seq,
- int index,
- int codePointOffset)
- {
- int len = seq.length();
- if (index < 0 || index > len)
- throw new IndexOutOfBoundsException();
-
- int numToGo = codePointOffset;
- int offset = index;
- int adjust = 1;
- if (numToGo >= 0)
- {
- for (; numToGo > 0; offset++)
- {
- numToGo--;
- if (Character.isHighSurrogate(seq.charAt(offset))
- && (offset + 1) < len
- && Character.isLowSurrogate(seq.charAt(offset + 1)))
- offset++;
- }
- return offset;
- }
- else
- {
- numToGo *= -1;
- for (; numToGo > 0;)
- {
- numToGo--;
- offset--;
- if (Character.isLowSurrogate(seq.charAt(offset))
- && (offset - 1) >= 0
- && Character.isHighSurrogate(seq.charAt(offset - 1)))
- offset--;
- }
- return offset;
- }
- }
-
- /**
- * Returns the index into the given char subarray that is offset
- * <code>codePointOffset</code> code points from <code>index</code>.
- * @param a the char array
- * @param start the start index of the subarray
- * @param count the length of the subarray
- * @param index the index to be offset
- * @param codePointOffset the number of code points offset from <code>index
- * </code>
- * @return the index into the char array
- *
- * @throws NullPointerException if a is null
- * @throws IndexOutOfBoundsException if start or count is negative or if
- * start + count is greater than the length of the array
- * @throws IndexOutOfBoundsException if index is less than start or larger
- * than start + count
- * @throws IndexOutOfBoundsException if codePointOffset is positive and the
- * subarray from index to start + count - 1 has fewer than codePointOffset
- * code points.
- * @throws IndexOutOfBoundsException if codePointOffset is negative and the
- * subarray from start to index - 1 has fewer than (-codePointOffset) code
- * points
- * @since 1.5
- */
- public static int offsetByCodePoints(char[] a,
- int start,
- int count,
- int index,
- int codePointOffset)
- {
- int len = a.length;
- int end = start + count;
- if (start < 0 || count < 0 || end > len || index < start || index > end)
- throw new IndexOutOfBoundsException();
-
- int numToGo = codePointOffset;
- int offset = index;
- int adjust = 1;
- if (numToGo >= 0)
- {
- for (; numToGo > 0; offset++)
- {
- numToGo--;
- if (Character.isHighSurrogate(a[offset])
- && (offset + 1) < len
- && Character.isLowSurrogate(a[offset + 1]))
- offset++;
- }
- return offset;
- }
- else
- {
- numToGo *= -1;
- for (; numToGo > 0;)
- {
- numToGo--;
- offset--;
- if (Character.isLowSurrogate(a[offset])
- && (offset - 1) >= 0
- && Character.isHighSurrogate(a[offset - 1]))
- offset--;
- if (offset < start)
- throw new IndexOutOfBoundsException();
- }
- return offset;
- }
- }
- /**
- * Returns the number of Unicode code points in the specified range of the
- * given CharSequence. The first char in the range is at position
- * beginIndex and the last one is at position endIndex - 1. Paired
- * surrogates (supplementary characters are represented by a pair of chars -
- * one from the high surrogates and one from the low surrogates)
- * count as just one code point.
- * @param seq the CharSequence to inspect
- * @param beginIndex the beginning of the range
- * @param endIndex the end of the range
- * @return the number of Unicode code points in the given range of the
- * sequence
- * @throws NullPointerException if seq is null
- * @throws IndexOutOfBoundsException if beginIndex is negative, endIndex is
- * larger than the length of seq, or if beginIndex is greater than endIndex.
- * @since 1.5
- */
- public static int codePointCount(CharSequence seq, int beginIndex,
- int endIndex)
- {
- int len = seq.length();
- if (beginIndex < 0 || endIndex > len || beginIndex > endIndex)
- throw new IndexOutOfBoundsException();
-
- int count = 0;
- for (int i = beginIndex; i < endIndex; i++)
- {
- count++;
- // If there is a pairing, count it only once.
- if (isHighSurrogate(seq.charAt(i)) && (i + 1) < endIndex
- && isLowSurrogate(seq.charAt(i + 1)))
- i ++;
- }
- return count;
- }
- /**
- * Returns the number of Unicode code points in the specified range of the
- * given char array. The first char in the range is at position
- * offset and the length of the range is count. Paired surrogates
- * (supplementary characters are represented by a pair of chars -
- * one from the high surrogates and one from the low surrogates)
- * count as just one code point.
- * @param a the char array to inspect
- * @param offset the beginning of the range
- * @param count the length of the range
- * @return the number of Unicode code points in the given range of the
- * array
- * @throws NullPointerException if a is null
- * @throws IndexOutOfBoundsException if offset or count is negative or if
- * offset + countendIndex is larger than the length of a.
- * @since 1.5
- */
- public static int codePointCount(char[] a, int offset,
- int count)
- {
- int len = a.length;
- int end = offset + count;
- if (offset < 0 || count < 0 || end > len)
- throw new IndexOutOfBoundsException();
-
- int counter = 0;
- for (int i = offset; i < end; i++)
- {
- counter++;
- // If there is a pairing, count it only once.
- if (isHighSurrogate(a[i]) && (i + 1) < end
- && isLowSurrogate(a[i + 1]))
- i ++;
- }
- return counter;
- }
- /**
- * Determines if a character is a Unicode letter or a Unicode digit. This
- * is the combination of isLetter and isDigit.
- * <br>
- * letter or digit = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nd]
- *
- * @param ch character to test
- * @return true if ch is a Unicode letter or a Unicode digit, else false
- * @see #isDigit(char)
- * @see #isJavaIdentifierPart(char)
- * @see #isJavaLetter(char)
- * @see #isJavaLetterOrDigit(char)
- * @see #isLetter(char)
- * @see #isUnicodeIdentifierPart(char)
- */
- public static boolean isLetterOrDigit(char ch)
- {
- return ((1 << getType(ch))
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER)
- | (1 << DECIMAL_DIGIT_NUMBER))) != 0;
- }
- /**
- * Determines if a character is a Unicode letter or a Unicode digit. This
- * is the combination of isLetter and isDigit. Unlike isLetterOrDigit(char),
- * this method supports supplementary Unicode code points.
- * <br>
- * letter or digit = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nd]
- *
- * @param codePoint character to test
- * @return true if codePoint is a Unicode letter or a Unicode digit, else false
- * @see #isDigit(int)
- * @see #isJavaIdentifierPart(int)
- * @see #isJavaLetter(int)
- * @see #isJavaLetterOrDigit(int)
- * @see #isLetter(int)
- * @see #isUnicodeIdentifierPart(int)
- * @since 1.5
- */
- public static boolean isLetterOrDigit(int codePoint)
- {
- return ((1 << getType(codePoint)
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER)
- | (1 << DECIMAL_DIGIT_NUMBER))) != 0);
- }
- /**
- * Determines if a character can start a Java identifier. This is the
- * combination of isLetter, any character where getType returns
- * LETTER_NUMBER, currency symbols (like '$'), and connecting punctuation
- * (like '_').
- *
- * @param ch character to test
- * @return true if ch can start a Java identifier, else false
- * @deprecated Replaced by {@link #isJavaIdentifierStart(char)}
- * @see #isJavaLetterOrDigit(char)
- * @see #isJavaIdentifierStart(char)
- * @see #isJavaIdentifierPart(char)
- * @see #isLetter(char)
- * @see #isLetterOrDigit(char)
- * @see #isUnicodeIdentifierStart(char)
- */
- public static boolean isJavaLetter(char ch)
- {
- return isJavaIdentifierStart(ch);
- }
- /**
- * Determines if a character can start a Java identifier. This is the
- * combination of isLetter, any character where getType returns
- * LETTER_NUMBER, currency symbols (like '$'), and connecting punctuation
- * (like '_'). Unlike isJavaIdentifierStart(char), this method supports
- * supplementary Unicode code points.
- * <br>
- * Java identifier start = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]|[Sc]|[Pc]
- *
- * @param codePoint character to test
- * @return true if codePoint can start a Java identifier, else false
- * @see #isJavaIdentifierPart(int)
- * @see #isLetter(int)
- * @see #isUnicodeIdentifierStart(int)
- * @since 1.5
- */
- public static boolean isJavaIdentifierStart(int codePoint)
- {
- return ((1 << getType(codePoint))
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER)
- | (1 << LETTER_NUMBER)
- | (1 << CURRENCY_SYMBOL)
- | (1 << CONNECTOR_PUNCTUATION))) != 0;
- }
- /**
- * Determines if a character can follow the first letter in
- * a Java identifier. This is the combination of isJavaLetter (isLetter,
- * type of LETTER_NUMBER, currency, connecting punctuation) and digit,
- * numeric letter (like Roman numerals), combining marks, non-spacing marks,
- * or isIdentifierIgnorable.
- *
- * @param ch character to test
- * @return true if ch can follow the first letter in a Java identifier
- * @deprecated Replaced by {@link #isJavaIdentifierPart(char)}
- * @see #isJavaLetter(char)
- * @see #isJavaIdentifierStart(char)
- * @see #isJavaIdentifierPart(char)
- * @see #isLetter(char)
- * @see #isLetterOrDigit(char)
- * @see #isUnicodeIdentifierPart(char)
- * @see #isIdentifierIgnorable(char)
- */
- public static boolean isJavaLetterOrDigit(char ch)
- {
- return isJavaIdentifierPart(ch);
- }
- /**
- * Determines if a character can start a Java identifier. This is the
- * combination of isLetter, any character where getType returns
- * LETTER_NUMBER, currency symbols (like '$'), and connecting punctuation
- * (like '_').
- * <br>
- * Java identifier start = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]|[Sc]|[Pc]
- *
- * @param ch character to test
- * @return true if ch can start a Java identifier, else false
- * @see #isJavaIdentifierPart(char)
- * @see #isLetter(char)
- * @see #isUnicodeIdentifierStart(char)
- * @since 1.1
- */
- public static boolean isJavaIdentifierStart(char ch)
- {
- return ((1 << getType(ch))
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER)
- | (1 << LETTER_NUMBER)
- | (1 << CURRENCY_SYMBOL)
- | (1 << CONNECTOR_PUNCTUATION))) != 0;
- }
- /**
- * Determines if a character can follow the first letter in
- * a Java identifier. This is the combination of isJavaLetter (isLetter,
- * type of LETTER_NUMBER, currency, connecting punctuation) and digit,
- * numeric letter (like Roman numerals), combining marks, non-spacing marks,
- * or isIdentifierIgnorable.
- * <br>
- * Java identifier extender =
- * [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]|[Sc]|[Pc]|[Mn]|[Mc]|[Nd]|[Cf]
- * |U+0000-U+0008|U+000E-U+001B|U+007F-U+009F
- *
- * @param ch character to test
- * @return true if ch can follow the first letter in a Java identifier
- * @see #isIdentifierIgnorable(char)
- * @see #isJavaIdentifierStart(char)
- * @see #isLetterOrDigit(char)
- * @see #isUnicodeIdentifierPart(char)
- * @since 1.1
- */
- public static boolean isJavaIdentifierPart(char ch)
- {
- int category = getType(ch);
- return ((1 << category)
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER)
- | (1 << NON_SPACING_MARK)
- | (1 << COMBINING_SPACING_MARK)
- | (1 << DECIMAL_DIGIT_NUMBER)
- | (1 << LETTER_NUMBER)
- | (1 << CURRENCY_SYMBOL)
- | (1 << CONNECTOR_PUNCTUATION)
- | (1 << FORMAT))) != 0
- || (category == CONTROL && isIdentifierIgnorable(ch));
- }
- /**
- * Determines if a character can follow the first letter in
- * a Java identifier. This is the combination of isJavaLetter (isLetter,
- * type of LETTER_NUMBER, currency, connecting punctuation) and digit,
- * numeric letter (like Roman numerals), combining marks, non-spacing marks,
- * or isIdentifierIgnorable. Unlike isJavaIdentifierPart(char), this method
- * supports supplementary Unicode code points.
- * <br>
- * Java identifier extender =
- * [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]|[Sc]|[Pc]|[Mn]|[Mc]|[Nd]|[Cf]
- * |U+0000-U+0008|U+000E-U+001B|U+007F-U+009F
- *
- * @param codePoint character to test
- * @return true if codePoint can follow the first letter in a Java identifier
- * @see #isIdentifierIgnorable(int)
- * @see #isJavaIdentifierStart(int)
- * @see #isLetterOrDigit(int)
- * @see #isUnicodeIdentifierPart(int)
- * @since 1.5
- */
- public static boolean isJavaIdentifierPart(int codePoint)
- {
- int category = getType(codePoint);
- return ((1 << category)
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER)
- | (1 << NON_SPACING_MARK)
- | (1 << COMBINING_SPACING_MARK)
- | (1 << DECIMAL_DIGIT_NUMBER)
- | (1 << LETTER_NUMBER)
- | (1 << CURRENCY_SYMBOL)
- | (1 << CONNECTOR_PUNCTUATION)
- | (1 << FORMAT))) != 0
- || (category == CONTROL && isIdentifierIgnorable(codePoint));
- }
- /**
- * Determines if a character can start a Unicode identifier. Only
- * letters can start a Unicode identifier, but this includes characters
- * in LETTER_NUMBER.
- * <br>
- * Unicode identifier start = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]
- *
- * @param ch character to test
- * @return true if ch can start a Unicode identifier, else false
- * @see #isJavaIdentifierStart(char)
- * @see #isLetter(char)
- * @see #isUnicodeIdentifierPart(char)
- * @since 1.1
- */
- public static boolean isUnicodeIdentifierStart(char ch)
- {
- return ((1 << getType(ch))
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER)
- | (1 << LETTER_NUMBER))) != 0;
- }
- /**
- * Determines if a character can start a Unicode identifier. Only
- * letters can start a Unicode identifier, but this includes characters
- * in LETTER_NUMBER. Unlike isUnicodeIdentifierStart(char), this method
- * supports supplementary Unicode code points.
- * <br>
- * Unicode identifier start = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]
- *
- * @param codePoint character to test
- * @return true if codePoint can start a Unicode identifier, else false
- * @see #isJavaIdentifierStart(int)
- * @see #isLetter(int)
- * @see #isUnicodeIdentifierPart(int)
- * @since 1.5
- */
- public static boolean isUnicodeIdentifierStart(int codePoint)
- {
- return ((1 << getType(codePoint))
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER)
- | (1 << LETTER_NUMBER))) != 0;
- }
- /**
- * Determines if a character can follow the first letter in
- * a Unicode identifier. This includes letters, connecting punctuation,
- * digits, numeric letters, combining marks, non-spacing marks, and
- * isIdentifierIgnorable.
- * <br>
- * Unicode identifier extender =
- * [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]|[Mn]|[Mc]|[Nd]|[Pc]|[Cf]|
- * |U+0000-U+0008|U+000E-U+001B|U+007F-U+009F
- *
- * @param ch character to test
- * @return true if ch can follow the first letter in a Unicode identifier
- * @see #isIdentifierIgnorable(char)
- * @see #isJavaIdentifierPart(char)
- * @see #isLetterOrDigit(char)
- * @see #isUnicodeIdentifierStart(char)
- * @since 1.1
- */
- public static boolean isUnicodeIdentifierPart(char ch)
- {
- int category = getType(ch);
- return ((1 << category)
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER)
- | (1 << NON_SPACING_MARK)
- | (1 << COMBINING_SPACING_MARK)
- | (1 << DECIMAL_DIGIT_NUMBER)
- | (1 << LETTER_NUMBER)
- | (1 << CONNECTOR_PUNCTUATION)
- | (1 << FORMAT))) != 0
- || (category == CONTROL && isIdentifierIgnorable(ch));
- }
- /**
- * Determines if a character can follow the first letter in
- * a Unicode identifier. This includes letters, connecting punctuation,
- * digits, numeric letters, combining marks, non-spacing marks, and
- * isIdentifierIgnorable. Unlike isUnicodeIdentifierPart(char), this method
- * supports supplementary Unicode code points.
- * <br>
- * Unicode identifier extender =
- * [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]|[Mn]|[Mc]|[Nd]|[Pc]|[Cf]|
- * |U+0000-U+0008|U+000E-U+001B|U+007F-U+009F
- *
- * @param codePoint character to test
- * @return true if codePoint can follow the first letter in a Unicode
- * identifier
- * @see #isIdentifierIgnorable(int)
- * @see #isJavaIdentifierPart(int)
- * @see #isLetterOrDigit(int)
- * @see #isUnicodeIdentifierStart(int)
- * @since 1.5
- */
- public static boolean isUnicodeIdentifierPart(int codePoint)
- {
- int category = getType(codePoint);
- return ((1 << category)
- & ((1 << UPPERCASE_LETTER)
- | (1 << LOWERCASE_LETTER)
- | (1 << TITLECASE_LETTER)
- | (1 << MODIFIER_LETTER)
- | (1 << OTHER_LETTER)
- | (1 << NON_SPACING_MARK)
- | (1 << COMBINING_SPACING_MARK)
- | (1 << DECIMAL_DIGIT_NUMBER)
- | (1 << LETTER_NUMBER)
- | (1 << CONNECTOR_PUNCTUATION)
- | (1 << FORMAT))) != 0
- || (category == CONTROL && isIdentifierIgnorable(codePoint));
- }
- /**
- * Determines if a character is ignorable in a Unicode identifier. This
- * includes the non-whitespace ISO control characters (<code>'\u0000'</code>
- * through <code>'\u0008'</code>, <code>'\u000E'</code> through
- * <code>'\u001B'</code>, and <code>'\u007F'</code> through
- * <code>'\u009F'</code>), and FORMAT characters.
- * <br>
- * Unicode identifier ignorable = [Cf]|U+0000-U+0008|U+000E-U+001B
- * |U+007F-U+009F
- *
- * @param ch character to test
- * @return true if ch is ignorable in a Unicode or Java identifier
- * @see #isJavaIdentifierPart(char)
- * @see #isUnicodeIdentifierPart(char)
- * @since 1.1
- */
- public static boolean isIdentifierIgnorable(char ch)
- {
- return (ch <= '\u009F' && (ch < '\t' || ch >= '\u007F'
- || (ch <= '\u001B' && ch >= '\u000E')))
- || getType(ch) == FORMAT;
- }
- /**
- * Determines if a character is ignorable in a Unicode identifier. This
- * includes the non-whitespace ISO control characters (<code>'\u0000'</code>
- * through <code>'\u0008'</code>, <code>'\u000E'</code> through
- * <code>'\u001B'</code>, and <code>'\u007F'</code> through
- * <code>'\u009F'</code>), and FORMAT characters. Unlike
- * isIdentifierIgnorable(char), this method supports supplementary Unicode
- * code points.
- * <br>
- * Unicode identifier ignorable = [Cf]|U+0000-U+0008|U+000E-U+001B
- * |U+007F-U+009F
- *
- * @param codePoint character to test
- * @return true if codePoint is ignorable in a Unicode or Java identifier
- * @see #isJavaIdentifierPart(int)
- * @see #isUnicodeIdentifierPart(int)
- * @since 1.5
- */
- public static boolean isIdentifierIgnorable(int codePoint)
- {
- return ((codePoint >= 0 && codePoint <= 0x0008)
- || (codePoint >= 0x000E && codePoint <= 0x001B)
- || (codePoint >= 0x007F && codePoint <= 0x009F)
- || getType(codePoint) == FORMAT);
- }
- /**
- * Converts a Unicode character into its lowercase equivalent mapping.
- * If a mapping does not exist, then the character passed is returned.
- * Note that isLowerCase(toLowerCase(ch)) does not always return true.
- *
- * @param ch character to convert to lowercase
- * @return lowercase mapping of ch, or ch if lowercase mapping does
- * not exist
- * @see #isLowerCase(char)
- * @see #isUpperCase(char)
- * @see #toTitleCase(char)
- * @see #toUpperCase(char)
- */
- public static native char toLowerCase(char ch);
- /**
- * Converts a Unicode character into its lowercase equivalent mapping.
- * If a mapping does not exist, then the character passed is returned.
- * Note that isLowerCase(toLowerCase(codePoint)) does not always return true.
- * Unlike toLowerCase(char), this method supports supplementary Unicode
- * code points.
- *
- * @param codePoint character to convert to lowercase
- * @return lowercase mapping of codePoint, or codePoint if lowercase
- * mapping does not exist
- * @see #isLowerCase(int)
- * @see #isUpperCase(int)
- * @see #toTitleCase(int)
- * @see #toUpperCase(int)
- * @since 1.5
- */
- public static native int toLowerCase(int codePoint);
- /**
- * Converts a Unicode character into its uppercase equivalent mapping.
- * If a mapping does not exist, then the character passed is returned.
- * Note that isUpperCase(toUpperCase(ch)) does not always return true.
- *
- * @param ch character to convert to uppercase
- * @return uppercase mapping of ch, or ch if uppercase mapping does
- * not exist
- * @see #isLowerCase(char)
- * @see #isUpperCase(char)
- * @see #toLowerCase(char)
- * @see #toTitleCase(char)
- */
- public static native char toUpperCase(char ch);
- /**
- * Converts a Unicode character into its uppercase equivalent mapping.
- * If a mapping does not exist, then the character passed is returned.
- * Note that isUpperCase(toUpperCase(codePoint)) does not always return true.
- * Unlike toUpperCase(char), this method supports supplementary
- * Unicode code points.
- *
- * @param codePoint character to convert to uppercase
- * @return uppercase mapping of codePoint, or codePoint if uppercase
- * mapping does not exist
- * @see #isLowerCase(int)
- * @see #isUpperCase(int)
- * @see #toLowerCase(int)
- * @see #toTitleCase(int)
- * @since 1.5
- */
- public static native int toUpperCase(int codePoint);
- /**
- * Converts a Unicode character into its titlecase equivalent mapping.
- * If a mapping does not exist, then the character passed is returned.
- * Note that isTitleCase(toTitleCase(ch)) does not always return true.
- *
- * @param ch character to convert to titlecase
- * @return titlecase mapping of ch, or ch if titlecase mapping does
- * not exist
- * @see #isTitleCase(char)
- * @see #toLowerCase(char)
- * @see #toUpperCase(char)
- */
- public static native char toTitleCase(char ch);
- /**
- * Converts a Unicode character into its titlecase equivalent mapping.
- * If a mapping does not exist, then the character passed is returned.
- * Note that isTitleCase(toTitleCase(codePoint)) does not always return true.
- * Unlike toTitleCase(char), this method supports supplementary
- * Unicode code points.
- *
- * @param codePoint character to convert to titlecase
- * @return titlecase mapping of codePoint, or codePoint if titlecase
- * mapping does not exist
- * @see #isTitleCase(int)
- * @see #toLowerCase(int)
- * @see #toUpperCase(int)
- * @since 1.5
- */
- public static native int toTitleCase(int codePoint);
- /**
- * Converts a character into a digit of the specified radix. If the radix
- * exceeds MIN_RADIX or MAX_RADIX, or if the result of getNumericValue(ch)
- * exceeds the radix, or if ch is not a decimal digit or in the case
- * insensitive set of 'a'-'z', the result is -1.
- * <br>
- * character argument boundary = [Nd]|U+0041-U+005A|U+0061-U+007A
- * |U+FF21-U+FF3A|U+FF41-U+FF5A
- *
- * @param ch character to convert into a digit
- * @param radix radix in which ch is a digit
- * @return digit which ch represents in radix, or -1 not a valid digit
- * @see #MIN_RADIX
- * @see #MAX_RADIX
- * @see #forDigit(int, int)
- * @see #isDigit(char)
- * @see #getNumericValue(char)
- */
- public static native int digit(char ch, int radix);
- /**
- * Converts a character into a digit of the specified radix. If the radix
- * exceeds MIN_RADIX or MAX_RADIX, or if the result of getNumericValue(int)
- * exceeds the radix, or if codePoint is not a decimal digit or in the case
- * insensitive set of 'a'-'z', the result is -1. Unlike digit(char, int),
- * this method supports supplementary Unicode code points.
- * <br>
- * character argument boundary = [Nd]|U+0041-U+005A|U+0061-U+007A
- * |U+FF21-U+FF3A|U+FF41-U+FF5A
- *
- * @param codePoint character to convert into a digit
- * @param radix radix in which codePoint is a digit
- * @return digit which codePoint represents in radix, or -1 not a valid digit
- * @see #MIN_RADIX
- * @see #MAX_RADIX
- * @see #forDigit(int, int)
- * @see #isDigit(int)
- * @see #getNumericValue(int)
- * @since 1.5
- */
- public static native int digit(int codePoint, int radix);
- /**
- * Returns the Unicode numeric value property of a character. For example,
- * <code>'\\u216C'</code> (the Roman numeral fifty) returns 50.
- *
- * <p>This method also returns values for the letters A through Z, (not
- * specified by Unicode), in these ranges: <code>'\u0041'</code>
- * through <code>'\u005A'</code> (uppercase); <code>'\u0061'</code>
- * through <code>'\u007A'</code> (lowercase); and <code>'\uFF21'</code>
- * through <code>'\uFF3A'</code>, <code>'\uFF41'</code> through
- * <code>'\uFF5A'</code> (full width variants).
- *
- * <p>If the character lacks a numeric value property, -1 is returned.
- * If the character has a numeric value property which is not representable
- * as a nonnegative integer, such as a fraction, -2 is returned.
- *
- * character argument boundary = [Nd]|[Nl]|[No]|U+0041-U+005A|U+0061-U+007A
- * |U+FF21-U+FF3A|U+FF41-U+FF5A
- *
- * @param ch character from which the numeric value property will
- * be retrieved
- * @return the numeric value property of ch, or -1 if it does not exist, or
- * -2 if it is not representable as a nonnegative integer
- * @see #forDigit(int, int)
- * @see #digit(char, int)
- * @see #isDigit(char)
- * @since 1.1
- */
- public static native int getNumericValue(char ch);
- /**
- * Returns the Unicode numeric value property of a character. For example,
- * <code>'\\u216C'</code> (the Roman numeral fifty) returns 50.
- *
- * <p>This method also returns values for the letters A through Z, (not
- * specified by Unicode), in these ranges: <code>'\u0041'</code>
- * through <code>'\u005A'</code> (uppercase); <code>'\u0061'</code>
- * through <code>'\u007A'</code> (lowercase); and <code>'\uFF21'</code>
- * through <code>'\uFF3A'</code>, <code>'\uFF41'</code> through
- * <code>'\uFF5A'</code> (full width variants).
- *
- * <p>If the character lacks a numeric value property, -1 is returned.
- * If the character has a numeric value property which is not representable
- * as a nonnegative integer, such as a fraction, -2 is returned.
- *
- * Unlike getNumericValue(char), this method supports supplementary Unicode
- * code points.
- *
- * character argument boundary = [Nd]|[Nl]|[No]|U+0041-U+005A|U+0061-U+007A
- * |U+FF21-U+FF3A|U+FF41-U+FF5A
- *
- * @param codePoint character from which the numeric value property will
- * be retrieved
- * @return the numeric value property of codePoint, or -1 if it does not
- * exist, or -2 if it is not representable as a nonnegative integer
- * @see #forDigit(int, int)
- * @see #digit(int, int)
- * @see #isDigit(int)
- * @since 1.5
- */
- public static native int getNumericValue(int codePoint);
- /**
- * Determines if a character is a ISO-LATIN-1 space. This is only the five
- * characters <code>'\t'</code>, <code>'\n'</code>, <code>'\f'</code>,
- * <code>'\r'</code>, and <code>' '</code>.
- * <br>
- * Java space = U+0020|U+0009|U+000A|U+000C|U+000D
- *
- * @param ch character to test
- * @return true if ch is a space, else false
- * @deprecated Replaced by {@link #isWhitespace(char)}
- * @see #isSpaceChar(char)
- * @see #isWhitespace(char)
- */
- public static boolean isSpace(char ch)
- {
- // Performing the subtraction up front alleviates need to compare longs.
- return ch-- <= ' ' && ((1 << ch)
- & ((1 << (' ' - 1))
- | (1 << ('\t' - 1))
- | (1 << ('\n' - 1))
- | (1 << ('\r' - 1))
- | (1 << ('\f' - 1)))) != 0;
- }
- /**
- * Determines if a character is a Unicode space character. This includes
- * SPACE_SEPARATOR, LINE_SEPARATOR, and PARAGRAPH_SEPARATOR.
- * <br>
- * Unicode space = [Zs]|[Zp]|[Zl]
- *
- * @param ch character to test
- * @return true if ch is a Unicode space, else false
- * @see #isWhitespace(char)
- * @since 1.1
- */
- public static boolean isSpaceChar(char ch)
- {
- return ((1 << getType(ch))
- & ((1 << SPACE_SEPARATOR)
- | (1 << LINE_SEPARATOR)
- | (1 << PARAGRAPH_SEPARATOR))) != 0;
- }
- /**
- * Determines if a character is a Unicode space character. This includes
- * SPACE_SEPARATOR, LINE_SEPARATOR, and PARAGRAPH_SEPARATOR. Unlike
- * isSpaceChar(char), this method supports supplementary Unicode code points.
- * <br>
- * Unicode space = [Zs]|[Zp]|[Zl]
- *
- * @param codePoint character to test
- * @return true if codePoint is a Unicode space, else false
- * @see #isWhitespace(int)
- * @since 1.5
- */
- public static boolean isSpaceChar(int codePoint)
- {
- return ((1 << getType(codePoint))
- & ((1 << SPACE_SEPARATOR)
- | (1 << LINE_SEPARATOR)
- | (1 << PARAGRAPH_SEPARATOR))) != 0;
- }
- /**
- * Determines if a character is Java whitespace. This includes Unicode
- * space characters (SPACE_SEPARATOR, LINE_SEPARATOR, and
- * PARAGRAPH_SEPARATOR) except the non-breaking spaces
- * (<code>'\u00A0'</code>, <code>'\u2007'</code>, and <code>'\u202F'</code>);
- * and these characters: <code>'\u0009'</code>, <code>'\u000A'</code>,
- * <code>'\u000B'</code>, <code>'\u000C'</code>, <code>'\u000D'</code>,
- * <code>'\u001C'</code>, <code>'\u001D'</code>, <code>'\u001E'</code>,
- * and <code>'\u001F'</code>.
- * <br>
- * Java whitespace = ([Zs] not Nb)|[Zl]|[Zp]|U+0009-U+000D|U+001C-U+001F
- *
- * @param ch character to test
- * @return true if ch is Java whitespace, else false
- * @see #isSpaceChar(char)
- * @since 1.1
- */
- public static boolean isWhitespace(char ch)
- {
- int attr = readChar(ch);
- return ((((1 << (attr & TYPE_MASK))
- & ((1 << SPACE_SEPARATOR)
- | (1 << LINE_SEPARATOR)
- | (1 << PARAGRAPH_SEPARATOR))) != 0)
- && (attr & NO_BREAK_MASK) == 0)
- || (ch <= '\u001F' && ((1 << ch)
- & ((1 << '\t')
- | (1 << '\n')
- | (1 << '\u000B')
- | (1 << '\u000C')
- | (1 << '\r')
- | (1 << '\u001C')
- | (1 << '\u001D')
- | (1 << '\u001E')
- | (1 << '\u001F'))) != 0);
- }
- /**
- * Determines if a character is Java whitespace. This includes Unicode
- * space characters (SPACE_SEPARATOR, LINE_SEPARATOR, and
- * PARAGRAPH_SEPARATOR) except the non-breaking spaces
- * (<code>'\u00A0'</code>, <code>'\u2007'</code>, and <code>'\u202F'</code>);
- * and these characters: <code>'\u0009'</code>, <code>'\u000A'</code>,
- * <code>'\u000B'</code>, <code>'\u000C'</code>, <code>'\u000D'</code>,
- * <code>'\u001C'</code>, <code>'\u001D'</code>, <code>'\u001E'</code>,
- * and <code>'\u001F'</code>. Unlike isWhitespace(char), this method
- * supports supplementary Unicode code points.
- * <br>
- * Java whitespace = ([Zs] not Nb)|[Zl]|[Zp]|U+0009-U+000D|U+001C-U+001F
- *
- * @param codePoint character to test
- * @return true if codePoint is Java whitespace, else false
- * @see #isSpaceChar(int)
- * @since 1.5
- */
- public static boolean isWhitespace(int codePoint)
- {
- int plane = codePoint >>> 16;
- if (plane > 2 && plane != 14)
- return false;
- int attr = readCodePoint(codePoint);
- return ((((1 << (attr & TYPE_MASK))
- & ((1 << SPACE_SEPARATOR)
- | (1 << LINE_SEPARATOR)
- | (1 << PARAGRAPH_SEPARATOR))) != 0)
- && (attr & NO_BREAK_MASK) == 0)
- || (codePoint <= '\u001F' && ((1 << codePoint)
- & ((1 << '\t')
- | (1 << '\n')
- | (1 << '\u000B')
- | (1 << '\u000C')
- | (1 << '\r')
- | (1 << '\u001C')
- | (1 << '\u001D')
- | (1 << '\u001E')
- | (1 << '\u001F'))) != 0);
- }
- /**
- * Determines if a character has the ISO Control property.
- * <br>
- * ISO Control = [Cc]
- *
- * @param ch character to test
- * @return true if ch is an ISO Control character, else false
- * @see #isSpaceChar(char)
- * @see #isWhitespace(char)
- * @since 1.1
- */
- public static boolean isISOControl(char ch)
- {
- return getType(ch) == CONTROL;
- }
- /**
- * Determines if a character has the ISO Control property. Unlike
- * isISOControl(char), this method supports supplementary unicode
- * code points.
- * <br>
- * ISO Control = [Cc]
- *
- * @param codePoint character to test
- * @return true if codePoint is an ISO Control character, else false
- * @see #isSpaceChar(int)
- * @see #isWhitespace(int)
- * @since 1.5
- */
- public static boolean isISOControl(int codePoint)
- {
- return getType(codePoint) == CONTROL;
- }
- /**
- * Returns the Unicode general category property of a character.
- *
- * @param ch character from which the general category property will
- * be retrieved
- * @return the character category property of ch as an integer
- * @see #UNASSIGNED
- * @see #UPPERCASE_LETTER
- * @see #LOWERCASE_LETTER
- * @see #TITLECASE_LETTER
- * @see #MODIFIER_LETTER
- * @see #OTHER_LETTER
- * @see #NON_SPACING_MARK
- * @see #ENCLOSING_MARK
- * @see #COMBINING_SPACING_MARK
- * @see #DECIMAL_DIGIT_NUMBER
- * @see #LETTER_NUMBER
- * @see #OTHER_NUMBER
- * @see #SPACE_SEPARATOR
- * @see #LINE_SEPARATOR
- * @see #PARAGRAPH_SEPARATOR
- * @see #CONTROL
- * @see #FORMAT
- * @see #PRIVATE_USE
- * @see #SURROGATE
- * @see #DASH_PUNCTUATION
- * @see #START_PUNCTUATION
- * @see #END_PUNCTUATION
- * @see #CONNECTOR_PUNCTUATION
- * @see #OTHER_PUNCTUATION
- * @see #MATH_SYMBOL
- * @see #CURRENCY_SYMBOL
- * @see #MODIFIER_SYMBOL
- * @see #INITIAL_QUOTE_PUNCTUATION
- * @see #FINAL_QUOTE_PUNCTUATION
- * @since 1.1
- */
- public static native int getType(char ch);
- /**
- * Returns the Unicode general category property of a character. Supports
- * supplementary Unicode code points.
- *
- * @param codePoint character from which the general category property will
- * be retrieved
- * @return the character category property of codePoint as an integer
- * @see #UNASSIGNED
- * @see #UPPERCASE_LETTER
- * @see #LOWERCASE_LETTER
- * @see #TITLECASE_LETTER
- * @see #MODIFIER_LETTER
- * @see #OTHER_LETTER
- * @see #NON_SPACING_MARK
- * @see #ENCLOSING_MARK
- * @see #COMBINING_SPACING_MARK
- * @see #DECIMAL_DIGIT_NUMBER
- * @see #LETTER_NUMBER
- * @see #OTHER_NUMBER
- * @see #SPACE_SEPARATOR
- * @see #LINE_SEPARATOR
- * @see #PARAGRAPH_SEPARATOR
- * @see #CONTROL
- * @see #FORMAT
- * @see #PRIVATE_USE
- * @see #SURROGATE
- * @see #DASH_PUNCTUATION
- * @see #START_PUNCTUATION
- * @see #END_PUNCTUATION
- * @see #CONNECTOR_PUNCTUATION
- * @see #OTHER_PUNCTUATION
- * @see #MATH_SYMBOL
- * @see #CURRENCY_SYMBOL
- * @see #MODIFIER_SYMBOL
- * @see #INITIAL_QUOTE_PUNCTUATION
- * @see #FINAL_QUOTE_PUNCTUATION
- * @since 1.5
- */
- public static native int getType(int codePoint);
- /**
- * Converts a digit into a character which represents that digit
- * in a specified radix. If the radix exceeds MIN_RADIX or MAX_RADIX,
- * or the digit exceeds the radix, then the null character <code>'\0'</code>
- * is returned. Otherwise the return value is in '0'-'9' and 'a'-'z'.
- * <br>
- * return value boundary = U+0030-U+0039|U+0061-U+007A
- *
- * @param digit digit to be converted into a character
- * @param radix radix of digit
- * @return character representing digit in radix, or '\0'
- * @see #MIN_RADIX
- * @see #MAX_RADIX
- * @see #digit(char, int)
- */
- public static char forDigit(int digit, int radix)
- {
- if (radix < MIN_RADIX || radix > MAX_RADIX
- || digit < 0 || digit >= radix)
- return '\0';
- return (char) (digit < 10 ? ('0' + digit) : ('a' - 10 + digit));
- }
- /**
- * Returns the Unicode directionality property of the character. This
- * is used in the visual ordering of text.
- *
- * @param ch the character to look up
- * @return the directionality constant, or DIRECTIONALITY_UNDEFINED
- * @see #DIRECTIONALITY_UNDEFINED
- * @see #DIRECTIONALITY_LEFT_TO_RIGHT
- * @see #DIRECTIONALITY_RIGHT_TO_LEFT
- * @see #DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC
- * @see #DIRECTIONALITY_EUROPEAN_NUMBER
- * @see #DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR
- * @see #DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR
- * @see #DIRECTIONALITY_ARABIC_NUMBER
- * @see #DIRECTIONALITY_COMMON_NUMBER_SEPARATOR
- * @see #DIRECTIONALITY_NONSPACING_MARK
- * @see #DIRECTIONALITY_BOUNDARY_NEUTRAL
- * @see #DIRECTIONALITY_PARAGRAPH_SEPARATOR
- * @see #DIRECTIONALITY_SEGMENT_SEPARATOR
- * @see #DIRECTIONALITY_WHITESPACE
- * @see #DIRECTIONALITY_OTHER_NEUTRALS
- * @see #DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING
- * @see #DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE
- * @see #DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING
- * @see #DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE
- * @see #DIRECTIONALITY_POP_DIRECTIONAL_FORMAT
- * @since 1.4
- */
- public static native byte getDirectionality(char ch);
- /**
- * Returns the Unicode directionality property of the character. This
- * is used in the visual ordering of text. Unlike getDirectionality(char),
- * this method supports supplementary Unicode code points.
- *
- * @param codePoint the character to look up
- * @return the directionality constant, or DIRECTIONALITY_UNDEFINED
- * @see #DIRECTIONALITY_UNDEFINED
- * @see #DIRECTIONALITY_LEFT_TO_RIGHT
- * @see #DIRECTIONALITY_RIGHT_TO_LEFT
- * @see #DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC
- * @see #DIRECTIONALITY_EUROPEAN_NUMBER
- * @see #DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR
- * @see #DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR
- * @see #DIRECTIONALITY_ARABIC_NUMBER
- * @see #DIRECTIONALITY_COMMON_NUMBER_SEPARATOR
- * @see #DIRECTIONALITY_NONSPACING_MARK
- * @see #DIRECTIONALITY_BOUNDARY_NEUTRAL
- * @see #DIRECTIONALITY_PARAGRAPH_SEPARATOR
- * @see #DIRECTIONALITY_SEGMENT_SEPARATOR
- * @see #DIRECTIONALITY_WHITESPACE
- * @see #DIRECTIONALITY_OTHER_NEUTRALS
- * @see #DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING
- * @see #DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE
- * @see #DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING
- * @see #DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE
- * @see #DIRECTIONALITY_POP_DIRECTIONAL_FORMAT
- * @since 1.5
- */
- public static native byte getDirectionality(int codePoint);
- /**
- * Determines whether the character is mirrored according to Unicode. For
- * example, <code>\u0028</code> (LEFT PARENTHESIS) appears as '(' in
- * left-to-right text, but ')' in right-to-left text.
- *
- * @param ch the character to look up
- * @return true if the character is mirrored
- * @since 1.4
- */
- public static boolean isMirrored(char ch)
- {
- return (readChar(ch) & MIRROR_MASK) != 0;
- }
- /**
- * Determines whether the character is mirrored according to Unicode. For
- * example, <code>\u0028</code> (LEFT PARENTHESIS) appears as '(' in
- * left-to-right text, but ')' in right-to-left text. Unlike
- * isMirrored(char), this method supports supplementary Unicode code points.
- *
- * @param codePoint the character to look up
- * @return true if the character is mirrored
- * @since 1.5
- */
- public static boolean isMirrored(int codePoint)
- {
- int plane = codePoint >>> 16;
- if (plane > 2 && plane != 14)
- return false;
- return (readCodePoint(codePoint) & MIRROR_MASK) != 0;
- }
- /**
- * Compares another Character to this Character, numerically.
- *
- * @param anotherCharacter Character to compare with this Character
- * @return a negative integer if this Character is less than
- * anotherCharacter, zero if this Character is equal, and
- * a positive integer if this Character is greater
- * @throws NullPointerException if anotherCharacter is null
- * @since 1.2
- */
- public int compareTo(Character anotherCharacter)
- {
- return value - anotherCharacter.value;
- }
- /**
- * Returns an <code>Character</code> object wrapping the value.
- * In contrast to the <code>Character</code> constructor, this method
- * will cache some values. It is used by boxing conversion.
- *
- * @param val the value to wrap
- * @return the <code>Character</code>
- *
- * @since 1.5
- */
- public static Character valueOf(char val)
- {
- if (val > MAX_CACHE)
- return new Character(val);
- synchronized (charCache)
- {
- if (charCache[val - MIN_VALUE] == null)
- charCache[val - MIN_VALUE] = new Character(val);
- return charCache[val - MIN_VALUE];
- }
- }
- /**
- * Reverse the bytes in val.
- * @since 1.5
- */
- public static char reverseBytes(char val)
- {
- return (char) (((val >> 8) & 0xff) | ((val << 8) & 0xff00));
- }
- /**
- * Converts a unicode code point to a UTF-16 representation of that
- * code point.
- *
- * @param codePoint the unicode code point
- *
- * @return the UTF-16 representation of that code point
- *
- * @throws IllegalArgumentException if the code point is not a valid
- * unicode code point
- *
- * @since 1.5
- */
- public static char[] toChars(int codePoint)
- {
- if (!isValidCodePoint(codePoint))
- throw new IllegalArgumentException("Illegal Unicode code point : "
- + codePoint);
- char[] result = new char[charCount(codePoint)];
- int ignore = toChars(codePoint, result, 0);
- return result;
- }
- /**
- * Converts a unicode code point to its UTF-16 representation.
- *
- * @param codePoint the unicode code point
- * @param dst the target char array
- * @param dstIndex the start index for the target
- *
- * @return number of characters written to <code>dst</code>
- *
- * @throws IllegalArgumentException if <code>codePoint</code> is not a
- * valid unicode code point
- * @throws NullPointerException if <code>dst</code> is <code>null</code>
- * @throws IndexOutOfBoundsException if <code>dstIndex</code> is not valid
- * in <code>dst</code> or if the UTF-16 representation does not
- * fit into <code>dst</code>
- *
- * @since 1.5
- */
- public static int toChars(int codePoint, char[] dst, int dstIndex)
- {
- if (!isValidCodePoint(codePoint))
- {
- throw new IllegalArgumentException("not a valid code point: "
- + codePoint);
- }
- int result;
- if (isSupplementaryCodePoint(codePoint))
- {
- // Write second char first to cause IndexOutOfBoundsException
- // immediately.
- final int cp2 = codePoint - 0x10000;
- dst[dstIndex + 1] = (char) ((cp2 % 0x400) + (int) MIN_LOW_SURROGATE);
- dst[dstIndex] = (char) ((cp2 / 0x400) + (int) MIN_HIGH_SURROGATE);
- result = 2;
- }
- else
- {
- dst[dstIndex] = (char) codePoint;
- result = 1;
- }
- return result;
- }
- /**
- * Return number of 16-bit characters required to represent the given
- * code point.
- *
- * @param codePoint a unicode code point
- *
- * @return 2 if codePoint >= 0x10000, 1 otherwise.
- *
- * @since 1.5
- */
- public static int charCount(int codePoint)
- {
- return
- (codePoint >= MIN_SUPPLEMENTARY_CODE_POINT)
- ? 2
- : 1;
- }
- /**
- * Determines whether the specified code point is
- * in the range 0x10000 .. 0x10FFFF, i.e. the character is within the Unicode
- * supplementary character range.
- *
- * @param codePoint a Unicode code point
- *
- * @return <code>true</code> if code point is in supplementary range
- *
- * @since 1.5
- */
- public static boolean isSupplementaryCodePoint(int codePoint)
- {
- return codePoint >= MIN_SUPPLEMENTARY_CODE_POINT
- && codePoint <= MAX_CODE_POINT;
- }
- /**
- * Determines whether the specified code point is
- * in the range 0x0000 .. 0x10FFFF, i.e. it is a valid Unicode code point.
- *
- * @param codePoint a Unicode code point
- *
- * @return <code>true</code> if code point is valid
- *
- * @since 1.5
- */
- public static boolean isValidCodePoint(int codePoint)
- {
- return codePoint >= MIN_CODE_POINT && codePoint <= MAX_CODE_POINT;
- }
- /**
- * Return true if the given character is a high surrogate.
- * @param ch the character
- * @return true if the character is a high surrogate character
- *
- * @since 1.5
- */
- public static boolean isHighSurrogate(char ch)
- {
- return ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE;
- }
- /**
- * Return true if the given character is a low surrogate.
- * @param ch the character
- * @return true if the character is a low surrogate character
- *
- * @since 1.5
- */
- public static boolean isLowSurrogate(char ch)
- {
- return ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE;
- }
- /**
- * Return true if the given characters compose a surrogate pair.
- * This is true if the first character is a high surrogate and the
- * second character is a low surrogate.
- * @param ch1 the first character
- * @param ch2 the first character
- * @return true if the characters compose a surrogate pair
- *
- * @since 1.5
- */
- public static boolean isSurrogatePair(char ch1, char ch2)
- {
- return isHighSurrogate(ch1) && isLowSurrogate(ch2);
- }
- /**
- * Given a valid surrogate pair, this returns the corresponding
- * code point.
- * @param high the high character of the pair
- * @param low the low character of the pair
- * @return the corresponding code point
- *
- * @since 1.5
- */
- public static int toCodePoint(char high, char low)
- {
- return ((high - MIN_HIGH_SURROGATE) * 0x400) +
- (low - MIN_LOW_SURROGATE) + 0x10000;
- }
- /**
- * Get the code point at the specified index in the CharSequence.
- * This is like CharSequence#charAt(int), but if the character is
- * the start of a surrogate pair, and there is a following
- * character, and this character completes the pair, then the
- * corresponding supplementary code point is returned. Otherwise,
- * the character at the index is returned.
- *
- * @param sequence the CharSequence
- * @param index the index of the codepoint to get, starting at 0
- * @return the codepoint at the specified index
- * @throws IndexOutOfBoundsException if index is negative or >= length()
- * @since 1.5
- */
- public static int codePointAt(CharSequence sequence, int index)
- {
- int len = sequence.length();
- if (index < 0 || index >= len)
- throw new IndexOutOfBoundsException();
- char high = sequence.charAt(index);
- if (! isHighSurrogate(high) || ++index >= len)
- return high;
- char low = sequence.charAt(index);
- if (! isLowSurrogate(low))
- return high;
- return toCodePoint(high, low);
- }
- /**
- * Get the code point at the specified index in the CharSequence.
- * If the character is the start of a surrogate pair, and there is a
- * following character, and this character completes the pair, then
- * the corresponding supplementary code point is returned.
- * Otherwise, the character at the index is returned.
- *
- * @param chars the character array in which to look
- * @param index the index of the codepoint to get, starting at 0
- * @return the codepoint at the specified index
- * @throws IndexOutOfBoundsException if index is negative or >= length()
- * @since 1.5
- */
- public static int codePointAt(char[] chars, int index)
- {
- return codePointAt(chars, index, chars.length);
- }
- /**
- * Get the code point at the specified index in the CharSequence.
- * If the character is the start of a surrogate pair, and there is a
- * following character within the specified range, and this
- * character completes the pair, then the corresponding
- * supplementary code point is returned. Otherwise, the character
- * at the index is returned.
- *
- * @param chars the character array in which to look
- * @param index the index of the codepoint to get, starting at 0
- * @param limit the limit past which characters should not be examined
- * @return the codepoint at the specified index
- * @throws IndexOutOfBoundsException if index is negative or >=
- * limit, or if limit is negative or >= the length of the array
- * @since 1.5
- */
- public static int codePointAt(char[] chars, int index, int limit)
- {
- if (index < 0 || index >= limit || limit < 0 || limit > chars.length)
- throw new IndexOutOfBoundsException();
- char high = chars[index];
- if (! isHighSurrogate(high) || ++index >= limit)
- return high;
- char low = chars[index];
- if (! isLowSurrogate(low))
- return high;
- return toCodePoint(high, low);
- }
- /**
- * Get the code point before the specified index. This is like
- * #codePointAt(char[], int), but checks the characters at
- * <code>index-1</code> and <code>index-2</code> to see if they form
- * a supplementary code point. If they do not, the character at
- * <code>index-1</code> is returned.
- *
- * @param chars the character array
- * @param index the index just past the codepoint to get, starting at 0
- * @return the codepoint at the specified index
- * @throws IndexOutOfBoundsException if index is negative or >= length()
- * @since 1.5
- */
- public static int codePointBefore(char[] chars, int index)
- {
- return codePointBefore(chars, index, 1);
- }
- /**
- * Get the code point before the specified index. This is like
- * #codePointAt(char[], int), but checks the characters at
- * <code>index-1</code> and <code>index-2</code> to see if they form
- * a supplementary code point. If they do not, the character at
- * <code>index-1</code> is returned. The start parameter is used to
- * limit the range of the array which may be examined.
- *
- * @param chars the character array
- * @param index the index just past the codepoint to get, starting at 0
- * @param start the index before which characters should not be examined
- * @return the codepoint at the specified index
- * @throws IndexOutOfBoundsException if index is > start or >
- * the length of the array, or if limit is negative or >= the
- * length of the array
- * @since 1.5
- */
- public static int codePointBefore(char[] chars, int index, int start)
- {
- if (index < start || index > chars.length
- || start < 0 || start >= chars.length)
- throw new IndexOutOfBoundsException();
- --index;
- char low = chars[index];
- if (! isLowSurrogate(low) || --index < start)
- return low;
- char high = chars[index];
- if (! isHighSurrogate(high))
- return low;
- return toCodePoint(high, low);
- }
- /**
- * Get the code point before the specified index. This is like
- * #codePointAt(CharSequence, int), but checks the characters at
- * <code>index-1</code> and <code>index-2</code> to see if they form
- * a supplementary code point. If they do not, the character at
- * <code>index-1</code> is returned.
- *
- * @param sequence the CharSequence
- * @param index the index just past the codepoint to get, starting at 0
- * @return the codepoint at the specified index
- * @throws IndexOutOfBoundsException if index is negative or >= length()
- * @since 1.5
- */
- public static int codePointBefore(CharSequence sequence, int index)
- {
- int len = sequence.length();
- if (index < 1 || index > len)
- throw new IndexOutOfBoundsException();
- --index;
- char low = sequence.charAt(index);
- if (! isLowSurrogate(low) || --index < 0)
- return low;
- char high = sequence.charAt(index);
- if (! isHighSurrogate(high))
- return low;
- return toCodePoint(high, low);
- }
- } // class Character
|