// by Ender Smith, Editor-in-Chief, AurekFonts
const totals = `${fonts.length} fonts, representing over ${scripts.length} writing systems and ${foundries.length} foundries & artists`
const routeByQueryString = () => {
console.log(totals);
switch(queryStringParts[0]) {
case '?script':
document.getElementById('main').innerHTML = generateScriptScreen(scripts.find(script => script.query === queryStringParts[1]));
break;
case '?sort':
document.getElementById('main').innerHTML = queryStringParts[1] === 'script' ? scriptSortScreen(totals)
: queryStringParts[1] === 'license' ? generateLicenseSortScreen()
: queryStringParts[1] === 'foundry' ? generateFoundrySortScreen()
: homeScreen(totals);
break;
case '?font':
document.getElementById('main').innerHTML = generateFontScreen(fonts.find(font => font.query === queryStringParts[1]));
break;
case '?foundry':
document.getElementById('main').innerHTML = generateFoundryScreen(foundries.find(foundry => foundry.query === queryStringParts[1]));
break;
case '?guide':
document.getElementById('main').innerHTML =
queryStringParts[1] === 'vol-1-canon-accurate' ? canonAccurate
: homeScreen(totals);
break;
default:
document.getElementById('main').innerHTML = homeScreen(totals);
break;
};
};
window.onload = () => routeByQueryString();
const generateScriptScreen = (script) => {
if (!script) return homeScreen(totals);
const fontsByScript = fonts.filter(font => font.scriptQuery === script.query || font.script === script.name || font.script === script.query);
const freeFontsByScript = fontsByScript.filter(font => font.licenseTag === 'Free');
const freeNCFontsByScript = fontsByScript.filter(font => font.licenseTag === 'Free NC');
const licReqFontsByScript = fontsByScript.filter(font => font.licenseTag === 'Lic Req');
const totalByScript = `Total ${script.name} fonts with entries: ${fontsByScript.length} (${freeFontsByScript.length} free + ${freeNCFontsByScript.length} non-commercial + ${licReqFontsByScript.length} license-required)`
const banner = script.bannerImage
? `
`
: ``;
const title = `${script.name} Fonts
`
const description = `${script.description}
`
const freeFontHeader = freeFontsByScript.length
? `Free for All Personal and Commercial Uses
`
: ``;
const freeFontListItems = freeFontsByScript.length
? helpers.createFontListItems(freeFontsByScript)
: ``;
const freeFontList = freeFontsByScript.length
? ``
: ``;
const freeNCFontHeader = freeNCFontsByScript.length
? `Free for Personal Non-Commercial Use
`
: ``;
const freeNCFontListItems = freeNCFontsByScript.length
? helpers.createFontListItems(freeNCFontsByScript)
: ``;
const freeNCFontList = freeNCFontsByScript.length
? ``
: ``;
const licReqFontHeader = licReqFontsByScript.length
? `License Required
`
: ``;
const licReqFontListItems = licReqFontsByScript.length
? helpers.createFontListItems(licReqFontsByScript)
: ``;
const licReqFontList = licReqFontsByScript.length
? ``
: ``;
return linkHeader +
title +
banner +
description +
totalByScript +
freeFontHeader +
freeFontList +
freeNCFontHeader +
freeNCFontList +
licReqFontHeader +
licReqFontList
}
const generateFontScreen = (font) => {
if (!font) return homeScreen(totals);
const foundry = foundries.find(foundry => foundry.query === font.foundryQuery || foundry.query === font.foundry);
const year = font.year ? ` in ${font.year}` : ``;
const exampleImage = font.exampleImage
? `
`
: ``;
const name = `${font.name} (${font.licenseTag})
`;
const credit =
`
${font.script}
font created by
${font.foundry}
${year}.
`;
const supportLink = foundry ? foundry.supportLink
? `Support ${foundry.name} via
${foundry.supportText
? foundry.supportText
: foundry.supportLink}
`
: `` : ``;
const artistNote = font.artistNote
? `${font.artistNote}
`
: ``;
const description = `${font.description}
`;
const seeAlso = font.seeAlso
? `See also:
${font.seeAlso ? font.seeAlso : font.seeAlsoQuery}
`
: ``;
const license = `${font.license}
`;
const download = font.downloadUrl
? `Download (${font.downloadType})
`
: ``;
const externalDownload = font.externalDownloadUrl
? `Download from ${font.externalDownloadName}
`
: ``;
const forLicensing = font.forLicensingUrl
? `For licensing, visit ${font.forLicensingName}
`
: ``;
const demo = font.class
? `Demo
Try out the font with custom text below! (If the demo does not seem to have loaded correctly, try refreshing.)
`
: '';
const characters = font.charactersImages && font.charactersImages.length
? `Characters
`
+ createImagesFromList(font.charactersImages)
: ``;
const moreExamples = font.additionalImages && font.additionalImages.length
? ` Addtional Examples
`
+ createImagesFromList(font.additionalImages)
: ``;
return linkHeader +
name +
exampleImage +
credit +
supportLink +
artistNote +
description +
seeAlso +
license +
download +
externalDownload +
forLicensing +
demo +
characters +
moreExamples;
};
const generateFoundryScreen = (foundry) => {
if (!foundry) return homeScreen(totals);
const fontsByFoundry = fonts.filter(font => font.foundry === foundry.name);
const freeFontsByFoundry = fontsByFoundry.filter(font => font.licenseTag === 'Free');
const freeNCFontsByFoundry = fontsByFoundry.filter(font => font.licenseTag === 'Free NC');
const licReqFontsByFoundry = fontsByFoundry.filter(font => font.licenseTag === 'Lic Req');
const totalByFoundry = `Total ${foundry.name} fonts with entries: ${fontsByFoundry.length} (${freeFontsByFoundry.length} free + ${freeNCFontsByFoundry.length} non-commercial + ${licReqFontsByFoundry.length} license-required)`;
const banner = foundry.bannerImage
? `
`
: ``;
const name = `${foundry.name}
`;
const bio = foundry.bio
? `${foundry.bio}
`
: ``;
const supportLink = foundry.supportLink
? `Support ${foundry.name} via
${foundry.supportText
? foundry.supportText
: foundry.supportLink}
`
: ``;
const freeFonts = freeFontsByFoundry.length
? `Free Fonts by ${foundry.name}
`
+ `${helpers.createFontListItems(freeFontsByFoundry)}
`
: ``;
const freeNCFonts = freeNCFontsByFoundry.length
? `Free, Non-Commercial Fonts by ${foundry.name}
`
+ `${helpers.createFontListItems(freeNCFontsByFoundry)}
`
: ``;
const licReqFonts = licReqFontsByFoundry.length
? `License-Required Fonts by ${foundry.name}
`
+ `${helpers.createFontListItems(licReqFontsByFoundry)}
`
: ``;
return linkHeader +
banner +
name +
bio +
totalByFoundry +
supportLink +
freeFonts +
freeNCFonts +
licReqFonts;
};
const generateLicenseSortScreen = () => {
const title = `All Fonts
`
const freeFonts = fonts.filter(font => font.licenseTag === 'Free');
const freeFontsHeader = freeFonts.length
? `Free for All Personal and Commercial Uses
`
: ``;
const freeFontsList = freeFonts.length
? `${helpers.createFontListItems(freeFonts)}
`
: ``;
const freeNCFonts = fonts.filter(font => font.licenseTag === 'Free NC');
const freeNCFontsHeader = freeNCFonts.length
? `Free for Personal, Non-Commercial Use
`
: ``;
const freeNCFontsList = freeNCFonts.length
? `${helpers.createFontListItems(freeNCFonts)}
`
: ``;
const licReqFonts = fonts.filter(font => font.licenseTag === 'Lic Req');
const licReqFontsHeader = licReqFonts.length
? `License Required
`
: ``;
const licReqFontsList = licReqFonts.length
? `${helpers.createFontListItems(licReqFonts)}
`
: ``;
const totalByLicense = `Total fonts catalogued: ${fonts.length} (${freeFonts.length} free + ${freeNCFonts.length} non-commercial + ${licReqFonts.length} license-required)`;
return linkHeader +
title +
totalByLicense +
freeFontsHeader +
freeFontsList +
freeNCFontsHeader +
freeNCFontsList +
licReqFontsHeader +
licReqFontsList;
}
const generateFoundrySortScreen = () => {
const title = `Foundries / Artists
`
const foundryListItems = foundries.reduce((list, foundry) => list +
`
${foundry.name}
`, ``);
const foundryList = ``;
return linkHeader +
homeBanner +
title +
foundryList
}