32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
|
|
// © 2026 TechnoLibre (http://www.technolibre.ca)
|
||
|
|
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
||
|
|
|
||
|
|
// La police embarquée lue sous node : les épreuves y lisent les fichiers de
|
||
|
|
// src/polices par le disque, là où la page les reçoit de Vite par « ?inline »
|
||
|
|
// (src/polices/chargement.js), syntaxe que node ne connaît pas (§ 14.8).
|
||
|
|
import { readFileSync } from 'node:fs';
|
||
|
|
import { fileURLToPath } from 'node:url';
|
||
|
|
|
||
|
|
const DOSSIER = new URL('../src/polices/', import.meta.url);
|
||
|
|
|
||
|
|
/** Les fichiers de la police, par graisse. */
|
||
|
|
export const FICHIERS_POLICES = Object.freeze({
|
||
|
|
regulier: 'NotoSans-Regular.ttf',
|
||
|
|
gras: 'NotoSans-Bold.ttf',
|
||
|
|
});
|
||
|
|
|
||
|
|
/** Le chemin absolu d'un fichier de src/polices. */
|
||
|
|
export const cheminPolice = (nom) => fileURLToPath(new URL(nom, DOSSIER));
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Les octets des deux graisses, lus du disque à chaque appel.
|
||
|
|
*
|
||
|
|
* @returns {{regulier: Uint8Array, gras: Uint8Array}}
|
||
|
|
*/
|
||
|
|
export function lirePolices() {
|
||
|
|
return {
|
||
|
|
regulier: new Uint8Array(readFileSync(cheminPolice(FICHIERS_POLICES.regulier))),
|
||
|
|
gras: new Uint8Array(readFileSync(cheminPolice(FICHIERS_POLICES.gras))),
|
||
|
|
};
|
||
|
|
}
|