Недавно в постгресовской документации начали появляться иллюстрации. Красивые такие диаграммы, нарисованные в векторном SVG-формате.
А мы тут при подготовке первого релиза первого нашего продукта на базе 13-й версии решили еще и проверить, что в поставляемых с windows-версиях chm-файлах все в порядке.
И обнаружили, что не всё - картинки не показываются.
Стали разбираться. Выяснили, что
- В docbook xml существует два способа вставлять картинки
новый, правильный
<imagedata fileref="images/genetic-algorithm.svg" format="SVG" width="100%"/>
и старый, неправильный, который скоро перестанет поддерживаться:
<graphic scalefit="1" width="95%" fileref="demodb-bookings-airlines.png"/>
Первый стайлшитом транслируется в тэг <object>, а второй - в старый добрый <img>.
- Микрософтовский html help compiler, который не менялся как бы не с прошлого века,
<img> знает и любит,
и если найдет в html-е этот тэг, не забудет запаковать файл, указанный в его атрибуте src, даже если в
проектном файле (.hhp) этот файл не упомянут.
-
По умолчанию htmlhelp вызывает для отображения хелп-страниц интернет эксплорер в режиме совместимости с 7-й версией, которая svg показывать не умела.
То есть если воткнуть туда png или jpg как graphics, то все прекрасно покажется, лишь бы в момент компиляции
нашелся нужный файл. Если это svg, то нужен уровень совместимости 9-й версией эксплорера, а чтобы стильный модный, молодежный <object> отрисовался корректно, так и вообще с 11.
Но, оказывается если написать в начале файла (в тэге <head>) магическое заклинание
<meta http-equiv="X-UA-Compatible" content="IE=11">
то все начинает показываться правильно. При условии, конечно, что вы не забыли добавить svg-файлы в проект явным образом.
Надо всего лишь после того как отработал xsltproc пробежаться каким-нибудь средством пакетного редактировани по всем сгенерированным html-файлам и добавить этот тэг. Например:
sed -i '/<head>/a\
<meta http-equiv="X-UA-Compatible" content="IE=11">
' *.html
(ах, у вас на машине нет msys с sed-ом и башем? Ну так вы все равно постгрес без них не соберете, не говоря уж о том, чтобы с докбуковской докмуентацией работать).