Files
convert/test/converters/font.test.js
T
2026-07-31 12:54:32 +02:00

33 lines
1.3 KiB
JavaScript

import { describe, it, expect } from 'vitest';
import fs from 'node:fs/promises';
import path from 'node:path';
import opentype from 'opentype.js';
import * as fontkit from 'fontkit';
async function parseWithOpentype(fixtureName) {
const buf = await fs.readFile(path.join(import.meta.dirname, '..', 'fixtures', fixtureName));
const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
return opentype.parse(ab);
}
describe('font fixtures', () => {
it('sample.otf parses as a CFF-flavored OpenType font', async () => {
const font = await parseWithOpentype('sample.otf');
expect(font.outlinesFormat).toBe('cff');
expect(font.glyphs.length).toBe(1568);
});
it('sample.ttf parses as a TrueType font with the same glyph count as sample.otf', async () => {
const font = await parseWithOpentype('sample.ttf');
expect(font.outlinesFormat).toBe('truetype');
expect(font.glyphs.length).toBe(1568);
});
it('sample.dfont is a valid dfont container with one embedded sfnt font', async () => {
const buffer = await fs.readFile(path.join(import.meta.dirname, '..', 'fixtures', 'sample.dfont'));
const dfont = fontkit.create(buffer);
const sfntType = dfont.header.map.typeList.types.find((t) => t.name === 'sfnt');
expect(sfntType.refList).toHaveLength(1);
});
});