首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Red Hat 9 / Linux 環境下 Java 中文顯示完整解決方案

     編輯:Java 程式設計入門

前言

Linux 桌面中文顯示涉及兩大字體子系統:Core X Font System(傳統)與 Fontconfig(現代)。Java(JDK/JRE/JBuilder)依賴 Fontconfig,但受系統字體安裝影響。本文提供經 Red Hat 9 實測的完整配置流程。

一、為系統安裝中文字體(雙子系統同步)

1. Core X Font System(傳統 GTK 1.x / Xmms 等)


# 1. 建立字體目錄
mkdir -p /usr/share/fonts/local

# 2. 複製字體檔(如 simsun.ttc, tahoma.ttf)
cp *.ttf *.ttc /usr/share/fonts/local/

# 3. 產生字體索引
cd /usr/share/fonts/local
ttmkfdir -d . -o fonts.scale
cp fonts.scale fonts.dir  # 必須複製,xfs 需要 fonts.dir

# 4. 加入字體路徑並重載
chkfontpath --add /usr/share/fonts/local
service xfs reload  # 或 restart xfs,Red Hat 9 可能無 service 指令,改用:
# /etc/init.d/xfs restart
# 或登出 X 重新 startx

2. Fontconfig(現代 GTK 2.x / GNOME / KDE / Java)


# 系統級安裝(需 root)
cp *.ttf *.ttc /usr/share/fonts/
fc-cache -fv

# 用戶級安裝(推薦,無需 root)
mkdir -p ~/.fonts
cp *.ttf *.ttc ~/.fonts/
fc-cache -fv ~/.fonts

驗證:fc-list | grep -i simsun 應顯示字體路徑。

二、GTK 環境中文配置

GTK 1.x (xmms 等)


# 編輯 /etc/gtkrc.zh_CN
fontset = "-microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1,\
-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r"

格式:英文字體,中文字體,支援字體集合 fallback。

GTK 2.x (控制中心 → 字體)

直接圖形介面選擇「應用程式字體」為 SimSun 10pt,效果最佳。

Enlightenment 視窗管理器


# 編輯 ~/.enlightenment/themes/你的主題/textclass.cfg
# 全域替換字體字串為:
-microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1,\
-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r
# 重啟 E 生效

三、Java 環境中文配置(核心:font.properties + JAVA_FONTS)

1. 設定 JAVA_FONTS 環境變數


# /etc/profile 或 ~/.bash_profile
export JAVA_FONTS=/usr/share/fonts/local
# 或用戶字體目錄
# export JAVA_FONTS=~/.fonts

指向含 fonts.dir/fonts.scale 的目錄(Core X 目錄),而非 Fontconfig 快取目錄。

2. 修改 JRE font.properties 映射表

位置:$JAVA_HOME/jre/lib/font.properties(或 font.properties.zh_CN)


# 原始映射(範例)
serif.0=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1
serif.1=--standard symbols l-medium-r-normal--*-%d-*-*-p-*-urw-fontspecific

# 修改為中英文映射
serif.0=-microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1
serif.1=-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r

serif.italic.0=-microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1
serif.italic.1=-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r

# 同理修改 sansserif, monospaced, dialog, dialoginput 等邏輯字體

規律:*.0 為英文/拉丁字體,*.1 為中文/雙位元組字體。Java 依序嘗試 .0、.1... 直到找到支援字元的字體。

3. 各 Java 環境套用方式

環境font.properties 位置備註
JBuilder$JBuilder_HOME/jdk1.x/jre/lib/IDE 本身與專案執行環境分離,皆需修改
J2SDK (javac/java)$JAVA_HOME/jre/lib/命令列編譯執行環境
J2RE (java)$JRE_HOME/lib/純執行環境

最簡方式:修改好一份 font.properties,複製到所有環境對應目錄覆蓋原檔。

四、常見坑與避雷指南

現象原因解決
Java 程式顯示中文,但 IDE 介面亂碼JAVA_FONTS 指向 Fontconfig 目錄(無 fonts.dir/scale)指向 Core X 字體目錄(含 fonts.dir/scale)
修改 font.properties 無效邏輯字體名稱錯誤、未重啟 JVM、編碼聲明缺失確認 serif/sansserif/monospaced 全修改,JVM 參數 -Dfile.encoding=UTF-8
部分中文顯示方塊/問號字體缺字(SimSun 不含生僻字)安裝擴展字體(如 Noto Sans CJK、文泉驛微米黑)並加入映射
JBuilder 專案輸出正常,但 IDE 選單亂碼JBuilder 自身 JDK 與專案 JDK 不同修改 JBuilder 安裝目錄下 jre 的 font.properties

五、現代 Linux 發布版(CentOS 7+, Ubuntu 18+, Fedora)快速配置


# 1. 安裝開源中文字體(推薦)
# CentOS/RHEL
yum install -y google-noto-sans-cjk-fonts wqy-microhei-fonts
# Ubuntu/Debian
apt install -y fonts-noto-cjk fonts-wqy-microhei

# 2. 刷新字體快取
fc-cache -fv

# 3. Java 9+ 使用邏輯字體映射自動回退,通常無需修改 font.properties
# 若需強制指定,使用 $JAVA_HOME/conf/fontconfig.properties.src
# 參考:https://docs.oracle.com/javase/9/intl/font-configuration-files.htm

結語

Linux Java 中文核心在於:系統安裝字體 → Fontconfig 識別 → JAVA_FONTS 指向正確索引目錄 → font.properties 映射邏輯字體。理解雙字體子系統差異、邏輯字體 fallback 機制,能舉一反三解決各類中文顯示疑難雜症。現代發布版搭配開源 CJK 字體,配置已大幅簡化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved