.NET Windows Forms和选择Vista字体

3
我正在构建一个使用Windows窗体的.NET应用程序。我正在思考以下问题:如果我在应用程序中指定了仅在Vista和Office 07中可用的字体,那么在没有这些字体的机器上运行应用程序会发生什么?
我想系统将无法回退到其族系的字体,因为它们是使用字符串(例如“Segoe UI”)在内部初始化的。
最佳实践是什么,这样我仍然可以通过表单设计器指定字体而不必担心此类问题破坏?
6个回答

2

可以检查操作系统并在XP上使用Tahoma,在Vista上使用Segoe UI,或者在选项对话框中让用户选择。在XP上安装Segoe UI似乎被大多数人认为是不可行的。


2
我认为是System.Drawing.SystemFonts.MessageBoxFont提供了Segoe UI、Tahoma和MS Sans Serif字体,具体取决于操作系统。只要你的布局足够流动——WPF很擅长这方面,但在Windows Forms中要困难得多——那么它就会表现得很好。无论如何,值得使用该设置,然后在虚拟机中测试是否有效。
另外,不幸的是,设计师不支持像那样设置字体,有时它会将东西重置为硬编码的Segoe UI(如果您正在使用Vista)。
这种情况实际上是我开始转向WPF的原因之一:)。

1

我同意Brian Cline的观点,如果可以包含它们,那将是最好的。

一个很好的方法是在您的系统上启动虚拟机并在其中安装程序,以查看干净的操作系统会发生什么。Microsoft有一个名为“Microsoft Virtual PC”的免费虚拟机程序。使用它,您可以在虚拟机中加载任何操作系统,并测试您的应用程序在“干净”安装环境中的反应。它将像普通计算机一样运行,并且只会有您专门安装的程序。我将其用于我的winforms应用程序,效果非常好!

如果这有帮助,请告诉我! JFV


@JFV 我知道解决方案,我有很多虚拟机,但没有XP的。我想在这里问一下是否有更好的做法。 - KCorax

1

要么听Jasper的建议,要么听我的:不要这样做。除非你正在为某种原因重新设计整个应用程序,否则只需使用系统上已定义的字体即可。如果除了字体之外,你看起来像每个其他战舰灰(或轻微主题)的应用程序,对用户来说会有点奇怪。

无论如何,包括字体都是EULA违规行为。用户可以下载Office 2007兼容性包并获得大多数字体,但一个值得注意的例外将是(我相信)Segoe UI:这个字体是仅适用于Vista的字体。

如果你确实想要与众不同,那么请听Jasper的建议并检测XP与Vista。如果你在XP上,请使用Tahoma或Trebuchet MS。如果你在Vista上,请放心使用酷炫的新字体。


0

首先在 Office 和 Vista 中检查 EULA,确保字体不是受保护的,但您可以将这些字体包含在安装程序包中并安装它们。


根据最终用户许可协议,这是不可能的。 - KCorax

0
除非您的安装程序具有重新分发字体的能力,否则您可能需要首先检查这些字体是否存在。如果它们不存在,则让您的应用程序从静态备选字体列表中选择替代字体。

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