LINUX.ORG.RU

libwmf: помогите русский текст в wmf конвертнуть


0

0

Использую библиотеку libwmf версии 0.2.8.3 для конвертирования wmf в растровый формат (png). В основном эти wmf это выдранные из rtf файлов изображения математических формул.

Программа wmf2gd не все математические смиволы конвертирует нормально, не конвертирует знаки отношения и принадлежности к множеству, например. Не конвертирует русский текст.

Я уж разные URW шрифты пробовал, в том числе шрифты от Филиппова (urw-fonts) из поставки ASPLinux 10, в них заведомо кириллица присутствует -- без толку, латинские и греческие символы, а также знаки интегралов, корня и т.п. преобразуются, а вместо русских букв пробелы.

Могу посочуствовать. Несколько лет назад делал программу, которая читала sylk-файлы, сделанные exel-ем 97. Оказалось, что кирилические символы кодировались как эскейп-последовательности (или что-то в этом роде). wmf были еще в 16-битных windows. IMHO очень возможно, что в wmf могли применить подобный прием для кодирования кирилицы. Но самое интересное, что когда я создавал собственный sylk с нормальной кодировкой - exel его привильно читал. Иными словами - эта прблема может возникать в зависимости от того, какая программа создала wmf.

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

Спасибо за сочувствие.

Здесь эти wmf файлы -- это выдраные из rtf файлов {\pict\wmetafile8 ... которые являются графическим образом математических формул MicrosoftEquation. Эти формулы внутри rtf хранятся в двойном виде: в виде собственно ole данных от Equation и данных для wmf файла. Вот wmf составляющую я и извлекаю из rtf файла. Например, XnView нормально эти файлы показывает и кириллицу тоже, а вот libwmf увы -- нет.

Я посмотрел внутрь wmf -- там кириллический текст есть и явно прописаный и в каком-то странном виде, но в любом случае он не отображается. Странный вид это, например, следущее: есть три раза повторённое слово "при", так вместо него три раза повторено "пр" и несколько байт типа "пр"+0x0060006000600060006000600060006000CD и т.п.

Но даже явно прописаная кириллица не отображается. Что делать -- не знаю, исходники libwmf и её работы со шрифтами слишком долго ковырять.

Хоть подскажите в каком направлении суетиться -- шаманить со шрифтами или с самой библиотекой?

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

Если время терпит, то отберу у знакомого свою книжку по графическим форматам. В ней было описание wmf. Может что и выяснится. Кстати, sylk-кодировку я тогда вычислил :).

А латиница нормально прописывается?

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

>Хоть подскажите в каком направлении суетиться -- шаманить со шрифтами или с самой библиотекой?

Не думаю что шаманство со шрифтами или с библиотекой поможет. Тут, скорее всего, нужно просчитать эту дрянь с текстом. И перед работой с библиотечными функциями преобразовать файл.

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

Кстати, задам еще вопрос. А чем вам не подходит NConvert с сайта XnView (там еще есть SDK)?

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

> Если время терпит, то отберу у знакомого свою книжку по графическим форматам. В ней было описание wmf.

В принципе, в составе libwmf имеется довольно подробное описание этого формата, но там я про кириллицу ничего не нашёл, просто говорится, что указывается шрифт для символов и более ничего. А время пока терпит ;-)

> Кстати, sylk-кодировку я тогда вычислил :).

Я не слышал или не запомнил ранее, что это за кодировка?

> А латиница нормально прописывается?

Нормально. Знаки интеграла, корня и т.п. нормально прорисовывается, за исключением символов принадлежности к множеству и знаков отношения (<,<= и т.п.), хотя знак равенства нормально виден, впрочем он же в Latin-1 присутствует.

> Тут, скорее всего, нужно просчитать эту дрянь с текстом.

Я всё-таки, склоняюсь к мысли, что дело в шрифтах, поскольку в wmf файле для надписей указан Times New Roman Cyr, а libwmf оперирует Postscript шрифтами, хотя с другой стороны какая разница -- я в любом случае использовал шрифты с cp1251 кодировкой. (С KOI8 тоже самое).

> А чем вам не подходит NConvert с сайта XnView (там еще есть SDK)?

Тем что не использовал его :). Тем более, XnView не с открытыми исходниками, так же как и NConvert, а прогу я делаю, хотя и не для распространения, а для сугубо внутренних целей, но нужно чтобы лицензия была совместима с GPL, поскольку есть масса заимствованного кода GPL, а вероятность распространения программы всё-таки существует.

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

Кстати, блин только сейчас допёр вставить wmf в документ OOo, отображает всё нормально. :) Жаль исходников под рукой нет, придётся в понедельник качать, хотя говорят, что разбираться в исходниках OOo ещё та задача.

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

Тут у себя в архивах порылся и нашел описание формата. О кирилице тоже ни слова. Однако интересные вещи имеются. Кроме Windows WMF есть еще разработка от Aldsus (когла-то до фотошопа под windows доминировал Aldsus PhotoStyler). В доках XnView WMF указан именно как Aldsus WMF (не все просмотрел, мог что-то пропустить). Да и сам WMF от MS имеет несколько версий. Если интересует могу скинуть описание.

Меня, в свою очередь, заитересовал ваш экземпляр WMF. Не моглибы скинуть его мне на мыло (const-s гавгав ukr.net).

kosmonavt
()
Ответ на: комментарий от anonymous_incognito

>Я не слышал или не запомнил ранее, что это за кодировка?

А черт ее знает. SYLK - это формат файла електронной таблицы, поддерживается в exel. Этот exel какого-то лешего в SYLK писал кирилицу в своем варианте. Все что запомнилось - это то, что кирилические символы начинались с символа с кодом 27 и были, кажеться, переменной длины. Пришлось кабрать алфавит ну и т.д. Вроде бы и в ворд-97 иногда самопроизвольно писал в RTF эту фигню.

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

> Кроме Windows WMF есть еще разработка от Aldsus (когла-то до фотошопа под windows доминировал Aldsus PhotoStyler).

Microsoft то ли совместно с Aldus его разработала, толи лицензировала его.

> Да и сам WMF от MS имеет несколько версий. Если интересует могу скинуть описание.

Если не слишком большое, то давайте, хотя возможно у меня уже есть :)

> Не моглибы скинуть его мне на мыло

Выслал с аттачем wmf_examples.tar.bz2. Интересно, как они у вас увиделись?

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

>для надписей указан Times New Roman Cyr

Cyr - в названии шрифта. Убрать Cyr и возможно libwmf сделает все правильно. Кстати в ворд, начиная с v2000, тоже иногда глючит на Cyr.

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

> Cyr - в названии шрифта. Убрать Cyr и возможно libwmf сделает все правильно.

Не помогло.

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

>Интересно, как они у вас увиделись?

Не очень. Подробности письмом. Поиграюсь на днях с WMF, может вытащу что-нибудь. Хотя формат и не такой уж сложный. Можно попытаться конвертор написать с нуля.

Ну ладно покидаю этот форум, если что-то выясню - создам дискуссию.

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

> Можно попытаться конвертор написать с нуля.

Можно и с нуля, но зачем раз уже есть libwmf?

> Ну ладно покидаю этот форум, если что-то выясню - создам дискуссию.

Ok. Если решу проблему тоже сообщу об этом.

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