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

Expose mathGlyph filterRedundantPoints in RGlyph.fromMathGlyph() and .toMathGlyph() #582

Open
LettError opened this issue Mar 29, 2021 · 9 comments

Comments

@LettError
Copy link
Member

LettError commented Mar 29, 2021

This issue is part of a problem that spans fontMath.MathGlyph / fontParts.RGlyph / UFOProcessor. It should be possible to get data in and out of MathGlyph without the filterRedundantPoints filter. MathGlyph already has support for this.

History: by default MathGlyph adds on-point bcps to all straight segments on init, and filters the on-point bcps out on extraction. This was to reduce compatibility issues. Currently a lot of the work is done towards variable fonts and these are a lot stricter and the adding / filtering of bcps is just too invasive. The filtering even takes out points that were intended to be part of the outlines (see this UFOProcessor issue.)

MathGlyph has a flag to switch this filtering off. But I need to make sure it doesn't also add them at initialisation. We abstracted the way fontParts.RGlyph makes and gets MathGlyphs. So fontParts and its users can not get to those flags directly. And maintaining forked versions of mathGlyph / fontParts and ufoProcessor is a hassle.

Proposal: I would like to add a filterRedundantPoints or suitably renamed flag to toMathGlyph and fromMathGlyph. Default set to current behaviour, True. In an old (and stale) sketch I named this flag strict. Then I can add a similar flag to ufoProcessor and all its users too.

@LettError LettError changed the title Expose mathGlyph filterRedundantPoints in RGlyph.fromMathGlyph() Expose mathGlyph filterRedundantPoints in RGlyph.fromMathGlyph() and .toMathGlyph() Mar 29, 2021
@benkiel
Copy link
Member

benkiel commented Mar 29, 2021

Agree. Let me know if you want help with this.

@LettError
Copy link
Member Author

What's better: a separate branch here, or a fork to my own account and then a PR? (are those even options)

@benkiel
Copy link
Member

benkiel commented Mar 29, 2021

either, whatever is easiest for you

@LettError
Copy link
Member Author

WIP 6f2c586
See also robotools/fontMath#232 (comment)

@LettError
Copy link
Member Author

What to do with the calls that to toMathGlyph in fontParts.base.glyph, for instance add, sub and friends:

mathGlyph = self._toMathGlyph()

Can we tell what the intent is here? toMathGlyph will have strict=False as a default.
So how would I control the strictness in g1 + g2?

Maybe base.glyph needs its own strict flag?

@typemytype
Copy link
Member

+1 for base.glyph strict flag which defaults False (the current implementation)

@benkiel
Copy link
Member

benkiel commented Apr 2, 2021

@LettError Yes, I guess so, with the default behavior of False (shoot @typemytype just beat me to it)

@LettError
Copy link
Member Author

LettError commented Apr 3, 2021

So that means adding a def _get_strict(self): and def _set_strict(self, value):, correct?

Then perhaps it is too much to also add def toMathGlyph(self, strict=None): -- if the flag can already be set as an attribute of the glyph, it would not necessary to be able to override it in toMathGlyph.

@lianghai
Copy link

lianghai commented Jun 8, 2023

Upstream updated: LettError/ufoProcessor#41

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

No branches or pull requests

4 participants