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.6.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

glyphsets-0.6.6-py3-none-any.whl (649.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for glyphsets-0.6.6.tar.gz
Algorithm Hash digest
SHA256 d520a7eb2f81bbf38a4a0645e5f9b55a35dedade2a3dd552c446ad706d33503e
MD5 f1a502f7b7377e715e485aba83f992a6
BLAKE2b-256 33e020bb5d256468e604c094d4713c744f9aea81f6d82c8a6e78611ea4498810

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for glyphsets-0.6.6-py3-none-any.whl
Algorithm Hash digest
SHA256 ec5966f7dd67144af29a7be92510762387a8325a6197e721479ca6d3a05514db
MD5 7e4dbb0057e841071802cdb12b2e95d1
BLAKE2b-256 416a2937ab15838178ef579d6d5489188d44585ff099c25a467374c854169216

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