Skip to main content

A python API for evaluating coverage of glyph sets in font projects.

Project description

Attention: Repository under transition

The assembly of character sets is currently undergoing a transition from the previous approach of using the glyphsets command and data.json as a database to using the gflanguages package as the database and assembling .nam and other files from that.

This transition is currently complete for:

  • GF_Latin_Core

How to assemble glyphs and characters using the new approach

  1. Define the glyphset in the Python module in Lib/glyphsets/definitions/__init__.py with language codes for your character set.
  2. Optional: Have a .stub.nam file under GF_Glyphsets/*/definitions/ for your character set, containing encoded characters that you want to see included that can't be inferred from the gflanguages definitions.
  3. Optional: Have a .stub.glyphs file under GF_Glyphsets/*/definitions/ for your character set, containing unencoded glyphs that you want to see included.
  4. Update all glyphsets using sh GF_glyphsets/update-gs.sh as usual, see below for details.

The final .glyphs files are the sum of gflanguages + .stub.nam + .stub.glyphs.

Bonus points: Sadly, in the creation of the .glyphs files, it's not possible to exactly recreate the glyph sorting that Glyphs.app uses by default, so the .glyphs files look a bit different from what's expected. If you care, please open every freshly adjusted .glyphs file in Glyphs.app, select all glyphs, and run "Update Glyph Info" from the "Glyphs" menu on them to sort them and save the file. But the files will work as-is in any case.

What happens under the hood

  1. update-gs.sh runs as previously, except that it won't deleted the entire folder structure as previously, thus preserving the vital new definitions folder.
  2. It continues to build all files under the old approach.
  3. Afterwards, it calls the new script (scripts/assemble_charactersets.py) which will write over existing nam/glyphs/txt files (for supported glyphsets, see list at top).

Data flow visualization

Visualizes in a simplified way how the various data sources are combined into a final glyphset, then rendered out to various format. This process is repeated for every glyphset defined in Lib/glyphsets/definitions/__init__.py.

Read this top to bottom.

┌──────────────────┐
│ Language codes   │
│ "en_Latn"        │
│ "de_Latn"        │
│ ...              │
└──────────────────┘
         │
┌──────────────────┐   ┌──────────────────┐   ┌──────────────────┐
│ gflanguages      │   │ .stub.nam        │   │ .stub.glyphs     │
│ (Python package) │   │ (optional)       │   │ (optional)       │
└──────────────────┘   └──────────────────┘   └──────────────────┘
         │                      │                      │
         ╰──────────────────────┼──────────────────────╯
                                │
                ╔═══════════════════════════════╗
                ║ complete glyphset             ║ 
                ╚═══════════════════════════════╝
                                │
         ╭──────────────────────┼──────────────────────┬──────────────────────╮
         │                      │                      │                      │
┌──────────────────┐   ┌──────────────────┐   ┌──────────────────┐   ┌──────────────────┐
│ .txt             │   │ .nam             │   │ .glyphs          │   │ .plist           │
│ (nice & prod)    │   │                  │   │                  │   │                  │
└──────────────────┘   └──────────────────┘   └──────────────────┘   └──────────────────┘

Glyphsets

This python module provides an API with data about glyph sets for many different scripts and languages. This was crafted to specify the sets of characters that fonts in the Google Fonts collection are expected to provide glyphs for.

GF glyph sets

If you are a font developer or typeface designer, see the GF Glyphsets subdirectory which provides glyphset definition "standards" that are typically useful sets to draw. The GF_Glyphsets are thought as modules you can accumulate. Therefore the Vietnamese set only contains additional glyphs to Latin Core to be able to support Vietnamese language.

  • Fonts commissioned by Google Fonts must support Latin level 1 to 4: i.e Latin Core, Vietnamese and Plus sets.
  • Fonts submitted to Google Fonts must support at least GF Latin Core, and designers are strongly encouraged to consider adding the GF Latin Plus set.

API Subsets

On the other hand, the nam files on the Lib/glyphsets/encodings directory are probably more useful for expert web developers. Those files explain how the Unicode Range subsets are defined, typically per script (writing system), in the Google Fonts css API.

Glyphsets tool

You can create your own glyphset filter using the glyphsets tool and our database.

You can install the tool with pip:

pip install glyphsets

We recommend installing it in a virtual environment.

  • Main usage:
glyphsets filter-list [Set1, Set2,…] -o list-name.txt --prod-names

This command will create a filter list using production names. Without the --prod-names argument, the result would follow the Glyph's nice name scheme. You can then use these lists into any font editor to create your filter.

  • To create a filter list specifically for Glyphs App, you need to change the file extension with .plist. For example:
glyphsets filter-list GF_Latin_Core GF_Latin_Plus GF_Cyrillic_Core GF_Cyrillic_Plus -o CustomFilter_ProjectName.plist

Add this .plist file next to your Glyphs file and you would be ale to see it under your filters.

  • If you want to check if your font is missing glyphs from GF_Latin_Core, run:
glyphsets missing-in-font font.ttf

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

glyphsets-0.6.8.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

glyphsets-0.6.8-py3-none-any.whl (650.9 kB view details)

Uploaded Python 3

File details

Details for the file glyphsets-0.6.8.tar.gz.

File metadata

  • Download URL: glyphsets-0.6.8.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for glyphsets-0.6.8.tar.gz
Algorithm Hash digest
SHA256 390acb6bd0e96d56bbd4ec566aa2243c4600a3109bd5015323c577c5dd2bd607
MD5 02c8b4d0c39db1a31cfa96cb687af13d
BLAKE2b-256 d4a339609e28e2b35f00f708e39f0609c50f87a848624f9771a4e6f8db95fb69

See more details on using hashes here.

File details

Details for the file glyphsets-0.6.8-py3-none-any.whl.

File metadata

  • Download URL: glyphsets-0.6.8-py3-none-any.whl
  • Upload date:
  • Size: 650.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for glyphsets-0.6.8-py3-none-any.whl
Algorithm Hash digest
SHA256 a5c31870a82ed7bc0dbfc0b0d27825a8d7fe4f5421cfa8357387856a28293caa
MD5 df028d46f3fe15339719fd6221b06f94
BLAKE2b-256 fdfbb02ef5e31bfd342334ec56f507584c7e580266df23d0e7922f16bcbec9ce

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page