googlefonts/googlesans-flex

Google Sans Flex

10

stars

1,736

commits

Python

primary language

Sep 11, 2026

updated

README

Google Sans Flex

Google Sans Flex is a geometric sans-serif typeface for use as the Google's corporate branding typeface. Originally based off of Google Sans, the Google Sans Flex design has been extended adding a broader design space of optical sizes and a wide range of styles.

The typeface currently supports weight, width, slant, optical size, grade, and roundness design axes.

Google Sans Flex Source

The Google Sans Flex project is developed in a six axis design space with one '.glyphspackage` source.

  • wght: range 1 to 1000; default=400
  • wdth: range 25 to 151; default=100
  • slnt: range -10 to 0; default=0.
  • opsz: range 6 to 144; default=18.
  • GRAD: range 0 to 100; default=0
  • ROND: range 0 to 100; default=0

The sources are drawn with quadratic outlines despite living in a .glyphspackage, and are compiled with fontc.

Building

On GitHub

Commits to the main branch are built & tested automatically.

To build from other branches, workflows can be manually run from the Actions tab of the repository.

  1. Go to the Actions tab
  2. Click Build from Glyphs
  3. Click the grey "Run workflow" dropdown button
  4. Enter the name of the branch or commit you want to build in the text box
  5. Press the green "Run workflow" button

How the CI pipeline builds the font

  1. Create/Activate venv*
  2. Install requirements.txt*
  3. (if release) bumpfontversion sets the font version in the sources based on the tag name
  4. Call gftools builder, which invokes fontc and does post-compilation fixups
  5. font-v sets TTF version strings
  6. scripts/prune_font_binary.py removes unused/unencoded glyphs from TTFs
  7. scripts/set-overlap-bits.py adjusts overlap flags in the GLYF table
  8. TTFs are archived for download

On your computer

Releasing

To release, head to GitHub's releases page for the repo (here). Then:

  1. Click "Draft a new release" (top right).
  2. Open the dropdown "Choose a tag".
  3. Either select the existing tag you want to make a release for, or type in the version you're releasing and then click "Create new tag: blah on publish".
  4. Fill in the release title (the description is filled automatically).
  5. Adjust checkboxes for pre-release and latest as you see fit.
  6. Click "Publish release".

That's everything you need to do done. In particular, no need to change the version number in either the design or UFO sources, as bumpfontversion will take care of that.

A GitHub workflow will kick off in the background which will compile the font and attach a .zip file to the GitHub release once complete. You can track its progress here.

Release contents: Workspace fonts

A set of VFs intended for use in Google Workspace will be generated by the release workflow. Check README_WORKSPACE.md for more information. That README_WORKSPACE.md file will be included in the Workspace release zip.

Updating dependencies

Please run make update to update dependencies. This uses uv to resolve them and write them into the requirements.txt file. The requirements are then installed by the build scripting without further dependency resolution.

Scripts

find-problems.py

A script used to find angles (between the incoming and outgoing handles or point of an on-curve point) that statistically deviate from the same angle in other masters. Use like this:

  1. First, git clone https://github.com/BlackFoundryCom/fontra somewhere and set it up inside a venv as described in the Readme.
  2. Then, start it by pointing it to the directory containing GoogleSansFlex.designspace, like so:
    • fontra --launch filesystem ../googlesans-flex/sources/regular/
  3. In a separate terminal or tab, go to the root directory of GSF and activate the venv (e.g. run make venv and then source venv/bin/activate).
  4. Run the script like this: python scripts/find-problems.py ../googlesans-flex-fb-wip/sources/roman/GoogleSansFlex.designspace. The Designspace can be anywhere, but the script should be run from your venv.
  5. The script will create a CSV file where it lists glyph points and their locations where the angle of the incoming and outgoing handle or on-curve deviates from other masters. It gives you a link to click, which brings you to the glyph in Fontra and marks the offending point for you. Wiggle the location sliders to see if there is a problem or not.

You can also inspect variable TTFs. Note that the locations might be slightly off then.

License

SIL Open Font License, without Reserved Font Names.

Contributors

RickyDaMa

499 commits

madig

223 commits

Hoolean

105 commits

googlefonts/googlesans-flex

Google Sans Flex

10

stars

1,736

commits

Python

primary language

Sep 11, 2026

updated

README

Google Sans Flex

Google Sans Flex is a geometric sans-serif typeface for use as the Google's corporate branding typeface. Originally based off of Google Sans, the Google Sans Flex design has been extended adding a broader design space of optical sizes and a wide range of styles.

The typeface currently supports weight, width, slant, optical size, grade, and roundness design axes.

Google Sans Flex Source

The Google Sans Flex project is developed in a six axis design space with one '.glyphspackage` source.

  • wght: range 1 to 1000; default=400
  • wdth: range 25 to 151; default=100
  • slnt: range -10 to 0; default=0.
  • opsz: range 6 to 144; default=18.
  • GRAD: range 0 to 100; default=0
  • ROND: range 0 to 100; default=0

The sources are drawn with quadratic outlines despite living in a .glyphspackage, and are compiled with fontc.

Building

On GitHub

Commits to the main branch are built & tested automatically.

To build from other branches, workflows can be manually run from the Actions tab of the repository.

  1. Go to the Actions tab
  2. Click Build from Glyphs
  3. Click the grey "Run workflow" dropdown button
  4. Enter the name of the branch or commit you want to build in the text box
  5. Press the green "Run workflow" button

How the CI pipeline builds the font

  1. Create/Activate venv*
  2. Install requirements.txt*
  3. (if release) bumpfontversion sets the font version in the sources based on the tag name
  4. Call gftools builder, which invokes fontc and does post-compilation fixups
  5. font-v sets TTF version strings
  6. scripts/prune_font_binary.py removes unused/unencoded glyphs from TTFs
  7. scripts/set-overlap-bits.py adjusts overlap flags in the GLYF table
  8. TTFs are archived for download

On your computer

Releasing

To release, head to GitHub's releases page for the repo (here). Then:

  1. Click "Draft a new release" (top right).
  2. Open the dropdown "Choose a tag".
  3. Either select the existing tag you want to make a release for, or type in the version you're releasing and then click "Create new tag: blah on publish".
  4. Fill in the release title (the description is filled automatically).
  5. Adjust checkboxes for pre-release and latest as you see fit.
  6. Click "Publish release".

That's everything you need to do done. In particular, no need to change the version number in either the design or UFO sources, as bumpfontversion will take care of that.

A GitHub workflow will kick off in the background which will compile the font and attach a .zip file to the GitHub release once complete. You can track its progress here.

Release contents: Workspace fonts

A set of VFs intended for use in Google Workspace will be generated by the release workflow. Check README_WORKSPACE.md for more information. That README_WORKSPACE.md file will be included in the Workspace release zip.

Updating dependencies

Please run make update to update dependencies. This uses uv to resolve them and write them into the requirements.txt file. The requirements are then installed by the build scripting without further dependency resolution.

Scripts

find-problems.py

A script used to find angles (between the incoming and outgoing handles or point of an on-curve point) that statistically deviate from the same angle in other masters. Use like this:

  1. First, git clone https://github.com/BlackFoundryCom/fontra somewhere and set it up inside a venv as described in the Readme.
  2. Then, start it by pointing it to the directory containing GoogleSansFlex.designspace, like so:
    • fontra --launch filesystem ../googlesans-flex/sources/regular/
  3. In a separate terminal or tab, go to the root directory of GSF and activate the venv (e.g. run make venv and then source venv/bin/activate).
  4. Run the script like this: python scripts/find-problems.py ../googlesans-flex-fb-wip/sources/roman/GoogleSansFlex.designspace. The Designspace can be anywhere, but the script should be run from your venv.
  5. The script will create a CSV file where it lists glyph points and their locations where the angle of the incoming and outgoing handle or on-curve deviates from other masters. It gives you a link to click, which brings you to the glyph in Fontra and marks the offending point for you. Wiggle the location sliders to see if there is a problem or not.

You can also inspect variable TTFs. Note that the locations might be slightly off then.

License

SIL Open Font License, without Reserved Font Names.

Contributors

RickyDaMa

499 commits

madig

223 commits

Hoolean

105 commits

Languages

Python

67.0%

HTML

30.5%

Shell

1.2%

Makefile

1.1%