mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-23 12:31:24 +01:00
fonts rework - issue fixes
This commit is contained in:
parent
66db527255
commit
7a844f8810
3 changed files with 27 additions and 27 deletions
|
|
@ -121,17 +121,22 @@ const fonts = [
|
|||
}
|
||||
];
|
||||
|
||||
declareDefaultFonts(); // execute once on load
|
||||
|
||||
function declareFont(font) {
|
||||
const {family, src, ...rest} = font;
|
||||
if (!src) return;
|
||||
|
||||
const fontFace = new FontFace(family, src, {...rest, display: "block"});
|
||||
const variant = font.variant || "normal";
|
||||
const isAdded = document.fonts.check(`${variant} 1em ${family}`);
|
||||
if (isAdded) return;
|
||||
|
||||
document.fonts.add(fontFace);
|
||||
addFontOption(font.family);
|
||||
addFontOption(family);
|
||||
}
|
||||
|
||||
function declareDefaultFonts() {
|
||||
fonts.forEach(font => {
|
||||
if (font.src) declareFont(font);
|
||||
else addFontOption(font.family);
|
||||
});
|
||||
}
|
||||
|
||||
function getUsedFonts(svg) {
|
||||
|
|
@ -143,6 +148,9 @@ function getUsedFonts(svg) {
|
|||
if (font) usedFontFamilies.add(font);
|
||||
}
|
||||
|
||||
const provinceFont = provs.attr("font-family");
|
||||
if (provinceFont) usedFontFamilies.add(provinceFont);
|
||||
|
||||
const legend = svg.querySelector("#legend");
|
||||
const legendFont = legend?.getAttribute("font-family");
|
||||
if (legendFont) usedFontFamilies.add(legendFont);
|
||||
|
|
@ -151,23 +159,16 @@ function getUsedFonts(svg) {
|
|||
return usedFonts;
|
||||
}
|
||||
|
||||
function declareUsedFonts() {
|
||||
const fontsInUse = getUsedFonts(svg.node());
|
||||
fontsInUse.forEach(font => declareFont(font));
|
||||
}
|
||||
|
||||
function addFontOption(family) {
|
||||
const options = document.getElementById("styleSelectFont");
|
||||
// const existingOption = options.querySelector(`[value="${family}"]`);
|
||||
// if (existingOption) return;
|
||||
|
||||
const option = document.createElement("option");
|
||||
option.value = family;
|
||||
option.innerText = family;
|
||||
option.style.fontFamily = family;
|
||||
document.getElementById("styleSelectFont").add(option);
|
||||
}
|
||||
|
||||
addWebsafeFontOptions(); // execute once on load
|
||||
function addWebsafeFontOptions() {
|
||||
const localFonts = fonts.filter(font => font.local);
|
||||
localFonts.forEach(font => addFontOption(font.family));
|
||||
options.add(option);
|
||||
}
|
||||
|
||||
async function fetchGoogleFont(family) {
|
||||
|
|
|
|||
|
|
@ -221,7 +221,8 @@ function parseLoadedData(data) {
|
|||
if (data[34]) {
|
||||
const usedFonts = JSON.parse(data[34]);
|
||||
usedFonts.forEach(usedFont => {
|
||||
const defaultFont = fonts.find(font => font.family === usedFont.family);
|
||||
const {family: usedFamily, unicodeRange: usedRange, variant: usedVariant} = usedFont;
|
||||
const defaultFont = fonts.find(({family, unicodeRange, variant}) => family === usedFamily && unicodeRange === usedRange && variant === usedVariant);
|
||||
if (!defaultFont) fonts.push(usedFont);
|
||||
declareFont(usedFont);
|
||||
});
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue