diff --git a/components/layout/text.rs b/components/layout/text.rs index fb1e2b9375e..fdac2dfa658 100644 --- a/components/layout/text.rs +++ b/components/layout/text.rs @@ -503,8 +503,9 @@ impl RunMapping { /// Accounts for `text-transform`. /// -/// FIXME(#4311, pcwalton): Case mapping can change length of the string; case mapping should -/// be language-specific; `full-width`; use graphemes instead of characters. +/// FIXME(#4311, pcwalton): Title-case mapping can change length of the string; +/// case mapping should be language-specific; `full-width`; +/// use graphemes instead of characters. fn apply_style_transform_if_necessary(string: &mut String, first_character_position: usize, text_transform: text_transform::T) @@ -515,8 +516,8 @@ fn apply_style_transform_if_necessary(string: &mut String, let original = string[first_character_position..].to_owned(); string.truncate(first_character_position); let mut count = 0; - for character in original.chars() { - string.push(character.to_uppercase().next().unwrap()); + for ch in original.chars().flat_map(|ch| ch.to_uppercase()) { + string.push(ch); count += 1; } count @@ -525,8 +526,8 @@ fn apply_style_transform_if_necessary(string: &mut String, let original = string[first_character_position..].to_owned(); string.truncate(first_character_position); let mut count = 0; - for character in original.chars() { - string.push(character.to_lowercase().next().unwrap()); + for ch in original.chars().flat_map(|ch| ch.to_lowercase()) { + string.push(ch); count += 1; } count diff --git a/tests/wpt/css-tests/css21_dev/html4/reference/text-transform-lowercase-002-ref.htm b/tests/wpt/css-tests/css21_dev/html4/reference/text-transform-lowercase-002-ref.htm new file mode 100644 index 00000000000..d9d7a54413e --- /dev/null +++ b/tests/wpt/css-tests/css21_dev/html4/reference/text-transform-lowercase-002-ref.htm @@ -0,0 +1,4 @@ + + + i̇i + diff --git a/tests/wpt/css-tests/css21_dev/html4/text-transform-lowercase-002.htm b/tests/wpt/css-tests/css21_dev/html4/text-transform-lowercase-002.htm new file mode 100644 index 00000000000..286602e74ed --- /dev/null +++ b/tests/wpt/css-tests/css21_dev/html4/text-transform-lowercase-002.htm @@ -0,0 +1,6 @@ + +CSS Test: text-transform: LATIN CAPITAL LETTER I WITH DOT ABOVE + + + İI + diff --git a/tests/wpt/metadata-css/MANIFEST.json b/tests/wpt/metadata-css/MANIFEST.json index 4ffd88d663c..a90b319f8cf 100644 --- a/tests/wpt/metadata-css/MANIFEST.json +++ b/tests/wpt/metadata-css/MANIFEST.json @@ -180052,6 +180052,16 @@ ], "url": "/css21_dev/html4/text-transform-lowercase-001.htm" }, + { + "path": "css21_dev/html4/text-transform-lowercase-002.htm", + "references": [ + [ + "/css21_dev/html4/reference/text-transform-lowercase-002-ref.htm", + "==" + ] + ], + "url": "/css21_dev/html4/text-transform-lowercase-002.htm" + }, { "path": "css21_dev/html4/text-transform-uppercase-001.htm", "references": [ diff --git a/tests/wpt/metadata-css/css21_dev/html4/text-transform-uppercase-002.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/text-transform-uppercase-002.htm.ini deleted file mode 100644 index ef003c31c57..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/text-transform-uppercase-002.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[text-transform-uppercase-002.htm] - type: reftest - expected: FAIL