-
Notifications
You must be signed in to change notification settings - Fork 105
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
Checks for dottedCircle (U+25CC)? #3600
Comments
I currently lack any knowledge on this topic. I would appreciate if others (perhaps @simoncozens, @davelab6, @tphinney, or anyone else who may know about this stuff) could give some feedback here to @madig's question. |
Checking that it is “correct” is a big ask, but we could at least get close!
|
I was going to say something similar to Thomas. For point two, the "(list of glyphs)" might just be all mark glyphs; that's the simplest. And "(list of writing systems)" is all Indic scripts, all USE scripts, Khmer, Myanmar, and Hangul (because tone marks). I wouldn't bother with point three. If you have all the anchors, you're probably going to put them in the right places, and if the end-user is seeing a dotted circle everything's gone wrong anyway. |
We'll need a fontbakery |
I can start prototyping a check for this that will run only on fonts that have dottedCircle. Later we can improve it to check for the other things. I'll give it the straightforward check-id com.google.fonts/check/dotted_circle. |
And I'll place it on the |
do we have sample font files for this? |
This will be very helpful; many Noto issues are about missing U+25CC. FWIW, ufo2ft has lists of INDIC_SCRIPTS and USE_SCRIPTS. |
Since U+25CC is often used with marks for descriptive/pedagogical purposes (e.g. in The Unicode Standard itself), shouldn't "(list of writing systems)" be all scripts that encode combining marks? |
And another one: https://github.com/googlefonts/noto-fonts/issues/2248 |
Or, perhaps more practical: skip the whole notion testing for specific scripts / writing systems and, instead, require 25CC to be present and have appropriate anchors for any font that includes combining marks. So, for example, a pure Latin-1 font wouldn't require anchors on 25CC, but a Latin font that includes marks (e.g., things from 0300 block) would. |
There's some justification for this. And it makes things easier. But I'm not convinced that the 25CC glyph itself should be required for all scripts. Could we agree on:
? |
Question: Are there scripts where shapers might insert 25CC in contexts unrelated to combining marks? At any rate, we (SIL) currently require 25CC in any of our fonts that include combining marks but at this point we don't have a way to test whether appropriate anchors are present, so your test requirements as stated will be helpful to us. |
Nope. I went through the Harfbuzz source when compiling the list above.
Excellent. And I think it would work for Noto too. |
@felipesanches Do you want to / are you working on this? I'm happy to implement it. |
HarfBuzz will insert U+25CC for any combining mark at the beginning of text (provided that |
feel free to do it ;-) |
Added to the Universal Profile com.google.fonts/check/dotted_circle (issue #3600)
The basic initial check was implemented by @simoncozens and review/merged by me now. Please open a followup issue for any of the additional behavior that may be proposed for this check. |
Added to the Universal Profile com.google.fonts/check/dotted_circle (issue fonttools#3600)
Had an interesting discussion about this today that included @RosaWagner @vv-monsalve @felipesanches @m4rc1e ... I believe the agreement was as follows:
Then Fontbakery should FAIL if EITHER (a) dotted circle is not present, OR (b) if it is present but the needed combining diacritics for those particular scripts do not attach to the dotted circle
|
OK. For reference, the current check does: If there is no dotted circle, FAIL if the font is a complex shaper font else WARN. You want: If the font is a complex shaper font, FAIL if there is no dotted circle or if there are unattached marks. So all the code is there and it is just a matter of shuffling the if conditions around. :-)
Yeah done. :-) googlefonts/ufo2ft#593 |
I'm a bit confused why Hangeul was included with this check as a FAIL as modern Hangeul use does not include any diacritics nor complex shaping. |
Hangul technically does use complex shaping, |
Old Hangeul uses complex shaping and has diacritic marks that require dotted circles. Contemporary Hangeul does not. In the complex shaper file you sent, it specifically mentions I think the check would be more precise if it made sure that it is looking at an Old Hangeul font versus a modern one. |
On the Shaping Profile com.google.fonts/check/dotted_circle (related to issue #3600)
Hangul is not a syllabic script. Old Hangeul uses complex shaping and has diacritic marks that require dotted circles. Contemporary Hangeul does not. com.google.fonts/check/dotted_circle On the Shaping Profile (related to issue #3600)
Hangul is not a syllabic script. Old Hangeul uses complex shaping and has diacritic marks that require dotted circles. Contemporary Hangeul does not. com.google.fonts/check/dotted_circle On the Shaping Profile (related to issue #3600)
Random thoughts
A secret project recently made me think of the dottedCircle (U+25CC) glyph. A quick search on the OpenType specification shows some protentially clarifying results somewhere, saying that Window's USE uses it for displaying defective clusters: https://docs.microsoft.com/en-us/typography/script-development/use#defective-clusters. I was wondering if anyone thought of some checklist to make sure this glyph works correctly for all the scripts that seem to make use of it, like Lao and Khmer? Would this be something one can automate in fontbakery? One particular issue is that in a UFO/fontmake-based workflow, the anchors in your dottedCircle have to match what you need for all the scripts you support, i.e. if you're missing a bottomright anchor, the circle will work only for marks that use other available anchor bases. Not sure if this needs a per-codepoint list of anchors and where they should attach?
Also, anyone know of any other uses?
The text was updated successfully, but these errors were encountered: