Graphviz:如何更改整个图形的字体?

96

我想知道是否可以为整个图形定义替代字体。

...
digraph script_concept {
graph [layout="dot",fontname="helvetica"];
...

根据这篇1老帖子,fontname属性只能单独定义:

节点和边不会继承图形的字体,你需要单独指定它们的字体。

是否有其他方法可以全局定义字体?

3个回答

133

不,没有其他办法。

就像您链接的论坛帖子中所述,您必须在图形化可视化语言文件的开头单独定义默认值(就像其他属性一样):

digraph g {
 graph [fontname = "helvetica"];
 node [fontname = "helvetica"];
 edge [fontname = "helvetica"];
 ...
}

我们可以改变字体大小吗? - undefined
1
@alper 当然可以,只需使用fontsize,请参考https://graphviz.org/docs/attrs/fontsize/。 - undefined

31

不确定这是否是最近的更新,但您可以使用-G-E-N属性标志在命令行级别更改它们。也就是说,以下内容对我有效:

$ dot -Tpng -Nfontname=Roboto -Nfontsize=10 \
    -Efontname=Roboto -Efontsize=10 \
    tree.dot > tree.png

1

然而,如果您要导出SVG,则有一个简单的技巧:

sed 's/Times,serif/Helvetica/g' thegraph.svg > thegraph_helvetica.svg

结合使用Make,所有的恐怖都将被隐藏:)以下是示例Makefile:

all: helvetica

svg:
    cat thegraph.dot | dot -Tsvg > thegraph.svg
helvetica: svg
    sed 's/Times,serif/Helvetica/g' thegraph.svg > thegraph_helvetica.svg

13
但这并不会根据渲染文本的大小来布置事物。 - Eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接