Одного шрифта Unicode, вследствие гораздо большего количества символов в нем, достаточно для поддержки всех языков и платформ. Формат и синтаксис файлов описания шрифтов Unicode практически идентичны формату и синтаксису файлов описания обычных форм.
Основное различие заключается в синтаксисе заголовка шрифта, который выглядит так:
*UNIFONT,6,font-name above,below,modes,encoding,type,0
Параметры имя_шрифта , сверху , снизу и режимы задаются так же, как и для обычных шрифтов. Смысл двух остальных параметров описан ниже:
Кодировка шрифта. Может иметь одно из следующих целых значений:
0 Unicode
1 Упакованный многобайтовый 1
2 Файл формы
Информация о способе внедрения шрифта. Определяет, является ли шрифт лицензионным. Лицензионные шрифты нельзя ни модифицировать, ни распространять. Возможные значения:
0 Шрифт может быть внедрен
1 Шрифт не может быть внедрен
2 Внедрение осуществляется без возможности модификации
Другим важным различием является способ обработки ссылок на субформы (код 7). Если в описании шрифта присутствует такая ссылка, следующие за кодом 7 данные интерпретируются как 2-байтовое значение. Это влияет на общее количество байт данных ( число_байт ), записанное в заголовке описания формы. Например, в файле romans.shp можно найти такое описание формы:
*00080,4,keuroRef 7,020AC,0
Второе поле в заголовке показывает, сколько байт занимает данное описание. Тем, кто ранее не работал со шрифтами Unicode, может показаться, в этом случае длина должна равняться 3 байтам, а не 4, но если изменить таким образом значение длины, возникнет ошибка компиляции SHP-файла. Даже если номер формы, на которую выполняется ссылка, занимает всего один байт (т.е. меньше или равен 255), компилятор всегда отводит под данное поле 2 байта, так что это необходимо учесть в заголовке.
Еще одно видимое различие между шрифтами Unicode и обычными шрифтами относится к формату записи номеров форм. В определениях форм шрифтов Unifont, поставляемых с программы, используются шестнадцатеричные, а не десятичные номера шрифтов. Хотя это и не обязательно, соблюдение данного соглашения намного упрощает ориентацию в файле (особенно при обращении к символам-формам с помощью кода \U+).