GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - unjs/unifont: Framework agnostic tools for accessing data from font CDNs and providers

BranchesTags
Open more actions menu

Latest commit

 

History

713 Commits
713 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
docs
docs
 
 
playground
playground
 
 
proxy
proxy
 
 
src
src
 
 
test
test
 
 
.editorconfig
.editorconfig
 
 
.gitignore
.gitignore
 
 
CODEOWNERS
CODEOWNERS
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
LICENCE
LICENCE
 
 
README.md
README.md
 
 
eslint.config.js
eslint.config.js
 
 
package.json
package.json
 
 
pnpm-lock.yaml
pnpm-lock.yaml
 
 
pnpm-workspace.yaml
pnpm-workspace.yaml
 
 
renovate.json
renovate.json
 
 
tsconfig.json
tsconfig.json
 
 
tsdown.config.ts
tsdown.config.ts
 
 
vitest.config.ts
vitest.config.ts
 
 

Repository files navigation

unifont

npm version npm downloads Github Actions Codecov

Framework agnostic tools for accessing data from font CDNs and providers.

📖 Documentation · 🔍 Catalogue · ⚖️ Compare providers · 🧩 HTTP API

Every font CDN is reached a different way. Google returns a stylesheet you have to parse, Fontshare returns JSON with its own names for weights, and Adobe wants a project id. unifont is one layer over all of them: ask for a family, and get back weights, styles, subsets, unicode ranges and @font-face data in the same shape every time.

Installation

npm i unifont
pnpm add unifont
yarn add unifont

Getting started

This package is ESM-only.

import { createUnifont, providers } from 'unifont'

const unifont = await createUnifont([
  providers.google(),
  providers.fontshare(),
])

const availableFonts = await unifont.listFonts()
const properties = await unifont.getFontProperties('Poppins')
const { fonts, fallbacks } = await unifont.resolveFont('Poppins', {
  weights: ['400', '700'],
  subsets: ['latin'],
})

Providers are tried in order, and the first one that knows the family answers.

Getting started walks through it. The API reference has every option and signature.

Built-in providers

providers.google()
providers.bunny()
providers.fontshare()
providers.fontsource()
providers.googleicons()
providers.npm()
providers.adobe({ id: process.env.TYPEKIT_ID })

Providers covers what each one serves and the options it takes. You can also write your own.

In a browser or a web container, CORS blocks every provider API except npm, so unifont sends those requests through a proxy instead. See Browser and web containers.

Warning

The default https://proxy.unifont.dev is experimental and not for production use. It's there so reproductions and playgrounds work in web containers like StackBlitz without anyone deploying anything first. It's best-effort, it may be rate-limited, and it may change or disappear without notice. For anything else, deploy proxy/ and point apiBase at it.

💻 Development

  • Clone this repository
  • Enable Corepack using corepack enable
  • Install dependencies using pnpm install
  • Run interactive tests using pnpm dev

unifont.dev lives in docs/. It's a Nuxt app that runs on the built package, so run pnpm build before pnpm docs. Its prose is Markdown in docs/content, served through Comark Content. Everything else comes from unifont at request time.

License

Made with ❤️

Published under MIT License.

About

Framework agnostic tools for accessing data from font CDNs and providers

unifont.dev

Topics

fontperformance

Resources

Readme
MIT license

Code of conduct

Code of conduct
Activity
Custom properties

Stars

305 stars

Watchers

3 watching

Forks

19 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.