///|
fn Char::is_emoji(char : Char) -> Bool {
  char is ('\u{2600}'..='\u{27bf}' | '\u{1f000}'..='\u{1faff}')
}

///|
fn Char::is_zero_width(char : Char) -> Bool {
  char
  is ('\u{0300}'..='\u{036f}'
  | '\u{1ab0}'..='\u{1aff}'
  | '\u{1dc0}'..='\u{1dff}'
  | '\u{200b}'..='\u{200d}'
  | '\u{2060}'
  | '\u{20d0}'..='\u{20ff}'
  | '\u{fe00}'..='\u{fe0f}'
  | '\u{fe20}'..='\u{fe2f}'
  | '\u{e0100}'..='\u{e01ef}')
}

///|
fn Char::is_wide(char : Char) -> Bool {
  char
  is ('\u{1100}'..='\u{11ff}'
  | '\u{2e80}'..='\u{9fff}'
  | '\u{a000}'..='\u{a4cf}'
  | '\u{ac00}'..='\u{d7af}'
  | '\u{f900}'..='\u{faff}'
  | '\u{fe10}'..='\u{fe6f}'
  | '\u{ff01}'..='\u{ff60}'
  | '\u{ffe0}'..='\u{ffe6}'
  | '\u{1b000}'..='\u{1b12f}'
  | '\u{20000}'..='\u{2fa1f}'
  | '\u{30000}'..='\u{3134f}')
}