Skip to content

Repository files navigation

FreeFeed Flags

FreeFeedFlags.woff2 is a flags-only COLRv1 webfont for FreeFeed. It is based on Noto Color Emoji and replaces the Iran flag (U+1F1EE U+1F1F7) with the Lion and Sun design from Iran Flag Project. The complete SVG is waved before it is compiled to COLRv1. Only segments wider than 64 SVG units are subdivided; short lines and the original emblem curves are preserved.

See PIPELINE.md for the geometry, COLRv1 merge, subsetting, reproducibility, and verification details.

The current release version is stored in VERSION. Each build creates a canonical versioned artifact such as FreeFeedFlags-v1.0.1.woff2 and an identical stable copy named FreeFeedFlags.woff2 for preview and client integration.

Sources

  • Noto Emoji v2.051, commit 8998f5dd683424a73e2314a8c1f1e359c19e8742: fonts/Noto-COLRv1.ttf.
  • Noto source SHA-256: 0ae57fe58645638523ba35f388d93739d292539a9acb84df5700c81b1e1a28d2.
  • Lion and Sun flag SVG: https://iranflag.org/downloads/Flag-of-Iran.svg.
  • SVG SHA-256: ef3ba954c3dff7711985d758b5d03456a4e16473ba57829c924c4e7a47d5baff.

Noto Emoji and this modified font are distributed under SIL Open Font License 1.1; see licenses/noto-emoji.txt. The Lion and Sun flag SVG is released under CC0 1.0; see licenses/iran-flag-source.txt.

Licensing

Component License
Build scripts and repository documentation MIT; see LICENSE
Noto Color Emoji and generated FreeFeedFlags*.woff2 files SIL Open Font License 1.1; see licenses/noto-emoji.txt
Lion and Sun flag SVG CC0 1.0; see licenses/iran-flag-source.txt

Docker build

docker build -t freefeed-flags-font .
docker run --rm -v "$PWD/dist:/out" freefeed-flags-font

The image pins Python, every Python package, the base-image digest, the Noto revision, and both downloaded-file hashes. The resulting file is dist/FreeFeedFlags-v<version>.woff2; dist/FreeFeedFlags.woff2 is an identical stable copy.

Local build

Python 3.12.11 is used by CI and Docker.

python -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.lock
python scripts/download-source.py
python scripts/build.py
python scripts/verify.py

On Windows, activate with .venv\Scripts\activate.

verify.py checks WOFF2 parsing, COLRv1/CPAL, GSUB ligatures, 259 regional flags, England/Scotland/Wales tag sequences, the custom Iran palette, subset size, family names, internal version metadata, and equality of the stable and versioned files.

Releasing a version

  1. Update VERSION using numeric MAJOR.MINOR.PATCH format.
  2. Build and verify locally.
  3. Commit the version change.
  4. Create and push the matching tag, for example v1.0.1.

GitHub Actions rejects a release tag that does not match VERSION. Artifacts, SHA-256 files, and GitHub Release assets use the versioned filename.

Visual preview

After building, serve the repository root instead of opening the page directly:

python -m http.server 8000

Open http://localhost:8000/preview/. The first row contains Iran and control flags. The grid contains all regional-indicator pairs.

Updating Noto Emoji

  1. Change NOTO_VERSION, NOTO_REVISION, NOTO_URL, and NOTO_SHA256 in scripts/download-source.py.
  2. Remove the cached source from cache/ and run python scripts/download-source.py.
  3. Build twice and compare SHA-256 values.
  4. Run python scripts/verify.py and inspect the preview.
  5. Update the source revision and hashes in this README.

FreeFeed integration

Copy only the generated WOFF2, the OFL license, and source metadata to the React client. TTF output is not required.

@font-face {
  font-family: "FreeFeed Flags";
  src: url("./FreeFeedFlags.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  unicode-range:
    U+1F1E6-1F1FF,
    U+1F3F4,
    U+E0061-E007A,
    U+E007F;
}

About

Build pipeline for a flags-only COLRv1 webfont based on Noto Color Emoji, with Iran’s Lion and Sun flag

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages