<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 3327: Format alignment specifiers vs. text direction</title>
<meta property="og:title" content="Issue 3327: Format alignment specifiers vs. text direction">
<meta property="og:description" content="C++ library issue. Status: C++20">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue3327.html">
<meta property="og:type" content="website">
<meta property="og:image" content="http://cplusplus.github.io/LWG/images/cpp_logo.png">
<meta property="og:image:alt" content="C++ logo">
<style>
  p {text-align:justify}
  li {text-align:justify}
  pre code.backtick::before { content: "`" }
  pre code.backtick::after { content: "`" }
  blockquote.note
  {
    background-color:#E0E0E0;
    padding-left: 15px;
    padding-right: 15px;
    padding-top: 1px;
    padding-bottom: 1px;
  }
  ins {background-color:#A0FFA0}
  del {background-color:#FFA0A0}
  table.issues-index { border: 1px solid; border-collapse: collapse; }
  table.issues-index th { text-align: center; padding: 4px; border: 1px solid; }
  table.issues-index td { padding: 4px; border: 1px solid; }
  table.issues-index td:nth-child(1) { text-align: right; }
  table.issues-index td:nth-child(2) { text-align: left; }
  table.issues-index td:nth-child(3) { text-align: left; }
  table.issues-index td:nth-child(4) { text-align: left; }
  table.issues-index td:nth-child(5) { text-align: center; }
  table.issues-index td:nth-child(6) { text-align: center; }
  table.issues-index td:nth-child(7) { text-align: left; }
  table.issues-index td:nth-child(5) span.no-pr { color: red; }
  @media (prefers-color-scheme: dark) {
     html {
        color: #ddd;
        background-color: black;
     }
     ins {
        background-color: #225522
     }
     del {
        background-color: #662222
     }
     a {
        color: #6af
     }
     a:visited {
        color: #6af
     }
     blockquote.note
     {
        background-color: rgba(255, 255, 255, .10)
     }
  }
</style>
</head>
<body>
<hr>
<p><em>This page is a snapshot from the LWG issues list, see the <a href="lwg-active.html">Library Active Issues List</a> for more information and the meaning of <a href="lwg-active.html#C++20">C++20</a> status.</em></p>
<h3 id="3327"><a href="lwg-defects.html#3327">3327</a>. Format alignment specifiers vs. text direction</h3>
<p><b>Section:</b> 28.5.2.2 <a href="https://wg21.link/format.string.std">[format.string.std]</a> <b>Status:</b> <a href="lwg-active.html#C++20">C++20</a>
 <b>Submitter:</b> Great Britain <b>Opened:</b> 2019-11-07 <b>Last modified:</b> 2021-02-25</p>
<p><b>Priority: </b>0
</p>
<p><b>View other</b> <a href="lwg-index-open.html#format.string.std">active issues</a> in [format.string.std].</p>
<p><b>View all other</b> <a href="lwg-index.html#format.string.std">issues</a> in [format.string.std].</p>
<p><b>View all issues with</b> <a href="lwg-status.html#C++20">C++20</a> status.</p>
<p><b>Discussion:</b></p>
<p><b>Addresses <a href="https://github.com/cplusplus/nbballot/issues/222">GB 225</a></b></p>

<p>
<code>std::format()</code> alignment specifiers should be independent of text direction
The align specifiers for formatting standard integer and string types are expressed in
terms of "left" and "right". However, "left alignment" as currently defined in the 
<code>format()</code> specification might end up being right-aligned when the resulting 
string is displayed in a RTL or bidirectional locale. This ambiguity can be resolved 
by removing "left" and "right" and replacing with "start" and "end", without changing 
any existing implementation and without changing the intent of the feature.
<p/>
Proposed change:
</p>
<p>
In [tab:format.align]:
Forces the field to be <del>left-aligned within</del> <ins>aligned to the start of</ins>
the available space and Forces the field to be <del>right-aligned within</del> 
<ins>aligned to the end of</ins> the available space
</p>
<p>
<b>Jeff Garland:</b>
<p/>
<a href="http://wiki.edg.com/bin/view/Wg21belfast/LWGWednesdayIssuePrioritization">Wiki notes 
from Belfast Wed</a>:
</p>
<blockquote><p>
# GB225
<p/>
JG: SG16 approved this.
<p/>
JG: If you scroll back up, you'll see see it's very tiny. Two line change.
<p/>
JG: I'm willing to submit an LWG issue to suggest we make a wording change to take it off our plate.
<p/>
CC: Is this the one that changes left/right to beginning/end?
<p/>
Some people: yes
<p/>
MC: Any problem with Jeff's proposed direction and this proposed fix?
<p/>
MC: I hear none. 
</p></blockquote>

<p><i>[2019-11 Moved to Ready on Friday AM in Belfast]</i></p>



<p id="res-3327"><b>Proposed resolution:</b></p>
<p>This wording is relative to <a href="https://wg21.link/n4835">N4835</a>.</p>

<ol>
<li><p>Modify "Table 57 &mdash; Meaning of <i>align</i> options"
 [tab:format.align] as indicated:</p>

<blockquote>
<table border="1">
<caption>Table 57 &mdash; Meaning of <i>align</i> options  [tab:format.align]</caption>
<tr style="text-align:center">
<th>Option</th>
<th>Meaning</th>
</tr>
<tr>
<td><code>&lt;</code></td>
<td>Forces the field to be <del>left-aligned within</del><ins>aligned to the start of</ins> the 
available space. This is the default for non-arithmetic types, <code>charT</code>, and <code>bool</code>, 
unless an integer presentation type is specified.</td>
</tr>
<tr>
<td><code>&gt;</code></td>
<td>Forces the field to be <del>right-aligned within</del><ins>aligned to the end of</ins> the 
available space. This is the default for arithmetic types other than <code>charT</code> and <code>bool</code> 
or when an integer presentation type is specified.</td>
</tr>
<tr>
<td colspan="2" align="center">
<code>[&hellip;]</code>
</td>
</tr>
</table>

</blockquote>
</li>

</ol>





</body>
</html>
