Что означает код HRESULT 0x80097009 (MSSIPOTF_E_TABLES_OVERLAP)?

 
Предыдущий Следующий
MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT MSSIPOTF_E_TABLE_PADBYTES

MSSIPOTF_E_TABLES_OVERLAP

Две записи таблиц претендуют на одни и те же байты

MSSIPOTF_E_TABLES_OVERLAP возвращается, когда объявленные диапазоны таблиц пересекаются. В обычной компоновке OpenType запись определяет таблицу смещением и длиной; соседние таблицы могут разделяться небольшим промежутком выравнивания, но одна таблица не должна поглощать байты, объявленные для другой.

Общая таблица в коллекции TrueType не является автоматически ошибкой пересечения: каталоги коллекции могут намеренно ссылаться на общие данные таблицы. Важно, допускают ли такую ссылку конкретный контекст проверки и правила каталога. Для обычного файла одного шрифта пересекающиеся диапазоны убедительно указывают на неверное смещение или длину.

Как исследовать проблему

  • Отсортируйте записи по смещению и сравните конец каждого диапазона с началом следующего.
  • При работе с файлами .ttc/.otc проверьте индекс коллекции и каталог.
  • Исправьте расчёт компоновки в производителе; перемещение одной таблицы также меняет последующие смещения, контрольные суммы и подписи.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.