Title
Handling of fill character width is underspecified in std::format
Status
new
Section
[format.string.std]
Submitter
Victor Zverovich

Created on 2021-11-13.00:00:00 last changed 1 week ago

Messages

Date: 2021-11-15.00:00:00

[ 2021-11-14; Daniel comments ]

Resolving this issue should be harmonized with resolving LWG 3576.

Date: 2021-11-13.00:00:00

[format.string.std] doesn't specify if implementations should consider the estimated width of the fill character when substituting it into the formatted results.

For example:

auto s = std::format("{:🤡>10}", 42);

"🤡" (U+1F921) is a single code point but its estimated display width is two.

There are at least three possible resolutions:

  1. s == "🤡🤡🤡🤡42": use the estimated display width, correctly displayed on compatible terminals.

  2. s == "🤡🤡🤡🤡🤡🤡🤡🤡42": assume the display width of 1, incorrectly displayed.

  3. Require the fill character to have the estimated width of 1.

History
Date User Action Args
2021-11-14 12:59:30adminsetmessages: + msg12221
2021-11-13 00:00:00admincreate