У меня есть приложение на C ++, которое использует cairo (точнее, cairomm) для генерации графики, состоящей из линий, круговых дуг, кривых Безье, некоторых прямоугольников и текста.
Чтобы нарисовать текст, я использую код из текстовый API cairo:
cairo_context->show_text (label.get_text ());
Это работает и результаты удовлетворительные, НО в файле svg cairo не определяет текст в тегах <text>
, а вместо этого определяет <path>
каждого символа как <symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="..."/>
</symbol>
, а затем соединяет текст, используя <use>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use href="#glyph0-1" x="309.773128" y="564.141667"/>
...
</g>
Это, однако, означает, что я не могу редактировать или переформатировать текст позже в приложение векторной графики c, такое как inkscape.
Меня не волнует качество набора текста, по сути, текст - это просто цифры и некоторая метка короткой оси. Как я могу заставить Каира не быть умным? Или, в качестве альтернативы, какая библиотека подойдет для создания svgs желаемым способом?