Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

解決 Linux 下 Java 無法正確渲染思源黑體:字體相容性遷移指南

編輯:關於 Linux

Fedora 22+ 預設採用思源黑體,但 Java (Swing/JavaFX) 對 OTF 格式且含 Hinting 資訊的字體支援不完整,導致中文顯示方塊 (豆腐字),尤其簡體環境下會誤用繁體字形。本文提供三階段遷移方案。

Java 字體渲染異常

問題根因

  • 思源黑體為 OTF 格式,內含 Hinting 指令,Java 光柵化器解析失敗。
  • 字體語言標籤 (lang tag) 設定導致簡體環境載入繁體子集,缺字顯示方塊。

解決方案 (按推薦順序)

方案一:改用無 Hinting 的 TTF 社群字體 (最穩定)

  • XHei、明蘭 等社群重製字體,移除 Hinting,純 TTF 結構,Java 完美支援。
  • 安裝至 /usr/share/fonts/,執行 fc-cache -fv。

方案二:調整 Fontconfig 優先序 (保留思源黑體供其他程式使用)

# 1. 移除思源黑體套件自帶的 fontconfig 規則
rm /etc/fonts/conf.d/*source-han*

# 2. 編輯 /etc/fonts/conf.d/65-nonlatin.conf (或自建 99-java-fonts.conf)
<match target="pattern">
  <test qual="any" name="family" compare="eq"><string>Sans Serif</string></test>
  <edit name="family" mode="prepend" binding="strong">
    <string>XHei</string>   <!-- 你的首選字體 -->
  </edit>
</match>

方案三:JVM 參數強制指定字體 (僅限該應用)

java -Dawt.font.desktophints=none \
     -Dsun.java2d.fontpath=/usr/share/fonts/XHei \
     -jar your-app.jar

若專案時程緊迫,建議直接採用方案一替換字體,徹底規避相容性問題。詳細字體安裝步驟請參考《如何在 Linux 上添加自定義字體》。

Copyright © Windows教程網 All Rights Reserved