2009-12-02 48 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