Files
timi-icon-font/src/main/java/com/imyeyu/font/icon/ttf/FontBuffer.java
T
2026-07-17 15:17:08 +08:00

65 lines
1.1 KiB
Java

package com.imyeyu.font.icon.ttf;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
/// TrueType 大端字节缓冲区
///
/// @author Codex
/// @since 2026-07-13 16:26
final class FontBuffer {
private final ByteArrayOutputStream out = new ByteArrayOutputStream();
void u8(int value) {
out.write(value & 0xFF);
}
void i16(int value) {
u16(value);
}
void u16(int value) {
out.write((value >>> 8) & 0xFF);
out.write(value & 0xFF);
}
void u32(long value) {
out.write((int) ((value >>> 24) & 0xFF));
out.write((int) ((value >>> 16) & 0xFF));
out.write((int) ((value >>> 8) & 0xFF));
out.write((int) (value & 0xFF));
}
void u64(long value) {
u32(value >>> 32);
u32(value);
}
void tag(String tag) {
byte[] bytes = tag.getBytes(StandardCharsets.US_ASCII);
for (int i = 0; i < 4; i++) {
u8(i < bytes.length ? bytes[i] : 32);
}
}
void bytes(byte[] bytes) {
out.writeBytes(bytes);
}
void pad4() {
while (out.size() % 4 != 0) {
u8(0);
}
}
int length() {
return out.size();
}
byte[] bytes() {
return out.toByteArray();
}
}