Skip to main content

visual_width/
visual_width.rs

1use txtview::TxtView;
2
3fn main() {
4    let lines = vec![
5        "Visual width demo".to_string(),
6        "".to_string(),
7        "CJK characters take 2 columns each:".to_string(),
8        "  中文测试 ABC abc 123".to_string(),
9        "  日本語テスト ABC abc 123".to_string(),
10        "  한국어테스트 ABC abc 123".to_string(),
11        "".to_string(),
12        "Mixed ASCII and CJK:".to_string(),
13        "  Hello你好World世界!".to_string(),
14        "  Helloあなたは元気です!".to_string(),
15        "  Hello안녕하세요!".to_string(),
16        "  Price: ¥100 ($15 USD)".to_string(),
17        "".to_string(),
18        "Full-width punctuation:".to_string(),
19        "  「引用符」《书名号》【括号】".to_string(),
20        "".to_string(),
21        "Emoji (often 2 columns):".to_string(),
22        "  Hello 👋 World 🌍".to_string(),
23        "".to_string(),
24        "Wrapping counts visual columns, not characters:".to_string(),
25        "  12345678901234567890 (20 chars, 20 cols)".to_string(),
26        "  一二三四五六七八九十 (10 chars, 20 cols)".to_string(),
27        "".to_string(),
28        "Both lines above wrap at 20 columns:".to_string(),
29        "  一二三四五六七八九十十一二 (12 CJK chars, 24 cols)".to_string(),
30        "".to_string(),
31        "24 CJK chars = 48 cols, wraps into rows at column boundaries:".to_string(),
32        "  一二三四五六七八九十".to_string(),
33        "  一二三四五六七八九十".to_string(),
34        "  一二三四五六七八九十".to_string(),
35    ];
36
37    let mut viewer = TxtView::new(lines.join("\n"));
38    viewer.run().unwrap();
39}