LINUX.ORG.RU

[Qt, XML, SVG] Нашёл странность в обработке SVG, помОжете составить багрепорт (если это действительно баг)?


0

0

Нашёл в работе Qt-шного парсера XML (похоже, что именно в нём) очень странное поведение: на результат отображения картинки в SVG влияет количество пробелов/табуляций между некоторыми тегами. Firefox отображает этот SVG в обоих случаях одинаково (корректно). Поможет кто-нить в составлении багрепорта? А то моё инглиш ис вери бэд. SVG-шный файл предоставлю.

Ответ на: комментарий от piroflip

Это "корректный" код:

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="750" version="1.0" xmlns="http://www.w3.org/2000/svg" height="1050" id="svg2" xmlns:svg="http://www.w3.org/2000/svg">
<defs id="defs4" />
<g id="layer1">
<rect width="400" x="120" y="245" height="150" style="opacity:0.5;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="rect2383" />
</g>
<text x="156.81818" y="179.54546" style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:GOST type B;-inkscape-font-specification:GOST type B" id="width" xml:space="preserve">
  <tspan x="156.81818" y="179.54546" id="tspan2388" >500</tspan>
</text>
<text x="384.09091" y="184.09091" style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:GOST type B;-inkscape-font-specification:GOST type B" id="height" xml:space="preserve">
	<tspan x="384.09091" y="184.09091" id="tspan2392" >8128</tspan>
</text>
</svg>

А это -- "некорректный":

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="750" version="1.0" xmlns="http://www.w3.org/2000/svg" height="1050" id="svg2" xmlns:svg="http://www.w3.org/2000/svg">
<defs id="defs4" />
<g id="layer1">
<rect width="400" x="120" y="245" height="150" style="opacity:0.5;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="rect2383" />
</g>
<text x="156.81818" y="179.54546" style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:GOST type B;-inkscape-font-specification:GOST type B" id="width" xml:space="preserve">
                                                                            <tspan x="156.81818" y="179.54546" id="tspan2388" >500</tspan>
</text>
<text x="384.09091" y="184.09091" style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:GOST type B;-inkscape-font-specification:GOST type B" id="height" xml:space="preserve">
	<tspan x="384.09091" y="184.09091" id="tspan2392" >8128</tspan>
</text>
</svg>

"Сбойный" участок там, где параметр id="tspan2388". При выставлении перед этим tspan-ом множества пробелов в Qt-шном SVG-viewer-е текст сдвигается за границы области видимости. В Firefox-е нет.

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от summatus

Вот же... Так значит, Qt-шный парсер XML оказался более корректным, чем мозилловский? :-)

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от summatus

Хотя, подожди. А как количество пробелов _между_ тегами может влиять на результирующий вид документа? Разве парсером они не срезаются? Ну, например, как в тех-же плюсах: что x=i+j;, что x = i +j; отдают одинаковый результат. Или я что-то не понимаю в этой жизни?

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от one_more_hokum

Смотря между какими тегами. Это же текстовый узел. Если ты сказал preserve значит preserve.

Deleted
()
Ответ на: комментарий от summatus

> Qt не поддерживает SVG 1.1

А никаких заявлений от троллей не было насчёт времени внедрения поддержки SVG 1.1?

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от one_more_hokum

>А никаких заявлений от троллей не было насчёт времени внедрения поддержки SVG 1.1?

Были заявления, что её не будет в Qt4. =)

summatus
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.