-T pdf отрабатывает нормально. Но -T svg делает бокс недостаточно широким для надписи
Created attachment 4074 [details] test.dot test case
Не затруднит сообщить в апстрим? (http://graphviz.org/Bugs.php) С ними общаюсь, но не знаю, когда доберусь -- сейчас всё-таки спать надо.
(In reply to comment #0) > -T pdf отрабатывает нормально. Но -T svg делает бокс недостаточно широким для > надписи У меня не воспроизводится, текст помещается с запасом. Полагаю, что проблема в шрифте, который у Вас выбирается в качестве "Times Roman,serif" при просмотре svg.
Сергей, Вам зачёт. Действительно, если добавить fontname= , то проблема исчезает. Причём для любого шрифта.
(In reply to comment #4) Очевидно, при жестком задании шрифта graphviz пользуется метриками этого конкретного шрифта. Без указания шрифта он рассчитывает ширину бокса относительно метрик абстрактного "Times Roman,serif". А уже при просмотре у Вас под это определение подставляется нечто более широкое. Более гибкого поведения от graphviz трудно было бы ожидать. Закроем?
Нет, Сергей, не согласен. 1. Times Roman - это не абстрактный файл. $ fc-list --verbose 'Times Roman' | grep file file: "/usr/share/fonts/htmldoc/Times-BoldItalic.pfa"(s) file: "/usr/share/fonts/htmldoc/Times-Bold.pfa"(s) file: "/usr/share/fonts/htmldoc/Times-Roman.pfa"(s) file: "/usr/share/fonts/htmldoc/Times-Italic.pfa"(s) 2. У них метрики берутся неправильно. Причём, как я уже писал, брать правильные они могут! (если указать шрифт явно). 3. Момент истины! На самом деле, бокс строится по метрикам Times Roman, а текст просмотрщики показывают шрифтом serif. Я не знаю, в каком порядке правильно пробовать шрифты, но 1. Inkview и gqview показывают шрифт serif 2. GraphicsMagick display показывает каким-то шрифтом, похожим на Times Roman Это что, бага просмоторщиков?
Хм, а если оставить один serif?
Миша, я покрутил так и сяк, и пришёл к такому выводу (см. пред. пост). (В ответ на комментарий №7) > Хм, а если оставить один serif? Тут всё просто: 1. Если ставишь fontname= , в SVG попадает только один этот шрифт. 2. Если не указываешь fontname, то в SVG попадает font-family="Times Roman,serif", и тогда начинаются глюки.
(In reply to comment #6) > 1. Times Roman - это не абстрактный файл. По мне -- так абстрактный. Их существует много реализаций разной степени кривизны. И особенно за пределами Latin-1. > 2. У них метрики берутся неправильно. Причём, как я уже писал, брать правильные > они могут! (если указать шрифт явно). Вот это я и называю разумной гибкостью. Если конкретный шрифт не указан, то graphviz _обязан_ строить идентичные svg на разных системах, независимо от того какой набор шрифтов установлен. Вспомните недавнюю дискуссию в devel@ вокруг dia, который на разных архитектурах давал разный результат. Если же шрифт указан конкретно, то здесь уже можно взять метрики непосредственно из шрифта, полагая, что пользователь знает, что делает. По моему разумению, чтобы обеспечить идентичность, для абстрактных шрифтов graphviz должен бы носить метрики с собой. Или ориентироваться на какой-либо конкретный шрифт, заведомо установленный в системе и заведомо не кривой. Это надо бы проверить. > 3. Момент истины! > На самом деле, бокс строится по метрикам Times Roman, а текст просмотрщики > показывают шрифтом serif. А точно не наоборот? Порядок шрифтов в font-family -- слева направо, и просмотрщики должны бы предпочесть Times Roman при его наличии.
(В ответ на комментарий №9) > (In reply to comment #6) > > 3. Момент истины! > > На самом деле, бокс строится по метрикам Times Roman, а текст просмотрщики > > показывают шрифтом serif. > > А точно не наоборот? Порядок шрифтов в font-family -- слева направо, и > просмотрщики должны бы предпочесть Times Roman при его наличии. я подозреваю, что в алфавитном порядке. Впрочем, правдивость моих слов нетрудно выяснить простым экспериментом: вставив в test.dot строку: fontname="Times Roman". Мой вывод такой: надо повесить багу на inkscape (или просто перевесить эту багу, с изменением Subject), и посмотреть, что они скажут. Из всех просмотрщиков inkview самый правильный. P.S. в своих выводах по пункту 2 я убеждён. Вряд ли graphviz таскает с собой какие-то метрики. Впрочем, это несложно проверить в RTFS.
(In reply to comment #10) > Впрочем, это несложно проверить в RTFS. Решил начать с RTFM и обнаружил замечательный документ, дающий ответы на все наши вопросы: /usr/share/doc/graphviz-2.24.0/fontfaq.txt из пакета graphviz-doc. Ваш вопрос рассмотрен под заголовком "What about SVG fonts?". Там даже inkscape упомянут в связи с тем, что не умеет CSS в полной мере и допускает путаницу со шрифтами. Возможно, -Gfontnames=svg решит Ваш вопрос даже в отношении inkscape. Кстати, Ваш "Момент истины" из #6 полностью подтверждается этим документом. Так что здесь всё-таки NOTABUG. Думаю, что вешать что-нибудь на inkscape бессмысленно. Если уж разработчики graphviz знают о проблеме, то разработчики inkscape должны знать и подавно. P.S. А вот мой вопрос, похоже, решается отрицательно. По умолчанию graphviz любит Times-Roman и берет метрики из шрифта, который fontconfig считает за таковой. То есть идентичного SVG на разных системах не получится. Ну да и ладно...
Согласен полностью