Дело в том, что типы перечислений (enumerate), коим является TFontPitch, в FPC по-умолчанию имеют размер 4 байта (32-бита).
В делфи, enumerate упаковываются под минимальный размер, необхдоимый для их хранения - в данном случае 1 байт.
FPC можно указать упаковывать перечисления точно так же, как и делфи, директировой $PACKENUM
Добавлено спустя 5 минут 9 секунд:
vfiuchcikicshuusrch писал(а):в исходниках лазаруса нигде так и не нашел что это за тип такой TFontPitch = (fpDefault, fpVariable, fpFixed);
и почему он равен 4 (integer)
TFontPitch объявлен в модуле Graphics. (lazarus/lcl/graphics.pp).
Как варинат, можно попробовать пересобрать LCL с упаковкой перечислений до делфи совместимости, но я бы не стал, т.к. мало ли что-нить где-нить на размер в 4 байта завязано.
Вместо этого, предлагаю изменить чтение/запись файла, чтобы она всегда использовала делфи-совместимый запись значения. Т.е. кокретно в случае лазаруса делала бы конвертацию из 4х в 1 байт.
и кстати, приведение TFontPitch к байту должно работать без проблем.