<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">If implementors aren't going to be
      willing to change these tables once we ship, then I think we have
      a fairly serious issue.</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Some have adamantly stated that these
      widths are estimates only and should not be counted on to remain
      stable.  Code that is sensitive to the formatted size of the
      output should be calling std::formatted_size and allocating
      appropriately.  I take it your concern is regarding code that
      calls std::format_to with an assumption that the provided output
      buffer is large enough?  (or, code that calls std::format and
      assumes the size of the resulting std::string).<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Tom.<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">On 11/12/19 8:58 PM, Billy O'Neal (VC
      LIBS) wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:MW2PR2101MB10987F0D97DC3D5E43D86C3BCB770@MW2PR2101MB1098.namprd21.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:"Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";
        color:black;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
      <div class="WordSection1">
        <p class="MsoNormal">My only point was that the specified
          behavior gives grapheme clusters a width of 1 or 2, but there
          exist characters like U+FDFD that are wider than 2. (And many
          that have a width of 0) I would be very nervous about changing
          the constants used after std::format ships because that could
          introduce unexpected buffer overruns or underruns in user
          programs. This is the kind of thing that becomes contractual
          very quickly (which is one of the reasons I was weakly against
          trying to open this can of worms).</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Billy3</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div
          style="mso-element:para-border-div;border:none;border-top:solid
          #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
          <p class="MsoNormal" style="border:none;padding:0in"><b>From:
            </b><a href="mailto:tom@honermann.net"
              moz-do-not-send="true">Tom Honermann</a><br>
            <b>Sent: </b>Tuesday, November 12, 2019 12:53 PM<br>
            <b>To: </b><a href="mailto:lib-ext@lists.isocpp.org"
              moz-do-not-send="true">lib-ext@lists.isocpp.org</a>;
            <a href="mailto:corentin.jabot@gmail.com"
              moz-do-not-send="true">Corentin</a><br>
            <b>Cc: </b><a href="mailto:bion@microsoft.com"
              moz-do-not-send="true">Billy O'Neal (VC LIBS)</a>; <a
              href="mailto:lib@lists.isocpp.org" moz-do-not-send="true">
              lib@lists.isocpp.org</a>; <a
              href="mailto:unicode@open-std.org" moz-do-not-send="true">SG16</a>;
            <a href="mailto:victor.zverovich@gmail.com"
              moz-do-not-send="true">
              Victor Zverovich</a><br>
            <b>Subject: </b>Re: [isocpp-lib-ext] The "Let's Stop
            Ascribing Meaning to Code Points" blog post</p>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><span style="color:black">On 11/12/19 6:11
            PM, Billy O'Neal (VC LIBS) via Lib-Ext wrote:<o:p></o:p></span></p>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="MsoNormal"><span style="color:black">It came up in
              the context of that width thing in format and I was asking
              if I had permission to make wider-than-2 characters format
              properly, and the forwarded text doesn’t seem to allow
              that (which is OK, I just wanted to understand at the
              time); I was thinking of U+FDFD (﷽).<o:p></o:p></span></p>
        </blockquote>
        <p>Can you elaborate?  My understanding of the forwarded wording
          is that the assumed encoding for the input text is
          implementation defined (though not locale sensitive) and that
          implementors are encouraged to use the Unicode code point
          ranges indicated in the wording, but are not required to (that
          is my interpretation of the use of the word "should" in the
          proposed wording).</p>
        <p>It does look like the provided code point ranges don't handle
          U+FDFD correctly.</p>
        <p>I don't know how much confidence should be placed on the
          listed code point ranges.  But I think it is important that we
          consider them amenable to change.  I suspect that U+FDFD is
          not the last code point we'll find that is not correctly
          handled.</p>
        <p>Tom.</p>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Billy3<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <div style="border:none;border-top:solid #E1E1E1
            1.0pt;padding:3.0pt 0in 0in 0in">
            <p class="MsoNormal"><b><span style="color:black">From: </span></b><span
                style="color:black"><a
                  href="mailto:corentin.jabot@gmail.com"
                  moz-do-not-send="true">Corentin</a><br>
                <b>Sent: </b>Tuesday, November 12, 2019 8:42 AM<br>
                <b>To: </b><a href="mailto:lib-ext@lists.isocpp.org"
                  moz-do-not-send="true">C++ Library Evolution Working
                  Group</a><br>
                <b>Cc: </b><a href="mailto:lib@lists.isocpp.org"
                  moz-do-not-send="true">lib@lists.isocpp.org</a>; <a
                  href="mailto:bion@microsoft.com"
                  moz-do-not-send="true">
                  Billy O'Neal (VC LIBS)</a>; <a
                  href="mailto:unicode@open-std.org"
                  moz-do-not-send="true">SG16</a><br>
                <b>Subject: </b>Re: [isocpp-lib-ext] The "Let's Stop
                Ascribing Meaning to Code Points" blog post<o:p></o:p></span></p>
          </div>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <div>
            <div>
              <p class="MsoNormal"><span style="color:black">On Tue, 12
                  Nov 2019 at 16:58, Billy O'Neal (VC LIBS) via Lib-Ext
                  &lt;<a href="mailto:lib-ext@lists.isocpp.org"
                    moz-do-not-send="true">lib-ext@lists.isocpp.org</a>&gt;
                  wrote:<o:p></o:p></span></p>
            </div>
            <blockquote style="border:none;border-left:solid #CCCCCC
              1.0pt;padding:0in 0in 0in
6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
              <div>
                <div>
                  <p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:40.8pt"><span
                      style="color:black">During review of some Unicode
                      stuff in LWG we had a mini discussion for some
                      folks about grapheme clusters and I mentioned
                      everyone who touches this stuff might understand
                      the complexities better if they read this:<o:p></o:p></span></p>
                  <p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:40.8pt"><span
                      style="color:black"> <o:p></o:p></span></p>
                  <p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:40.8pt"><span
                      style="color:black"><a
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmanishearth.github.io%2Fblog%2F2017%2F01%2F14%2Fstop-ascribing-meaning-to-unicode-code-points%2F&amp;data=02%7C01%7Cbion%40microsoft.com%7Caf98b04ab27042b257db08d767b26149%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637091888153726447&amp;sdata=McYDWKyevonhNT732yikSFqDuAlbXKLBdGw5%2BBdgVJk%3D&amp;reserved=0"
                        target="_blank" moz-do-not-send="true">https://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/</a><o:p></o:p></span></p>
                </div>
              </div>
            </blockquote>
            <div>
              <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="color:black">+1<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="color:black">FYI SG-16
                  is aware of that blog post and i think there is a
                  pretty strong agreement with it.<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="color:black">Codepoints
                  have some use (notably the Unicode Character Database
                  is really the Unicode Codepoint Database, and most
                  Unicode algorithms works on codepoints), but any kind
                  of user facing UX should deal with EGCS.<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="color:black">It is not
                  always what applications choose to do for a variety of
                  reasons. Notably Twitter character counts deals in
                  codepoints, web browsers search function use
                  codepoints as to ignore diacritics, and comparisons
                  can be done on (normalized)  codepoint sequences.<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="color:black">There is
                  also not always a 1-1 mapping between what people
                  understand as "character", grapheme clusters and
                  glyphes.<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
            </div>
            <blockquote style="border:none;border-left:solid #CCCCCC
              1.0pt;padding:0in 0in 0in
6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
              <div>
                <div>
                  <p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:40.8pt"><span
                      style="color:black"> <o:p></o:p></span></p>
                  <p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:40.8pt"><span
                      style="color:black">Billy3<o:p></o:p></span></p>
                </div>
              </div>
            </blockquote>
          </div>
          <p class="MsoNormal" style="margin-left:40.8pt"><span
              style="color:black">_______________________________________________<br>
              Lib-Ext mailing list<br>
              <a href="mailto:Lib-Ext@lists.isocpp.org" target="_blank"
                moz-do-not-send="true">Lib-Ext@lists.isocpp.org</a><br>
              Subscription: <a
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.isocpp.org%2Fmailman%2Flistinfo.cgi%2Flib-ext&amp;data=02%7C01%7Cbion%40microsoft.com%7Caf98b04ab27042b257db08d767b26149%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637091888153736437&amp;sdata=%2FCxf5Wy1XyiBIBTUa9Bkv8JDkcY4KoEApujBgPDDJ2c%3D&amp;reserved=0"
                target="_blank" moz-do-not-send="true">
                https://lists.isocpp.org/mailman/listinfo.cgi/lib-ext</a><br>
              Link to this post: <a
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.isocpp.org%2Flib-ext%2F2019%2F11%2F13606.php&amp;data=02%7C01%7Cbion%40microsoft.com%7Caf98b04ab27042b257db08d767b26149%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637091888153746432&amp;sdata=XUFzgnDpGE6aZkvLCxc62Ppj1kVDEMP7R0TaOFXK0w8%3D&amp;reserved=0"
                target="_blank" moz-do-not-send="true">
                http://lists.isocpp.org/lib-ext/2019/11/13606.php</a><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"><br>
              <br>
              <o:p></o:p></span></p>
          <pre>_______________________________________________</pre>
          <pre>Lib-Ext mailing list</pre>
          <pre><a href="mailto:Lib-Ext@lists.isocpp.org" moz-do-not-send="true">Lib-Ext@lists.isocpp.org</a></pre>
          <pre>Subscription: <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.isocpp.org%2Fmailman%2Flistinfo.cgi%2Flib-ext&amp;data=02%7C01%7Cbion%40microsoft.com%7Caf98b04ab27042b257db08d767b26149%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637091888153746432&amp;sdata=%2BEoD3p3%2FtNQBdLJGEW%2BV9l0c3SQeF5lnjkimezW14Vg%3D&amp;reserved=0" moz-do-not-send="true">https://lists.isocpp.org/mailman/listinfo.cgi/lib-ext</a></pre>
          <pre>Link to this post: <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.isocpp.org%2Flib-ext%2F2019%2F11%2F13609.php&amp;data=02%7C01%7Cbion%40microsoft.com%7Caf98b04ab27042b257db08d767b26149%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637091888153756427&amp;sdata=MGtOpNxPCBZVy6L%2BCUw0UBmsv%2BBAeGVu49b01zQkpNU%3D&amp;reserved=0" moz-do-not-send="true">http://lists.isocpp.org/lib-ext/2019/11/13609.php</a></pre>
        </blockquote>
        <p><o:p> </o:p></p>
        <p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
      </div>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>