Holoviews中hv.Text自定义字体在Word中不生效问题求助
解决Holoviews生成SVG在Word中字体不生效的问题
核心原因
SVG文件默认仅引用字体名称,不会嵌入字体的字形数据,Word无法加载外部字体定义,导致显示默认字体。
可行解决思路
1. 在SVG中嵌入字体数据
修改代码,让Bokeh导出SVG时嵌入字体的字形信息,确保Word能直接识别:
import holoviews as hv hv.extension('bokeh') from bokeh.io import export_svg from bokeh.resources import Resources plot = hv.Curve([(0, 1), (2, 1)]) * hv.Text(1, 2, 'Test').options(text_font='Times New Roman') plot_state = hv.renderer('bokeh').get_plot(plot).state plot_state.output_backend = 'svg' # 配置资源,开启字体嵌入 resources = Resources(mode='inline', embed_fonts=True) export_svg(plot_state, filename='test.svg', resources=resources)
导出的SVG会包含Times New Roman的字形数据,粘贴到Word后字体即可正常显示。
2. 转换为EMF格式插入Word
Word对EMF(增强型图元文件)的字体兼容性更好,可通过Inkscape转换SVG为EMF:
inkscape test.svg --export-type=emf --export-filename=test.emf
将生成的EMF文件插入Word,字体样式可完美保留。
3. Word内手动修改字体
若仅处理少量图表,可在Word中操作:
- 插入SVG后,右键选择「编辑图片」进入绘图编辑模式
- 选中目标文本,直接在字体栏设置为Times New Roman
内容的提问来源于stack exchange,提问作者25334
相关产品推荐
相关产品推荐

