У нас есть код, который напрямую записывает файлы CGM (или интерактивные WebCGM). У нас есть полный контроль над всеми примитивами CGM и мы можем генерировать файлы версии 1, 3 или 4 по мере необходимости. В общем, CGM, который мы пишем, прекрасно визуализируется в различных стандартных рендерерах (MetaWeb, SDI, ISOView и т. д.) — эти рендереры позволяют нам масштабировать, панорамировать или масштабировать без дефектов.
К сожалению, у нас есть проблема, когда конечный пользователь импортирует одни и те же файлы в Framemaker (версия 10). Вид файлов CGM после первоначального импорта правильный. Однако если пользователь решит растянуть или сжать диаграмму CGM на странице, мы обнаружим, что:
1) при сжатии - не только шрифт текста уменьшается пропорционально (как и ожидалось), но также уменьшается межсимвольный интервал (класс 5 CGM, элемент 13) и коэффициент расширения символов (класс 5, элемент 12). В целом, текст непропорционально сжимается по горизонтали.
2) при расширении — увеличиваются все три параметра шрифта текста, межсимвольного интервала и коэффициента расширения символа — поэтому текст, который изначально был ограничен графическим полем, теперь будет значительно выходить за пределы правого поля.
Это похоже на ошибку в Framemaker. Однако у конечного пользователя также есть файлы, созданные третьими сторонами, которые правильно масштабируются. Мы скопировали функции этих файлов, в частности настройки:
version to: '1'
scaling mode to: ABSTRACT
scale to 0
using Text(class 4, element 4) in place of Restricted Text (class 4, element 5).
Мы также безуспешно экспериментировали с различными значениями межсимвольного интервала и коэффициента расширения символов (а именно, 1, 0 и 0,01). Как ни странно, для обоих этих элементов исходные файлы содержат значение «9.0E-44», которое представляет собой шестнадцатеричный код 0x00 0x00 0x00 0x40. Это выглядит как «значение секретного флага», но использование его в наших собственных файлах, похоже, не дает никакого эффекта.
Кто-нибудь знает значение этого флага и как его следует использовать?