Ещё раз об SVG

Автор ape, 20 апреля 2013, 09:32

0 Пользователи и 1 гость просматривают эту тему.

ape

Во всех офисных пакетах есть проблемы с использованием SVG-файлов.

1. Преобразование SVG в ODG.
Это грустная тема - достаточно попытаться открыть этот файл (в  прилагаемом архиве 36.zip) с помощью любого Draw или Karbon.

2. Вставка SVG как изображения.
Здесь не всё так однозначно:
а). LibО-3.6.х с задачей справится почти на "хорошо", допустив 1,5 ошибки:
- часть текста будет потеряна;
- в Windows буквы будут заменены прямоугольниками;
- сохранение вставки в SVG-формате исключает возможность показа изображения в MS_Office, AbiWord и Calligra, которая будет открывать SVG как многообъектный рисунок.
б). Calligra вставит изображение на твёрдую "4":
- та же текстовая часть потеряется;
- SVG будет по-пиксельно преобразован в PNG.
в). AOO-3.4 и LibO-4.x, взаимствовавший код из первого, сделают всё на уверенный "неуд":
- SVG будет преобразован в PNG, размер которого (в пикселях) меньше исходного, т.е. с потерей качества;
- PNG, дополнительно к SVG, будет внедрён в ODF-контейнер способом, обеспечивающим его показ на дисплее и печати.
  Последнее имеет негативные последствия:
  - в MS_Office, AbiWord и LibO-3.6 используется только низкокачественный PNG
  - LibO-3.6 после любого редактирования файла удалит SVG из ODF-контейнера
  - Calligra будет одновременно открывать низкокачественный PNG и преобразовывать SVG в многообъектный рисунок.

3. Сохранение ODF-файла в ГОСТе, т.е. в ODF версии1.0\1.1 (только LibreOffice).
В этом случае SVG пребразуется в векторный рисунок старого Старовского SVM-формата, с которым MS_Office, AbiWord не работают. Возможности Calligra не проверял.

4. Экспорт в OOXML и обратный импорт файлов (только LibreOffice).
При сохранении ODT-файлов в формате DOCX все SVG-рисунки будут преобразованы в EMF. Обратный импорт файла и его сохранение в ODT-формате приведёт к очередной смене формата изображения с EMF на WMF.

Исходя из всего этого, пришёл к таким выводам:
1. Преобразование SVG при вставке как изображения в PNG формат является предпочтительным, так как позволяет адекватно работать с ODF-файлами большинству офисных пакетов.
2. Поселил на ПК Inkscape для экспорта  с его помошью SVG в PNG-изображения, которые и использую для вставки\замены_svg.


[вложение удалено Администратором]

ape

Файл, открывание которого LibreOffice-3.6.7 проиллюстрировано скриншотом, прилагаю.

[вложение удалено Администратором]

ape

#2
Цитата: ape от 20 апреля 2013, 09:32
3. Сохранение ODF-файла в ГОСТе, т.е. в ODF версии1.0\1.1 (только LibreOffice).
В этом случае SVG пребразуется в векторный рисунок старого Старовского SVM-формата, с которым MS_Office, AbiWord не работают. Возможности Calligra не проверял.
Calligra_Words 2.6.2 svm-изображения, как и MS_Office с AbiWord, не поддерживает, оставляя вместо рисунка пустое место.
---
*.svm - StarView MetaFile

frob

Цитата: ape от 20 апреля 2013, 12:14
Цитата: ape от 20 апреля 2013, 09:32
3. Сохранение ODF-файла в ГОСТе, т.е. в ODF версии1.0\1.1 (только LibreOffice).
В этом случае SVG пребразуется в векторный рисунок старого Старовского SVM-формата, с которым MS_Office, AbiWord не работают. Возможности Calligra не проверял.
Calligra_Words 2.6.2 svm-изображения, как и MS_Office с AbiWord, не поддерживает, оставляя вместо рисунка пустое место.
---
*.svm - StarView MetaFile


Вроде бы Inge Wallin пытался прикрутить SVM к Каллигре.

Что же касается SVG, то приличнее всего из свободных его поддерживает Firefox.

ape

Апнул тему, т.к. здесь большие плохие новости - fdo#62461 в Багзилле.
Суть:
Графический фильтр, начиная с LibO-4.0, получил "улучшения" из кода АОО. В результате вместо одного вставленного графического объекта, SVG, получаем в новой спецификации ODT, ODP и ODG файлов 2 объекта, исходный SVG и "кривой" PNG меньшего (в пикселях) размера - превьюшку. Если теперь в LibO-3.6;3.5 открыть и пересохранить такой файл, то SVG объект будет безвозвратно утерян, а кривая "превьюшка" станет единственным изображением.
LibO-4.x использует PNG-объект только для вывода на монитор и печать. При этом PNG-файл, внедрённый в тело текстового документа, презентации или рисунка, API не использует, а создаёт новый PNG-объект из внедренного SVG-файла каждый раз, когда открывается OD*-файл.
Что делать? Если есть подозрение, что ODF-файл содержит SVG-вставку, извлекать SVG архиватором и с помощью Inkscape экспортировать в PNG-растр, которым заменять SVG-вставку в ODF-файле.
---
Для иллюстрации эффекта предлагаю файл "410.odg", созданный LibO-4.1.0, одновременно открыть в LibO-4.1.3 и LibO-4.2.0, использующей модифицированный механизм преобразования SVG в PNG.

[вложение удалено Администратором]

greenman

#5
Цитата: ape от 13 ноября 2013, 09:58
Графический фильтр, начиная с LibO-4.0, получил "улучшения" из кода АОО.
Кто бы объяснил, почему они не хотят откатиться к старому коду? Из принципа "двигаться только вперёд"?

Надо бы попробовать, как ведёт себя с SVG AOO 4.0.1

ape

#6
Цитата: greenman от 13 ноября 2013, 19:40
Надо бы попробовать, как ведёт себя с SVG AOO 4.0.1
Попробуйте открыть прилагаемый файл. Думаю, что изображение будет отличаться от PNG, созданного LibO-4.2.0, т.к. АОО-4.0.1, имхо, ещё имеет старый фильтр, использовавшийся в АОО-4.0.0 и LibO-4.1.x.
--
P.S. ODT пришлось дополнительно архивировать, т.к. его "вес" неожиданно составил 2 МБ, то есть ~ в 5 раз больше, чем аналогичный файл, созданный LibO-4.1.4.
--
P.P.S. 22:15 АОО-4.0.х ведёт себя аналогично LibO-4.2.0, фильтр совпадает. Для того, чтобы убедиться, надо открывать 410.odg, PNG которого имеет маску - "красные квадраты". Скорость обработки много выше, а качество несколько ниже - алгоритм Ланкоша не используется.

[вложение удалено Администратором]

ape

Windows NT-5.1;2 LibODev 4.2.0.0.alpha1
Build ID: c2b9ad37f8a8de9c7dbdd76c86aecf6388107056
Если SVG-файл вставить как изображение, то при создании ODF-файла SVG теперь не сжимается. Результат - значительное увеличение веса файлов.

[вложение удалено Администратором]

frob

Цитата: ape от 14 ноября 2013, 22:55
Windows NT-5.1;2 LibODev 4.2.0.0.alpha1
Build ID: c2b9ad37f8a8de9c7dbdd76c86aecf6388107056
Если SVG-файл вставить как изображение, то при создании ODF-файла SVG теперь не сжимается. Результат - значительное увеличение веса файлов.
ODF -- это ж вроде zip-архив, нет?

ape

#9
Цитата: frob от 15 ноября 2013, 05:31
ODF -- это ж вроде zip-архив, нет?
Да, но если внимательно посмотреть на скриншот, то видно, что внутри архива 410.odt мы имеем сжатый (архивированный) SVG-файл размером ~170 KB. Архив 420.odt содержит этот файл в "натуральную" величину ~2 MB. Разница - более, чем в 10 раз!
Скорее всего, отказавшись от архивации SVG, хотели уменьшить время вывода на дисплей и печать, но необходимого эффекта не получили, так как время тратится на обработку вывода по алгоритму Ланкоша. Могла бы спасти многопоточность обработки, но её, похоже, нет: сравнивал время обработки Core 2 Duo (2 ядра, 3.33 MHz) c Xeon E3-1230v2 (4 ядра + 4 НТ потока, 3.3 MHz) - оно оказалось ~ равным.
--
Позже посмотрю временную статистику ГИМПа.

frob

Хмм.. забавно...

Не знал, что в ZIP можно сложить файлы и отдельно определить какие из них сжимать.

<vmiklos> frob, if it's a regression, please create a bug for it and i'll try to have a look.

Зафайлите?

ape

#11
Цитата: frob от 15 ноября 2013, 16:03<vmiklos> frob, if it's a regression, please create a bug for it and i'll try to have a look.
Зафайлите?
Ещё вчера: https://bugs.freedesktop.org/show_bug.cgi?id=71622
Добавил Миклоша в СС.

ape

#12
Цитата: greenman от 13 ноября 2013, 18:40Кто бы объяснил, почему они не хотят откатиться к старому коду? Из принципа "двигаться только вперёд"?
Исправили:
ЦитироватьComment # 24 on bug 62461 from Caolán McNamara
Ordered with favourite first, followed by fallback. Seems to work ok, testing appreciated. Proposed for 4-1 as https://gerrit.libreoffice.org/6680
В понедельник-вторник посмотрим результат.
--
@frob: Похоже (по ссылке), что от идеи с PNG не отказались?

frob

Цитата: ape от 15 ноября 2013, 22:46@frob: Похоже (по ссылке), что от идеи с PNG не отказались?
В этой идее самой по себе ничего такого экстремально плохого нет.
Не совсем понятно, что это за такие системы, на которых невозможно отрендерить SVG, а в остальном -- резерв как резерв.

ape

#14
Цитата: frob от 16 ноября 2013, 20:25
В этой идее самой по себе ничего такого экстремально плохого нет.
Не совсем понятно, что это за такие системы, на которых невозможно отрендерить SVG, а в остальном -- резерв как резерв.
1. Если не считать поведение Calligra - будут открыты 2 файла одновременно: SVG как векторный многообъектный рисунок и PNG в качестве вставленной картинки.
2. МСО и AbiWord
Считаю, что преобразование в PNG, внедрённого единственным Picture, более правильный путь:
- при сохранении в формате ОДФ-1.0\1.1 SVG всё равно преобразуется, только в SVM, старовский векторный метафайл, с которым, кроме наследников Стар-Дивижн, никто не работает;
- SVG при вставке как изображение теряет свою "многообъектность" и становится простой картинкой, требуя при этом достаточно много времени на редеринг по алгоритму Ланкоша;
- увлечение вставкой отодвинуло на 2-й план главную проблему - проблему экспорта SVG в ODG, застывшую на уровне 2008 года, когда расширение для ООо-2.4 попало в код ООо-3.
--
Появились сегодняшние мастер-сборки. Посмотрю, что на выходе.