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

Lines changed: 1 addition & 4 deletions
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

Lines changed: 2 additions & 8 deletions
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

Lines changed: 5 additions & 19 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy