1 unstable release

0.1.0 Mar 29, 2024

#344 in Internationalization (i18n)

BSD-3-Clause

5KB
50 lines

This library provides a wrapper struct CJKAlign to align CJK and emoji characters correctly on terminals. Despite its name, it works for other Unicode characters too as supported by the unicode-width crate.

use cjk_align::CJKAlign;

assert_eq!(format!("{:6}", CJKAlign("你好")), "你好  ");
assert_eq!(format!("{:>6}", CJKAlign("你好")), "  你好");
assert_eq!(format!("{:^6}", CJKAlign("你好")), " 你好 ");
assert_eq!(format!("{:^7}", CJKAlign("你好")), "  你好 ");

To treat East Asian ambiguous width characters as double width, use CJKAlignWide instead:

use cjk_align::{CJKAlign, CJKAlignWide};

assert_eq!(format!("{:8}", CJKAlign("“……”")), "“……”    ");
assert_eq!(format!("{:8}", CJKAlignWide("“……”")), "“……”");

lib.rs:

This library provides a wrapper struct [CJKAlign] to align CJK and emoji characters correctly on terminals. Despite its name, it works for other Unicode characters too as supported by the unicode-width crate.

use cjk_align::CJKAlign;

assert_eq!(format!("{:6}", CJKAlign("你好")), "你好  ");
assert_eq!(format!("{:>6}", CJKAlign("你好")), "  你好");
assert_eq!(format!("{:^6}", CJKAlign("你好")), " 你好 ");
assert_eq!(format!("{:^7}", CJKAlign("你好")), "  你好 ");

To treat East Asian ambiguous width characters as double width, use [CJKAlignWide] instead:

use cjk_align::{CJKAlign, CJKAlignWide};

assert_eq!(format!("{:8}", CJKAlign("“……”")), "“……”    ");
assert_eq!(format!("{:8}", CJKAlignWide("“……”")), "“……”");

Dependencies

~1.5MB
~19K SLoC