Merriweather Sans: inconsistent OS/2 achVendID between upright and italic variable fonts
- 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
Assessment
This issue has not been assessed yet.