a
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
"""
|
||||
字体工具 - 用于处理中文字体
|
||||
"""
|
||||
|
||||
import os
|
||||
from PIL import ImageFont
|
||||
|
||||
def get_chinese_font(font_size=14):
|
||||
"""获取中文字体
|
||||
|
||||
Args:
|
||||
font_size: 字体大小
|
||||
|
||||
Returns:
|
||||
ImageFont对象
|
||||
"""
|
||||
# 中文字体路径列表(按优先级排序)
|
||||
chinese_fonts = [
|
||||
# 文泉驿字体
|
||||
'/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc',
|
||||
# Noto Sans CJK
|
||||
'/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc',
|
||||
'/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc',
|
||||
# 其他可能的中文字体
|
||||
'/usr/share/fonts/truetype/arphic/uming.ttc',
|
||||
'/usr/share/fonts/truetype/arphic/ukai.ttc',
|
||||
]
|
||||
|
||||
for font_path in chinese_fonts:
|
||||
if os.path.exists(font_path):
|
||||
try:
|
||||
return ImageFont.truetype(font_path, font_size)
|
||||
except Exception as e:
|
||||
print(f'字体加载失败 {font_path}: {e}')
|
||||
continue
|
||||
|
||||
# 如果找不到中文字体,使用默认字体
|
||||
print('⚠️ 未找到中文字体,使用默认字体')
|
||||
return ImageFont.load_default()
|
||||
|
||||
def setup_matplotlib_chinese():
|
||||
"""设置matplotlib支持中文显示"""
|
||||
try:
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib
|
||||
|
||||
# 查找中文字体
|
||||
font_path = None
|
||||
for path in [
|
||||
'/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc',
|
||||
'/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc'
|
||||
]:
|
||||
if os.path.exists(path):
|
||||
font_path = path
|
||||
break
|
||||
|
||||
if font_path:
|
||||
# 添加字体到matplotlib
|
||||
import matplotlib.font_manager as fm
|
||||
fm.fontManager.addfont(font_path)
|
||||
font_name = fm.FontProperties(fname=font_path).get_name()
|
||||
|
||||
# 设置中文字体
|
||||
plt.rcParams['font.sans-serif'] = [font_name]
|
||||
plt.rcParams['axes.unicode_minus'] = False
|
||||
print(f'✅ matplotlib已设置中文字体: {font_name}')
|
||||
return True
|
||||
else:
|
||||
print('⚠️ 未找到matplotlib可用的中文字体')
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
print(f'❌ matplotlib中文设置失败: {e}')
|
||||
return False
|
||||
|
||||
# 预加载字体
|
||||
CHINESE_FONT = get_chinese_font(14)
|
||||
MATPLOTLIB_CHINESE_SETUP = setup_matplotlib_chinese()
|
||||
|
||||
if __name__ == '__main__':
|
||||
print('字体工具测试:')
|
||||
print(f'中文字体: {CHINESE_FONT}')
|
||||
print(f'matplotlib中文支持: {MATPLOTLIB_CHINESE_SETUP}')
|
||||
Reference in New Issue
Block a user