Is emoji +VC15, +VC16, without VC one or two columns with monospace font?🏝️
Eli Zaretskii
eliz at gnu.org
Sat Apr 26 03:55:41 CDT 2025
> Date: Sat, 26 Apr 2025 09:49:37 +0200
> Cc: unicode at corp.unicode.org <unicode at corp.unicode.org>,
> b at bapha.be <b at bapha.be>
> From: "piotrunio-2004 at wp.pl via Unicode" <unicode at corp.unicode.org>
>
> You seem to assume that the layout of characters in memory is the same
> as their layout on display. This was true for MS-DOS terminals, but
> is no longer true on modern Windows versions, where WriteConsoleOutput
> and similar APIs do not write directly to the video memory. Instead,
> they write to some intermediate memory structure, which is thereafter
> used to draw the corresponding font glyphs on display. I'm quite sure
> that the actual drawing on the glass is performed using shaping
> engines such as DirectWrite, which consult the font glyph metrics to
> determine the width of glyphs on display. The actual width of
> characters as shown on display is therefore not directly determined by
> the amount of bytes the characters take in their UTF-16
> representation.
>
> The legacy Win32 console does not use DirectWrite
Maybe not (I don't really know), but it still uses fonts, and thus the
font it uses determines the width of the glyphs on display.
(Btw, is the legacy console even capable of displaying Emoji?)
> so what you're describing seems to be Windows
> Terminal, which as I said is a unix-like terminal, it's not a native Win32 console at all. It can emulate a Win32
> console, but it doesn't run it natively. This only further shows that emoji +VC15, +VC16 in terminals only
> exists in unix-like context.
The Windows Terminal is what is used by default on Windows 11
nowadays. It is evidently the direction in which MS want the users to
go. So I don't see why it would be useful to focus on obsolete
software, especially in this forum, where we are supposed to discuss
general Unicode-related problems and not Microsoft-specific programs.
Once again, from the Unicode POV, the width of an Emoji character
followed by VS16 or VS15 is not different from the width of the Emoji
itself, and the width of each Emoji character is defined by
EastAsianWidth.txt file that is part of The Unicode Character Database
(UCD). The variation Selectors are non-spacing characters, in that
they combine with the preceding characters on display without
affecting their width; they only affect their visual appearance, like
colors and shades.
More information about the Unicode
mailing list