Skip to content

joshka/unicode-width

 
 

Repository files navigation

unicode-width

Build status crates.io version Docs status

Determine displayed width of char and str types according to Unicode Standard Annex #11 and other portions of the Unicode standard.

This crate is #![no_std].

use unicode_width::UnicodeWidthStr;

fn main() {
    let teststr = "Hello, world!";
    let width = teststr.width();
    println!("{}", teststr);
    println!("The above string is {} columns wide.", width);
    let width = teststr.width_cjk();
    println!("The above string is {} columns wide (CJK).", width);
}

NOTE: The computed width values may not match the actual rendered column width. For example, the woman scientist emoji comprises of a woman emoji, a zero-width joiner and a microscope emoji. Such emoji ZWJ sequences are considered to have the sum of the widths of their constituent parts:

extern crate unicode_width;
use unicode_width::UnicodeWidthStr;

fn main() {
    assert_eq!("👩".width(), 2); // Woman
    assert_eq!("🔬".width(), 2); // Microscope
    assert_eq!("👩‍🔬".width(), 4); // Woman scientist
}

Additionally, defective combining character sequences and nonstandard Korean jamo sequences may be rendered with a different width than what this crate says. (This is not an exhaustive list.)

crates.io

You can use this package in your project by adding the following to your Cargo.toml:

[dependencies]
unicode-width = "0.1.11"

About

Displayed width of Unicode characters and strings according to UAX#11 rules.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 71.7%
  • Python 28.3%
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy