120 lines
2.9 KiB
JavaScript
120 lines
2.9 KiB
JavaScript
import {
|
|
providers
|
|
} from "unifont";
|
|
import { FontaceFontFileReader } from "../infra/fontace-font-file-reader.js";
|
|
import { LocalFontProvider } from "./local.js";
|
|
function adobe(config) {
|
|
const provider = providers.adobe(config);
|
|
let initializedProvider;
|
|
return {
|
|
name: provider._name,
|
|
config,
|
|
async init(context) {
|
|
initializedProvider = await provider(context);
|
|
},
|
|
async resolveFont({ familyName, ...rest }) {
|
|
return await initializedProvider?.resolveFont(familyName, rest);
|
|
},
|
|
async listFonts() {
|
|
return await initializedProvider?.listFonts?.();
|
|
}
|
|
};
|
|
}
|
|
function bunny() {
|
|
const provider = providers.bunny();
|
|
let initializedProvider;
|
|
return {
|
|
name: provider._name,
|
|
async init(context) {
|
|
initializedProvider = await provider(context);
|
|
},
|
|
async resolveFont({ familyName, ...rest }) {
|
|
return await initializedProvider?.resolveFont(familyName, rest);
|
|
},
|
|
async listFonts() {
|
|
return await initializedProvider?.listFonts?.();
|
|
}
|
|
};
|
|
}
|
|
function fontshare() {
|
|
const provider = providers.fontshare();
|
|
let initializedProvider;
|
|
return {
|
|
name: provider._name,
|
|
async init(context) {
|
|
initializedProvider = await provider(context);
|
|
},
|
|
async resolveFont({ familyName, ...rest }) {
|
|
return await initializedProvider?.resolveFont(familyName, rest);
|
|
},
|
|
async listFonts() {
|
|
return await initializedProvider?.listFonts?.();
|
|
}
|
|
};
|
|
}
|
|
function fontsource() {
|
|
const provider = providers.fontsource();
|
|
let initializedProvider;
|
|
return {
|
|
name: provider._name,
|
|
async init(context) {
|
|
initializedProvider = await provider(context);
|
|
},
|
|
async resolveFont({ familyName, ...rest }) {
|
|
return await initializedProvider?.resolveFont(familyName, rest);
|
|
},
|
|
async listFonts() {
|
|
return await initializedProvider?.listFonts?.();
|
|
}
|
|
};
|
|
}
|
|
function google() {
|
|
const provider = providers.google();
|
|
let initializedProvider;
|
|
return {
|
|
name: provider._name,
|
|
async init(context) {
|
|
initializedProvider = await provider(context);
|
|
},
|
|
async resolveFont({ familyName, ...rest }) {
|
|
return await initializedProvider?.resolveFont(familyName, rest);
|
|
},
|
|
async listFonts() {
|
|
return await initializedProvider?.listFonts?.();
|
|
}
|
|
};
|
|
}
|
|
function googleicons() {
|
|
const provider = providers.googleicons();
|
|
let initializedProvider;
|
|
return {
|
|
name: provider._name,
|
|
async init(context) {
|
|
initializedProvider = await provider(context);
|
|
},
|
|
async resolveFont({ familyName, ...rest }) {
|
|
return await initializedProvider?.resolveFont(familyName, rest);
|
|
},
|
|
async listFonts() {
|
|
return await initializedProvider?.listFonts?.();
|
|
}
|
|
};
|
|
}
|
|
function local() {
|
|
return new LocalFontProvider({
|
|
fontFileReader: new FontaceFontFileReader()
|
|
});
|
|
}
|
|
const fontProviders = {
|
|
adobe,
|
|
bunny,
|
|
fontshare,
|
|
fontsource,
|
|
google,
|
|
googleicons,
|
|
local
|
|
};
|
|
export {
|
|
fontProviders
|
|
};
|