Skip to content

fix: Pass Google Fonts fontspector QA for the variable font - #10

Draft
psd-coder wants to merge 12 commits into
mainfrom
fix-fontspector-issues
Draft

fix: Pass Google Fonts fontspector QA for the variable font#10
psd-coder wants to merge 12 commits into
mainfrom
fix-fontspector-issues

Conversation

@psd-coder

@psd-coder psd-coder commented Jun 3, 2026

Copy link
Copy Markdown
Member

Overview

Brings Martian Grotesk into compliance with Google Fonts QA by resolving the failures reported by fontspector (GF profile), and adds the tooling to run those checks. Covers undrawn Cyrillic glyphs, STAT weight-axis values, master/style naming, and export hygiene.

Problem Statement

The variable font did not pass Google Fonts' automated QA (fontspector, GF profile), which blocks submission to Google Fonts. The notable failures:

  • Empty glyphs (contour_count / no-contour): several Cyrillic letters (Ө, Ӫ, ө, ӫ, Ӛ, ӛ, ə and related) carried Unicode codepoints but had no contours.
  • STAT compulsory axis values: SemiBold (600) is a registered GF weight that falls inside the font's wght range, so it must be labeled in the STAT table; conversely UltraBlack (1000) is not in the GF Axis Registry and shouldn't be there.
  • Naming: master/style names used a "Normal" prefix that conflicts with GF naming recommendations.
  • No repeatable way to run the QA checks locally, so regressions were easy to miss.

Solution Approach

  • Drew the missing Cyrillic glyphs (Ө/Ӫ capitals, ө/ӫ/ӛ/ə lowercase and relatives) in the Glyphs source, giving the previously-empty codepoints real outlines and clearing the no-contour failures.
  • Removed smart-component parts from exports so internal helper glyphs no longer ship as empty glyphs in the final font.
  • Corrected the STAT wght axis values: added SemiBold (600), removed UltraBlack (1000). SemiBold needs no master — STAT axis values label locations in the continuous variable design space, and 600 is already interpolated and exposed as an fvar named instance; the STAT block simply lacked the matching label.
  • Normalized master naming by dropping the "Normal" prefix to follow GF naming guidance.
  • Added a fontspector check script and README section so the GF-profile QA can be run on demand against the variable font (or any named font file).

psd-coder and others added 7 commits June 2, 2026 21:15
sources/check.sh runs the Google Fonts profile against
MartianGrotesk[wdth,wght].ttf, forwards extra args (e.g. -l fail), and
accepts an explicit font path to override the default target
Add SemiBold (600), drop UltraBlack from the wght STAT values; googlefonts/STAT/compulsory_axis_values now passes.

SemiBold needs no master. STAT axis values label locations in the continuous variable design space, not discrete masters: wght spans 100-1000, so 600 is interpolated and already an fvar named instance. The STAT block merely lacked the matching label.

UltraBlack: not in the GF Axis Registry.
@psd-coder psd-coder self-assigned this Jun 3, 2026
@psd-coder
psd-coder marked this pull request as draft June 3, 2026 11:54
@psd-coder psd-coder changed the title Fix fontspector FAILs fix: Pass Google Fonts fontspector QA for the variable font Jun 3, 2026
@psd-coder psd-coder mentioned this pull request Jun 3, 2026
10 tasks
@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown

Visit the preview URL for this PR (updated for commit 31acfc2):

https://grotesk-comparison-stand--pr-10-twgr1eth.web.app

(expires Sun, 27 Sep 2026 22:19:18 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 79b50decca688a9a18871c69fe0ecb3e872353de

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants