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

@ -4,16 +4,19 @@ import java.util.ArrayList;
import java.util.List;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnConstantsʸᴰ;
import love.distributedrebirth.numberxd.base2t.BaseIteratorOctal;
import love.distributedrebirth.numberxd.base2t.part.T04PartQuad;
import love.distributedrebirth.numberxd.base2t.type.V009Tyte;
import love.distributedrebirth.numberxd.base2t.type.V036Teger;
import love.distributedrebirth.numberxd.unicode.BaseGlyphSet;
import love.distributedrebirth.numberxd.unicode.SourceGlyph;
import love.distributedrebirth.numberxd.unicode.SourceGlyphCharSet;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class Gê̄ldGetậl extends AbstractBaseGetậlMatrix1<Gê̄ldGetậl,V009Tyte> {
private final V036Teger value;
private final double totalDecimalValue;
private static final Character LEFT_TO_RIGHT_MARK = 0x200E;
private static final Character RIGHT_TO_LEFT_MARK = 0x200F;
@ -23,7 +26,6 @@ public class Gê̄ldGetậl extends AbstractBaseGetậlMatrix1<Gê̄ldGetậl,V0
public Gê̄ldGetậl(V036Teger value) {
this.value = value;
this.totalDecimalValue = calculateDecimalValue();
}
public Gê̄ldGetậl(String money) {
@ -58,6 +60,10 @@ public class Gê̄ldGetậl extends AbstractBaseGetậlMatrix1<Gê̄ldGetậl,V0
result.add(geldDigit);
}
}
Gê̄ldGetậlÅtHebrewVowel vowel = Gê̄ldGetậlÅtHebrewVowel.valueOfCharacter(codePoint);
if (!Gê̄ldGetậlÅtHebrewVowel.NONE.equals(vowel)) {
continue; // ignore multiple vowels on letters
}
Gê̄ldGetậlÅtHebrewLetter letter = Gê̄ldGetậlÅtHebrewLetter.valueOfCharacter(codePoint);
if (Gê̄ldGetậlÅtHebrewLetter.NONE.equals(letter)) {
throw new IllegalArgumentException("Unknown fraction codepoint: 0x"+Integer.toHexString(codePoint));
@ -71,7 +77,7 @@ public class Gê̄ldGetậl extends AbstractBaseGetậlMatrix1<Gê̄ldGetậl,V0
if (result.isEmpty()) {
throw new IllegalArgumentException("No hebrew money found");
}
Gê̄ldGetậlÅtHebrew full = result.get(0);
Gê̄ldGetậlÅtHebrew full0 = result.get(0);
Gê̄ldGetậlÅtHebrew deelA = null;
Gê̄ldGetậlÅtHebrew deelB = null;
Gê̄ldGetậlÅtHebrew deelC = null;
@ -91,23 +97,28 @@ public class Gê̄ldGetậl extends AbstractBaseGetậlMatrix1<Gê̄ldGetậl,V0
deelC = new Gê̄ldGetậlÅtHebrew();
}
value = new V036Teger();
value.setTytePart(T04PartQuad.PART_1, full.toTyte());
value.setTytePart(T04PartQuad.PART_1, full0.toTyte());
value.setTytePart(T04PartQuad.PART_2, deelA.toTyte());
value.setTytePart(T04PartQuad.PART_3, deelB.toTyte());
value.setTytePart(T04PartQuad.PART_4, deelC.toTyte());
this.totalDecimalValue = calculateDecimalValue();
}
private double calculateDecimalValue() {
Gê̄ldGetậlÅtHebrew nummerAlphabet = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_1));
private boolean hasHebrewLetters(Gê̄ldGetậlÅtHebrew...nummers) {
for (Gê̄ldGetậlÅtHebrew nummer:nummers) {
if (Gê̄ldGetậlÅtHebrewLetter.NONE.equals(nummer.getLetter())) {
return false;
}
}
return true;
}
public double toDecimalValue() {
Gê̄ldGetậlÅtHebrew nummerFull0 = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_1));
Gê̄ldGetậlÅtHebrew nummerDeelA = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_2));
Gê̄ldGetậlÅtHebrew nummerDeelB = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_3));
Gê̄ldGetậlÅtHebrew nummerDeelC = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_4));
boolean hasFourDigits =
!Gê̄ldGetậlÅtHebrewLetter.NONE.equals(nummerDeelA.getLetter()) &&
!Gê̄ldGetậlÅtHebrewLetter.NONE.equals(nummerDeelB.getLetter()) &&
!Gê̄ldGetậlÅtHebrewLetter.NONE.equals(nummerDeelC.getLetter());
double totalDecimalValue = nummerAlphabet.toDecimalValue(hasFourDigits);
boolean hasFourDigits = hasHebrewLetters(nummerDeelA, nummerDeelB, nummerDeelC);
double totalDecimalValue = nummerFull0.toDecimalValue(hasFourDigits);
if (!Gê̄ldGetậlÅtHebrewLetter.NONE.equals(nummerDeelA.getLetter())) {
totalDecimalValue += nummerDeelA.toDecimalValue(false);
}
@ -120,8 +131,34 @@ public class Gê̄ldGetậl extends AbstractBaseGetậlMatrix1<Gê̄ldGetậl,V0
return totalDecimalValue;
}
public double getTotalDecimalValue() {
return totalDecimalValue;
public String toFractionNotation(BaseGlyphSet glyphCharset, SourceGlyphCharSet sourceCharset) {
Gê̄ldGetậlÅtHebrew nummerFull0 = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_1));
Gê̄ldGetậlÅtHebrew nummerDeelA = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_2));
Gê̄ldGetậlÅtHebrew nummerDeelB = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_3));
Gê̄ldGetậlÅtHebrew nummerDeelC = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_4));
boolean hasFourDigits = hasHebrewLetters(nummerDeelA, nummerDeelB, nummerDeelC);
StringBuilder buf = new StringBuilder();
buf.append(LEFT_TO_RIGHT_MARK);
nummerFull0.toFractionNotation(hasFourDigits, buf, glyphCharset, sourceCharset);
if (!Gê̄ldGetậlÅtHebrewLetter.NONE.equals(nummerDeelA.getLetter())) {
buf.append(BãßBȍőnConstantsʸᴰ.STR_SPACE);
buf.append(sourceCharset.print(SourceGlyph.MATH_PLUS));
buf.append(BãßBȍőnConstantsʸᴰ.STR_SPACE);
nummerDeelA.toFractionNotation(false, buf, glyphCharset, sourceCharset);
}
if (!Gê̄ldGetậlÅtHebrewLetter.NONE.equals(nummerDeelB.getLetter())) {
buf.append(BãßBȍőnConstantsʸᴰ.STR_SPACE);
buf.append(sourceCharset.print(SourceGlyph.MATH_PLUS));
buf.append(BãßBȍőnConstantsʸᴰ.STR_SPACE);
nummerDeelB.toFractionNotation(false, buf, glyphCharset, sourceCharset);
}
if (!Gê̄ldGetậlÅtHebrewLetter.NONE.equals(nummerDeelC.getLetter())) {
buf.append(BãßBȍőnConstantsʸᴰ.STR_SPACE);
buf.append(sourceCharset.print(SourceGlyph.MATH_PLUS));
buf.append(BãßBȍőnConstantsʸᴰ.STR_SPACE);
nummerDeelC.toFractionNotation(false, buf, glyphCharset, sourceCharset);
}
return buf.toString();
}
public String toHebrewString() {
@ -129,15 +166,15 @@ public class Gê̄ldGetậl extends AbstractBaseGetậlMatrix1<Gê̄ldGetậl,V0
}
public String toHebrewString(boolean reverse) {
Gê̄ldGetậlÅtHebrew nummerAlphabet = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_1));
Gê̄ldGetậlÅtHebrew nummerFull0 = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_1));
Gê̄ldGetậlÅtHebrew nummerDeelA = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_2));
Gê̄ldGetậlÅtHebrew nummerDeelB = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_3));
Gê̄ldGetậlÅtHebrew nummerDeelC = new Gê̄ldGetậlÅtHebrew(value.getTytePart(T04PartQuad.PART_4));
StringBuilder buf = new StringBuilder();
buf.append(RIGHT_TO_LEFT_MARK);
buf.append(nummerAlphabet.getLetter().getCharacter());
if (!Gê̄ldGetậlÅtHebrewVowel.NONE.equals(nummerAlphabet.getVowel())) {
buf.append(nummerAlphabet.getVowel().getCharacter());
buf.append(nummerFull0.getLetter().getCharacter());
if (!Gê̄ldGetậlÅtHebrewVowel.NONE.equals(nummerFull0.getVowel())) {
buf.append(nummerFull0.getVowel().getCharacter());
}
if (!Gê̄ldGetậlÅtHebrewLetter.NONE.equals(nummerDeelA.getLetter())) {
buf.append(nummerDeelA.getLetter().getCharacter());
@ -158,7 +195,7 @@ public class Gê̄ldGetậl extends AbstractBaseGetậlMatrix1<Gê̄ldGetậl,V0
}
}
if (reverse) {
buf.reverse(); // ImGui skips RL marker so renders wrong....
return buf.reverse().toString(); // ImGui skips RL marker so renders wrong....
}
return buf.toString();
}

View file

@ -4,6 +4,9 @@ import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.numberxd.base2t.part.T03PartTrit;
import love.distributedrebirth.numberxd.base2t.part.T08PartOctal;
import love.distributedrebirth.numberxd.base2t.type.V009Tyte;
import love.distributedrebirth.numberxd.unicode.BaseGlyphSet;
import love.distributedrebirth.numberxd.unicode.SourceGlyph;
import love.distributedrebirth.numberxd.unicode.SourceGlyphCharSet;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class Gê̄ldGetậlÅtHebrew {
@ -40,18 +43,36 @@ public class Gê̄ldGetậlÅtHebrew {
return new V009Tyte(value0, value1, value2);
}
public double toDecimalValue(boolean firstChar) {
public double toDecimalValue(boolean useFullValue) {
double fraction = letter.getDecimal();
if (firstChar) {
return fraction; // use full value
}
if (!Gê̄ldGetậlÅtHebrewVowel.NONE.equals(vowel)) {
fraction = fraction * Math.pow(FRACTION_POWER, vowel.getFractionOffset());
}
if (useFullValue) {
return fraction;
}
double result = NUMERATOR_ONE/fraction;
return result;
}
public void toFractionNotation(boolean useFullValue, StringBuilder buf, BaseGlyphSet glyphCharset, SourceGlyphCharSet sourceCharset) {
String fraction = glyphCharset.BȍőnPrintNumber10(letter.getDecimal());
if (!Gê̄ldGetậlÅtHebrewVowel.NONE.equals(vowel)) {
fraction = sourceCharset.print(SourceGlyph.PART_BRACKET_BEGIN)
+ fraction
+ sourceCharset.print(SourceGlyph.MATH_MULTIPLY)
+ glyphCharset.BȍőnPrintNumber10(FRACTION_POWER)
+ sourceCharset.print(SourceGlyph.MATH_POWER)
+ glyphCharset.BȍőnPrintNumber10(vowel.getFractionOffset())
+ sourceCharset.print(SourceGlyph.PART_BRACKET_CLOSE);
}
if (!useFullValue) {
buf.append(glyphCharset.BȍőnPrintNumber10((int)NUMERATOR_ONE));
buf.append(sourceCharset.print(SourceGlyph.MATH_DIVIDE));
}
buf.append(fraction);
}
public Gê̄ldGetậlÅtHebrewLetter getLetter() {
return letter;
}

View file

@ -55,6 +55,25 @@ public enum Gê̄ldGetậlÅtHebrewVowel {
}
public static Gê̄ldGetậlÅtHebrewVowel valueOfCharacter(char codePoint) {
// TODO add & move complete alias map
if (codePoint == 0x591 || codePoint == 0x596 || codePoint == 0x597 || codePoint == 0x59a || codePoint == 0x59c) {
return VOWEL_1;
}
if (codePoint == 0x5a5 || codePoint == 0x5a8 || codePoint == 0x5ab || codePoint == 0x5ac) {
return VOWEL_1;
}
if (codePoint == 0x5ba || codePoint == 0x5bc || codePoint == 0x5bd) {
return VOWEL_1;
}
if (codePoint == 0x5c1 || codePoint == 0x5c2) {
return VOWEL_1;
}
if (codePoint == 0x5b0) {
return VOWEL_2;
}
if (codePoint == 0x592 || codePoint == 0x5bb) {
return VOWEL_3;
}
return CHAR_MAP.getOrDefault(codePoint, Gê̄ldGetậlÅtHebrewVowel.NONE);
}
}

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;
}
}

View file

@ -0,0 +1,29 @@
package love.distributedrebirth.numberxd;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class Gê̄ldGetậlTest {
@Test
public void testHebrewAliases() {
String[] paymentDataExample = {
"מִזְ","מ֗וֹר","לְאָ֫","סָ֥ף","אֱלֹ","הִ֗ים","נִצָּ֥ב","בַּֽעֲדַ","ת־","אֵ֑ל","בְּקֶ֖","רֶב","אֱלֹ","הִ֣ים","יִשְׁ","פֹּֽט",
"עַד־","מָתַ֣י","תִּ","שְׁפְּ","טוּ־","עָ֑וֶל","וּפְנֵ֥י","רְ֜שָׁ","עִ֗ים","תִּשְׂ","אוּ־סֶֽ","לָה",
"שִׁפְט","וּ־דָ֥ל","וְיָת֑","וֹם","עָנִ֖י","וָרָ֣שׁ","הַצְדִּֽ","יקוּ",
"פַּלְּט","וּ־דַ֣ל","וְאֶבְ","י֑וֹן","מִיַּ֖ד","רְשָׁ","עִ֣ים","הַצִּֽ","ילוּ",
"לֹ֚יָֽ","דְע֨וּ","וְלֹ֬א","יָבִ֗","ינוּ","בַּֽחֲ","שֵׁכָ֥ה","יִתְהַ","לָּ֑כוּ","יִ֜מּ֗","וֹטוּ","כָּל־מ֥","וֹסְדֵי","אָֽרֶץ",
"אֲֽנִ֣י","אָ֖מַ","רְתִּי","אֱלֹ","הִ֣ים","אַתֶּ֑ם","וּבְנֵ֖י","עֶלְ","י֣וֹן","כֻּלְּ","כֶֽם",
"אָכֵ֥ן","כְּאָ","דָ֣ם","תְּמוּ","ת֑וּן","וּכְאַ","חַ֖ד","הַשָּׂ","רִ֣ים","תִּפֹּֽ","לוּ",
"קוּ","מָ֣ה","אֱ֖לֹ","הִים","שָׁפְ","טָ֣ה","הָאָ֑","רֶץ","כִּֽי־","אַתָּ֥ה","תִ֜נְ",
"חַ֗ל","בְּכָל","־הַגּ","וֹיִֽם",
};
for (String data:paymentDataExample) {
Gê̄ldGetậl geld = new Gê̄ldGetậl(data);
Assertions.assertNotNull(geld.toHebrewString());
}
}
}