google / google/fonts

Merriweather Sans: inconsistent OS/2 achVendID between upright and italic variable fonts

Open
#10,362 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
HTML
Stars
20.5k
Forks
2.9k
Avg merge
1d 21h
Merged PRs (30d)
95

Description

## Summary

The upright and italic variable font files for Merriweather Sans have inconsistent `OS/2.achVendID` values, causing Qt/KDE to split the family into two separate entries.

## Details

- **Upright** (`MerriweatherSans-VariableFont_wght.ttf`): `achVendID = "STC\x00"` (null-padded)
- **Italic** (`MerriweatherSans-Italic-VariableFont_wght.ttf`): `achVendID = "STC "` (space-padded)

Qt uses the vendor ID to disambiguate font families. Because the padding differs, Qt treats them as two separate families:

- `Merriweather Sans [STC]` — only upright styles (Regular, Bold, Light, ExtraBold)
- `Merriweather Sans [STC ]` — only italic styles (Italic, Bold Italic, Light Italic, ExtraBold Italic)

This means in KDE System Settings (and any Qt-based font picker), users cannot select both upright and italic variants of Merriweather Sans as a single family.

fontconfig handles this fine — the issue is specifically in how Qt's `QFontDatabase` interprets the vendor ID.

## Fix

Set `achVendID` to the same value in both files. Null-padding (`"STC\x00"`) is the conventional approach per the OpenType spec.

## Reproduction

```python
from fontTools.ttLib import TTFont

upright = TTFont("MerriweatherSans-VariableFont_wght.ttf")
italic = TTFont("MerriweatherSans-Italic-VariableFont_wght.ttf")

print(repr(upright["OS/2"].achVendID)) # 'STC\x00'
print(repr(italic["OS/2"].achVendID)) # 'STC '
```

## Environment

- Font source: https://github.com/SorkinType/Merriweather-Sans (issues disabled there)
- Qt 6.10.2, KDE Plasma on Linux
- Fonts downloaded from Google Fonts

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.