Прочитал вчера, как всегда занятную, запись от Сергея «Бомба формата doc»
и первой мыслью было «Что ж теперь всем на plain text переходить?».
Результатом некоторых мысленных усилий стали следующие
выводы (может не слишком стройно, но как уж есть).
Итак, что определяет, можем ли мы доверять содержимому
документа или нет, и как нам избежать подлога, по схеме, описанной Сергеем или
родственной ей:
● Основная
проблема состоит в том, что содержимое документа (т.е., собственно, биты и
байты, составляющие тело документа) и то, что мы видим на экране или на печати
(т.е. представление документа), суть не одно и то же. Представление документа
определяется тем, как его формирует тот или иной редактор или программа
просмотра. Причем, чем
сложнее формат документа, тем сложнее проверить, на сколько внутреннее
содержание соответствует представлению.
● Так
как программа просмотра работает не в вакууме, а в определенной среде,
включающей свои библиотеки визуализации и печати, то мы должны обладать некоторым
уровнем доверия ко всей системе, в которой работаем.
Отсюда получаем:
● Требования к формату документа. Формат
документа должен допускать единственную трактовку своего содержимого,
независимо от состояния среды, в которой происходит работа с документом. Т.е.
документ, может включать и макросы, но только при условии, что макросы
оперируют только данными самого документа и никак не данными среды. Например: макрос, подсчитывающий сумму
элементов таблицы в документе, допустим, а вот макрос, использующий функцию
получения даты или генерирующую случайное число – не допустим.
● Требования к программе просмотра.Программа просмотра должна однозначным
образом визуализировать документ, основываясь только на его содержимом. Обязательным,
но крайне трудно выполнимым условием здесь является проверка, соответствия
программы некоему стандарту или эталону, т.е. что программа всегда формирует
изображение в соответствии с требованиями формата документа. Если честно, я
плохо представляю, на сколько это выполнимо (по-моему, вообще не выполнимо). Для примера можно привести ситуацию с RTF
(который, в общем-то, открыт, но все редакторы, даже от одного производителя –
Microsoft – показывают его по-разному). Или PDF (который, собственно, и задумывался
для того, чтобы везде отображаться одинаково, но который все-таки зависит от
просмотрщика, его отображающего, и даже если отказаться от использования
встроенного JavaScript, остаются проблемы со шрифтами, если они не внедрены, с
необязательным сглаживанием, с формами, и т.д.). Да что там – ведь даже
простейший plain text этому требованию никак не удовлетворяет!!!
● Требования к среде. Здесь - совсем
плохо, т.к. по идее среда должна обеспечивать точное (попиксельно!) отображение
документа. При этом, должны в пределах определенных допусков оставаться
отклонения в цветопередаче, в искажении картинки при масштабировании и
сглаживании, и т.д.
Вот так. А теперь смотрю на все это и понимаю, что
единственным подходящим стандартом может быть, пожалуй, только графическое
изображения, да еще и с определенными размерами букв в тексте…
Хотя… может я просто сгущаю краски…