【问题标题】:C# console fontC# 控制台字体
【发布时间】:2011-04-27 15:59:56
【问题描述】:

我找不到控制台应用程序默认使用的字体?是否保证每个人都有该字体(运行此 .NET 应用程序时)?想要显示一些 unicode 字符并且需要确保它们存在于该字体中。 谢谢

【问题讨论】:

  • AFAIK 你不能改变/知道控制台的字体。它的编码由操作系统决定。

标签: c# unicode fonts console


【解决方案1】:

您可以通过从该键读取注册表值“0”来判断正在使用的字体:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont

【讨论】:

  • 这只是没有例外的语言环境的默认控制台字体。一些语言定义了其他值。例如,如果您安装了带有东亚国际化文件的 Windows 安装,您将看到值 932*MS ゴシック*MS Gothic。这意味着当系统代码页为 932(Windows shift-JIS 仿制)时,就像在日文系统上一样,字体将是 MS Gothic,而不是0 中列出的字体。当您使用chcp 更改代码页时,您甚至可以看到它切换字体。
  • 根据我的经验,此注册表项似乎会影响 Windows 控制台,但不会影响 .NET 对象 System.Console
【解决方案2】:

如果您想使用 Unicode 字符,我强烈建议您避免使用控制台。尝试让控制台正确显示 Unicode 存在许多问题。

控制台输出不直接支持Unicode。最好的选择通常是set the console's code page,这需要 P/Invoke。

话虽如此,GUI 以更好的方式解决了所有这些问题。如果您需要 Unicode 输出,我建议您使用简单的 GUI。

【讨论】:

  • 你可以投反对票 - 但等到你真正尝试将 unicode 写入控制台 - 这是非常有问题的......即使你为控制台指定了 TrueType 字体,实际上代码页也会倾向于搞乱 unicode 输出。
  • @Dervin:OP 正在尝试做一些不受直接支持的事情。
  • 我不这么认为,因为在 C# 中每个字符串都是 unicode 字符的字符串。
  • @Mojmi:是的。 C# 中的每个字符串都使用 Unicode 字符。但是,控制台使用的是 C# 之前的原生 API (msdn.microsoft.com/en-us/library/ms682087(VS.85).aspx),并且不直接支持 unicode 输出。
  • @Mojmi:这取决于字符,以及是否在当前选择的代码页中处理。一次只有 256 个字符“工作正常”。阅读我在问题中发布的链接,它将解释问题。
猜你喜欢
  • 2018-04-11
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 2014-09-05
  • 2011-03-14
  • 1970-01-01
相关资源
最近更新 更多