我的版本是 5.1,但 Lucida Console 字体无法显示大多数(如果不是全部)Unicode 字符的完整字形。PowerShell 不是利用了它所运行的 Windows 主机中安装的字体吗?
例如,数学中U+2227
=“∧”= 逻辑。它在中使用时显示,但在使用完全相同字体的 Powershell 控制台中不显示。and
Lucida Console
gVim
Windows 10
是否有一个开关可以关闭已安装字体中的字形的显示?
答案1
首先你应该知道 PowerShell对字体渲染一无所知。 它是壳(如 cmd 或 bash)而不是终端。它只是将字符流传递给终端,并且必须连接到终端才能工作,因此在这种情况下,除了切换到更好的终端外,您什么也做不了。Windows 中的默认终端是 conhost.exe,它非常古老,甚至不能正确支持 Unicode。如果您注意到,您会发现如果您打开 cmd 或 powershell,界面和设置对话框实际上是相同的(调色板略有不同),因为如果不是从另一个终端调用,则两者都在 conhost 上运行。一些选择 终端作为官方Windows 终端、putty、mobaxterm、ConEmu、cmder……
接下来是字形替换的问题。Windows 确实字体替换、字体链接或字体回退在大多数情况下,许多应用程序还进一步定制了该过程,以便字体渲染工作顺利进行。这让您认为该字符在 Lucida Console 中可用,但实际上并非如此。该字形只是被另一种字体替换。您可以使用字符映射检查每种字体中可用的字符。Lucida Console 中最接近的字符是 U+221F∟
和 U+2229∩
不幸的是在终端上等宽字体替换要困难得多,因为另一种字体的字符宽度不同。因此
... 控制台对于“不支持的字符”的替换字形非常挑剔。我找不到如何使这样的字形与 U+0000 和/或 U+0001 的字形共存。(如果控制台在字体中找到后两个字形之一,它会忽略替换字形。)
真正的解决方案是使用具有良好字体替换支持的更好的终端。尝试使用 Windows Terminal,你很快就会意识到 conhost 有多糟糕
答案2
这是窗口工作和显示方式的限制。字体Lucidia Console
中没有所有这些 unicode 字符,因此不会显示它们。您无法在窗口中间替换其他字体来显示特定字形,因为这是全有或全无的交易。
可以通过设置窗口使用不同的字体来解决此问题。