mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
layout: Add support for white-space-collapse: break-spaces
(#32388)
This change adds support for `white-space-collapse: break-spaces` and adds initial parsing support for `overflow-wrap` and `word-break`. The later two properties are not fully supported, only in their interaction with `break-spaces`. This is a preliminary change preparing to implement them. In addition, `break_and_shape` is now forked and added to Layout 2020. This function is going to change a lot soon and forking is preparation for this. More code that is only used by Layout 2013 is moved from `gfx` to that crate. Co-authored-by: Rakhi Sharma <atbrakhi@igalia.com>
This commit is contained in:
parent
c0dedf06d6
commit
60b4b6c9f0
96 changed files with 410 additions and 537 deletions
|
@ -2,108 +2,7 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use gfx::text::util::{is_cjk, transform_text, CompressionMode};
|
||||
|
||||
#[test]
|
||||
fn test_transform_compress_none() {
|
||||
let test_strs = [
|
||||
" foo bar",
|
||||
"foo bar ",
|
||||
"foo\n bar",
|
||||
"foo \nbar",
|
||||
" foo bar \nbaz",
|
||||
"foo bar baz",
|
||||
"foobarbaz\n\n",
|
||||
];
|
||||
|
||||
let mode = CompressionMode::CompressNone;
|
||||
for &test in test_strs.iter() {
|
||||
let mut trimmed_str = String::new();
|
||||
transform_text(test, mode, true, &mut trimmed_str);
|
||||
assert_eq!(trimmed_str, test)
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_transform_discard_newline() {
|
||||
let test_strs = [
|
||||
(" foo bar", " foo bar"),
|
||||
("foo bar ", "foo bar "),
|
||||
("foo\n bar", "foo bar"),
|
||||
("foo \nbar", "foo bar"),
|
||||
(" foo bar \nbaz", " foo bar baz"),
|
||||
("foo bar baz", "foo bar baz"),
|
||||
("foobarbaz\n\n", "foobarbaz"),
|
||||
];
|
||||
|
||||
let mode = CompressionMode::DiscardNewline;
|
||||
for &(test, oracle) in test_strs.iter() {
|
||||
let mut trimmed_str = String::new();
|
||||
transform_text(test, mode, true, &mut trimmed_str);
|
||||
assert_eq!(trimmed_str, oracle)
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_transform_compress_whitespace() {
|
||||
let test_strs = [
|
||||
(" foo bar", "foo bar"),
|
||||
("foo bar ", "foo bar "),
|
||||
("foo\n bar", "foo\n bar"),
|
||||
("foo \nbar", "foo \nbar"),
|
||||
(" foo bar \nbaz", "foo bar \nbaz"),
|
||||
("foo bar baz", "foo bar baz"),
|
||||
("foobarbaz\n\n", "foobarbaz\n\n"),
|
||||
];
|
||||
|
||||
let mode = CompressionMode::CompressWhitespace;
|
||||
for &(test, oracle) in test_strs.iter() {
|
||||
let mut trimmed_str = String::new();
|
||||
transform_text(test, mode, true, &mut trimmed_str);
|
||||
assert_eq!(&*trimmed_str, oracle)
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_transform_compress_whitespace_newline() {
|
||||
let test_strs = vec![
|
||||
(" foo bar", "foo bar"),
|
||||
("foo bar ", "foo bar "),
|
||||
("foo\n bar", "foo bar"),
|
||||
("foo \nbar", "foo bar"),
|
||||
(" foo bar \nbaz", "foo bar baz"),
|
||||
("foo bar baz", "foo bar baz"),
|
||||
("foobarbaz\n\n", "foobarbaz "),
|
||||
];
|
||||
|
||||
let mode = CompressionMode::CompressWhitespaceNewline;
|
||||
for &(test, oracle) in test_strs.iter() {
|
||||
let mut trimmed_str = String::new();
|
||||
transform_text(test, mode, true, &mut trimmed_str);
|
||||
assert_eq!(&*trimmed_str, oracle)
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_transform_compress_whitespace_newline_no_incoming() {
|
||||
let test_strs = [
|
||||
(" foo bar", " foo bar"),
|
||||
("\nfoo bar", " foo bar"),
|
||||
("foo bar ", "foo bar "),
|
||||
("foo\n bar", "foo bar"),
|
||||
("foo \nbar", "foo bar"),
|
||||
(" foo bar \nbaz", " foo bar baz"),
|
||||
("foo bar baz", "foo bar baz"),
|
||||
("foobarbaz\n\n", "foobarbaz "),
|
||||
];
|
||||
|
||||
let mode = CompressionMode::CompressWhitespaceNewline;
|
||||
for &(test, oracle) in test_strs.iter() {
|
||||
let mut trimmed_str = String::new();
|
||||
transform_text(test, mode, false, &mut trimmed_str);
|
||||
assert_eq!(trimmed_str, oracle)
|
||||
}
|
||||
}
|
||||
use gfx::text::util::is_cjk;
|
||||
|
||||
#[test]
|
||||
fn test_is_cjk() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue