visual_width/
visual_width.rs1use 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}