aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/layout/text.rs13
-rw-r--r--tests/wpt/css-tests/css21_dev/html4/reference/text-transform-lowercase-002-ref.htm4
-rw-r--r--tests/wpt/css-tests/css21_dev/html4/text-transform-lowercase-002.htm6
-rw-r--r--tests/wpt/metadata-css/MANIFEST.json10
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/text-transform-uppercase-002.htm.ini3
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