Skip to content

Commit d470ebd

Browse files
committed
Revert "Treat newlines as width 0 in the 0.1 stream, publish 0.1.14 (unicode-rs#67)"
This reverts commit 9eaafa5.
1 parent 9eaafa5 commit d470ebd

File tree

3 files changed

+8
-31
lines changed

3 files changed

+8
-31
lines changed

scripts/unicode.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -1281,10 +1281,7 @@ def lookup_fns(
12811281
s += """
12821282
if c <= '\\u{A0}' {
12831283
match c {
1284-
// According to the spec, LF should be width 1, which is how it is often rendered when it is forced to have a single-line rendering
1285-
// However, this makes it harder to use this crate to calculate line breaks, and breaks assumptions of downstream crates.
1286-
// https://github.com/unicode-rs/unicode-width/issues/60
1287-
'\\n' => (0, WidthInfo::LINE_FEED),
1284+
'\\n' => (1, WidthInfo::LINE_FEED),
12881285
'\\r' if next_info == WidthInfo::LINE_FEED => (0, WidthInfo::DEFAULT),
12891286
_ => (1, WidthInfo::DEFAULT),
12901287
}

src/tables.rs

+2-8
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,7 @@ fn width_in_str(c: char, mut next_info: WidthInfo) -> (i8, WidthInfo) {
215215
}
216216
if c <= '\u{A0}' {
217217
match c {
218-
// According to the spec, LF should be width 1, which is how it is often rendered when it is forced to have a single-line rendering
219-
// However, this makes it harder to use this crate to calculate line breaks, and breaks assumptions of downstream crates.
220-
// https://github.com/unicode-rs/unicode-width/issues/60
221-
'\n' => (0, WidthInfo::LINE_FEED),
218+
'\n' => (1, WidthInfo::LINE_FEED),
222219
'\r' if next_info == WidthInfo::LINE_FEED => (0, WidthInfo::DEFAULT),
223220
_ => (1, WidthInfo::DEFAULT),
224221
}
@@ -510,10 +507,7 @@ fn width_in_str_cjk(c: char, mut next_info: WidthInfo) -> (i8, WidthInfo) {
510507
}
511508
if c <= '\u{A0}' {
512509
match c {
513-
// According to the spec, LF should be width 1, which is how it is often rendered when it is forced to have a single-line rendering
514-
// However, this makes it harder to use this crate to calculate line breaks, and breaks assumptions of downstream crates.
515-
// https://github.com/unicode-rs/unicode-width/issues/60
516-
'\n' => (0, WidthInfo::LINE_FEED),
510+
'\n' => (1, WidthInfo::LINE_FEED),
517511
'\r' if next_info == WidthInfo::LINE_FEED => (0, WidthInfo::DEFAULT),
518512
_ => (1, WidthInfo::DEFAULT),
519513
}

tests/tests.rs

+5-19
Original file line numberDiff line numberDiff line change
@@ -214,23 +214,18 @@ fn test_control_line_break() {
214214
assert_width!('\r', None, None);
215215
assert_width!('\n', None, None);
216216
assert_width!("\r", 1, 1);
217-
// This is 0 due to #60
218-
assert_width!("\n", 0, 0);
219-
assert_width!("\r\n", 0, 0);
217+
assert_width!("\n", 1, 1);
218+
assert_width!("\r\n", 1, 1);
220219
assert_width!("\0", 1, 1);
221-
assert_width!("1\t2\r\n3\u{85}4", 6, 6);
222-
assert_width!("\r\u{FE0F}\n", 1, 1);
223-
assert_width!("\r\u{200D}\n", 1, 1);
220+
assert_width!("1\t2\r\n3\u{85}4", 7, 7);
221+
assert_width!("\r\u{FE0F}\n", 2, 2);
222+
assert_width!("\r\u{200D}\n", 2, 2);
224223
}
225224

226225
#[test]
227226
fn char_str_consistent() {
228227
let mut s = String::with_capacity(4);
229228
for c in '\0'..=char::MAX {
230-
// Newlines are special cased (#60)
231-
if c == '\n' {
232-
continue;
233-
}
234229
s.clear();
235230
s.push(c);
236231
assert_eq!(c.width().unwrap_or(1), s.width());
@@ -423,10 +418,6 @@ fn test_khmer_coeng() {
423418
assert_width!(format!("\u{17D2}{c}"), 0, 0);
424419
assert_width!(format!("\u{17D2}\u{200D}\u{200D}{c}"), 0, 0);
425420
} else {
426-
// Newlines are special cased (#60)
427-
if c == '\n' {
428-
continue;
429-
}
430421
assert_width!(
431422
format!("\u{17D2}{c}"),
432423
c.width().unwrap_or(1),
@@ -597,11 +588,6 @@ fn emoji_test_file() {
597588
}
598589
}
599590

600-
#[test]
601-
fn test_newline_zero_issue_60() {
602-
assert_width!("a\na", 2, 2);
603-
}
604-
605591
// Test traits are unsealed
606592

607593
#[cfg(feature = "cjk")]

0 commit comments

Comments
 (0)