googlefonts / googlefonts/fontmake

Sources with no kerning or GPOS features are inconsistent between variable and static instance TTFs

Open
#998 8 comments 1 reaction 0 assignees View on GitHub
Dominant language
Python
Stars
888
Forks
97
Avg merge
4d 52m
Merged PRs (30d)
1

Description

_EDIT: Issue edited and narrowed to a more specific issue based [on our findings below](https://github.com/googlefonts/fontmake/issues/998#issuecomment-1555040692)._

When a designspace contains sources that do not kern any pairs and have no GPOS features, fontmake fills them with interpolated kerning when building variable TTFs, but may not when building static instance TTFs.

## Reproducing

1. Obtain a font that has one kerned source and one unkerned source.

2. With fontmake, build variable and static instance TTFs:
* `fontmake -m DESIGNSPACE -o variable`
* `fontmake -m DESIGNSPACE -o ttf -i`

3. Navigate to the location of the unkerned source in both the variable and static instance TTFs.

4. Compare the kerning of a pair that has kerning in the neighbouring source.

### Expected Behaviour

The kerning is the same in the variable TTF and its corresponding static instance TTF.

### Actual Behaviour

The variable TTF has interpolated kerning but the static instance TTF does not.

## Example

Attached is a copy of [supertype.de](supertype.de)'s open source font Blinker, which I have destroyed to produce a minimal test case: [Reproducer.zip](https://github.com/googlefonts/fontmake/files/11516385/Reproducer.zip)

This modified font interpolates the kerning of /A/V in the variable TTF, but not in the static instance TTF that corresponds to the unkerned source, exhibiting the bug.

### Variable TTF at 'Bold':

![At the 'Bold' location in the variable TTF, A and V are shown kerned](https://github.com/googlefonts/fontmake/assets/2150762/000f50e3-fc1e-4f18-90e9-fa2560331114)

### Static instance TTF for 'Bold':

![In the 'Bold' static instance TTF, A and V are shown unkerned](https://github.com/googlefonts/fontmake/assets/2150762/12a91c9f-d75c-4fe9-862d-e1c8de67db4d)

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.