Hewbrew+unicode=hell

This commit is contained in:
Willem Cazander 2022-10-10 18:04:27 +02:00
parent 76f3da5da7
commit ca1fe9d9d0
27 changed files with 460 additions and 115 deletions

View file

@ -0,0 +1,301 @@
package love.distributedrebirth.numberxd.unicode;
import java.text.DecimalFormat;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnClassInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnConstantsʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnPackageInfoʸᴰ;
import love.distributedrebirth.bassboonyd.jmx.DefaultEnumSetᴶᴹˣ;
import love.distributedrebirth.bassboonyd.jmx.GuageCounterᴶᴹˣ;
import love.distributedrebirth.numberxd.base2t.part.T10PartDecimal;
import love.distributedrebirth.numberxd.base2t.part.T16PartHex;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnClassInfoʸᴰ(name = "BaseGlyphSet", purpose = "The encoded base scripts.")
@BãßBȍőnPackageInfoʸᴰ(name = "love.distributedrebirth.numberxd")
public enum BaseGlyphSet implements DefaultEnumSetᴶᴹˣ<BaseGlyphSet,BaseGlyphSetKeyʸᴰ> {
// TODO: Move this into unicode4D and TyyPartXxx
LATIN_BASIC(
new BaseGlyphSetNumber(v -> T10PartDecimal.DEFAULT.BãßVoorElk(x -> v.add(Integer.toString(x.BȍőnRangTelNul())))),
new BaseGlyphSetNumber(v -> T16PartHex.DEFAULT.BãßVoorElk(x -> v.add(x.BȍőnAlt1Value()))),
new BaseGlyphSetNumber("1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R")),
LATIN_DTMF(
new BaseGlyphSetNumber(v -> T10PartDecimal.DEFAULT.BãßVoorElk(x -> v.add(x.BȍőnChinaValue()))).withSeperator(BãßBȍőnConstantsʸᴰ.STR_SPACE),
new BaseGlyphSetNumber("1","2","3","A","4","5","6","B","7","8","9","C","*","0","#","D"),
null),
LATIN_TOP(
new BaseGlyphSetNumber("","¹","²","³","","","","","",""),
new BaseGlyphSetNumber("","¹","²","³","","","","","","","","","","","",""),
new BaseGlyphSetNumber("¹","²","³","","","","","","","","","","","","","","","","","","","","","","","Q","ᴿ")),
LATIN_SUB(
new BaseGlyphSetNumber("","","","","","","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","","բ"),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","բ","G","","","","","","","","","","Q","")),
LATIN_TOPHEX(
LATIN_BASIC.BȍőnNumber10(),
LATIN_BASIC.BȍőnNumber16().withAltGlyphSet(LATIN_TOP),
null),
LATIN_SUBHEX(
LATIN_BASIC.BȍőnNumber10(),
LATIN_BASIC.BȍőnNumber16().withAltGlyphSet(LATIN_SUB),
null),
TONE_SCRIPT(
new BaseGlyphSetNumber(v -> T10PartDecimal.DEFAULT.BãßVoorElk(x -> v.add(x.BȍőnDialTone()))),
new BaseGlyphSetNumber(v -> T16PartHex.DEFAULT.BãßVoorElk(x -> v.add(x.BȍőnDialTone()))),
new BaseGlyphSetNumber("꜊꜈","꜊꜉","꜊꜋","꜊꜌","꜊꜍","꜊꜎","꜊꜏","꜊꜐","꜊꜑","˧˥","˧˦","˧˨","˧˩","˧꜒","˧꜓","˧꜔","˧꜕","˧꜖","꜏˥","꜏˦","꜏˧","꜏˨","꜏˩","꜏꜍","꜏꜎","꜏꜐","꜏꜑")),
DIPAVALI_LRPATH_TOPHEX(
new BaseGlyphSetNumber(v -> T10PartDecimal.DEFAULT.BãßVoorElk(x -> v.add(x.BȍőnAlt1Value()))),
new BaseGlyphSetNumber("˧˥˩","˧˩˥","˧˥˦","˧˩˨","˧˦˦","˧˨˨","˧˥˥","˧˩˩","˥˩˧","˩˥˧","˥˦˧","˩˨˧","˦˦˧","˨˨˧","˥˥˧","˩˩˧").withAltGlyphSet(BaseGlyphSet.LATIN_TOP),
TONE_SCRIPT.BȍőnNumber27()),
DIPAVALI_LRPATH_SUBHEX(
new BaseGlyphSetNumber(v -> T10PartDecimal.DEFAULT.BãßVoorElk(x -> v.add(x.BȍőnAlt1Value()))),
new BaseGlyphSetNumber("˧˥˩","˧˩˥","˧˥˦","˧˩˨","˧˦˦","˧˨˨","˧˥˥","˧˩˩","˥˩˧","˩˥˧","˥˦˧","˩˨˧","˦˦˧","˨˨˧","˥˥˧","˩˩˧").withAltGlyphSet(BaseGlyphSet.LATIN_SUB),
TONE_SCRIPT.BȍőnNumber27()),
DIPAVALI_RLPATH_TOPHEX(
new BaseGlyphSetNumber(v -> T10PartDecimal.DEFAULT.BãßVoorElk(x -> v.add(x.BȍőnAlt2Value()))),
new BaseGlyphSetNumber("꜔꜒꜖","꜔꜖꜒","꜔꜒꜓","꜔꜖꜕","꜔꜓꜓","꜔꜕꜕","꜔꜒꜒","꜔꜖꜖","꜒꜖꜔","꜖꜒꜔","꜒꜓꜔","꜖꜕꜔","꜓꜓꜔","꜕꜕꜔","꜒꜒꜔","꜖꜖꜔").withAltGlyphSet(BaseGlyphSet.LATIN_TOP),
TONE_SCRIPT.BȍőnNumber27()),
DIPAVALI_RLPATH_SUBHEX(
new BaseGlyphSetNumber(v -> T10PartDecimal.DEFAULT.BãßVoorElk(x -> v.add(x.BȍőnAlt2Value()))),
new BaseGlyphSetNumber("꜔꜒꜖","꜔꜖꜒","꜔꜒꜓","꜔꜖꜕","꜔꜓꜓","꜔꜕꜕","꜔꜒꜒","꜔꜖꜖","꜒꜖꜔","꜖꜒꜔","꜒꜓꜔","꜖꜕꜔","꜓꜓꜔","꜕꜕꜔","꜒꜒꜔","꜖꜖꜔").withAltGlyphSet(BaseGlyphSet.LATIN_SUB),
TONE_SCRIPT.BȍőnNumber27()),
GREEK(
new BaseGlyphSetNumber("ō","α","β","γ","δ","ε","ϝ","ζ","η","θ"),
new BaseGlyphSetNumber("ō","α","β","γ","δ","ε","ϝ","ζ","η","θ","ι","κ","λ","μ","ν","ξ"),
new BaseGlyphSetNumber("α","β","γ","δ","ε","ϝ","ζ","η","θ","ι","κ","λ","μ","ν","ξ","ο","π","ϟ","ρ","σ","τ","υ","φ","χ","ψ","ω","ϡ")),
BENGALI(
new BaseGlyphSetNumber("","","","","","","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","জ্ঞ","ক্ষ","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","","","","","","","","","","","","","")),
KANNADA(
new BaseGlyphSetNumber("","","","","","","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","","","","","","","","","","","","","")),
MALAYALAM(
new BaseGlyphSetNumber("","","","","","","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","","","","","","","","","","","","","ൿ")),
THAI(
new BaseGlyphSetNumber("","","","","","","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","","","","","","","","","","","","","")),
/* TODO: Brahmi is U+11000U+1107F and thus unsupported by ImGui
BRAHMI(
new BaseGlyphSetNumber("𑁦","𑁧","𑁨","𑁩","𑁪","𑁫","𑁬","𑁭","𑁮","𑁯"),
new BaseGlyphSetNumber("𑀮","𑀯","𑀰","𑀱","𑀮𑀺","𑀯𑀺","𑀰𑀺","𑀱𑀺","𑀮𑀽","𑀯𑀽","𑀰𑀽","𑀱𑀽","𑀮𑁄","𑀯𑁄","𑀰𑁄","𑀱𑁄"),
new BaseGlyphSetNumber("𑀓𑁆","𑀔𑁆","𑀕𑁆","𑀖𑁆","𑀗𑁆","𑀘𑁆","𑀙𑁆","𑀚𑁆","𑀛𑁆","𑀜𑁆","𑀝𑁆","𑀞𑁆","𑀟𑁆","𑀠𑁆","𑀡𑁆","𑀢𑁆","𑀣𑁆","𑀤𑁆","𑀥𑁆","𑀦𑁆","𑀧𑁆","𑀨𑁆","𑀩𑁆","𑀪𑁆","𑀫𑁆","𑀬𑁆","𑀭𑁆")),
*/
/* TODO: random selection replace with correct AND Egyptian hieroglyphs should be mapped 0x13000 to 0x1342E but for now on 0xE000 to 0xE42E (BMP) */
HIERO(
new BaseGlyphSetNumber("\ue429","\ue3fa","\ue3fb","\ue3fc","\ue3fd","\ue3fe","\ue3ff","\ue400","\ue401","\ue401").withSeperator(BãßBȍőnConstantsʸᴰ.STR_SPACE),
new BaseGlyphSetNumber("\uE236","\uE237","\uE238","\uE239","\uE23A","\uE23B","\uE23C","\uE23D","\uE23E","\uE23F","\uE241","\uE243","\uE244","\uE245","\uE246","\uE247"),
new BaseGlyphSetNumber(
"\ue3fa","\ue3fb","\ue3fc","\ue3fd","\ue3fe","\ue3ff","\ue400","\ue401","\ue401",
"\ue386","\ue387","\ue388","\ue389","\ue38a","\ue38b","\ue38c","\ue38d","\ue38e",
"\ue362","\ue363","\ue364","\ue365","\ue366","\ue367","\ue368","\ue369","\ue36a").withSeperator(BãßBȍőnConstantsʸᴰ.STR_SPACE)
),
RUNIC(
new BaseGlyphSetNumber("","","","","","","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","",""),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","","","","","","","","","","","","","")),
KOREAN(
new BaseGlyphSetNumber("","","","","","","","","",""),
// TODO: replace Counting Rod Numerals Symbols are "T25PartCountingRod?"
new BaseGlyphSetNumber("𝍠","𝍡","𝍢","𝍣","𝍤","𝍥","𝍦","𝍧","𝍨","𝍩","𝍪","𝍫","𝍬","𝍭","𝍮","𝍯"),
new BaseGlyphSetNumber("","","","","","","","","","","","","","","","","","","","","","","","","","","")),
CHINA(
new BaseGlyphSetNumber("","","","","","","","","",""),
// TODO: replace Yijing Hexagram Symbols are "T64PartYijing"
new BaseGlyphSetNumber("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""),
// TODO: replace Tai Xuan Jing Symbols are "T87PartXuanJing"
new BaseGlyphSetNumber("𝌁","𝌂","𝌃","𝌄","𝌅","𝌆","𝌇","𝌈","𝌉","𝌊","𝌋","𝌌","𝌍","𝌎","𝌏","𝌐","𝌑","𝌒","𝌓","𝌔","𝌕","𝌖","𝌗","𝌘","𝌙","𝌚","𝌛")),
CHINA_FORMAL(
new BaseGlyphSetNumber(v -> T10PartDecimal.DEFAULT.BãßVoorElk(x -> v.add(x.BȍőnChinaKey()))),
null,
null),
CHINA_FORMAL_OLD(
new BaseGlyphSetNumber("","","","","","","","","",""),
null,
null),
JAPAN(
CHINA.BȍőnNumber10(),
KOREAN.BȍőnNumber16(),
null),
JAPAN_FORMAL(
new BaseGlyphSetNumber("","","","","","","","","",""),
null,
null),
CYRILLIC(
new BaseGlyphSetNumber("Ф","А","В","Г","Д","Є","Ѕ","З","И","Ѳ"),
new BaseGlyphSetNumber("Ф","А","В","Г","Д","Є","Ѕ","З","И","Ѳ","І","К","Л","М","Н","Ѯ"),
new BaseGlyphSetNumber("А","В","Г","Д","Є","Ѕ","З","И","Ѳ","І","К","Л","М","Н","Ѯ","Ѻ","П","Ч","Р","С","Т","Ѵ","Ф","Х","Ѱ","Ѿ","Ц")),
ARABIC(
new BaseGlyphSetNumber("٠","١","٢","٣","٤","٥","٦","٧","٨","٩"),
null,
new BaseGlyphSetNumber("ا","ب","ج","د","ه","و","ز","ح","ط","ي","ك","ل","م","ن","س","ع","ف","ص","ق","ر","ش","ت","ث","خ","ذ","ض","ظ"),
true),
HEBREW(
new BaseGlyphSetNumber("אֶפֶס","אֶחָד","שְׁתַּיִם","שְׁלֹשָׁה","אַרְבַּע‎","חֲמִשָּׁה‎","שֵׁשׁ‎","שִׁבְעָה","שְׁמוֹנֶה","תִּשְׁעָה‎").withSeperator(BãßBȍőnConstantsʸᴰ.STR_SPACE),
null,
new BaseGlyphSetNumber("א","ב","ג","ד","ה","ו","ז","ח","ט","י","כ","ל","מ","נ","ס","ע","פ","צ","ק","ר","ש","ת","ך","ם","ן","ף","ץ"),
true),
;
private final GuageCounterᴶᴹˣ printNumber10Count;
private final GuageCounterᴶᴹˣ printNumber16Count;
private final GuageCounterᴶᴹˣ printNumber27Count;
private final BãßBȍőnCoffinOpenʸᴰ<BaseGlyphSetKeyʸᴰ> BBC = BãßBȍőnCoffinOpenʸᴰ.newInstance();
public BãßBȍőnCoffinʸᴰ<BaseGlyphSetKeyʸᴰ> GET_BBC() { return BBC; }
private BaseGlyphSet(BaseGlyphSetNumber numbers) {
this(numbers, null, null);
}
private BaseGlyphSet(BaseGlyphSetNumber numbers, BaseGlyphSetNumber hex, BaseGlyphSetNumber gematria) {
this(numbers, hex, gematria, false);
}
private BaseGlyphSet(BaseGlyphSetNumber numbers, BaseGlyphSetNumber hex, BaseGlyphSetNumber gematria, Boolean reverseScript) {
BBC.PUT_OBJ(BaseGlyphSetKeyʸᴰ.NUMBERS, numbers);
BBC.PUT_OBJ(BaseGlyphSetKeyʸᴰ.HEXIMALS, hex);
BBC.PUT_OBJ(BaseGlyphSetKeyʸᴰ.GEMATRIA, gematria);
BBC.PUT_OBJ(BaseGlyphSetKeyʸᴰ.REVERSE_SCRIPT, reverseScript); // TODO: ImGui workaround
BBC.BOON_INIT(this);
this.BȍőnJmxInit(BaseGlyphSetKeyʸᴰ.JMX);
printNumber10Count = BȍőnJmxInitGuageCounter(BaseGlyphSetKeyʸᴰ.JMX, "printNumber10Count");
printNumber16Count = BȍőnJmxInitGuageCounter(BaseGlyphSetKeyʸᴰ.JMX, "printNumber16Count");
printNumber27Count = BȍőnJmxInitGuageCounter(BaseGlyphSetKeyʸᴰ.JMX, "printNumber27Count");
}
public BaseGlyphSetNumber BȍőnNumber10() {
return GET_BBC().GET_OBJ(BaseGlyphSetKeyʸᴰ.NUMBERS, BaseGlyphSetNumber.class);
}
public BaseGlyphSetNumber BȍőnNumber16() {
return GET_BBC().GET_OBJ(BaseGlyphSetKeyʸᴰ.HEXIMALS, BaseGlyphSetNumber.class);
}
public BaseGlyphSetNumber BȍőnNumber27() {
return GET_BBC().GET_OBJ(BaseGlyphSetKeyʸᴰ.GEMATRIA, BaseGlyphSetNumber.class);
}
public Boolean BȍőnReverseScript() {
return GET_BBC().GET_BOOL(BaseGlyphSetKeyʸᴰ.REVERSE_SCRIPT);
}
public String BȍőnConvertTo(String numbers) {
StringBuilder buf = new StringBuilder();
for (char c:numbers.toCharArray()) {
for (BaseGlyphSet set:values()) {
int loc = set.BȍőnNumber10().BȍőnIndexOf(""+c);
if (loc != -1) {
buf.append(set.BȍőnNumber10().BȍőnCharFor(loc));
}
}
}
return buf.toString();
}
public String BȍőnPrintNumber10(int number) {
return BȍőnPrintNumber10(number, number);
}
public String BȍőnPrintNumber10(int number, int numberMax) {
printNumber10Count.increment();
String maxDigitNumber = Integer.toString(numberMax);
StringBuilder maxDigitFormat = new StringBuilder();
for (int i=0;i<maxDigitNumber.length();i++) {
maxDigitFormat.append("0");
}
String numberStr = new DecimalFormat(maxDigitFormat.toString()).format(number);
StringBuilder buf = new StringBuilder();
for (int i=0;i<numberStr.length();i++) {
char c = numberStr.charAt(i);
int numberDigit = c - '0';
buf.append(BȍőnNumber10().BȍőnCharFor(numberDigit));
if (i<numberStr.length() - 1) {
buf.append(BȍőnNumber10().BȍőnCharSeperator());
}
}
if (BȍőnReverseScript()) {
return buf.reverse().toString();
}
return buf.toString();
}
public String BȍőnPrintNumber16(int number, int numberMax) {
printNumber16Count.increment();
String maxDigitNumber = Integer.toHexString(numberMax);
String numberStr = Integer.toHexString(number);
StringBuilder buf = new StringBuilder();
BaseGlyphSet printSet = this;
for (int i=numberStr.length();i<maxDigitNumber.length();i++) {
buf.append(printSet.BȍőnNumber16().BȍőnCharFor(0));
if (i==numberStr.length() && BȍőnNumber16().BȍőnAltGlyphSet() != null) {
printSet = BȍőnNumber16().BȍőnAltGlyphSet();
}
}
for (int i=0;i<numberStr.length();i++) {
char c = numberStr.charAt(i);
int numberDigit = 0;
if (c >= 'a') {
numberDigit = c - 'a' + 10;
} else {
numberDigit = c - '0';
}
buf.append(printSet.BȍőnNumber16().BȍőnCharFor(numberDigit));
if (i<numberStr.length() - 1) {
buf.append(printSet.BȍőnNumber16().BȍőnCharSeperator());
}
if (i==0 && BȍőnNumber16().BȍőnAltGlyphSet() != null) {
printSet = BȍőnNumber16().BȍőnAltGlyphSet();
}
}
if (BȍőnReverseScript()) {
return buf.reverse().toString();
}
return buf.toString();
}
public String BȍőnPrintNumber27(int number, int numberMax) {
printNumber27Count.increment();
String maxDigitNumber = Integer.toString(numberMax, 27);
String numberStr = Integer.toString(number, 27);
StringBuilder buf = new StringBuilder();
BaseGlyphSet printSet = this;
for (int i=numberStr.length();i<maxDigitNumber.length();i++) {
buf.append(printSet.BȍőnNumber27().BȍőnCharFor(0));
if (i==numberStr.length() && BȍőnNumber27().BȍőnAltGlyphSet() != null) {
printSet = BȍőnNumber27().BȍőnAltGlyphSet();
}
}
for (int i=0;i<numberStr.length();i++) {
char c = numberStr.charAt(i);
int numberDigit = 0;
if (c >= 'a') {
numberDigit = c - 'a' + 10;
} else {
numberDigit = c - '0';
}
buf.append(printSet.BȍőnNumber27().BȍőnCharFor(numberDigit));
if (i<numberStr.length() - 1) {
buf.append(printSet.BȍőnNumber27().BȍőnCharSeperator());
}
if (i==0 && BȍőnNumber27().BȍőnAltGlyphSet() != null) {
printSet = BȍőnNumber27().BȍőnAltGlyphSet();
}
}
if (BȍőnReverseScript()) {
return buf.reverse().toString();
}
return buf.toString();
}
}

View file

@ -0,0 +1,16 @@
package love.distributedrebirth.numberxd.unicode;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreKeyʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public enum BaseGlyphSetKeyʸᴰ implements BãßBȍőnCoffinStoreKeyʸᴰ {
JMX,
NUMBERS,
GEMATRIA,
HEXIMALS,
REVERSE_SCRIPT
;
}

View file

@ -0,0 +1,189 @@
package love.distributedrebirth.numberxd.unicode;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.numberxd.base2t.BaseAppender;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public final class BaseGlyphSetNumber {
private final List<String> chars = new ArrayList<>();
private BaseGlyphSet altGlyphSet = null;
private String charSeperator = "";
public BaseGlyphSetNumber(String char0, String char1, String char2, String char3, String char4, String char5,
String char6, String char7, String char8, String char9) {
this.chars.add(char0);
this.chars.add(char1);
this.chars.add(char2);
this.chars.add(char3);
this.chars.add(char4);
this.chars.add(char5);
this.chars.add(char6);
this.chars.add(char7);
this.chars.add(char8);
this.chars.add(char9);
}
public BaseGlyphSetNumber(String char0, String char1, String char2, String char3, String char4, String char5,
String char6, String char7, String char8, String char9, String charA, String charB, String charC,
String charD, String charE, String charF) {
this.chars.add(char0);
this.chars.add(char1);
this.chars.add(char2);
this.chars.add(char3);
this.chars.add(char4);
this.chars.add(char5);
this.chars.add(char6);
this.chars.add(char7);
this.chars.add(char8);
this.chars.add(char9);
this.chars.add(charA);
this.chars.add(charB);
this.chars.add(charC);
this.chars.add(charD);
this.chars.add(charE);
this.chars.add(charF);
}
public BaseGlyphSetNumber(String char1, String char2, String char3, String char4, String char5, String char6,
String char7, String char8, String char9, String char10, String char20, String char30, String char40,
String char50, String char60, String char70, String char80, String char90, String char100, String char200,
String char300, String char400, String char500, String char600, String char700, String char800,
String char900) {
this.chars.add(char1);
this.chars.add(char2);
this.chars.add(char3);
this.chars.add(char4);
this.chars.add(char5);
this.chars.add(char6);
this.chars.add(char7);
this.chars.add(char8);
this.chars.add(char9);
this.chars.add(char10);
this.chars.add(char20);
this.chars.add(char30);
this.chars.add(char40);
this.chars.add(char50);
this.chars.add(char60);
this.chars.add(char70);
this.chars.add(char80);
this.chars.add(char90);
this.chars.add(char100);
this.chars.add(char200);
this.chars.add(char300);
this.chars.add(char400);
this.chars.add(char500);
this.chars.add(char600);
this.chars.add(char700);
this.chars.add(char800);
this.chars.add(char900);
}
public BaseGlyphSetNumber(List<String> chars) {
this.chars.addAll(chars);
}
public BaseGlyphSetNumber(Consumer<BaseAppender<String>> consumer) {
consumer.accept(new BaseAppender<String>() {
@Override
public void add(String value) {
chars.add(value);
}
});
}
public BaseGlyphSetNumber withAltGlyphSet(BaseGlyphSet altGlyphSet) {
BaseGlyphSetNumber result = new BaseGlyphSetNumber(chars);
result.altGlyphSet = altGlyphSet;
return result;
}
public BaseGlyphSetNumber withSeperator(String charSeperator) {
BaseGlyphSetNumber result = new BaseGlyphSetNumber(chars);
result.charSeperator = charSeperator;
return result;
}
public String BȍőnCharFor(int number) {
return chars.get(number);
}
public int BȍőnIndexOf(String str) {
return chars.indexOf(str);
}
public String BȍőnCharSeperator() {
return charSeperator;
}
public BaseGlyphSet BȍőnAltGlyphSet() {
return altGlyphSet;
}
public String BȍőnCharFor27(int number) {
switch (number) {
case 1:
return chars.get(0);
case 2:
return chars.get(1);
case 3:
return chars.get(2);
case 4:
return chars.get(3);
case 5:
return chars.get(4);
case 6:
return chars.get(5);
case 7:
return chars.get(6);
case 8:
return chars.get(7);
case 9:
return chars.get(8);
case 10:
return chars.get(9);
case 20:
return chars.get(10);
case 30:
return chars.get(11);
case 40:
return chars.get(12);
case 50:
return chars.get(13);
case 60:
return chars.get(14);
case 70:
return chars.get(15);
case 80:
return chars.get(16);
case 90:
return chars.get(17);
case 100:
return chars.get(18);
case 200:
return chars.get(19);
case 300:
return chars.get(20);
case 400:
return chars.get(21);
case 500:
return chars.get(22);
case 600:
return chars.get(23);
case 700:
return chars.get(24);
case 800:
return chars.get(25);
case 900:
return chars.get(26);
default:
throw new IllegalArgumentException("Can't handle higher numbers: "+number);
}
}
}

View file

@ -0,0 +1,64 @@
package love.distributedrebirth.numberxd.unicode;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public enum SourceGlyph {
// Death to latin
// Death to unicode
MATH_PLUS("+","\uE3F6", ""),
MATH_MINUS("-","\uE3F3", ""),
MATH_MULTIPLY("*","\uE3F4", ""),
MATH_DIVIDE("/","\uE3F1", ""),
MATH_POWER("^","\uE1F9", ""),
LOGIC_NOT("!","\uE374", ""),
LOGIC_AND("&","\uE396", ""),
LOGIC_OR("|","\uE39B", ""),
VAR_ASSIGN("=","\uE3F7", ""),
VAR_PERCENTAGE("%","\uE35D", ""),
VAR_TEMPLATE("$","\uE1E3", ""),
VAR_COMMENT("#","\uE1E6", ""),
VAR_AT("@","\uE3F2", ""),
PART_BRACKET_BEGIN("(","\uE286", ""),
PART_BRACKET_CLOSE(")","\uE287", ""),
PART_ARRAY_BEGIN("[","\uE288", ""),
PART_ARRAY_CLOSE("]","\uE289", ""),
PART_BLOCK_BEGIN("{","\uE25A", ""),
PART_BLOCK_CLOSE("}","\uE25B", ""),
PART_TAG_BEGIN("<","\uE339", ""),
PART_TAG_CLOSE(">","\uE33A", ""),
PART_EXT_ARRAY_BEGIN("˧[","\uE258", ""),
PART_EXT_ARRAY_CLOSE("]꜔","\uE25D", ""),
PART_EXT_BLOCK_BEGIN("˧{","\uE259", ""),
PART_EXT_BLOCK_CLOSE("}꜔","\uE25C", ""),
PART_EXT_TAG_BEGIN("˧<","\uE255", ""),
PART_EXT_TAG_CLOSE(">꜔","\uE256", ""),
;
private final String charLatin;
private final String charHiero;
private final String charChina;
private SourceGlyph(String charLatin, String charHiero, String charChina) {
this.charLatin = charLatin;
this.charHiero = charHiero;
this.charChina = charChina;
}
public String getCharLatin() {
return charLatin;
}
public String getCharHiero() {
return charHiero;
}
public String getCharChina() {
return charChina;
}
}

View file

@ -0,0 +1,26 @@
package love.distributedrebirth.numberxd.unicode;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public enum SourceGlyphCharSet {
LATIN,
HIERO,
CHINA,
;
public String print(SourceGlyph ugs) {
if (this == HIERO) {
StringBuilder buf = new StringBuilder();
buf.append("\u2006"); // TODO: find better hiero font
buf.append(ugs.getCharHiero());
buf.append("\u2006");
return buf.toString();
}
if (this == CHINA) {
return ugs.getCharChina();
}
return ugs.getCharLatin();
}
}

View file

@ -0,0 +1,406 @@
package love.distributedrebirth.numberxd.unicode;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public enum UnicodePlane {
// =========== PLANE 0
BASIC_LATIN(0x0000, 0x007F),
LATIN1_SUPPLEMENT(0x080,0x00FF),
LATIN_EXTENDED_A(0x0100,0x017F),
LATIN_EXTENDED_B(0x0180,0x024F),
IPA_EXTENSIONS(0x0250,0x02AF),
SPACING_MODIFIER_LETTERS(0x02B0,0x02FF),
COMBINING_DIACRITICAL_MARKS(0x0300,0x036F),
GREEK_AND_COPTIC(0x0370,0x03FF),
CYRILLIC(0x0400,0x04FF),
CYRILLIC_SUPPLEMENT(0x0500,0x052F),
ARMENIAN(0x0530,0x058F),
HEBREW(0x0590,0x05FF, false),
ARABIC(0x0600,0x06FF, false),
SYRIAC(0x0700,0x074F, false),
ARABIC_SUPPLEMENT(0x0750,0x077F, false),
THAANA(0x0780,0x07BF, false),
NKO(0x07C0,0x07FF, false),
SAMARITAN(0x0800,0x083F, false),
MANDAIC(0x0840,0x085F, false),
SYRIAC_SUPPLEMENT(0x0860,0x086F, false),
ARABIC_EXTENDED_B(0x0870,0x089F, false),
ARABIV_EXTENDED_A(0x08A0,0x08FF, false),
DEVANAGARI(0x0900,0x097F),
BENGALI(0x0980,0x09FF),
GURMUKHI(0x0A00,0x0A7F),
GUJARATI(0x0A80,0x0AFF),
ORIYA(0x0B00,0x0B7F),
TAMIL(0x0B80,0x0BFF),
TELUGU(0x0C00,0x0C7F),
KANNADA(0x0C80,0x0CFF),
MALAYALAM(0x0D00,0x0D7F),
SINHALA(0x0D80,0x0DFF),
THAI(0x0E00,0x0E7F),
LAO(0x0E80,0x0EFF),
TIBETAN(0x0F00,0x0FFF),
MYANMAR(0x1000,0x109F),
GEORGIAN(0x10A0,0x10FF),
HANGUL_JAMO(0x1100,0x11FF),
ETHIOPIC(0x1200,0x137F),
ETHIOPIC_SUPPLEMENT(0x1380,0x139F),
CHEROKEE(0x13A0,0x13FF),
UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS(0x1400,0x167F),
OGHAM(0x1680,0x169F),
RUNIC(0x16A0,0x16FF),
TAGALOG (0x1700,0x171F),
HANUNOO (0x1720,0x173F),
BUHID (0x1740,0x175F),
TAGBANWA (0x1760,0x177F),
KHMER (0x1780,0x17FF),
MONGOLIAN (0x1800,0x18AF),
UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED(0x18B0,0x18FF),
LIMBU(0x1900,0x194F),
TAI_LE (0x1950,0x197F),
NEW_TAI_LUE (0x1980,0x19DF),
KHMER_SYMBOLS (0x19E0,0x19FF),
BUGINESE (0x1A00,0x1A1F),
TAI_THAM (0x1A20,0x1AAF),
COMBINING_DIACRITICAL_MARKS_EXTENDED(0x1AB0,0x1AFF),
BALINESE (0x1B00,0x1B7F),
SUNDANESE (0x1B80,0x1BBF),
BATAK (0x1BC0,0x1BFF),
LEPCHA (0x1C00,0x1C4F),
OL_CHIKI (0x1C50,0x1C7F),
CYRILLIC_EXTENDED_C (0x1C80,0x1C8F),
GEORGIAN_EXTENDED (0x1C90,0x1CBF),
SUNDANESE_SUPPLEMENT (0x1CC0,0x1CCF),
VEDIC_EXTENSIONS (0x1CD0,0x1CFF),
PHONETIC_EXTENSIONS (0x1D00,0x1D7F),
PHONETIC_EXTENSIONS_SUPPLEMENT (0x1D80,0x1DBF),
COMBINING_DIACRITICAL_MARKS_SUPPLEMENT (0x1DC0,0x1DFF),
LATIN_EXTENDED_ADDITINAL (0x1E00,0x1EFF),
GREEK_EXTENDED (0x1F00,0x1FFF),
GENERAL_PUNCTUATION (0x2000,0x206F),
SUPERSCRIPTS_AND_SUBSCRIPTS (0x2070,0x209F),
CURRENCY_SYMBOLS (0x20A0,0x20CF),
COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS (0x20D0,0x20FF),
LETTERLIKE_SYMBOLS (0x2100,0x214F),
NUMBER_FORMS (0x2150,0x218F),
ARROWS (0x2190,0x21FF),
MATHEMATICAL_OPERATORS (0x2200,0x22FF),
MISCELLANEOUS_TECHNICAL (0x2300,0x23FF),
CONTROL_PICTURES (0x2400,0x243F),
OPTICAL_CHARACTER_RECOGNITION (0x2440,0x245F),
ENCLOSED_ALPHANUMERICS (0x2460,0x24FF),
BOX_DRAWING (0x2500,0x257F),
BLOCK_ELEMENTS (0x2580,0x259F),
GEOMETRIC_SHAPES (0x25A0,0x25FF),
MISCELLANEOUS_SYMBOLS (0x2600,0x26FF),
DINGBATS (0x2700,0x27BF),
MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A (0x27C0,0x27EF),
SUPPLEMENTAL_ARROWS_A (0x27F0,0x27FF),
BRAILLE_PATTERNS (0x2800,0x28FF),
SUPPLEMENTAL_ARROWS_B (0x2900,0x297F),
MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B (0x2980,0x29FF),
SUPPLEMENTAL_MATHEMATICAL_OPERATORS (0x2A00,0x2AFF),
MISCELLANEOUS_SYMBOLS_AND_ARROWS (0x2B00,0x2BFF),
GLAGOLITIC (0x2C00,0x2C5F),
LATIN_EXTENDED_C (0x2C60,0x2C7F),
COPTIC (0x2C80,0x2CFF),
GEORGIAN_SUPPLEMENT (0x2D00,0x2D2F),
TIFINAGH (0x2D30,0x2D7F),
ETHIOPIC_EXTENDED (0x2D80,0x2DDF),
CYRILLIC_EXTENDED_A (0x2DE0,0x2DFF),
SUPPLEMENTAL_PUNCTUATION (0x2E00,0x2E7F),
CJK_RADICALS_SUPPLEMENT (0x2E80,0x2EFF),
KANGXI_RADICALS (0x2F00,0x2FDF),
IDEOGRAPHIC_DESCRIPTION_CHARACTERS (0x2FF0,0x2FFF),
CJK_SYMBOLS_AND_PUNCTUATION (0x3000,0x303F),
HIRAGANA (0x3040,0x309F),
KATAKANA (0x30A0,0x30FF),
BOPOMOFO (0x3100,0x312F),
HANGUL_COMPATIBILITY_JAMO (0x3130,0x318F),
KANBUN (0x3190,0x319F),
BOPOMOFO_EXTENDED (0x31A0,0x31BF),
CJK_STROKES (0x31C0,0x31EF),
KATAKANA_PHONETIC_EXTENSIONS (0x31F0,0x31FF),
ENCLOSED_CJK_LETTERS_AND_MONTHS (0x3200,0x32FF),
CJK_COMPATIBILITY (0x3300,0x33FF),
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A (0x3400,0x4DBF),
YIJING_HEXAGRAM_SYMBOLS (0x4DC0,0x4DFF),
CJK_UNIFIED_IDEOGRAPHS (0x4E00,0x9FFF),
YI_SYLLABLES (0xA000,0xA48F),
YI_RADICALS (0xA490,0xA4CF),
LISU (0xA4D0,0xA4FF),
VAI (0xA500,0xA63F),
CYRILLIC_EXTENDED_B (0xA640,0xA69F),
BAMUM (0xA6A0,0xA6FF),
MODIFIER_TONE_LETTERS (0xA700,0xA71F),
LATIN_EXTENDED_D (0xA720,0xA7FF),
SYLOTI_NAGRI (0xA800,0xA82F),
COMMON_INDIC_NUMBER_FORMS (0xA830,0xA83F),
PHAGS_PA (0xA840,0xA87F),
SAURASHTRA (0xA880,0xA8DF),
DEVANAGARI_EXTENDED (0xA8E0,0xA8FF),
KAYAH_LI (0xA900,0xA92F),
REJANG (0xA930,0xA95F),
HANGUL_JAMO_EXTENDED_A (0xA960,0xA97F),
JAVANESE (0xA980,0xA9DF),
MYANMAR_EXTENDED_B (0xA9E0,0xA9FF),
CHAM (0xAA00,0xAA5F),
MYANMAR_EXTENDED_A (0xAA60,0xAA7F),
TAI_VIET (0xAA80,0xAADF),
MEETEI_MAYEK_EXTENSIONS (0xAAE0,0xAAFF),
ETHIOPIC_EXTENDED_A (0xAB00,0xAB2F),
LATIN_EXTENDED_E (0xAB30,0xAB6F),
CHEROKEE_SUPPLEMENT (0xAB70,0xABBF),
MEETEI_MAYEK (0xABC0,0xABFF),
HANGUL_SYLLABLES (0xAC00,0xD7AF),
HANGUL_JAMO_EXTENDED_B (0xD7B0,0xD7FF),
HIGH_SURROGATES (0xD800,0xDB7F),
HIGH_PRIVATE_USE_SURROGATES (0xDB80,0xDBFF),
LOW_SURROGATES (0xDC00,0xDFFF),
PRIVATE_USE_AREA (0xE000,0xF8FF),
CJK_COMPATIBILITY_IDEOGRAPHS (0xF900,0xFAFF),
ALPHABETIC_PRESENTATION_FORMS (0xFB00,0xFB4F),
ARABIC_PRESENTATION_FORMS_A (0xFB50,0xFDFF, false),
VARIATION_SELECTORS (0xFE00,0xFE0F),
VERTICAL_FORMS (0xFE10,0xFE1F),
COMBINING_HALF_MARKS (0xFE20,0xFE2F),
CJK_COMPATIBILITY_FORMS (0xFE30,0xFE4F),
SMALL_FORM_VARIANTS (0xFE50,0xFE6F),
ARABIC_PRESENTATION_FORMS_B (0xFE70,0xFEFF, false),
HALFWIDTH_AND_FULLWIDTH_FORMS (0xFF00,0xFFEF),
SPECIALS (0xFFF0,0xFFFF),
// =========== PLANE 1
LINEAR_B_SYLLABARY (0x10000,0x1007F),
LINEAR_B_IDEOGRAMS (0x10080,0x100FF),
AEGEAN_NUMBERS (0x10100,0x1013F),
ANCIENT_GREEK_NUMBERS (0x10140,0x1018F),
ANCIENT_SYMBOLS (0x10190,0x101CF),
PHAISTOS_DISC (0x101D0,0x101FF),
LYCIAN (0x10280,0x1029F),
CARIAN (0x102A0,0x102DF),
COPTIC_EPACT_NUMBERS (0x102E0,0x102FF),
OLD_ITALIC (0x10300,0x1032F),
GOTHIC (0x10330,0x1034F),
OLD_PERMIC (0x10350,0x1037F),
UGARITIC (0x10380,0x1039F),
OLD_PERSIAN (0x103A0,0x103DF, false),
DESERET (0x10400,0x1044F),
SHAVIAN (0x10450,0x1047F),
OSMANYA (0x10480,0x104AF),
OSAGE (0x104B0,0x104FF),
ELBASAN (0x10500,0x1052F),
CAUCASIAN_ALBANIAN (0x10530,0x1056F),
VITHKUQI (0x10570,0x105BF),
LINEAR_A (0x10600,0x1077F),
LATIN_EXTENDED_F (0x10780,0x107BF),
CYPRIOT_SYLLABARY (0x10800,0x1083F, false),
IMPERIAL_ARAMAIC (0x10840,0x1085F, false),
PALMYRENE (0x10860,0x1087F, false),
NABATAEAN (0x10880,0x108AF, false),
HATRAN (0x108E0,0x108FF, false),
PHOENICIAN (0x10900,0x1091F, false),
LYDIAN (0x10920,0x1093F, false),
MEROITIC_HIEROGLYPHS (0x10980,0x1099F, false),
MEROITIC_CURSIVE (0x109A0,0x109FF, false),
KHAROSHTHI (0x10A00,0x10A5F, false),
OLD_SOUTH_ARABIAN (0x10A60,0x10A7F, false),
OLD_NORTH_ARABIAN (0x10A80,0x10A9F, false),
MANICHAEAN (0x10AC0,0x10AFF, false),
AVESTAN (0x10B00,0x10B3F, false),
INSCRIPTIONAL_PARTHIAN (0x10B40,0x10B5F, false),
INSCRIPTIONAL_PAHLAVI (0x10B60,0x10B7F, false),
PSALTER_PAHLAVI (0x10B80,0x10BAF, false),
OLD_TURKIC (0x10C00,0x10C4F, false),
OLD_HUNGARIAN (0x10C80,0x10CFF, false),
HANIFI_ROHINGYA (0x10D00,0x10D3F, false),
RUMI_NUMERAL_SYMBOLS (0x10E60,0x10E7F, false),
YEZIDI (0x10E80,0x10EBF, false),
OLD_SOGDIAN (0x10F00,0x10F2F, false),
SOGDIAN (0x10F30,0x10F6F, false),
OLD_UYGHUR (0x10F70,0x10FAF, false),
CHORASMIAN (0x10FB0,0x10FDF, false),
ELYMAIC (0x10FE0,0x10FFF, false),
BRAHMI (0x11000,0x1107F),
KAITHI (0x11080,0x110CF),
SORA_SOMPENG (0x110D0,0x110FF),
CHAKMA (0x11100,0x1114F),
MAHAJANI (0x11150,0x1117F),
SHARADA (0x11180,0x111DF),
SINHALA_ARCHAIC_NUMBERS (0x111E0,0x111FF),
KHOJKI (0x11200,0x1124F),
MULTANI (0x11280,0x112AF),
KHUDAWADI (0x112B0,0x112FF),
GRANTHA (0x11300,0x1137F),
NEWA (0x11400,0x1147F),
TIRHUTA (0x11480,0x114DF),
SIDDHAM (0x11580,0x115FF),
MODI (0x11600,0x1165F),
MONGOLIAN_SUPPLEMENT (0x11660,0x1167F),
TAKRI (0x11680,0x116CF),
AHOM (0x11700,0x1174F),
DOGRA (0x11800,0x1184F),
WARANG_CITI (0x118A0,0x118FF),
DIVES_AKURU (0x11900,0x1195F),
NANDINAGARI (0x119A0,0x119FF),
ZANABAZAR_SQUARE (0x11A00,0x11A4F),
SOYOMBO (0x11A50,0x11AAF),
UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A (0x11AB0,0x11ABF),
PAU_CIN_HAU (0x11AC0,0x11AFF),
BHAIKSUKI (0x11C00,0x11C6F),
MARCHEN (0x11C70,0x11CBF),
MASARAM_GONDI (0x11D00,0x11D5F),
GUNJALA_GONDI (0x11D60,0x11DAF),
MAKASAR (0x11EE0,0x11EFF),
LISU_SUPPLEMENT (0x11FB0,0x11FBF),
TAMIL_SUPPLEMENT (0x11FC0,0x11FFF),
CUNEIFORM (0x12000,0x123FF),
CUNEIFORM_NUMBERS_AND_PUNCTUATION (0x12400,0x1247F),
EARLY_DYNASTIC_CUNEIFORM (0x12480,0x1254F),
CYPRO_MINOAN (0x12F90,0x12FFF),
EGYPTIAN_HIEROGLYPHS (0x13000,0x1342F),
EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS (0x13430,0x1343F),
ANATOLIAN_HIEROGLYPHS (0x14400,0x1467F),
BAMUM_SUPPLEMENT (0x16800,0x16A3F),
MRO (0x16A40,0x16A6F),
TANGSA (0x16A70,0x16ACF),
BASSA_VAH (0x16AD0,0x16AFF),
PAHAWH_HMONG (0x16B00,0x16B8F),
MEDEFAIDRIN (0x16E40,0x16E9F),
MIAO (0x16F00,0x16F9F),
IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION (0x16FE0,0x16FFF),
TANGUT (0x17000,0x187FF),
TANGUT_COMPONENTS (0x18800,0x18AFF),
KHITAN_SMALL_SCRIPT (0x18B00,0x18CFF),
TANGUT_SUPPLEMENT (0x18D00,0x18D7F),
KANA_EXTENDED_B (0x1AFF0,0x1AFFF),
KANA_SUPPLEMENT (0x1B000,0x1B0FF),
KANA_EXTENDED_A (0x1B100,0x1B12F),
SMALL_KANA_EXTENSION (0x1B130,0x1B16F),
NUSHU (0x1B170,0x1B2FF),
DUPLOYAN (0x1BC00,0x1BC9F),
SHORTHAND_FORMAT_CONTROLS (0x1BCA0,0x1BCAF),
ZNAMENNY_MUSICAL_NOTATION (0x1CF00,0x1CFCF),
BYZANTINE_MUSICAL_SYMBOLS (0x1D000,0x1D0FF),
MUSICAL_SYMBOLS (0x1D100,0x1D1FF),
ANCIENT_GREEK_MUSICAL_NOTATION (0x1D200,0x1D24F),
MAYAN_NUMERALS (0x1D2E0,0x1D2FF),
TAI_XUAN_JING_SYMBOLS (0x1D300,0x1D35F),
COUNTING_ROD_NUMERALS (0x1D360,0x1D37F),
MATHEMATICAL_ALPHANUMERIC_SYMBOLS (0x1D400,0x1D7FF),
SUTTON_SIGNWRITING (0x1D800,0x1DAAF),
LATIN_EXTENDED_G (0x1DF00,0x1DFFF),
GLAGOLITIC_SUPPLEMENT (0x1E000,0x1E02F),
NYIAKENG_PUACHUE_HMONG (0x1E100,0x1E14F),
TOTO (0x1E290,0x1E2BF),
WANCHO (0x1E2C0,0x1E2FF),
ETHIOPIC_EXTENDED_B (0x1E7E0,0x1E7FF),
MENDE_KIKAKUI (0x1E800,0x1E8DF),
ADLAM (0x1E900,0x1E95F),
INDIC_SIYAQ_NUMBERS (0x1EC70,0x1ECBF),
OTTOMAN_SIYAQ_NUMBERS (0x1ED00,0x1ED4F),
ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS (0x1EE00,0x1EEFF, false),
MAHJONG_TILES (0x1F000,0x1F02F),
DOMINO_TILES (0x1F030,0x1F09F),
PLAYING_CARDS (0x1F0A0,0x1F0FF),
ENCLOSED_ALPHANUMERIC_SUPPLEMENT (0x1F100,0x1F1FF),
ENCLOSED_IDEOGRAPHIC_SUPPLEMENT (0x1F200,0x1F2FF),
MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS (0x1F300,0x1F5FF),
EMOTICONS (0x1F600,0x1F64F),
ORNAMENTAL_DINGBATS (0x1F650,0x1F67F),
TRANSPORT_AND_MAP_SYMBOLS (0x1F680,0x1F6FF),
ALCHEMICAL_SYMBOLS (0x1F700,0x1F77F),
GEOMETRIC_SHAPES_EXTENDED (0x1F780,0x1F7FF),
SUPPLEMENTAL_ARROWS_C (0x1F800,0x1F8FF),
SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS (0x1F900,0x1F9FF),
CHESS_SYMBOLS (0x1FA00,0x1FA6F),
SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A (0x1FA70,0x1FAFF),
SYMBOLS_FOR_LEGACY_COMPUTING (0x1FB00,0x1FBFF),
// =========== PLANE 2
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B (0x20000,0x2A6DF),
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C (0x2A700,0x2B73F),
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D (0x2B740,0x2B81F),
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E (0x2B820,0x2CEAF),
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F (0x2CEB0,0x2EBEF),
CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT (0x2F800,0x2FA1F),
// =========== PLANE 3
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G (0x30000,0x3134F),
// =========== PLANE UNALLOCATED
UNALLOCATED(0x31350,0xFFFFF),
// =========== PLANE UNKNOWN
UNKNOWN(0x0FF00000,0x0FFFFFFF)
;
private final int start;
private final int stop;
private final boolean leftToRight;
private UnicodePlane(int start, int stop) {
this(start, stop, true);
}
private UnicodePlane(int start, int stop, boolean leftToRight) {
this.start = start;
this.stop = stop;
this.leftToRight = leftToRight;
}
public int getStart() {
return start;
}
public int getStop() {
return stop;
}
public boolean isLeftToRight() {
return leftToRight;
}
public boolean isPlane0() {
return getStart() < 0xFFFF;
}
public static UnicodePlane valueOfUnicode(int unicode) {
for (UnicodePlane value:values()) {
if (unicode >= value.getStart() && unicode <= value.getStop()) {
return value;
}
}
return UnicodePlane.UNKNOWN;
}
}