2009-12-02 64 views
4

几年前,我创建了一个已成功部署的WinForms应用程序。下一个版本的应用程序必须支持中文和韩文字符。出于美学原因,我的客户希望使用Arial字体系列显示应用程序中的所有文本。在注册表中链接字体

但是,Arial不支持中文和韩文字符。在大多数平台上,Windows Uniscribe Font Fallback机制充分选择字体来显示东亚字符。但在英文Windows XP上,它选择的字体非常糟糕。

我一直在寻找解决这个问题与Font Linking。这将允许我指定在Arial无法显示字符时应使用哪种字体。这似乎是一个非常优雅的解决方案。

问题是,我链接到的文章说,通过注册表添加字体链接没有官方支持。此外,更改注册表中的字体链接将影响整个计算机,而不仅仅是我的应用程序。

有没有人有添加字体链接的经验?它有用吗?以后会发生什么情况?

+2

如果它尚未随操作系统提供,请从Ascender Corp.向Arial Unicode MS购买许可证您无法打败价格。 – 2009-12-02 20:13:43

+0

@nobugz - 我同意这将是最简单的解决方案,它目前是我的回退计划。但是,Arial Unicode MS不显示某些东亚字符以及区域特定字体。 – epotter 2009-12-02 21:06:10

+0

此外,另一个应用程序更改注册表中的字体链接将影响整个计算机,并因此影响您的应用程序。 – 2009-12-11 13:20:47

回答

3

链接文章中的“不支持”子句告诉你,你不能调用Microsoft支持并抱怨,因为你错误地使用了Regedit.exe并搞砸了机器。它并不是说不支持字体链接。

这样做不会对另一个程序产生负面影响。字体链接不能代替字形,只能替代缺少的字形。这样的程序以前不会正确呈现文本。完成后它会显示可读的文字。他们会给你买一顿非常美味的晚餐和一些跳舞的女孩。

1

你可以使用Arial Unicode MS字体吗?

这就是我用来在图表和PDF中显示中文字体的东西。

+0

我可以,但有几个原因我不愿意。主要原因是它需要许可证来重新分配。它包含在办公室,所以大多数但不是所有的用户都会拥有它。 – epotter 2009-12-02 20:49:17

0

所以,问题是,如果字符符合某些条件,则需要使用一种字体,如果不符合,则使用其他字体,对不对?

那么,为什么不写一些代码,当更新文本时,检查标准并正确设置字体?这可能是一件忙碌的工作,但如果它完成了,我敢打赌你可以将它封装在一个自定义控件中。

有时候,做这项工作比试图用一堆系统设置更聪明一些。诚然,这并不有趣,但不太可能导致问题。

+0

我曾经想过,但这是一个相当大的应用程序,它需要修改20多个自定义控件。我在这个问题背后的一部分动机是要看看字体链接是一种标准做法还是过于巧妙。 – epotter 2009-12-11 16:39:41