Gitlab Pages + Doxygen + Graphviz 创建带有损坏字符的图表
Gitlab Pages + Doxygen + Graphviz creates graphs with corrupted characters
我正在使用 Gitlab Pages 为我的项目托管 Doxygen 创建的 API。我还利用 graphviz 项目来创建依赖关系图。我使用 CI 脚本来安装软件包并构建文档:
pages:
stage: build
image: alpine
script:
- apk update && apk add doxygen
- apk add graphviz
- doxygen doxy/dox_config
- mv docs/html/ public/
artifacts:
paths:
- public
only:
- master
dependencies: []
CI 脚本运行没有任何错误,除了 Doxygen 错误抱怨找不到 LaTeX 和 dvips,这两者都不应该影响 graphviz 图片。我的图表如下所示:
我不太确定问题出在哪里或如何解决。为什么所有字符都不对?
事实证明问题出在使用的 Docker 图片上。 Alpine 不包含正确的字体,但 Debian 具有所有先决条件。虽然几乎肯定有一种方法可以使用 Alpine 安装字体,但我只是切换到 Debian docker 图像。这是一个有效的 YML 脚本:
pages:
stage: build
image: ubuntu:trusty
script:
- export DEBIAN_FRONTEND=noninteractive
- apt-get -yq update
- apt-get -yq install graphviz
- apt-get -yq install doxygen
- doxygen doxy/dox_config
- mv docs/html/ public/
artifacts:
paths:
- public
安装包 ttf-freefont
或 ttf-ubuntu-font-family
将解决问题。这是我的 Dockerfile
FROM alpine:3.6
RUN apk --update add \
doxygen \
graphviz \
ttf-freefont \
&& rm -rf /var/cache/apk/*
ttf-ubuntu-font-family
是比较窄的字体,所以你的盒子会变小一点。
我正在使用 Gitlab Pages 为我的项目托管 Doxygen 创建的 API。我还利用 graphviz 项目来创建依赖关系图。我使用 CI 脚本来安装软件包并构建文档:
pages:
stage: build
image: alpine
script:
- apk update && apk add doxygen
- apk add graphviz
- doxygen doxy/dox_config
- mv docs/html/ public/
artifacts:
paths:
- public
only:
- master
dependencies: []
CI 脚本运行没有任何错误,除了 Doxygen 错误抱怨找不到 LaTeX 和 dvips,这两者都不应该影响 graphviz 图片。我的图表如下所示:
我不太确定问题出在哪里或如何解决。为什么所有字符都不对?
事实证明问题出在使用的 Docker 图片上。 Alpine 不包含正确的字体,但 Debian 具有所有先决条件。虽然几乎肯定有一种方法可以使用 Alpine 安装字体,但我只是切换到 Debian docker 图像。这是一个有效的 YML 脚本:
pages:
stage: build
image: ubuntu:trusty
script:
- export DEBIAN_FRONTEND=noninteractive
- apt-get -yq update
- apt-get -yq install graphviz
- apt-get -yq install doxygen
- doxygen doxy/dox_config
- mv docs/html/ public/
artifacts:
paths:
- public
安装包 ttf-freefont
或 ttf-ubuntu-font-family
将解决问题。这是我的 Dockerfile
FROM alpine:3.6
RUN apk --update add \
doxygen \
graphviz \
ttf-freefont \
&& rm -rf /var/cache/apk/*
ttf-ubuntu-font-family
是比较窄的字体,所以你的盒子会变小一点。