作者willy69wu31 (小小吳)
看板Linux
標題[問題] 等寬字體不等寬
時間Thu Sep 10 18:27:39 2015
先上圖,
預期結果對照組:
http://i.imgur.com/N13pRdP.png (稱為 A 系統)
實際結果對照組:
http://i.imgur.com/pMDIIIK.png (稱為 B 系統)
A 系統是裝在 B 系統內的虛擬電腦,設定值幾乎和 B 系統一模一樣,
佈景主題與字體設定也一模一樣
但我不解的是...
為何在 B 系統的 Konsole (KDE 的 Terminal) 和 KWrite 會看到不對齊的文字?
用 fc-match 檢查了 Monospace 字體,兩系統都是對應文泉驛等寬微米黑
而嘗試把 KWrite 的字體從 Monospace 改成文泉驛等寬微米黑的話,畫面文字完全不變
改成文泉驛等寬正黑的話,一樣有不對齊的狀況
但改成 Noto Sans Mono CJK TC 則會正常對齊
A 系統曾經一度自動變成像 B 系統那樣文泉驛等寬字體會不等寬,
想重現狀況時,還原成上一個 snapshot 測試卻找不到重現的步驟,
所以現在 A 系統是正常的等寬,B 系統等寬卻不等寬
B 系統是 openSUSE 13.2 (64 位元),KDE 4 桌面
請問有人知道怎麼解決這個等寬問題嗎?
Terminal 不等寬用起來很難過 orz
(正在考慮乾脆就改成 Noto Sans Mono CJK TC)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.103.199
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1441880862.A.09E.html
1F:→ Bellkna: 忘了哪篇有人說這是bug 09/10 19:10
呃,這是同一個 bug 嗎? 感覺不太像
另外,你貼的這篇也是我問的
※ 編輯: willy69wu31 (114.27.103.199), 09/10/2015 19:54:01
3F:→ Bellkna: XD沒注意看id 改用noto似乎比較省事 09/10 20:18
無解的話我會把 Monospace 指定成 Noto Sans Mono CJK TC
※ 編輯: willy69wu31 (114.27.103.199), 09/10/2015 20:50:39
4F:推 s9209122222: 請問由Ubuntu終端機安裝的fonts-noto-cjk是最新版嗎 09/10 22:54
5F:→ s9209122222: ? 09/10 22:54
6F:推 s9209122222: 他寫2015-05-11,難道他還停留在1.002版? 09/10 23:11
看來應該還停在 1.002 喔
※ 編輯: willy69wu31 (114.27.103.199), 09/10/2015 23:49:34
7F:→ Bellkna: 1.004的字型高度有點問題 arch上用1.004的顯示高度異常 09/11 00:02
8F:→ Bellkna: debian上1.002的沒問題 09/11 00:03
9F:推 s9209122222: 高度? 09/11 00:14
高度? (跟著發問
※ 編輯: willy69wu31 (114.27.103.199), 09/11/2015 00:15:31
10F:推 Bencrie: 那是在說 hhea ascender descender 參數的問題 09/11 00:39
11F:→ Bencrie: 1.48 倍行高 09/11 00:39
12F:→ Bellkna: 似乎qt的程式比較會有這問題 issue裡有人說gnome正常 09/11 19:51
看來 KDE 和 Gnome 各有我不喜歡的點
====
另外我發覺文泉驛等寬微米黑本身好像沒有粗體,
我不確定跟這個有沒有關係? 是不是某種粗體模擬或字型 fallback 設定有問題...
雖然擷圖裡面的 KWrite 並沒有出現粗體,不過 Konsole 有
而 Konsole 不對齊的地方多半是因為出現粗體文字 (但 A 系統的粗體在 Konsole 正常)
※ 編輯: willy69wu31 (1.173.215.210), 09/11/2015 20:18:16
13F:→ Bellkna: issue裡也提到沒辦法完美配合每種ui 這個要花時間回報+調 09/11 21:03
14F:→ Bellkna: 不過 現階段換成思源似乎是比較可接受的方案 畢竟很齊全 09/11 21:07
後來換成思源卻還是一樣有不對齊問題 (只剩粗體有問題,非粗體正常了)
15F:→ Bellkna: 行高問題就看能不能接受了 09/11 21:08
16F:→ s9209122222: kde4太醜了,丟掉 09/12 02:01
我不太喜歡 GTK 系的 DE 外觀
17F:推 Bencrie: 行高自己抓 source rebuild 應該可以解決啦 09/12 18:38
18F:→ Bellkna: 用中文介面的話比較會有行高問題 不過我都是用英文 09/12 20:46
19F:→ Bellkna: 比較有問題的地方是用fx+bbsfox開bbs比較明顯 09/12 20:47
==============================================================================
後來找到部分原因了。
如果在 KDE 的系統設定 > 應用程式外觀裡面,點選左邊的「字型」分頁的話
(點選就會觸發,即使沒有改設定或按套用鈕)
某些條件下會自動寫入資料到下列檔案:
~/.config/fontconfig/fonts.conf
條件不明,我測試有時候它只建了 fontconfig 目錄,卻沒有 fonts.conf
然後這個 fonts.conf 如果沒有 hinting 相關設定的話,會被自動寫進去
在我這個例子裡面 hinting 會被它改成 medium
結果因此導致等寬字型的粗體文字變成無法對齊
而我再測試後發現把 hinting 改回 none 的話粗體就會恢復正常。
算是一個 workaround
總之暫時解決了。
感謝各位
※ 編輯: willy69wu31 (114.27.100.54), 09/13/2015 20:19:38
20F:→ Bellkna: 可能沒設定的會給個預設值 我的也會自己寫入.fonts的dir 09/13 20:53
21F:→ Bellkna: 其實有cli+gui複數設定方法的還蠻常撞到這種問題 09/13 21:38
22F:→ Bellkna: 明明某邊沒設 開另一邊就給了預設值 結果就有預料外情形 09/13 21:40
23F:推 s9209122222: 關掉hinting字體真的漂亮很多 09/14 18:20
因為那一套 hinting 不適合中文,英文的話效果還 ok
※ 編輯: willy69wu31 (114.38.243.21), 09/14/2015 18:51:29
24F:→ EdwardGJLee: hintmedium 應該還 OK。 09/14 19:54
hintmediem 對小字體的中文 (功能表、視窗標題、按鈕等) 常常會有很糟的效果
對大字體還好
26F:推 s9209122222: 有辦法中文關掉hinting,英文開啟hinting嗎? 09/14 20:00
27F:→ EdwardGJLee: 基本上沒辦法,因為它是針對 render 引擎的動作。 09/14 20:16
28F:→ EdwardGJLee: hinting 的問題,和字型品質有關。FT2 autohint 是固 09/14 20:18
29F:→ EdwardGJLee: 的了,剩下的只能靠字型本身的 hint instruction。 09/14 20:18
30F:→ EdwardGJLee: 中文字型沒有哪種天然呆會去做字型 hinting 的,這就 09/14 20:21
31F:→ EdwardGJLee: 是中文字型 hinting 輸英文字型的原因。 09/14 20:22
32F:推 Bencrie: 思源黑體跟文鼎商用的字型有 hinting 09/14 21:59
33F:→ Bencrie: 雖然有做我還是會關掉就是 XD 09/14 22:00
34F:→ EdwardGJLee: 那個是程式演算法做出來的 hinting。真正的 hinting 09/14 22:10
35F:→ EdwardGJLee: 是手工調出來的。 09/14 22:10
36F:→ EdwardGJLee: 去把裡頭的 instructions 拖出來檢查就知道了。 09/14 22:11
37F:→ EdwardGJLee: 中文字型不可能做 hinting,是因為筆畫太複雜,會調 09/14 22:12
38F:→ EdwardGJLee: 到死呀! 09/14 22:13
39F:→ EdwardGJLee: 以前是曾有人做 hinting,但不是全面的,是重點式的 09/14 22:16
40F:→ EdwardGJLee: 例如古早的新細明體。 09/14 22:17
41F:→ EdwardGJLee: 中文字字太多,筆畫又複雜,全面調 hinting 是不可能 09/14 22:18
42F:→ EdwardGJLee: 的任務。 09/14 22:18
43F:推 Bencrie: 啊就真的人工調啊,不然怎麼叫血汗產業 09/14 23:01
44F:→ EdwardGJLee: 文鼎做的只是Basic Quality Hinting,算是重點式的 09/14 23:10
45F:→ EdwardGJLee: 我上面所謂全面式的就是 Advance Quality Hinting. 09/14 23:11
46F:→ EdwardGJLee: 他們不會做全面式的啦!這不是血汗膴能做得出來, 09/14 23:11
47F:→ EdwardGJLee: 還要考慮成本。那樣的中文字型,一套要多少錢呀?XD 09/14 23:12
48F:→ EdwardGJLee: 你不能說我加幾個 instructions 就算是手工在調的。 09/14 23:13
49F:→ EdwardGJLee: 而且以目前的 render 技術,hinting 的重要性漸漸降 09/14 23:14
50F:→ EdwardGJLee: 低。 09/14 23:14
51F:→ EdwardGJLee: 而且,是不是真的用手工調,還是演算法加上半手工, 09/14 23:15
52F:→ EdwardGJLee: 就讓商人去自說自話吧!XD 09/14 23:15
53F:推 Bencrie: 這我不懂,哪天去問問看 XD 09/14 23:19
54F:→ EdwardGJLee: 別去問老王,說他的瓜甜不甜,古有明訓。 09/15 07:15
55F:→ EdwardGJLee: 仍不是說文鼎怎樣啦!他們經營得也滿辛苦的,在中國 09/15 07:15
56F:→ EdwardGJLee: 希望不要被中資吃掉呀! 09/15 07:16
57F:→ EdwardGJLee: 只是說商業廣告式的說法,還是聽聽就好。 09/15 07:17
58F:→ EdwardGJLee: 我現在用的也是他們的全套商業字型。 09/15 07:17
※ 編輯: willy69wu31 (114.38.242.27), 09/15/2015 17:08:37
59F:→ EdwardGJLee: 那只好關掉 hinting 了。這說明了,不佳的 hinting 09/15 19:58
60F:→ EdwardGJLee: 比沒有 hinting 還糟糕。 09/15 19:59
61F:→ EdwardGJLee: 我用預設 de/wm 的字型來測試,請參考看是否能忍受: 09/15 20:01
這張圖的狀況我個人不喜歡,部分筆畫相黏,部分筆畫過淡 (像是「屁」字)
新細明體的「細」字豎劃消失了
64F:→ EdwardGJLee: 使用的是我自己調整的 cwHMono 09/15 20:03
66F:→ EdwardGJLee: BTW,此字型不適合用在 windows 系統。 09/15 20:04
67F:→ EdwardGJLee: s/預設 de/wm 的字型/預設 de/wm 的字型大小/ 09/15 20:10
68F:推 Bencrie: 行高我試了一下,直接把 hhea 打掉就解決了 XD 09/15 23:51
相簿:
http://imgur.com/a/mb9s1
六張圖依序是:
cwHMono, 10px, hinting: none, subpixel: rgb
cwHMono, 10px, hinting: medium, subpixel: rgb
cwHMono, 10px, hinting: full, subpixel: rgb
文泉驛等寬微米黑, 9px, hinting: none, subpixel: rgb
文泉驛等寬微米黑, 9px, hinting: medium, subpixel: rgb
文泉驛等寬微米黑, 9px, hinting: full, subpixel: rgb
文泉驛用 9px 是因為我這套 DE 的預設等寬字體是文泉驛等寬微米黑+9px
撇開有 bug 的英文不看,還有箭頭不知道為什麼怪怪的,先不管。
我覺得開啟 hinting 後的問題大概像是:
1. 「重」字的橫筆會上下黏在一起
2. 「問」字「口」與「門」部件間的間隙怪怪的
3. 在文泉驛部分,「自」字中間橫筆之間的上下間隙忽大忽小;「用」字也類似;
不限於文泉驛字體的話,「手」字也一樣
不過這些算我的主觀感覺吧,我相信有人比較喜歡對中文開啟 hinting
因為開啟後的優點可能像是:
筆畫銳利,比較不會糊,例如「字」字裡面「子」部件的中間橫筆
※ 編輯: willy69wu31 (163.24.242.200), 09/17/2015 12:28:17
70F:→ EdwardGJLee: 在小字的時候,本來有些 outline render 成 bitmap 09/17 20:04
71F:→ EdwardGJLee: 有些點的位置會有灰色地帶,這是沒辦法的。而影響的 09/17 20:04
72F:→ EdwardGJLee: 因素也很多,雖然 hinting 是其中之一,但各OS/driver 09/17 20:05
73F:→ EdwardGJLee: 間的表現也會有所不同,主要是螢幕解析度的問題, 09/17 20:06
74F:→ EdwardGJLee: 所以同樣的微調,在每個人的主觀因素和平台間都會有 09/17 20:06
75F:→ EdwardGJLee: 所不同。最簡單的方式大概就是嵌入 bitmap,不讓 09/17 20:07
76F:→ EdwardGJLee: 程式去自動計算,直接取用現成的 bitmap,這以目前 09/17 20:07
77F:→ EdwardGJLee: 螢幕解析度而言,是最理想的方式。 09/17 20:08
78F:→ EdwardGJLee: 另外提醒大家,思源字型的辵字部是中國的寫法。 09/19 20:08
80F:→ EdwardGJLee: 這也是我不用思源字型的重要原因。 09/19 20:09
81F:推 s9209122222: 繁中的辵部是台灣寫法吧,和日本還有簡體明顯不同 09/19 21:00
82F:推 s9209122222: 我就是因為他的閃電形才改用思源的 09/19 21:05
83F:→ s9209122222: 但Libreoffice會顯示成一直線的,不知道什麼時候會茄 09/19 21:07
84F:→ s9209122222: 但Libreoffice會顯示成一直線的,不知道什麼時候會修 09/19 21:07
85F:→ s9209122222: 復 09/19 21:07
86F:推 Bellkna: 思源"大部份"的寫法都還可以接受 至少比其它的好很多 09/19 22:06
87F:→ EdwardGJLee: 我檢視的是整個cjk的字型。他的辵部有的正確,有不正 09/19 22:19
88F:→ EdwardGJLee: 確,不清楚為什麼會這樣。 09/19 22:20
89F:→ EdwardGJLee: 目前只發現辵字部的問題。 09/19 22:21
90F:→ EdwardGJLee: 當然,要嚴格的話,骨字部的也有問題。 09/19 22:23
91F:→ EdwardGJLee: BTW,中國那邊也是有繁體字,只是寫法和我們不同。 09/19 22:24
92F:→ EdwardGJLee: 會提出這個,主是了一堆動畫嵌入的字型都是中國的, 09/19 22:25
93F:→ EdwardGJLee: 有點OOXX。 09/19 22:25
94F:→ EdwardGJLee: 另外,日本的辵字部寫法是二種(三種)都算正確的。 09/19 22:26
95F:→ EdwardGJLee: 就是說一點一直線,二點一直線,一點彎曲的都可以。 09/19 22:28
96F:→ EdwardGJLee: 思源的bug滿多的,在 TeX 下測試就知道了。會一堆亂 09/19 22:34
97F:→ EdwardGJLee: 碼出現,原因待查!照理小林劍主事的話不應發生這種 09/19 22:34
98F:→ EdwardGJLee: 情形才對。 09/19 22:35
99F:→ Bellkna: 整個cjk是指哪個 cn jp kr tw 還是 otc? 09/19 22:42
100F:→ EdwardGJLee: 就是整合成一個字型,而不是分開的。 09/19 22:44
101F:→ Bellkna: 整合一個的那個一定有問題 那是以日文寫法為主 其它為輔 09/19 22:45
102F:→ Bellkna: 其它四個才是以各地區為主的寫法做區隔 09/19 22:46
103F:→ Bellkna: 不過相對來說字就比較不會齊 要看怎麼取捨 09/19 22:47
104F:→ EdwardGJLee: 大家可以用fontforge打開,Ctrl+Shift+> 輸入u9023 09/19 22:47
105F:→ EdwardGJLee: 檢查一下所有辵字部的寫法。 09/19 22:48
106F:→ EdwardGJLee: 問題是整合成一個字型才有使用上的價值呀!:) 09/19 22:49
107F:→ Bellkna: 我是5個都有裝 而且 整合的不可能完全符合使用上的需求 09/19 22:59
108F:→ EdwardGJLee: 既然是開源的,整合不是問題啦!看有沒有人有做。 09/19 23:01
109F:→ EdwardGJLee: 整合的好處是文書處理、排版軟體也能受益。 09/19 23:02
110F:→ EdwardGJLee: fallback的方式畢竟多一道手續,許多軟體也不支援。 09/19 23:02
111F:→ Bellkna: 而且還有個問題 負責整合的人 學的寫法不一定一樣 09/19 23:03
112F:→ Bellkna: 9大行星都能變8大了 更何況寫法這種東西就更複雜了 09/19 23:04
113F:→ Bellkna: 所以我才說 思源"大部份"的寫法都能接受 09/19 23:05
114F:→ EdwardGJLee: 我們整合,當然就是給台灣(香港、馬)用的呀! 09/19 23:05
115F:→ Bellkna: 相同教育體系都能教出不同的寫法 單一個台灣用就不容易了 09/19 23:10
116F:→ Bellkna: 不是很建議個人去做這種整合 看看某補完計劃結果就知道 09/19 23:24
117F:推 s9209122222: 現在不是ㄉㄡ 09/19 23:52
118F:→ s9209122222: 現在不是都分開了嗎?好像是舊版的才用成一個? 09/19 23:53
119F:→ EdwardGJLee: 這個和補完計畫是不一樣的情形。unicode 只管碼,不 09/20 00:15
120F:→ EdwardGJLee: 管字的形狀,字的形狀是各地區國家自行決定的。 09/20 00:16
121F:→ EdwardGJLee: 補完計畫在碼的部份是和unicode在pk的。 09/20 00:17
122F:→ EdwardGJLee: 其實合成起來很快啦!以我的慢速電腦也不必幾天就合 09/20 00:18
123F:→ EdwardGJLee: 起來了。我覺得自由軟體社群,diy的精神漸漸失去,這 09/20 00:19
124F:→ EdwardGJLee: 是滿危險的一件事。 09/20 00:19
125F:→ EdwardGJLee: 思源的衍生版本很多,他們都是自行動作的。 09/20 00:21
126F:推 Bencrie: 文件不是建議 Linux user 用分開的嗎? 09/20 00:25
127F:推 Bencrie: 我自己是發現官方發的 otc 不合用就改成 fontconfig + 09/20 00:29
128F:→ EdwardGJLee: s/幾天/幾小時/g 09/20 00:30
129F:→ Bencrie: 28 subsets,也有驗證過 pango markup 下 lang tag 有效 09/20 00:30
130F:→ EdwardGJLee: 他們會建議分開用,就是因為寫法不同呀! 09/20 00:32
131F:→ EdwardGJLee: 有許多軟體,例如TeX/scribus等等,如果字型沒有合成 09/20 00:35
132F:→ EdwardGJLee: 變成會多幾道手續來書寫。 09/20 00:35
133F:→ EdwardGJLee: 因為字型的使用,不只是給系統本身在顯示上使用的。 09/20 00:36
134F:→ EdwardGJLee: 這個其實以前有討論過,只是還沒辦法納入ttf/otf spec 09/20 00:38
135F:→ Bellkna: 舉的例子可能不太恰當 只是想表達個人不太適合硬推這個 09/20 00:41
136F:→ Bellkna: 不過 有需要的話 自己diy是比較好的選擇 就像那個hhea 09/20 00:46
137F:→ EdwardGJLee: 本來異體字,以前有人建議依 lang tag 來選適合的字, 09/20 00:57
138F:→ EdwardGJLee: 但ttf/otf spec 當然不會接受,因為會多佔碼位。而 09/20 00:58
139F:→ EdwardGJLee: 這些碼位可能會和將來的新字衝突。 09/20 00:58
140F:→ EdwardGJLee: 如果要讓教育體系能接受,我覺得這種合成是值得的, 09/20 00:59
141F:→ EdwardGJLee: 至少學生只要安裝一種字型,繁體的部份都合教育部 09/20 00:59
142F:→ EdwardGJLee: 標準,而且又能直接取用不同的異體字。 09/20 01:00
143F:→ EdwardGJLee: 自由軟體在教育場所才是比較能直接推動的地方。 09/20 01:00
144F:→ EdwardGJLee: 當然,有利也有弊,像一點直線的辵字部會取不出來。 09/20 01:03
145F:推 Bellkna: 教育用的應該要由政府推一個專用的標準比較適合 09/20 01:25
146F:→ Bellkna: 印象中教育部是有一套 不過沒用過不便評論 09/20 01:26
147F:→ Bellkna: 只是一堆政府網站ie only 就更別說字型這塊了 09/20 01:27
148F:推 Bencrie: 教育部跟全字庫同一套 09/20 01:40
149F:→ EdwardGJLee: 教育部的那套並不是自由軟體。而且沒有黑體。 09/20 08:29
150F:→ EdwardGJLee: 要由教育部來主導的話,他們會優先用微軟的東西吧! 09/20 08:29
151F:→ EdwardGJLee: 我現在說的只是多一個選項,並不是要硬推喔! 09/20 08:30
152F:→ EdwardGJLee: 其實不說就做的話,現在就合成完成了!XD 09/20 08:30
153F:→ Bellkna: 有時候就缺一時的衝動XD 09/20 19:43
154F:→ EdwardGJLee: 不過,我發覺我話說得太快了,Fontforge無法處理思源 09/20 22:23
155F:→ EdwardGJLee: 字型,因為是他是 CID font wrap 成 otf 的,而 09/20 22:23
156F:→ EdwardGJLee: Fontforge 的原作者已經沒有參與,這部份沒能來得及 09/20 22:24
157F:→ EdwardGJLee: 做修正。目前的維護者專心在UI,所以功能沒什麼長進 09/20 22:24
158F:→ EdwardGJLee: 要處理的話,要用商用字型軟體來處理。 09/20 22:25
159F:推 wheatdog: payday? 09/25 14:11
對啊,被發現了
最近忙到沒空回覆,看到你這篇推文害我想回
※ 編輯: willy69wu31 (111.254.54.160), 09/25/2015 23:12:56