Bug 237953 - Greek uppercase transforms fail for some characters
Summary: Greek uppercase transforms fail for some characters
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: CSS (show other bugs)
Version: Safari 15
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Darin Adler
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2022-03-16 05:22 PDT by r12a
Modified: 2024-02-02 22:40 PST (History)
12 users (show)

See Also:


Attachments
1. tonos not removed (62.43 KB, image/png)
2022-03-16 05:22 PDT, r12a
no flags Details
Dialytica not applied (23.80 KB, image/png)
2022-03-16 05:23 PDT, r12a
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description r12a 2022-03-16 05:22:10 PDT
Created attachment 454826 [details]
1. tonos not removed

Converting text to uppercase requires special behaviour for some Greek characters.

Specs: The text-transform property is defined in CSS Text Module Level 3.
https://www.w3.org/TR/css-text-3/#text-transform-property

The spec includes mention of the need for user agents to tailor the transforms for a particular language:

>   The UA must use the full case mappings for Unicode characters, including any conditional casing rules, as defined in the Default Case Algorithms section of The Unicode Standard. [UNICODE](https://www.w3.org/TR/css-text-3/#biblio-unicode) If (and only if) the content language of the element is, according to the rules of the document language, known, then any appropriate language-specific rules must be applied as well. These minimally include, but are not limited to, the language-specific rules in Unicode’s SpecialCasing.txt.

Tests & results: i18n test suite, case conversion, Greek These tests focus on monotonic Greek as used for modern texts. https://w3c.github.io/i18n-tests/results/case-conversion#greek

Results:
-    Gecko: ✅ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:98.0) Gecko/20100101 Firefox/98.0
-    Blink: ✅ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36
-    Webkit: ✅❌ The basic conversions work, but the special Greek rules are not applied. See below. Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15

Issues with WebKit:

1.    transform: uppercase doesn't cause Greek words that are all uppercase to lose tonos.
2.    transform: uppercase doesn't convert diphthongs with tonos on the first character so that the tonos is removed but a dialytika is added above the second character in the diphthong.
3.    text-transform: uppercase should cause a disjunctive eta in a Greek sentence keeps its tonos diacritic, but the test is inconclusive because none of the other tonos marks is removed.
Comment 1 r12a 2022-03-16 05:23:11 PDT
Created attachment 454827 [details]
Dialytica not applied
Comment 2 r12a 2022-03-16 05:30:08 PDT
Fwiw, this bug is being tracked at https://www.w3.org/TR/2022/DNOTE-grek-gap-20220316/#issue15_transforms
Comment 3 Radar WebKit Bug Importer 2022-03-16 05:40:37 PDT
<rdar://problem/90364897>
Comment 4 Darin Adler 2022-03-21 09:32:38 PDT
Maybe I’ll take a look at this next week when I’m back at a computer with a development environment set up. Seems like it should be straightforward since we do have language-specific tailorings here. Likely just need to adjust so we don’t take the fast path for Greek.
Comment 5 T. Psarros 2024-01-22 09:45:55 PST
Is there any movement on this? We currently have to use a javascript solution just to have the correct behaviour in Safari.
Comment 6 Darin Adler 2024-01-22 09:59:47 PST
I forgot about this back in 2022 by the time I got to a computer. I’ll take a look again now. There’s a good chance I’ll be able to fix this quickly. The hard part will actually be adding a regression test!

Another way to get some traction on this would be to make these tests part of Web Platform Tests. I was surprised that the W3C Internationalization Tests are separate from that. If they were part of WPT the WebKit project would almost "automatically" put these into our regression suite, and the tests could also be candidates for the yearly web browser interoperability projects we are doing.

That won’t be necessary just to get one bug fixed, but if someone was wondering what would be useful besides filing a bug report to push this along, that’s one of the useful things. (Another is to find someone who knows how and wants to contribute a fix to the WebKit project.)
Comment 7 T. Psarros 2024-02-01 12:06:42 PST
Hi and sorry to bother you again, did you have time to take a look? I wish I had the expertise to help.
Comment 8 Darin Adler 2024-02-01 13:59:09 PST
Life intervened and I did not yet but it’s still my “next time I get a chance” item.
Comment 9 Darin Adler 2024-02-02 15:42:55 PST
Pull request: https://github.com/WebKit/WebKit/pull/23786
Comment 10 EWS 2024-02-02 22:40:36 PST
Committed 274036@main (de609ec640c9): <https://commits.webkit.org/274036@main>

Reviewed commits have been landed. Closing PR #23786 and removing active labels.