6

У меня есть следующий график graphviz:

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

Вывод этого графика должен быть

правильный график

И это действительно то, что я получаю, если пытаюсь использовать точку для создания файла (например, с помощью dot -Tsvg test.dot > test.svg).

Когда я пытаюсь использовать dotty для его отображения, все метки отображаются в виде точек:

неверный график

Что вызывает эту проблему, и как я могу решить эту проблему? В прошлом я много использовал dotty на похожих графиках, как в Windows, так и в Linux, и никогда не видел такого поведения.

Ubuntu 10.04.3 LTS, Graphviz версия 2.20.2 (dotty версия 96c).

4 ответа4

4

Мое решение слишком простое. Я изучил /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

Я перезагрузился, и графики Дотти стали красивыми, но имя шрифта по умолчанию для меня остается неизвестным.

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.

Хотя эти обходные пути не решают реальную проблему, если все, что вам нужно, это быстро просмотреть некоторые графики, они могут быть быстрее, чем пытаться исправить проблему (которая все еще сохраняется в Linux Mint 17, основанном на Ubuntu 14.04).

0

Как уже упоминали другие, ваша конфигурация шрифта не работает. Вы можете прочитать больше о том, как настроить это здесь:

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

0

Я нашел какой-то внутренний документ в компании, в которой я ненадолго работал, в которой упоминается, что dotty неисправен в Ubuntu 10.04, и призывает пользователей обновить свою ОС, чтобы решить эту проблему. Причина, по которой это происходит, до сих пор остается для меня загадкой, и "обновить вашу ОС" - довольно плохое решение, но все же - оно должно решить проблему, поэтому разместите ее здесь в качестве ответа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .