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

[css-ruby] Alignment of bopomofo #1907

Open
upsuper opened this issue Oct 27, 2017 · 7 comments
Open

[css-ruby] Alignment of bopomofo #1907

upsuper opened this issue Oct 27, 2017 · 7 comments
Labels
Commenter Response Pending css-ruby-1 Current Work i18n-clreq Chinese language enablement i18n-tracker Group bringing to attention of Internationalization, or tracked by i18n but not needing response.

Comments

@upsuper
Copy link
Member

upsuper commented Oct 27, 2017

In an early email, I raised that the default value of ruby-align is not desirable for bopomofo:

In the current spec, ruby-align has a default value "space-around". This value is the usual behavior for Japanese, and is fine for pinyin since it is just like Latin words. But this value is not fine for bopomofo.

There are justification opportunities between bopomofo characters, just like other Chinese/Japanese characters. But if we have "ruby-align: space-around" on them, we will get an undesirable result, because bopomofo is generally centered when in annotations.

Hence I propose that we add an "auto" value to ruby-align, and make it default. UA may choose a proper value for it. It may behave as "center" in Chinese locales, and "space-around" otherwise.

Or alternatively, I guess we can solve it as a rule in the default style sheet like:
ruby:lang(zh) { ruby-align: center; }

From the minutes of 2015 Sydney meeting, the group somehow resolved to:

fantasai: 1) Change initial value to center. Reset it for Japanese to be space-around in the UA stylesheet.
fantasai: 2) Keep it as space-around, reset it for Chinese to center.
fantasai: 3) Have a value that does custom justifications - auto - which justifies between Han and Kana, and not between bopomofo.
...
RESOLVED: Either option 1 or 3 for ruby-position, at editor's discretion.

This doesn't seem to match what the spec is currently saying, actually. The current spec has space-around as the default value of ruby-align, and use default style sheet to set it to center for Chinese element, and I failed to figure out how do we actually get here.

In a later reply from @kojiishi, he said:

So, not 1 please.

I think the question is how to justify Bopomofo, rather than the default value of ruby-align.

This real-world page[2] indicates that Bopomofo is a space-delimited scripts, so I'm guessing we do not want justify between Bopomofo, similar to Korean, where Hanja justifies between letters while Hangul does not.

I would love to see if there were any real example of justified Bopomofo, but IIUC Richard has been trying that without success, even for single example.

which sounds like another solution to this problem is that, we make bopomofo not justifiable, so that we don't need any additional rule for ruby-align on Chinese, and all languages would just work fine with the default value space-around of ruby-align.

@upsuper upsuper added the css-ruby-1 Current Work label Oct 27, 2017
@upsuper
Copy link
Member Author

upsuper commented Oct 27, 2017

(This may not an issue for current spec, but I file this issue to track whether the alternative solution may make more sense.)

@patrickdark
Copy link
Contributor

patrickdark commented Oct 27, 2017

Seems easiest to fix this through a UA stylesheet with CSS4 Selectors :lang pseudo-classes:

rtc:lang("*-bopo"),
rtc:lang("*-hani"),
rtc:lang("*-hans"),
rtc:lang("*-hant"),
rt:lang("*-bopo"),
rt:lang("*-hani"):not(:lang("ja")),
rt:lang("*-hans"):not(:lang("ja")),
rt:lang("*-hant"):not(:lang("ja")) {
	ruby-align: center;
} 
rtc:lang("*-hira"),
rtc:lang("*-hrkt"),
rtc:lang("*-jpan"),
rtc:lang("*-kana"),
rtc:lang("ja-hani"),
rtc:lang("ja-hans"),
rtc:lang("ja-hant"),
rt:lang("*-hira"),
rt:lang("*-hrkt"),
rt:lang("*-jpan"),
rt:lang("*-kana"),
rt:lang("ja-hani"),
rt:lang("ja-hans"),
rt:lang("ja-hant") {
	ruby-align: space-around;
}

Of course, you only need one of these depending on what the default keyword turns out to be. center seems to be the best default if one is looking at ruby as a script-agnostic feature.

@upsuper
Copy link
Member Author

upsuper commented Oct 27, 2017

The spec has been using this approach. The question is whether this is what we really want.

Koji pointed out that we may not want to insert justification opportunities between bopomofo, in which case we would not need the UA stylesheet rule at all.

@patrickdark
Copy link
Contributor

Ah, I see. "Justification opportunities" is a Ruby spec key term.

The spacing of many of the ruby annotations at https://choyce.tw/momguide/ seem to approximate space-between. I think there should be justification opportunities since the spacing looks slightly nicer, but there won't be much of a difference from center at ordinary font sizes.

Bopomofo is only used for single characters and, if you look at examples like https://books.google.com/books?id=AMVoCgAAQBAJ&printsec=frontcover, how much space can space-between add in there really? Not much. So leaving center or space-between as the default for everything shouldn't matter for this case.

@r12a r12a added i18n-tracker Group bringing to attention of Internationalization, or tracked by i18n but not needing response. i18n-clreq Chinese language enablement labels Apr 30, 2018
@r12a
Copy link
Contributor

r12a commented Sep 26, 2018

First let me tease something apart here: bopomofo ruby can be used above the base in a similar way to furigana in Japanese, or (more commonly) it can be used vertically to the right of each character. The inter-character value of ruby-position was designed specifically for the latter.

This means that we can't assume that all ruby or even all bopomofo ruby in Taiwan is rendered in the same way.

The spacing of many of the ruby annotations at https://choyce.tw/momguide/ seem to approximate space-between. I think there should be justification opportunities since the spacing looks slightly nicer, but there won't be much of a difference from center at ordinary font sizes.

Inter-character bopomofo ruby is normally solid set and centred, with tone marks appearing to the right at varying heights, depending on the annotation itself. My links to the diagrams at the Ministry of Education in Taiwan don't seem to work any more, but you can see a summary at https://w3c.github.io/clreq/#h-examples_of_zhuyin_annotations (clreq).

Bopomofo is only used for single characters and, if you look at examples like https://books.google.com/books?id=AMVoCgAAQBAJ&printsec=frontcover, how much space can space-between add in there really? Not much. So leaving center or space-between as the default for everything shouldn't matter for this case.

Not sure how you came to your conclusion here. Bopomofo ruby is rarely a single character. It is typically 1-3 phonetic characters plus a tone mark.

I suggest reading https://r12a.github.io/scripts/bopomofo/ontheweb

So, to summarise, when ruby-position for bopomofo ruby is set to over, i don't have a specific recommendation, but i suspect that the annotation is usually centred, like pinyin. @bobbytung may provide some advice there.

When bopomofo ruby annotations are displayed vertically to the right of each character, using the inter-character value, i don't expect to see any justification or separation of the glyphs, but rather vertically centred phonetic symbols (and the positioning of the tone marks is special and isn't indicated by any ruby-align value).

@patrickdark
Copy link
Contributor

@r12a:

Not sure how you came to your conclusion here.

I believe that when I wrote "Bopomofo is only used for single characters…", I was referring to single base characters.

I think the point I was trying to make (last year) was that the default doesn't matter much because (A) a UA stylesheet can address the issue with CSS4 Selectors support and (B) there will normally be a negligible difference between space-between and center—with the biggest difference applying to the allocation of space of a two‐character bopomofo annotation applied to a single base character—unless the base character is unusually large.

I don't feel strongly about this issue though. I think I was mostly interested in chiming in because I saw “ruby:lang(zh)” proposed, which I think is the wrong approach since it lacks a script string (i.e., bopo) in the language selector. (See one of my preceding posts for a CSS approach that I felt was better.)

I suggest reading https://r12a.github.io/scripts/bopomofo/ontheweb

This was an interesting read. I'd suggest changing the text color from gray to a more legible black though to encourage more people to read it. (I manually changed the text color.)

For what it’s worth, I think a better approach to handling bopomofo tone mark rendering would be to create bopomofo-corner-tone-offset, bopomofo-dot-position, and bopomofo-word-separator CSS properties. Bopomofo isn't intrinsically tied to ruby as seen at http://dict.revised.moe.edu.tw/cgi-bin/cbdic/gsweb.cgi?o=dcbdic&searchid=Z00000153482, where bopomofo appears as tabular data, or at http://stroke-order.learningweb.moe.edu.tw/bopomofo.do, where bopomofo input element text field values cannot be marked with markup.

@frivoal
Copy link
Collaborator

frivoal commented Feb 2, 2021

which sounds like another solution to this problem is that, we make bopomofo not justifiable, so that we don't need any additional rule for ruby-align on Chinese, and all languages would just work fine with the default value space-around of ruby-align.

If we treat text-justify:auto on bopomofo as behaving as inter-word, it looks like this would get us the right behavior for the bopomofo ruby case. IIIRC text composed entirely of bopomofo is written with spaces between words, and that means that would be fine too. But this assumption correct? @bobbytung

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Commenter Response Pending css-ruby-1 Current Work i18n-clreq Chinese language enablement i18n-tracker Group bringing to attention of Internationalization, or tracked by i18n but not needing response.
Projects
None yet
Development

No branches or pull requests

4 participants