googlefonts / googlefonts/ufo2ft

Mark feature writer doesn't mkmk correctly when both abvm and mark scripts in font

Open
#754 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
176
Forks
48
PR merge metrics
No merged PRs in 30d

Description

Okay, this is slightly complicated, but when the attached Glyphs File
[MarkMarkTest.glyphs.gz](https://github.com/googlefonts/ufo2ft/files/11705548/MarkMarkTest.glyphs.gz) (a subset of Noto Sans Tagalog) is compiled with fontmake, the resulting feature file looks like this:

```
markClass uni1712 @MC_Anchor2;

feature abvm {
lookup abvm_mark2base {
pos base uni170A
mark @MC_Anchor2;
} abvm_mark2base;

lookup abvm_mark2mark_Anchor2 {
@MFS_abvm_mark2mark_Anchor2 = [uni1712];
lookupflag UseMarkFilteringSet @MFS_abvm_mark2mark_Anchor2;
pos mark uni1712
mark @MC_Anchor2;
} abvm_mark2mark_Anchor2;

} abvm;

feature mark {
lookup mark2base {
pos base uni25CC
mark @MC_Anchor2;
} mark2base;

} mark;

table GDEF {
GlyphClassDef [uni170A uni25CC], [], [uni1712], [];
} GDEF;
```

Notice that we have mark-to-base and mark-to-marks rule in the Tagalog part of the font that goes through the `abvm` feature, but we only have mark-to-base, and no mark-to-mark, for the dotted circle bit, leading to:

```
$ shape master_ttf/MarkMarkTest-Regular.ttf -u 170a,1712,1712,25cc,1712,1712
```
![shape](https://github.com/googlefonts/ufo2ft/assets/106728/2a5da7eb-639d-4c74-952a-47e563f01afa)

I think there should be a `mkmk` feature produced as well.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by compiling the attached MarkMarkTest.glyphs.gz with fontmake and inspect the generated feature file, then use the provided shape command to reproduce the missing mark-to-mark behavior. Trace the feature-generation entry point responsible for abvm and mark output; done means the compiled font includes the expected mkmk behavior for the dotted-circle sequence.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.