// 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 ? `

${script.name}

` : ``; 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 ? `

${font.name}

` : ``; 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.)

${font.pangram}
` : ''; 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 ? `

${foundry.name}

` : ``; 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}

` + `` : ``; const freeNCFonts = freeNCFontsByFoundry.length ? `

Free, Non-Commercial Fonts by ${foundry.name}

` + `` : ``; const licReqFonts = licReqFontsByFoundry.length ? `

License-Required Fonts by ${foundry.name}

` + `` : ``; 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 ? `` : ``; const freeNCFonts = fonts.filter(font => font.licenseTag === 'Free NC'); const freeNCFontsHeader = freeNCFonts.length ? `

Free for Personal, Non-Commercial Use

` : ``; const freeNCFontsList = freeNCFonts.length ? `` : ``; const licReqFonts = fonts.filter(font => font.licenseTag === 'Lic Req'); const licReqFontsHeader = licReqFonts.length ? `

License Required

` : ``; const licReqFontsList = licReqFonts.length ? `` : ``; 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 }