Graphviz的可移植性和字体。如何使方案在不同的操作系统上相同?

时间:2019-02-18 08:37:59

标签: fonts graphviz portability dot

我在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]
}

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

1 个答案:

答案 0 :(得分:0)

问题似乎出在Homebrew瓶装的graphviz版本中。 Graphviz在这里非常奇怪,特别是它不包含Cairo引擎,并且确实存在字体问题。

因此,我删除了Homebrew版本,并从MacPorts安装了Graphviz。现在,当我在Mac上生成映像时,字体大小几乎与Ubuntu和Windows上相同。字体并不完全相同,但它们足够接近开发过程。

Same image generated by Graphviz from MacPorts