【发布时间】:2021-05-20 03:54:09
【问题描述】:
我已经安装了 Windows 终端,使用“哦,我的豪华”进行设置,一切都按预期工作。 虽然每当我启动 PowerShell 7(没有终端)时,字体都很乱,如下图所示
我已经尝试将字体更改为我在终端的 .json 中使用的字体,但仍有一些部分无法正确呈现,我无法在 VSCode 中以这种方式使用它
【问题讨论】:
标签: powershell terminal
我已经安装了 Windows 终端,使用“哦,我的豪华”进行设置,一切都按预期工作。 虽然每当我启动 PowerShell 7(没有终端)时,字体都很乱,如下图所示
我已经尝试将字体更改为我在终端的 .json 中使用的字体,但仍有一些部分无法正确呈现,我无法在 VSCode 中以这种方式使用它
【问题讨论】:
标签: powershell terminal
问题是因为 Windows 控制台doesn't fully support UTF-8:
Windows 控制台早在 Windows 早期就已创建, 早在 Unicode 本身存在之前!当时,决定 将每个文本字符表示为一个固定长度的 16 位值 (UCS-2)。 因此,控制台的文本缓冲区包含每个 2 字节 wchar_t 值 网格单元格,x 列 x y 行大小。 ... 例如,一个问题是因为 UCS-2 是一个固定宽度的 16位编码,为unable to represent all Unicode codepoints。
这意味着您在 Windows 控制台中“部分”支持 Unicode 字符(即,只要该字符可以在 UCS-2 中表示),但不支持所有潜在的(32 位)Unicode 区域。
当您看到方框时,这意味着正在使用的字符正在使用 UCS-2 范围之外的区域。您还告诉这一点,因为您得到 2 个框(即 2 x 16 位值)。这就是为什么你不能在 Windows 控制台中拥有快乐的面孔?(这让我很难过 ☹️)。
为了使其在所有位置都能正常工作,您必须修改 oh-my-posh 主题以使用可以用 UCS-2 字符表示的不同字符。
对于 Oh My Posh 的 Version 2,要更改字体,您必须编辑 $ThemeSettings 变量。按照configuring Theme Settings 上的 GitHub 上的说明进行操作。例如:
$ThemeSettings.GitSymbols.BranchSymbol = [char]::ConvertFromUtf32(0x2514)
对于 Oh My Posh 的版本 3+,您必须编辑 JSON configuration 文件以进行更改,例如:
...
{
"type": "git",
"style": "powerline",
"powerline_symbol": "\u2514",
....
【讨论】: