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

support "abvm" and "blwm" in MarkFeatureWriter #179

Closed
anthrotype opened this issue Nov 23, 2017 · 7 comments
Closed

support "abvm" and "blwm" in MarkFeatureWriter #179

anthrotype opened this issue Nov 23, 2017 · 7 comments

Comments

@anthrotype
Copy link
Member

we should extend the MarkFeatureWriter (or add new writer sublcass) so that we write these Indic-related features.

The code to create mark and abvm/blwm is very similar.
First split all glyphs by Indic script and all other. For the first group, put all anchors with a name in (‘top’, ‘topleft’, ‘topright’, ‘candra’, ‘bindu’, ‘candrabindu’) into abvm and all (‘bottom’, ‘nukta’, ‘bottomleft’, ‘bottomright’) in blwm. All others are checked if they are in the top or bottom part of he letter.

googlefonts/glyphsLib#223 (comment)

related to #176

@pathumego
Copy link

To be clear this would process all the anchors regardless of the anchor names and script ss long as marks and base glyphs are defined?

@schriftgestalt
Copy link

I just changed that for Tibetan Glyphs doesnot write "abvm" and "blwm" but just one "mkmk" feature. And I omit the lookupflag MarkAttachmentType as that prohibits the attachment of marks to different anchors than the previous mark.

@anthrotype
Copy link
Member Author

@schriftgestalt in your comment above, you said, referring to the anchors with non-standard names:

All others are checked if they are in the top or bottom part of he letter.

Does that mean you cut the EM square in half and whatever is in the top half is abvm, what is below is blwm?

Also, could please you send me the list of script names for which Glyphs.app generates abvm/blwm feature? Thanks

@schriftgestalt
Copy link

Does that mean you cut the EM square in half and whatever is in the top half is abvm, what is below is blwm?

Yes and check the anchor name is:
abvm = top, topleft, topright, candra, bindu, candrabindu
blwm = bottom, bottomleft, bottomright, nukta

Also, could please you send me the list of script names for which Glyphs.app generates abvm/blwm feature?

devanagari, oriya, kannada, malayalam, gujarati, telugu, gurmukhi, tamil, bengali, cham

@anthrotype
Copy link
Member Author

Awesome thank you!

@anthrotype
Copy link
Member Author

@ohbendy @punchcutter @behdad @schriftgestalt

In the OpenType Feature Tag registry, under "abvm" and "blwm" paragraphs, I read that these features are meant to position marks above (or below) the base glyphs; and also that they provide

positioning information (x,y) to enable mark positioning (GPOS lookup type 4, 5).

Lookup type 4 and 5 are defined respectively as Mark-To-Base and Mark-To-Liga lookup types.

However, when I inspect the output of Glyphs.app, I can see that it also registers Mark-To-Mark (Lookup Type 6) lookups in the blwm and abvm features.

Based on the above mentioned quotes from the spec, I believe that mkmk lookups and features should stay distinct from the abvm/blwm features.

I'm not sure what to do: should I follow Glyphs.app and add the mark-to-mark lookups to the abvm/blwm features, or should I only add mark-to-base and mark-to-liga lookups to these, and define a separate mkmk feature containing the mark-to-mark lookups?

@anthrotype
Copy link
Member Author

ok, in this other document they say "abvm" includes

mark-to-base and mark-to-mark attachments for above-base marks

https://docs.microsoft.com/en-us/typography/script-development/kannada

so mark-to-mark could be in there too. I was confused by the other description only mentioning lookup type 4 and 5, sorry for the noise.

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

3 participants