User Tools

Site Tools


hidensityfonttype

Если собранный вами шрифт не показывается, то одной из вероятных причин может быть неправильно указанный тип шрифта.

Тип шрифта - это 16-битное слово в начале ресурса, указывающее системе на характер использования. Первое правило: при замене шрифта в программе следует скопировать два байта из оригинальных шрифтов. Логика выбора типа поля не всегда понятна, поэтому лучше не оригинальничать.

Старые шрифты используют тип 90 00. Пользовательские новые шрифты используют тип 92 00. Системные новые шрифты используют тип 00 92 (два байта обменены местами). Второе правило: fextract понимает только эти типы шрифтов.

В текстовом представлении тип задается в первой строке описания шрифта в десятичном виде

fontType 36864

. Правило 3: pilrc сам прибавляет 512 к указанному значению поля. Так что в декомпилированном fextracом файле нужно уменьшить значение на 512.

Поскольку народ спросил о точном назначении поля, я ответил

насчет “неизвестного поля“. я писал факу не для программистов, поэтому намеренно опускал неважные детали.
собственно значение поля более-менее понятно. изначально поле типа перешло из маковских NFNT шрифтов,
причем ни один из его стандартных битов не использовался. вместо этого в нем поднимали неиспользуемые биты.
в 3.5-4 оси добавили биты для substituting fonts (я не очень понял по исходникам оси как их использовать),
и еще один бит добавился для hi density fonts. общая идея такая: эти поля проверяются системой, причем 
допустимо только строгое соответствие с тем, что она ожидает. Из-за фичи pilrc по добавлению 0x200 к значению 
поля человек может долго сидеть и чесать репу, почему все не работает или валится. главку я добавил только ради 
объяснения этой неочевидности.  
hidensityfonttype.txt · Last modified: 2004/01/15 13:00 by 127.0.0.1