mirror of
https://github.com/Eaglercraft-TeaVM-Fork/eagler-teavm.git
synced 2025-01-09 08:24:10 -08:00
Fixing bugs in unicode character class encoding/decoding
This commit is contained in:
parent
44264c7ea8
commit
b7f1bb58a6
|
@ -93,13 +93,14 @@ public class UnicodeHelper {
|
||||||
|
|
||||||
public static String compressRle(byte[] bytes) {
|
public static String compressRle(byte[] bytes) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (int i = 0; i < bytes.length; ++i) {
|
for (int i = 0; i < bytes.length;) {
|
||||||
byte b = bytes[i];
|
byte b = bytes[i];
|
||||||
if (i < bytes.length - 1 && b == bytes[i + 1]) {
|
if (i < bytes.length - 1 && b == bytes[i + 1]) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
while (i < bytes.length && bytes[i++] == b) {
|
while (i < bytes.length && bytes[i + count] == b) {
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
|
i += count;
|
||||||
if (count < 80) {
|
if (count < 80) {
|
||||||
sb.append(UnicodeHelper.encodeByte((byte)(b + 32)));
|
sb.append(UnicodeHelper.encodeByte((byte)(b + 32)));
|
||||||
sb.append(UnicodeHelper.encodeByte((byte)count));
|
sb.append(UnicodeHelper.encodeByte((byte)count));
|
||||||
|
@ -111,9 +112,8 @@ public class UnicodeHelper {
|
||||||
count /= 0x40;
|
count /= 0x40;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
--i;
|
|
||||||
} else {
|
} else {
|
||||||
sb.append(UnicodeHelper.encodeByte(bytes[i]));
|
sb.append(UnicodeHelper.encodeByte(bytes[i++]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
|
@ -127,7 +127,7 @@ public class UnicodeHelper {
|
||||||
int codePoint = 0;
|
int codePoint = 0;
|
||||||
for (int i = 0; i < encoded.length(); ++i) {
|
for (int i = 0; i < encoded.length(); ++i) {
|
||||||
byte b = decodeByte(encoded.charAt(i));
|
byte b = decodeByte(encoded.charAt(i));
|
||||||
int count = 1;
|
int count;
|
||||||
if (b == 64) {
|
if (b == 64) {
|
||||||
b = decodeByte(encoded.charAt(++i));
|
b = decodeByte(encoded.charAt(++i));
|
||||||
count = 0;
|
count = 0;
|
||||||
|
@ -141,7 +141,7 @@ public class UnicodeHelper {
|
||||||
b -= 32;
|
b -= 32;
|
||||||
count = decodeByte(encoded.charAt(++i));
|
count = decodeByte(encoded.charAt(++i));
|
||||||
} else {
|
} else {
|
||||||
buffer[index++] = b;
|
count = 1;
|
||||||
}
|
}
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
buffer[index++] = b;
|
buffer[index++] = b;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user