<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><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:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Aptos;}
@font-face
        {font-family:"Segoe UI Emoji";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#0A2F41;}
.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><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span style='font-family:"Calibri",sans-serif;color:#0A2F41'>Stupid question time: What is a “Unix-like terminal”? Do you mean one that honors curses-type escape codes? Is that really what people call those? It’s not like escapes or UTF-8 are exclusive to that world.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif;color:#0A2F41'><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='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> Unicode <unicode-bounces@corp.unicode.org> <b>On Behalf Of </b>piotrunio-2004@wp.pl via Unicode<br><b>Sent:</b> Friday, April 25, 2025 5:21 PM<br><b>To:</b> Дилян Палаузов via Unicode <unicode@corp.unicode.org>; Дилян Палаузов <b@bapha.be><br><b>Subject:</b> Odp: Is emoji +VC15, +VC16, without VC one or two columns with monospace font?</span><span style='font-size:11.0pt;font-family:"Segoe UI Emoji",sans-serif'>🏝️</span><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'><o:p></o:p></span></p></div><p class=MsoNormal><o:p> </o:p></p><div id=gwpae835287><div id=gwpae835287h><div><div><p class=MsoNormal>In non-Unix-like terminals, the width is always linearly proportional to the amount of bytes that the text takes in memory, because that is how a random access array works. Each character cell takes a constant amount of bytes, for example in VGA-compatible text mode there are 16 bits per character cell (8 bits for attributes and 8 bits for character code), and in Win32 console there are 32 bits per character cell (16 bits for attributes and 16 bits for character code). Whether a character is fullwidth may be determined by the text encoding (some legacy encodings such as Shift JIS will store fullwidth characters in the bytes of two consecutive character cells) or by attributes.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Unix-like terminals on the other hand are completely detached from the concept of random access semigraphical text, and do not have any relation between number of bytes and width, due to the use of UTF-8 and ANSI escape codes. This places them above the complexity of plain text, oftentimes reaching the complexity of rich text (unlike non-Unix-like terminals where their complexity is well below plain text), and therefore any definition of widths or heights is completely arbitrary because it's not backed by any random-access legacy compatibility consideration. Some Unix-like developers are making proportional fonts and calling them monospaced, so this really isn't something that can be reliably standardized at all.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p>Dnia 25 kwietnia 2025 19:10 Дилян Палаузов via Unicode <<a href="mailto:unicode@corp.unicode.org">unicode@corp.unicode.org</a>> napisał(a):<o:p></o:p></p><blockquote style='border:none;border-left:solid #999999 1.5pt;padding:0in 0in 0in 6.0pt;margin-left:0in;margin-right:0in'><div id="gwpae835287_gwpc71d8309"><div><p class=MsoNormal>Hello,<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><a href="https://www.unicode.org/errata/" target="_blank">https://www.unicode.org/errata/</a> contains a hyperlink under “Reporting Errors” behind “contact form” to <a href="https://corp.unicode.org/reporting/error.html" target="_blank">https://corp.unicode.org/reporting/error.html</a> . The latter hyperlink does not exist.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Terminals use monospace fonts.  How wide should be an emoji there followed or not by Unicode Variation Selector 16?<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>VTE is one terminal backend and for Desert island + Unicode variation selector 16 at <a href="https://gitlab.gnome.org/GNOME/vte/-/issues/2878" target="_blank">https://gitlab.gnome.org/GNOME/vte/-/issues/2878</a> is stated that some intrinsic properties of a Unicode codepoint define the number of cells, and the glyph has to find its way into the designated area. Never the other way around, it's never the glyph dictating how many cells it will take up.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>tmux is a terminal tool that runs in many different terminals.  For the same question Desert island + VC16 at <a href="https://github.com/tmux/tmux/issues/4475" target="_blank">https://github.com/tmux/tmux/issues/4475</a> is stated that “Current practice is for emoji to have a square aspect ratio, deriving from their origin in Japanese. For interoperability, it is recommended that this practice be continued with current and future emoji.” and square means width 2.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>As can be read on the above links there are very different opinions from developers of terminal emulators if Desert island + Unicode variation selector 16 should allocate one or two columns in monospace fonts.  Likewise uncertainties with VC15 or without variation selectors.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>* Be more explicit in the Unicode standards for monospace rendering of emojis without Variation Selector, emoji + VC15, and emoji + VC16, if these allocate one or two columns.  There is apparent a need to specify this in a way that is accepted by many developers of terminal emulators.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I invite you also to participate in the discussions on the both links I mentioned above.  There are many arguments in all directions.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Sample with Desert Island + VC16 + space : <a href="https://cal.aegee.org/s/0/e947872a-224b-4c84-8d25-90a541a9ec6-318.ics_en.html" target="_blank">https://cal.aegee.org/s/0/e947872a-224b-4c84-8d25-90a541a9ec6-318.ics_en.html</a> .<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Kind regards<o:p></o:p></p></div><div><p class=MsoNormal>Дилян<o:p></o:p></p></div></div></blockquote></div><div><p class=MsoNormal><o:p> </o:p></p></div></div></div></div><div><p class=MsoNormal><o:p> </o:p></p></div></div></body></html>