Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   Шрифты от Palm'а на Спектруме (http://zx-pk.ru/showthread.php?t=5860)

CityAceE 29th July 2007 18:16

Шрифты от Palm'а на Спектруме
 
5 Attachment(s)
В продолжении этой темы...

Вот, разобрался, наконец, со структурой Палмовских шрифтов.

В аттаче исходник для вывода шрифта целиком, ну и сами шрифты... Программа написана тяп-ляп, лишь бы работала.

Хочется сделать возможным полноценное использование этих шрифтов на Спектруме.

CHRV 30th July 2007 12:56

Quote:

Originally Posted by CityAceE (Post 96168)
Вот, разобрался, наконец, со структурой Палмовских шрифтов.

:v2_devil: Где же наши любимые копирайтеры и поборники авторских прав...
Правильно Стас так их буржуев :).

Vitamin 30th July 2007 13:34

Вопрос еще как их выводить эти шрифты... Мелкие как обычные пропорциональные можно. А вот насчет больших- чисто декоративная функция а-ля "напечатать надпись". ИМХО

CityAceE 30th July 2007 13:49

Они пропорциональные не только по горизонтали, но и по вертикали. Это ключевой момент и их отличительная черта...

caro 30th July 2007 13:58

Quote:

Originally Posted by CityAceE (Post 96226)
Они пропорциональные не только по горизонтали, но и по вертикали. Это ключевой момент и их отличительная черта...

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


Code:

Структура файла фонта для Пальма

typedef struct FontTag {
 0  Int16 fontType;        9000h          тип фонта
 2  Int16 firstChar;        0003h    3 код первого символа
 4  Int16 lastChar;        001Ah  26 код последнего символа
 6  Int16 maxWidth;        000Bh  11 максимальная ширина в пикселях
 8  Int16 kernMax;        0000h        0
10  Int16 nDescent;        0000h    0
12  Int16 fRectWidth;        000Bh  11 обычно равно макс.ширине
14  Int16 fRectHeight;        000Ah  10 высота в пикселях
16  Int16 owTLoc;        00A1h  161 смещение от тек.адреса до табл.ширин /2
18  Int16 ascent;        0009h    9 число пикселей от верхушки до базовой линии
20  Int16 descent;        0001h    1
22  Int16 leading;        0000h    0
24  Int16 rowWords;        000Dh - 13
} FontType;
26  - Дальше идет Height строк BitMap

16+(161*2)-(26-3)*2 - Затем таблица смещений символов в BitMap

16+(161*2)  - Затем таблица ширины каждого символа

Надо иметь ввиду, что в файле слово записывается в формате: Старший, младший.

CityAceE 30th July 2007 14:05

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

Vitamin 30th July 2007 15:11

В целях оптимизации скорострельности вывода одно из измерений символа (максимальное в шрифте) лучше не делать больше 8 пикселов. Иначе скорость вывода упадет весьма и весьма.

CityAceE 30th July 2007 17:25

Quote:

Originally Posted by Vitamin (Post 96236)
Иначе скорость вывода упадет весьма и весьма.

Да, при использовании такиих шрифтов скорость вывода будет просто черепашьей, это понятно с самого начала... Но всё же поэкспеременитровать можно :)

Vitamin 30th July 2007 18:01

Если что, могу подкинуть достаточно быструю процедуру печати пропорциональным шрифтом до 8 пикселов высотой. Она правда достаточно навороченная, но можно обчекрыжить что не надо.

CityAceE 31st July 2007 04:06

Я попробую написать поцедру сам. А потом мы попробуем её здесь все вместе оптимизировать. Хорошо?


All times are GMT +4. The time now is 21:19.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.