Skip to content

Use display width in precision #4272

New issue

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

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

Already on GitHub? Sign in to your account

Closed
vitaut opened this issue Dec 25, 2024 · 4 comments · Fixed by #4443
Closed

Use display width in precision #4272

vitaut opened this issue Dec 25, 2024 · 4 comments · Fixed by #4443

Comments

@vitaut
Copy link
Contributor

vitaut commented Dec 25, 2024

Use display width in precision. For example:

fmt::print("{:.5}", "🐱🐱🐱");

should print

🐱🐱
@jolz
Copy link

jolz commented Feb 13, 2025

fmt::print("{:.2}", "🐱🐱🐱");

does print

🐱🐱

an this matches printf-specification (but with unicode support - yeah) https://en.cppreference.com/w/cpp/io/c/fprintf ("Precision specifies the maximum number of bytes to be written.")

std::printf("%.2s", "abcde"); // prints "ab"

why change?

@vitaut
Copy link
Contributor Author

vitaut commented Feb 13, 2025

🐱 has a width of 2:
Image

@nikhilreddydev
Copy link
Contributor

Hello @vitaut

I have been looking into this issue, could you please help me in resolving below query.

Also, I think python's format implementation does not consider display width.

@vitaut
Copy link
Contributor Author

vitaut commented May 3, 2025

We already have display width estimation:

FMT_CONSTEXPR inline auto compute_width(string_view s) -> size_t {

The only thing that is missing is applying it to precision. Python counts code points which doesn't work great with terminals.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants