台灣的文檔有些字無法改字體怎麼辦?

問題文檔:http://pan.baidu.com/s/1jI4xTNg

另外:複製到記事本里之後,保存時提示含有Unicode字元,保存為ANSI編碼之後該字元會丟失。

使用Word打開的時候,字體是完全顯示的,顯示為PMingLiU。我想改成方正蘭亭黑Pro,但是有些字無法被改過來:

改成使用方正蘭亭黑GBK字體也不行:


在Unicode中,有一個叫 CJK Compatibility Ideographs (CJK兼容表意文字,本文簡稱?兼容區」)的區域。這一區域收的字實際上普通區(CJK Unified Ideographs,CJK統一表意文字,本文簡稱?普通區」)大多數都有,但因為各國自己編碼標準中存在部分異體字、多音字分開收錄的情況,Unicode為了與其雙向映射,弄出了這麼一個區,導致了同字異碼的現狀。

比如韓文中「女」由於頭音法則,存在nyeo和yeo兩種讀音,韓國獨自的編碼收了兩個「女」字。在映射至Unicode時,由於普通區只有一個「女」字,就把標準讀音nyeo的「女」字與其映射,丟掉頭音的yeo「女」,則放進兼容區。

字形完全一樣的兩個「女」字,實際上是不同的編碼。

簡繁日韓的漢字字體,都可以顯示普通區的「女」字。但兼容區的「女」字,韓國以外的字體沒有收錄的必要,因此有的字體收了,有的沒收。沒收的情況,就會fallback或者顯示不出來。

韓國之所以將多音字每個音弄一個編碼,應該是為了可以在漢字和Hangul之間雙向轉換。

兼容區也有一部分來自與日本獨自編碼的映射,一部分是舊字形導致,一部分可能是當時Unicode未收錄的國字。

比如,日本獨自的編碼中可能「神」和「神」是分開收錄的,到了Unicode中,新舊字形的「神」只有一個位置,所以將舊字形的「神」放進了兼容區。

神(U+795E,普通區)

神(U+FA19,兼容區)

同樣,兼容區的字元因為不是所有簡繁日韓字體都收錄,所以沒有收錄的字體,會fallback或者顯示不了。

雖然台灣CNS11643標準也有因新舊字形問題讓Unicode重新收錄,但這些字收錄在BMP外的CJK兼容表意文字擴展區,不在本答案討論範圍。非擴展的兼容區因與BIG5映射產生的同字形多編碼的字只有兩個不常用的字,不影響題主的文檔。

CJK Compatibility Ideographs 位於U+F900至U+FAD9,因韓國問題導致的同形異碼字位於U+F900至U+FA0B。題主出現的那些字都是這個範圍的,覆蓋這個區域的字體可以顯示,反之則會fallback或者顯示不了。

思源明朝OK

游明朝NG

理論上台灣的文檔沒必要且不應該使用兼容區的那幾個字,題主文檔應屬於錄入時誤使用兼容區的情況。

想更換字體顯示兼容區的字,可以使用BabelPad的字體分析功能,選擇「列出包括這個編碼區的字形」,並選擇CJK Compatibility Ideographs區,即可看到你安裝的字體裡哪些可以較完整覆蓋兼容區,在Word裡選擇使用即可省去一個個嘗試的麻煩。

除思源黑體、思源宋體可以顯示以外,Windows帶字體中微軟正黑(台)、細明體(台)、標楷體(台)、Meiryo(日)、游Gothic(日)、Gulim(韓)、Dotum(韓)、Malgun(韓)可以覆蓋這些韓國多音字。但需要注意日韓字體在CJK基本區並不完全覆蓋繁體中文需要的漢字,會在普通區缺字。

因為中國大陸產的字體很多都不會覆蓋這些因為日韓編碼映射問題產生的字,且繼續使用這些本來就是錯誤錄入的字元進行編輯沒有什麼正面意義。如果要編輯它們重新保存或分發的話,建議選擇一個可以fallback成明顯風格不同的字體,然後挑出這些字,全文替換為普通區的字,直至消滅所有兼容區的誤用字,再使用你想使用的其他中國產的字體。


瀉藥。

首先說一下這個東西的問題在哪,下載觀察後得知你這個文檔中的字體均來自標準的台灣字形字體。所以你需要使用一款足夠支持台灣地區顯示的字體,且必須為Unicode編碼。

然後糾正一下你使用的一個誤區,如下圖這個就是你文檔中使用蘭亭黑pro(蘭亭黑pro是方正出的最良心的蘭亭黑版本,除超細黑之外所有的字重家族化不說還是GB18030-2000字符集的)不會顯示的字:

(圖一是word中的顯示,第一個【羅】字蘭亭黑pro顯示不了,圖二是adobe illustrator顯示的兩個不同的字,字形完全一致)

雖然理論上講這是同一個字,但是在Unicode中卻並不是同一個碼位,所以這不是說蘭亭黑pro中沒有這個字而不足以顯示繁體(具體可查詢一下GBK和GB18030包含字符集所包含的字,並不會缺少例如【靈】字和【羅】字),與而是蘭亭黑pro中的【羅】字指向了【羅】,這個在設計類軟體中當你打繁體的時候顯示的是【羅】,複製【羅】字在illustrator中顯示的仍然是【羅】,因為大陸標準中的繁體字就是以【羅】這個字形為準。

然而word支持Unicode編碼卻不支持地區轉換,所以造成了這個問題。

反過來,在Mingliu中輸入【羅】字,它顯示出的字形是【羅】,這也是因地區而自動變換的字形。在word中仍然是讀取的Unicode碼,也就是在word中會被認為是兩個字。

所以這與繁簡無關,是地區字形差異且兩個字形使用了不同的Unicode碼位造成的。

最後,pdf文檔中屬性里有所有的字體,建議安裝pdf中提示的字體以避免出現這種情況。

如果你真的需要修改字體自己用來印刷的話,你可以使用adobe illustrator或InDesign,還能保證版面一個個編輯。(不過並不是每個字都像羅字這麼幸運會兩碼做一型,很多還是要自己輸入繁體重新去編輯)


沒辦法改。

比方說『靈』字(即繁體的『靈』字),方正蘭亭黑沒有收入這個字,於是,win系統在方正蘭亭黑中找不到這個字,只能回落到細明體(即PMingLiu),繼續用細明體顯示。

建議你試試windows內置宋體、思源黑體或者思源宋體。它們收錄的字比較全。


推薦閱讀:

華文系列字體當中的非漢字部分是華文自己設計的嗎?
粗體字體是通過演算法實現還是設計師每個字重新設計的?
中文簡歷用什麼字體會比較好?
為什麼 iOS 的系統語言為中文時,中文字體顯示的效果比系統語言是英文時好?
如何才能把字寫得更流(liao)暢(cao)?

TAG:字體 | 中文字體 | 字體鑒別 |