Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fontmake -i destroys geometry when off curve points coincide with on curve points #961

Closed
justvanrossum opened this issue Dec 8, 2022 · 0 comments · Fixed by #962
Closed

Comments

@justvanrossum
Copy link
Contributor

The enclosed archive contains a .designspace file using two ufos. Running the "generate_instances.py" script writes a third master, based on the instance defined in the .designspace file.

The single glyph shape in those ufos have a cluster of points at each corner: an on-curve point, two off-curve point, another on-curve point, all at the same (x, y) position. (These could then be used to interpolate to a sharp corner with rounded-corner sources.)

The output of the script has all off-curve point stripped, so is no longer compatible with the sources. (The purpose here is to insert the generated ufo as a new source in the designspace.)

The fontmake instantiator uses fontMath.MathGlyph to do the interpolation, which messes with the topology of the shapes. In this case it filters out off-curve points that coincide with neighboring on-curve points.

MathGlyph recently got a "strict" flag to disable this behavior, and I think fontmake should use it.

That said, fontMath has a bug of its own here: robotools/fontMath#305

fontmake_test.zip

justvanrossum added a commit to justvanrossum/fontmake that referenced this issue Dec 8, 2022
This fixes googlefonts#961, and makes instantiator.py as strict as varLib when interpolating.

Depends on robotools/fontMath#305, though, as fontMath doesn't properly propagate its "strict" flag down to copies.

So this PR should probably also update its fontMath version dependency, once a new fontMath is out.
bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this issue Dec 14, 2022
https://build.opensuse.org/request/show/1042823
by user dgarcia + dimstar_suse
- Remove python_module macro definition

- Update to version 0.9.3
  * What's Changed
  Pass "strict" flag down to copies, so strict remains strict. By @justvanrossum in #305, as required to fix googlefonts/fontmake#961
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 a pull request may close this issue.

1 participant