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-freefontttf-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是比较窄的字体,所以你的盒子会变小一点。