如何修复PowerShell 7字体显示不正确 | oh-my-posh

6

我已经安装了Windows终端,并使用"oh my posh"进行设置,一切都按预期工作。但是每当我启动PowerShell 7(没有终端),字体就会混乱,如下图所示:

enter image description here

我已经尝试更改字体为终端的 .json 文件中使用的相同字体,但仍然有一些部分无法正确渲染,我不能在 VSCode 中这样使用它

enter image description here

1个回答

5
问题是因为Windows控制台不完全支持UTF-8

Windows控制台是在Windows早期的年代创建的,甚至在Unicode本身出现之前!当时,决定将每个文本字符表示为固定长度的16位值(UCS-2)。因此,控制台的文本缓冲区包含每个网格单元的2字节wchar_t值,大小为x列乘以y行。 ... 例如,一个问题是,由于UCS-2是一种固定宽度的16位编码,它无法表示所有Unicode代码点

这意味着在Windows控制台中您可以“部分”支持Unicode字符(即只要字符可以在UCS-2中表示),但不支持所有潜在的(32位)Unicode区域。
当你看到方框时,这意味着使用的字符正在使用UCS-2范围之外的区域。你也可以通过获得2个方框(即2个16位值)来确认这一点。这就是为什么你不能在Windows Console中使用快乐表情的原因(这让我很难过☹️)。
为了使其在所有位置上都起作用,您将不得不修改您的oh-my-posh主题以使用可以用UCS-2字符表示的不同字符。
对于Oh My Posh的版本2,要进行字体更改,您必须编辑$ThemeSettings变量。请按照GitHub上配置主题设置的说明操作。例如:
$ThemeSettings.GitSymbols.BranchSymbol = [char]::ConvertFromUtf32(0x2514) 

对于 Oh My Posh 的 3+ 版本,您需要编辑 JSON 配置 文件以进行更改,例如:

...
{
    "type": "git",
    "style": "powerline",
    "powerline_symbol": "\u2514",
....

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接