diff options
5 files changed, 27 insertions, 9 deletions
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 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html><head></head><body> + <span style="font-size:32px">i̇i</span> +</body></html> 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 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html><head><title>CSS Test: text-transform: LATIN CAPITAL LETTER I WITH DOT ABOVE</title> + <link rel="match" href="reference/text-transform-lowercase-002-ref.htm"> + </head><body> + <span style="font-size:32px;text-transform:lowercase">İI</span> +</body></html> 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 @@ -180053,6 +180053,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 |