PackageTrack
Sign in Get early access

unicode-width

Determine displayed width of `char` and `str` types according to Unicode Standard Annex #11 rules.

0.2.2 752M downloads/mo #101 most downloaded on crates.io unicode-rs/unicode-width

What this package is like to depend on

Last release 10 months ago

06 Oct 2025

Ships fairly regularly

a new release about every 7 months

This project publishes no release notes

the list below is its commits, not an announcement

Nothing withdrawn

no release was ever pulled

11 years old

19 releases · first in 2015

1 release in the last 12 months

see the full history below

Release timeline

19 releases · Apr 2015 to Oct 2025
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 19
  1. 0.2.2 06 Oct 2025
    Commits, not release notes

    This project publishes no release notes. Between v0.2.1 and v0.2.2 there were 2 commits, 2 of them substantive:

    • Support Unicode 17 (#75)
    • Publish 0.2.2 (#79)
  2. 0.2.1 09 Jun 2025
    Commits, not release notes

    This project publishes no release notes. Between v0.2.0 and v0.2.1 there were 7 commits, 6 of them substantive:

    • Make characters with Line_Break=Ambiguous ambiguous (#61)
    • Advertise and enforce MSRV (#73)
    • Support Unicode 16 (#74)
    • update copyright year (#76)
    • Remove compiler-builtins from rustc-dep-of-std dependencies (#77)
    • Publish 0.2.1
  3. 0.2.0 19 Sep 2024
    Commits, not release notes

    This project publishes no release notes. Between v0.1.14 and v0.2.0 there were 1 commits, 1 of them substantive:

    • Publish 0.2.0 with newlines treated as width 1 (#68)
  4. 0.1.14 19 Sep 2024
    Commits, not release notes

    This project publishes no release notes. Between v0.1.13 and v0.1.14 there were 6 commits, 6 of them substantive:

    • fix CI failure (#59)
    • include U+0000 in comment (#58)
    • Support lots of ligatures (#53)
    • Support Grapheme_Cluster_Break=Prepend (#62)
    • Treat ambiguous Modifier_Letters as narrow (#63)
    • Treat newlines as width 0 in the 0.1 stream, publish 0.1.14 (#67)
  5. 0.1.13 04 Jun 2024
    Commits, not release notes

    This project publishes no release notes. Between v0.1.12 and v0.1.13 there were 32 commits, 21 of them substantive:

    • Add more canonical equivalence tests
    • Remove old normalization test
    • Specify unicode version in unicode.py
    • Check NormalizationTest.txt into CI
    • Even more tests
    • Diff NormalizationTest.txt in CI
    • Fix CI
    • More CI fix
    • Support text presentation sequences
    • Remove soft hyphen special case
    • Control characters have width 1
    • Test width = sum(grapheme cluster widths)
    • Revert "Test width = sum(grapheme cluster widths)"
    • Fix CI link in README
    • Support Lisu tone letters
    • Mark U+070F SYRIAC ABBREVIATION MARK as zero width
    • Mark U+A8FA DEVANAGARI CARET as zero-width
    • Mark more Prepended_Concatenation_Marks as non-advancing
    • Refactor unicode.py
    • Assign the same CJK width to canonically equivalent strings

    …and 1 more.

  6. 0.1.12 26 Apr 2024
    Commits, not release notes

    This project publishes no release notes. Between v0.1.11 and v0.1.12 there were 25 commits, 17 of them substantive:

    • Treat Default_Ignorable_Code_Points as zero-width
    • Treat all jungseong and jongseong jamo as 0-width
    • Don't treat Prepended_Concatenation_Marks as zero width
    • Give U+115F HANGUL CHOSEONG FILLER width 2
    • Add more info to README
    • Mark interlinear annotation chars and Egyptian hieroglyph format controls as non-zero width
    • doc: align no_std info with README
    • Drop redundant use-declarations
    • tests: drop redundant feature guards
    • build: mark no_std as legacy feature flag
    • Ensure that canonically equivalent strings have the same width
    • Refactor tests
    • unicode.py: Don't use UnicodeData.txt anymore
    • Document width rules
    • Cargo.toml: add categories
    • Cargo.toml: make license SPDX-compliant
    • Support emoji presentation sequences
  7. 0.1.11 19 Sep 2023
    Commits, not release notes

    This project publishes no release notes. Between v0.1.10 and v0.1.11 there were 8 commits, 6 of them substantive:

    • Use Iterator::sum() instead of fold()
    • Update to Unicode 15.1
    • Create rust.yml
    • Fixup script
    • Add ignore file
    • Publish 0.1.11 (Unicode 15.1)
  8. 0.1.10 13 Sep 2022
    Commits, not release notes

    This project publishes no release notes. Between v0.1.9 and v0.1.10 there were 8 commits, 4 of them substantive:

    • Switch from binary search to lookup tables
    • Add Wikipedia benchmarks & instructions
    • Use static tables
    • Update to Unicode 15
  9. 0.1.9 16 Sep 2021
    Commits, not release notes

    This project publishes no release notes. Between v0.1.8 and v0.1.9 there were 3 commits, 2 of them substantive:

    • Update to Unicode 14
    • Update to 0.1.9
  10. 0.1.8 29 Jun 2020

    Nothing published for this version

  11. 0.1.7 05 Dec 2019

    Nothing published for this version

  12. 0.1.6 19 Aug 2019

    Nothing published for this version

  13. 0.1.5 19 May 2018

    Nothing published for this version

  14. 0.1.4 23 Dec 2016

    Nothing published for this version

  15. 0.1.3 20 Aug 2015

    Nothing published for this version

  16. 0.1.2 09 Jul 2015

    Nothing published for this version

  17. 0.1.1 19 Apr 2015

    Nothing published for this version

  18. 0.1.0 16 Apr 2015

    Nothing published for this version

  19. 0.0.1 14 Apr 2015

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive