npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sister.software/fonts

v14.8.0

Published

Common typefaces used by Sister Software

Readme

@sister.software/fonts

The typefaces Sister Software uses, as drop-in CSS.

  • Archivo: variable display face (upright/italic, weight and width axes).
  • M PLUS U: variable Japanese companion (weight axis).
  • Go Musubi by Sister Software: Go-derived Text and Mono, true italics, small caps, and variable weights 400–700.
  • Go by Bigelow & Holmes: sans, mono and smallcaps.
  • Fira Code: the brand monospace (--ss-font-family-monospace).
  • OpenMoji by HfG Schwäbisch Gmünd: color emoji.

Install

yarn add @sister.software/fonts

Usage

Import everything — the font faces plus the --ss-* custom properties:

@import "@sister.software/fonts/apply.css";

body {
	font-family: var(--ss-font-family-sans-serif);
}

code {
	font-family: var(--ss-font-family-monospace);
}

Or pick what you need:

@import "@sister.software/fonts/Go/faces.css";

body {
	font-family: "Go Web", "Go Fallback", sans-serif;
}

| File | Provides | | ---------------------- | -------------------------------------------------------------- | | apply.css | Everything below | | GoMusubi/faces.css | Text / Mono / Smallcaps aliases (variable, true italics) | | Archivo/faces.css | "Archivo Web" (variable weight/width, true italics) | | M_PLUS_U/faces.css | "M PLUS U Japanese Web" (96 on-demand weight-variable subsets) | | Go/faces.css | "Go Web", "Go Mono Web", "Go Smallcaps Web" + fallbacks | | FiraCode/faces.css | "Fira Code Web" (variable, 300–700) | | OpenMoji/faces.css | "OpenMoji Web" | | variables.css | --ss-generic-* and --ss-font-family-* stacks |

Font CSS loads WOFF2 assets from https://public.sister.software/fonts/, including Go Musubi, Archivo and the M PLUS U Japanese subsets. Original Go faces prefer installed copies first. Applications bundle the CSS without copying font binaries. The ttf/ and woff2/ files also ship in the package for desktop installation or another hosting origin; override the src URLs when hosting them elsewhere.

Go Musubi ligatures

Go Musubi is a separately named derivative; all files in Go/ remain unmodified. Import it directly:

@import "@sister.software/fonts/GoMusubi/faces.css";

body {
	font-family: "Go Musubi Web", Arial, sans-serif;
}

apply.css also registers Go Musubi. Default reading stacks select Go Musubi, with original Go retained as fallback. Text and Mono supply genuine upright/italic variable fonts at weights 400–700 and twelve static exports. See family build notes.

All styles implement every current row in ligature-table.md, plus ft. Standard ligatures are on by default in applications supporting OpenType; the other sets are opt-in. Text integrates true small caps via smcp and c2sc; Mono preserves character-cell advances.

| Set | Feature | Sequences | | --- | --- | --- | | Standard | liga | ff, fi, fl, ffi, ffl, ft | | Discretionary | dlig | Th, Qu, tt | | Programming | ss01 | ->, =>, !=, ===, <=, >=, &&, \|\|, ..., !==, ??, \|> | | Historical | hlig | ae, oe, ij, aa |

st, ct, sp, ch, ck, and ss are excluded from every feature. Qu is an optical pair with tighter spacing; the other custom text glyphs join existing letterforms. aa uses a rising exit stroke. Go's existing fi, fl, historical, and mathematical glyphs are reused where available. New symbol outlines match each face's crossbar weight. Substitutions change rendering, not the underlying text; Text programming replacements use proportional widths; Mono replacements retain one cell per input character.

&&, ||, and ?? follow Fira Code's visual conventions: joined script ampersands, two tall vertical bars, and joined question shoulders with round dots. These are redrawn for each Go Musubi style; no Fira Code outlines are embedded in the font. The reference was the hosted Fira Code 6.002 face.

/* Standard ligatures are enabled by default. */
.no-ligatures {
	font-variant-ligatures: no-common-ligatures;
}

.decorative-text {
	font-variant-ligatures: common-ligatures discretionary-ligatures;
}

.historical-text {
	font-variant-ligatures: common-ligatures historical-ligatures;
}

.programming-symbols {
	font-feature-settings: "ss01" 1;
}

Historical ligatures are optional. Literal ß remains encoded; ss never substitutes automatically. Feature names follow the OpenType feature registry.

Go Musubi CSS skips installed copies so an upstream Go installation cannot bypass the additions. Its WOFF2 URLs point to the public Sister Software origin. Keep the fonts/<family>/woff2/ layout when uploading generated assets to R2.

Rebuild TTFs/WOFF2s and verify family geometry, source integrity and OpenType behavior using uv:

uv run packages/fonts/GoMusubi/build-ligatures.py
uv run packages/fonts/GoMusubi/verify-family.py

The build reads pristine Go/ttf/ sources and writes GoMusubi/ttf/ and GoMusubi/woff2/. It never writes to Go/. Source-based static faces preserve original glyphs, metrics and character mappings; all faces retain copyright and designer/license attribution. Variable compatibility repairs are documented in the family build notes. Family and vendor metadata identify Go Musubi. Static source glyphs retain hints; new outlines and variable fonts are unhinted. Dynamic rules and GDEF carets are compiled by GoMusubi/family.py; GoMusubi/ligature_data.py assigns expected glyphs for verification against the table.

Render outlined SVG specimens and a browser review gallery:

uv run packages/fonts/build-webfonts.py
uv run packages/fonts/GoMusubi/render-ligatures.py scratch/go-musubi

Open scratch/go-musubi/index.html: one portable HTML specimen with all four variable WOFF2 fonts embedded, every sequence compared in Regular/Bold with features on/off, editable sample text, family, italic, small-cap, continuous weight and size controls, and individual feature toggles. It embeds the generated @sister.software/theme tokens, works offline, and defaults to size 100 / line height 131.

svg-gallery.html retains the outlined comparisons, with each feature isolated. Enlarged SVG sheets use size 160; these need no font installation and bypass browser font shaping for independent geometry review.

License

The package is MIT. Go and its Go Musubi derivative are under Go’s BSD-style license; Fira Code is under the SIL Open Font License 1.1; OpenMoji is CC BY-SA 4.0. See LICENSE.md.

Japanese composition

Import apply.css to register all faces. Display uses Archivo Web → M PLUS U Japanese Web → local Hiragino W8 → Hiragino Sans / Yu Gothic → sans-serif. Reading uses Go Musubi → original Go → M PLUS U Japanese Web → Hiragino Sans / Yu Gothic → sans-serif. M PLUS U's alias is restricted to Japanese/CJK ranges so its Latin glyphs cannot take over. M PLUS U is packaged as 96 non-overlapping variable WOFF2 subsets, grouped into 256-code-point Unicode pages. Generated M_PLUS_U/faces.css declares only each subset's encoded code points; the browser requests only subsets needed by the rendered text. All 5,882 source code points in the Japanese/CJK policy are retained. The mixed sample uses 174,396 bytes of Japanese font data instead of the former 1,678,392-byte complete WOFF2; actual savings depend on page content. CSS is about 54 KB before compression. Latin-only pages request no M PLUS U font files.

M_PLUS_U/fallback.css defines the hand-maintained local Hiragino fallback and the Japanese range policy. Do not edit generated faces.css or the WOFF2 subsets by hand. subsets.json records source hash, character coverage, axes and sizes. The build verifies disjoint coverage, preserved weight axes and glyph geometry at weights 400 and 900.

Use lang="ja" on Japanese content: Han code points are shared across languages, so Unicode alone cannot specify Japanese locale forms. M PLUS U has upright weights 100–900; Archivo has upright/italic weights 100–900 and widths 62–125%. Use font-weight and font-stretch for these axes. Japanese has no true italic in the supplied source.

The W8 alias is a fixed heavy display fallback, not a reading fallback for every weight. It uses only installed local() fonts; no Hiragino file is copied or served. Reading uses weight-matched Hiragino Sans, then other system fallbacks. Review baseline and apparent size before adding measured size-adjust or metric overrides; none are guessed.

Original TTFs and OFL texts remain in Archivo/ and M_PLUS_U/. build-webfonts.py produces WOFF2 without merging or renaming the sources. This web composition does not create a combined desktop font.

To inspect real on-demand font requests instead of the portable embedded-font specimen:

uv run packages/fonts/GoMusubi/render-ligatures.py scratch/go-musubi --network-fonts

Serve that directory and open network.html. It references copied companion assets with the same Unicode subsets as production. The default index.html remains a portable offline specimen; it necessarily embeds every subset.