在 在線 Python 運行工具(Python 3.12.7)中,除了使用系統預置的 Alibaba PuHuiTi
字體外,用戶還可以上傳並使用自定義字體。本文以教學爲目的,逐步演示如何在瀏覽器環境中完成自定義字體的配置與使用。
一、爲什麼需要自定義字體?
- 系統默認字體風格不符合需求(如需使用思源黑體、站酷快樂體等)
- 需要統一品牌視覺(如使用企業專屬字體)
- 教學中演示字體加載機制
⚠️ 注意:若僅需顯示中文,推薦直接使用
Alibaba PuHuiTi
,無需額外操作。
二、操作步驟
步驟 1:準備字體文件
- 下載
.ttf
或.otf
格式的字體文件(如ZCOOLKuaiLe-Regular.ttf
) - 確保字體文件可合法使用(遵守授權協議)
步驟 2:上傳字體到虛擬文件系統
- 在工具界面中點擊 “文件列表” -> “上傳文件” 按鈕
- 選擇本地字體文件(例如
myfont.ttf
) - 上傳後,文件將位於當前環境虛擬目錄(路徑如
./myfont.ttf
)
步驟 3:在代碼中註冊並啓用字體
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 1. 註冊字體文件(路徑需與上傳位置一致)
font_path = './myfont.ttf' # 替換爲實際文件名
fm.fontManager.addfont(font_path)
# 2. 獲取字體名稱(可選:用於驗證)
font_prop = fm.FontProperties(fname=font_path)
font_name = font_prop.get_name()
print("已加載字體名稱:", font_name)
# 3. 設置爲默認 sans-serif 字體
plt.rcParams['font.sans-serif'] = [font_name]
plt.rcParams['axes.unicode_minus'] = False # 正常顯示負號
# 4. 繪圖測試
plt.figure(figsize=(6, 3))
plt.text(0.5, 0.5, "自定義字體示例", fontsize=20, ha='center')
plt.axis('off')
plt.show()
# 5. 保存圖像
plt.savefig('custom_font_demo.png')
plt.close()
三、常見問題與調試
Q1:如何確認字體是否加載成功?
運行以下代碼列出所有已加載字體中包含關鍵詞的部分:
import matplotlib.font_manager as fm
# 查看所有字體名稱
names = {f.name for f in fm.fontManager.ttflist}
print(sorted(names))
# 或搜索特定名稱
target = "KuaiLe" # 替換爲你期望的字體關鍵詞
matches = [n for n in names if target.lower() in n.lower()]
print("匹配結果:", matches)
Q2:圖像仍顯示方框或亂碼?
- 檢查
font_path
是否正確(區分大小寫,路徑需完整) - 確認字體文件是 TrueType (.ttf) 或 OpenType (.otf) 格式
- 確保
plt.rcParams['font.sans-serif']
使用的是字體的 family name(非文件名)
Q3:能否同時使用多個自定義字體?
可以。重複調用 fm.fontManager.addfont()
註冊多個字體,繪圖時通過 FontProperties
指定:
from matplotlib import font_manager
prop1 = font_manager.FontProperties(fname='./font1.ttf')
prop2 = font_manager.FontProperties(fname='./font2.ttf')
plt.text(0.2, 0.5, "字體1", fontproperties=prop1)
plt.text(0.6, 0.5, "字體2", fontproperties=prop2)
四、示例:使用“站酷快樂體”顯示中文
假設已上傳 ZCOOLKuaiLe-Regular.ttf
:
下載鏈接:https://pan.baidu.com/s/15FMvEHiL_9T3JV71tw3e8Q?pwd=eb5y
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 註冊字體
fm.fontManager.addfont('./ZCOOLKuaiLe-Regular.ttf')
# 設置默認字體
plt.rcParams['font.sans-serif'] = ['ZCOOL KuaiLe']
plt.rcParams['axes.unicode_minus'] = False
# 繪圖
plt.figure(figsize=(5, 2))
plt.title("歡迎使用自定義字體!")
plt.text(0.5, 0.5, "Hello 中文", fontsize=24, ha='center')
plt.axis('off')
plt.show()
plt.savefig('zcool_demo.png')
plt.close()
✅ 成功關鍵:
'ZCOOL KuaiLe'
是該字體的 family name,可通過FontProperties(fname=...).get_name()
獲取。
五、注意事項
- 會話隔離:關閉頁面後,上傳的字體文件將丟失,需重新上傳。
- 性能影響:頻繁註冊字體可能影響執行速度,建議在腳本開頭一次性完成。
- 版權合規:僅使用可免費商用或已獲授權的字體文件。
- 不要覆蓋系統字體:避免寫
plt.rcParams['font.sans-serif'] = "SimHei"
,這會破壞預置中文字體支持。
六、總結
在在線 Python 環境中自定義 Matplotlib 字體,只需三步:上傳 → 註冊 → 設置。該流程不僅適用於個性化繪圖,也是理解 Matplotlib 字體機制的有效教學手段。
加載中...