pub fn display_width(s: &str) -> usize
Calculate display width of a string (handles CJK characters)
ASCII characters occupy 1 terminal cell; CJK and other wide characters occupy 2.