@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
28 lines • 1.79 kB
JavaScript
const cache = new Map();
/**
* If you want to use an external font in a canvas,
* you will have tio load it first.
*
* ```ts
* await tgdLoadFont("MyFont", "https://example.com/myFont.woff2")
* const ctx = canvas.getContext("2d")
* ctx.font = "24px MyFont"
* ctx.fillText("Hello world!", 100, 100)
* ```
*/
export function tgdLoadFont(name, url) {
const key = `${name}\n${url}`;
const fromCache = cache.get(key);
if (fromCache)
return fromCache;
const font = loadFont(name, url);
cache.set(key, font);
return font;
}
async function loadFont(name, url) {
const face = new FontFace(name, `url(${url})`);
const font = await face.load();
globalThis.document.fonts.add(font);
return font;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2FkZXIvZm9udC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQTtBQUVsRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFZLEVBQUUsR0FBVztJQUNqRCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQTtJQUM3QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hDLElBQUksU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBRS9CLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDaEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDcEIsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDO0FBRUQsS0FBSyxVQUFVLFFBQVEsQ0FBQyxJQUFZLEVBQUUsR0FBVztJQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFBO0lBQzlDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzlCLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNuQyxPQUFPLElBQUksQ0FBQTtBQUNmLENBQUMifQ==