我正在 Python 3.12 中使用纯文本进行国际象棋挑战。我使用的 IDE 是 Visual Studio 2022。所有其他 unicode 字符(包括白色 pawn)都可以很好地呈现为它们的文本字符变体,但黑色 pawn 默认情况下呈现为表情符号。经过在线研究,我发现这是因为 Unicode 15 中的 black pawn unicode 字符是唯一具有表情符号变体的字符。如何转换为黑色典当文本字符?这是我的代码和输出(对于上下文,liststringify 是一个将列表转换为字符串的函数,黑色部分是白色,白色部分是黑色,因为 ide 使用黑色背景并使用白色文本):output 代码
我尝试的是使用用于查找实际 unicode 字符的 unicode 文本代码,因为 VS2022 不只是复制并粘贴实际的 unicode 字符。 我没想到会有表情符号,因为我不知道黑色典当表情符号。 我得到了黑色典当表情符号。
当可用字符存在歧义时显示的内容将取决于以下组合:(1) 您用来显示字符的软件(它可以像终端仿真程序一样多样化,有数十种变体,浏览器窗口、文本编辑器(如 Microsoft Word)和 (2) 您正在使用的字体(在该程序的设置或主题中配置)。
Unicode 但是确实有一种机制,可以与您想要显示的文本内联,以强制您想要显示的字符的表情符号或非表情符号变体。 问题是,即使您发送的 unicode 序列是明确的,很少有程序能够正确呈现该序列。
在这种情况下,您应该在黑色棋子字符(最好是所有其他棋子字符,以便面向未来)前面加上 U+FE0E (VARIATION SELECTOR-15) 字符 - 并且,如果一切都正确实现在您用来显示字符的程序中(同样,情况可能并非如此),应该使用其文本变体规范所有片段。
如果这不起作用,您可以尝试使用的程序的不同变体来查看输出,并在这些程序中配置不同的字体系列,直到找到使您能够按需要工作的变体。