Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

unicode-width should retain a semi-stable width function #64

Open
Manishearth opened this issue Jun 20, 2024 · 6 comments
Open

unicode-width should retain a semi-stable width function #64

Manishearth opened this issue Jun 20, 2024 · 6 comments

Comments

@Manishearth
Copy link
Member

Manishearth commented Jun 20, 2024

As described in #55, 0.1.13 changed the predicted widths of a lot of characters to be more accurate for things like emoji.

From that issue, and from the breakage in rustfmt (rust-lang/rustfmt#6203), it feels useful to have an API that is explicitly stable, and documented as such. Probably one that did the original less-useful-but-"still works" thing of relying on East Asian Width properties only.

@Manishearth
Copy link
Member Author

@Jules-Bertholet how hard would it be for you to add a width_stable?

@Manishearth
Copy link
Member Author

I think the easy way to do this with the traits would be to add a UnicodeStableWidth trait. We can clean this up in a future breaking release.

It's actually unclear to me why we have UnicodeWidthStr and UnicodeWidthChar.

@Manishearth Manishearth changed the title unicode-width should retain unicode-width should retain a semi-stable width function Jun 20, 2024
@Jules-Bertholet
Copy link
Contributor

For perfect stability, we'd have to pin a Unicode version, as the underlying Unicode properties are not stable (even for assigned codepoints).

@Manishearth
Copy link
Member Author

I'm fine with it being just EAW and only subject to change with Unicode EAW changes, which change extremely rarely.

@Jules-Bertholet
Copy link
Contributor

We'd probably want EAW + Default_Ignorable_Code_Point + Grapheme_Extend + Hangul jungseong/jongseong (which is more or less what earlier versions of this crate did). It might be better to release it as a separate crate though?

@Manishearth
Copy link
Member Author

Yeah, sorry, I mean "what we did before", especially since rustfmt relies on this crate.

I think given where this crate is in the ecosystem I'd prefer for this option to be readily available.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants