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

bad practices encouraged in Diacritics_and_Accents.md #8

Open
moyogo opened this issue Mar 19, 2013 · 4 comments
Open

bad practices encouraged in Diacritics_and_Accents.md #8

moyogo opened this issue Mar 19, 2013 · 4 comments

Comments

@moyogo
Copy link

moyogo commented Mar 19, 2013

This report pretty much covers things I emphasized in the French FontForge book sprint.

Diacritics_and_Accents uses the 'acute' and 'grave', according to AGL and AGLFN these are U+00B4 = 'acute' and U+0060 = 'grave'.
U+00B4 and U+0060 are in the Unicode category "Symbols, modifier", they are spacing characters, meaning that they have their own advance width. They are in Unicode for compatibility with legacy encodings. They are notably used in some programming languages. They should not be used to build accented glyphs (=bad practice, pre-Unicode design) and must not have anchors (=big mistake, breaks Unicode support).

The proper diacritics are U+0300 = 'gravecomb' and U+0301 = 'acutecomb'. U+0300 and U+0301 are in the Unicode category "Mark, non-spacing", they are non-spacing characters, meaning they have no advance width and use the width of the previous base character/glyph.

The bad practice in Diacritics_and_Accents is to talk about U+00B4 and U+0060 as if they were always the right glyphs. The big mistake is to add anchors those spacing characters.

  1. In some fonts U+00B4 and U+0060 have a specific glyph that might not be appropriate for accented letters (too steep, to wide, etc.). That's mostly the case with 'asciicircum' U+005E, which causes some to use 'circumflex' U+02C6, another bad practice since U+02C6 is in the Unicode category "Letter, modifier" and is therefore a spacing character with its own advance width.
    For fool and future proof design, the proper non-spacing combining diacritics should be used. They are in the Combining Diacriticals Marks block, U+0300 'gravecomb', U+0301 'acutecomb', etc.
  2. Diacritics_and_Accents says to add anchors to 'acute' and 'grave', this is obviously wrong since these are spacing characters with their own advance width. Having anchors in them renders non sense, where 'a + acute' (U+0061 + U+00B4) is rendered as an aacute (U+00E1) with the 'acute' hanging above the 'a' followed by the now empty advance width of 'acute'.
    Instead U+0301 should be the one with the anchor, it has no advance width, where 'a + acutecomb' (U+0061 + U+0301) is rendered correctly as an aacute.
    To build aacute automatically, with the anchors, the PrefSpacingAccents must be off (it's on by default as in https://github.com/fontforge/designwithfontforge.com/blob/gh-pages/en-US/images/preferences_accents.png).
@georgd
Copy link

georgd commented Mar 19, 2013

Thank you, @moyogo ! I fully support this! And this is also candidate for a bug report at fontforge/fontforge.

@moyogo
Copy link
Author

moyogo commented Mar 19, 2013

#georgd Thanks. I just opened fontforge/fontforge#449

@adrientetar
Copy link
Member

So say, even if you acute and your combining acute are the same by design, you should use both in a differentiated fashion?

@moyogo
Copy link
Author

moyogo commented Jun 29, 2014

@adrientetar /acute U+00B4 is a spacing character, /acutecomb U+0301 is a non-spacing character. /acute U+00B4 can be used to represent Latin-1 stuff like `quote-like´.
/acutecomb U+0301 can be used to represent decomposed acute letters like ɛ́.
There’s also another spacing acute, modifier letter acute U+02CA which can be used to represent the modifier letter acute (spaced like a letter, indicating tone) like eˊ.
They can have the same outline but they must not have the same advance width, only /acutecomb U+0301 should have zero advance width and OT-lookup anchors as a mark.

JoesCat pushed a commit that referenced this issue Jun 30, 2024
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