Dotty 将所有标签显示为点(句点)而不是文本

Dotty 将所有标签显示为点(句点)而不是文本

我有以下 graphviz 图:

digraph finite_state_machine {
    a -> b [ label = "c" ];
}

该图的输出应为

正确的图表

如果我尝试使用点来生成文件(例如通过dot -Tsvg test.dot > test.svg),我确实会得到这样的结果。

但是,当我尝试使用 dotty 来显示它时,所有标签都显示为句点:

不正确的图表

是什么原因导致了这个问题?我该如何解决?我过去在 Windows 和 Linux 上都曾多次在类似的图表上使用 dotty,但从未见过这种行为。

Ubuntu 10.04.3 LTS,Graphviz 版本 2.20.2(dotty 版本 96c)。

答案1

我的解决方案太简单了。我检查了一下/var/log/Xorg.0.log,发现以下内容:

[    52.308] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[    52.308]    Entry deleted from font path.
[    52.308] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[    52.308]    Entry deleted from font path.
...
[    52.314] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[    52.314]    Entry deleted from font path.
[    52.314] (WW) The directory "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" does not exist.
[    52.314]    Entry deleted from font path.

因此,我安装了指示的软件包:

xfonts-100dpi
xfonts-cyrillic
...
defoma
psfontmgr
x-ttcidfont-conf

我重新启动了机器人,Dotty 图形变得漂亮了,但默认字体名称对我来说仍然未知。

答案2

我有同样的问题,但还没有找到解决方案,但我整理了一份解决方法列表(其中一些取自https://bugs.launchpad.net/ubuntu/+source/graphviz/+bug/1016777):

  1. 指定字体名称(属性fontname="fixed"对我有用)。请注意,您可以在文件开头使用全局属性,以避免必须为每个标签指定它:
  digraph cfg {
    graph [fontname="fixed"];
    node [fontname="fixed"];
    edge [fontname="fixed"];
    ...
  }
  1. 使用dot(而不是 dotty)并将图形输出到图像文件(例如dot -Tpng file.dot -o file.png),然后使用图像查看器。为避免创建临时文件,请使用支持从 读取的查看器stdin,例如gwenview(例如dot -Tpng file.dot | gwenview /dev/stdin)。

  2. 使用xdot,而不是 dotty。

虽然这些解决方法并不能解决实际问题,但如果您所需要的只是快速查看一些图表,它们可能比尝试修复问题更快(该问题仍然存在于基于 Ubuntu 14.04 的 Linux Mint 17 中)。

答案3

正如其他人提到的,您的字体配置不起作用。您可以在此处阅读有关如何配置的更多信息:

http://www.graphviz.org/doc/info/attrs.html#d:fontname

答案4

我在一家我曾短暂工作过的公司找到了一份内部文件,其中提到 dotty 在 Ubuntu 10.04 上存在问题,并敦促用户升级操作系统以解决这个问题。这种情况发生的原因对我来说仍然是个谜,而且“升级操作系统”是一个相当糟糕的解决方案,但它仍然应该可以解决这个问题,所以在这里发布它作为答案。

相关内容