Initial Commit

This commit is contained in:
2026-05-27 23:47:53 +01:00
parent fbc70f96e6
commit 9b28db724f
18103 changed files with 1600554 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
import { describe, expect, it } from "@suaveplan/testing/runner";
import {
createFontSubsetter,
detectFontFormat,
FONT_SUBSET_CODES,
type FontSubsetError,
NullFontSubsetAdapter,
parseUnicodeRanges,
} from "../src/index.js";
// Minimal TTF magic bytes + padding
const TTF_DATA = new Uint8Array([
0x00,
0x01,
0x00,
0x00,
...new Array(96).fill(0),
]);
const WOFF2_DATA = new Uint8Array([
0x77,
0x4f,
0x46,
0x32,
...new Array(96).fill(0),
]);
describe("Full pipeline with NullFontSubsetAdapter", () => {
it("probes and compresses TTF → WOFF2", { timeout: 30000 }, async () => {
const adapter = new NullFontSubsetAdapter();
const compressor = createFontSubsetter({ adapter });
const meta = await compressor.probe(TTF_DATA);
expect(meta.format).toBe("ttf");
const result = await compressor.compress(TTF_DATA, {
outputFormat: "woff2",
});
expect(result.format).toBe("woff2");
expect(result.mimeType).toBe("font/woff2");
expect(result.originalSize).toBe(TTF_DATA.byteLength);
expect(result.ratio).toBeGreaterThan(0);
});
it("compresses with subset options", { timeout: 30000 }, async () => {
const adapter = new NullFontSubsetAdapter();
const compressor = createFontSubsetter({ adapter });
const result = await compressor.compress(TTF_DATA, {
subset: {
unicodeRanges: ["U+0020-007F"],
characters: "Hello World",
},
outputFormat: "woff",
stripHinting: true,
stripMetadata: true,
features: ["kern", "liga"],
});
expect(result.format).toBe("woff");
});
it("detects WOFF2 format from magic bytes", { timeout: 5000 }, () => {
expect(detectFontFormat(WOFF2_DATA)).toBe("woff2");
});
it("parseUnicodeRanges returns correct codepoints for ASCII", {
timeout: 5000,
}, () => {
const codepoints = parseUnicodeRanges(["U+0020-007F"]);
expect(codepoints.size).toBe(96);
expect(codepoints.has(0x20)).toBe(true);
expect(codepoints.has(0x7f)).toBe(true);
});
it("end-to-end with multiple compress calls", {
timeout: 30000,
}, async () => {
const adapter = new NullFontSubsetAdapter();
const compressor = createFontSubsetter({ adapter });
for (const fmt of ["ttf", "otf", "woff", "woff2"] as const) {
const result = await compressor.compress(TTF_DATA, {
outputFormat: fmt,
});
expect(result.format).toBe(fmt);
}
});
it("throws ENCODE_FAILED when aborted mid-flight", {
timeout: 5000,
}, async () => {
const ctrl = new AbortController();
ctrl.abort();
const adapter = new NullFontSubsetAdapter();
const compressor = createFontSubsetter({ adapter });
try {
await compressor.compress(TTF_DATA, undefined, ctrl.signal);
expect.fail("should have thrown");
} catch (e) {
expect((e as FontSubsetError).code).toBe(
FONT_SUBSET_CODES.ENCODE_FAILED
);
}
});
});