【问题标题】:Graphviz portability and fonts. How make schemes identical on different OSs?Graphviz 的可移植性和字体。如何在不同的操作系统上使方案相同?
【发布时间】:2019-07-11 14:21:36
【问题描述】:

我在 Mac 上使用 Graphviz,但我的大多数应用程序都在使用 Ubuntu 的服务器上运行。我注意到在不同的操作系统上编译时,具有相同源代码的点方案的绘制方式略有不同。

在我看来,主要原因是系统上字体之间的差异。即使我使用相同的通用字体和相同的大小 - 它们看起来差异太大,这对布局影响很大。

所以问题是:是否有可能使字体在 Graphviz 方案中跨系统看起来相同?

下面我附上演示问题的示例。为方便起见,附上图片作为链接。

源代码:

digraph {
    graph [label="Mac" labelloc=t]
    dpi=100
    pad=0.2
    rankdir=LR
    a [shape=rect label="width=1" width=1]
    b [shape=rect label="width=1.5 Arial" width=1.5 fontname=Arial]
    c [shape=rect label="width=2.7 Arial 20" width=2.7 fontname=Arial fontsize=20]
    d [shape=rect label="width=4 Helvetica" width=4 fontname=Helvetica]
    e [shape=rect label="width=5 Helvetica 25" width=5 fontname=Helvetica fontsize=25]
    f [shape=rect label="width=6, blue 0.8, red 0.2" width=6 style=filled color="blue:red;0.2" fontcolor=white]
}

正如您在方案中看到的——字体不是唯一的问题:在 Mac\Ubuntu 和 Win10 上填充两种颜色看起来有点不同。但这个具体问题可能是因为我的 Windows 机器上有 graphviz 2.38。

现在是相同的方案,但没有节点标签:

digraph {
    graph [label=Mac labelloc=t]
    dpi=100
    pad=0.2
    rankdir=LR
    a [shape=rect label="" width=1]
    b [shape=rect label="" width=1.5 fontname=Arial]
    c [shape=rect label="" width=2.7 fontname=Arial fontsize=20]
    d [shape=rect label="" width=4 fontname=Helvetica]
    e [shape=rect label="" width=5 fontname=Helvetica fontsize=25]
    f [shape=rect label="" width=6 style=filled color="blue:red;0.2" fontcolor=white]
}

这里的结果几乎相同(除了该死的颜色表)

【问题讨论】:

  • 如何保存生成的图像?
  • @tk421 使用相同的命令:dot -Tpng input.dot -ooutput.png
  • 您可以在首选平台上生成 PNG 并在其他任何地方使用图像。
  • @tk421 这是一个解决方案!但不幸的是,在我的项目中使用 Graphviz 的想法是我可以避免将方案保存在静态 PNG 文件中。我在 MAC 上设计我的方案,但在 Ubuntu 容器中自动编译它们。但它们也可以在任何其他机器上编译,因为它是一个 git-repository
  • 如果你想保持字体一致,你可能还想看看superuser.com/questions/305953/…

标签: fonts graphviz portability dot


【解决方案1】:

问题似乎与装在Homebrew 中的graphviz 版本有关。 Graphviz 那里很奇怪,尤其是它不包含 Cairo 引擎,字体确实有些问题。

所以我删除了 Homebrew 版本并从 MacPorts 安装了 Graphviz。现在我在 Mac 上构建图像时的字体大小与在 Ubuntu 和 Windows 上几乎相同。字体并不完全相同,但对于开发过程来说已经足够接近了。

Same image generated by Graphviz from MacPorts

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多