PlantUML 添加中文字体支持(以宋体为例)

date
Apr 28, 2024
slug
plantuml-chinese-font-support-tutorial
status
Published
tags
PlantUML
软件工程
summary
本文介绍了如何在 Mac 上通过 Docker 容器安装 PlantUML,并为其添加中文字体(以宋体为例)的支持
type
Post
由于毕业设计的论文要画很多图,会有很大的工作量。借助 PlantUML 可以通过代码的方式描述图片内容,从而生成图片,并且生成代码是 GPT 等模型所能胜任的。网络上有很多 PlantUML 在线编辑器,而这些编辑器对字体的支持(尤其是非英文字体)非常有限,不能满足需求。除此之外, PlantUML 项目并不支持在 Mac 上安装,因此只能通过 Docker 容器的方式运行,Docker 容器默认的 Linux 发行版往往不包含有版权的中文字体。
在写毕业设计论文的过程中,需要绘制大量图表,这带来了很大的工作量。为了提高效率,可以借助 PlantUML 通过编写代码的方式描述图片内容,进而自动生成相应的图片。生成 PlantUML 代码是 GPT 等语言模型所能胜任的任务。
然而,尽管有许多 PlantUML 在线编辑器,但这些编辑器对字体的支持(特别是非英文字体)非常有限,无法满足论文对图片字体的格式要求。此外,PlantUML 项目本身并不支持在 macOS 上直接安装,只能通过 Docker 容器的方式运行。而 Docker 容器默认使用的 Linux 发行版通常不包含具有版权的中文字体。
为了解决这一问题,需要在 Docker 容器中安装相应的中文字体,下面会介绍如何完成这一操作。

PlantUML 支持哪些图表类型

PlantUML 支持多种常用的图表类型,包括但不限于:
  1. 时序图(Sequence Diagram)
  1. 用例图(Use Case Diagram)
  1. 类图(Class Diagram)
  1. 活动图(Activity Diagram)
  1. 组件图(Component Diagram)
  1. 状态图(State Diagram)
  1. 对象图(Object Diagram)
  1. 部署图(Deployment Diagram)
关于 PlantUML 支持的其它图表类型,可以在项目文档中查看。

添加中文字体支持(以宋体为例)

1. 本机部署 PlantUML 容器

提取 PlantUML 的 Docker 镜像
运行 PlantUML 服务器容器
访问 PlantUML 服务器
一旦容器运行,您就可以通过浏览器访问 PlantUML 服务器,网址是 http://localhost:8080/

2. 查看当前支持的字体

在上一步打开的页面的输入框输入下面代码,将会显示当前可用的字体
notion image
以宋体为例,宋体的英文名称为 SimSun ,如果你在输出的可用字体里没有找到宋体,那么请按照接下来的教程操作。

3. 添加自定义字体(宋体)

终端运行 docker ps 查看当前容器的 CONTAINER ID ,然后以 root 身份进入容器:
进入容器后,运行下面命令安装字体管理工具:
新建字体存放目录:
进入目录:
上传你的字体文件到这个目录,也可以直接通过下面命令直接下载宋体的字体文件,注意这个链接来于别人的 GitHub repo,随时可能失效,不建议使用。
创建字体缩放目录(用于字体的快速访问和渲染)
生成字体目录的索引文件
重建字体缓存(确保系统可以识别新添加或修改的字体)
重新加载系统的环境变量设置
重启容器
大工告成,现在可以回到 PlantUML 页面重新输出可用字体列表检查是否安装成功。
notion image

4. 在 PlantUML 代码中指定字体

通过下面代码指定字体:
例如宋体:
完整的示例代码:
notion image

番外:为 Mermaid 指定字体

Mermaid 与 PlantUML 功能相似,不过 Mermaid 支持绘制系统功能流程图。
Mermaid 也有在线编辑器 https://mermaid.live/ ,可以在下图位置通过配置代码来指定字体(这个在线编辑器支持宋体)
notion image
配置代码示例:
在 themeVariables 里通过 fontFamily 指定字体。

参考资料

 

© Cheney Wang 2024