6) Реперная точка для специальных штрихов (см. п.5) задается абсолютными координатами X, Y.
Для обычных штрихов абсолютные координаты - непозволительная роскошь. Реперная точка (origin) у них кодируется 5-битным номером, т.е. допускается не более 32 разных реперных точек на шрифт.
формат вставки обычных штрихов в битовое поле символа: (gptick):
bits[15:11] = origin# (0..31)
bits[10: 8] = rotation code (0..7)
bits[ 7: 0] = tick# (32..127)
-- номера 0..31 и 128..256 зарезервированы для специальных штрихов (см. ниже)
формат прямой линии (lntick)
bits[15:12] = X (0..11)
bits[11: 8] = Y (0..15)
bits[ 7: 5] = line code: 000b (short lines, 2..7pix), or 111b (longer lines, 8..15pix)
bits[ 4: 3] = rotation code (0..3)
bits[ 2: 0] = length, pix
-- линий с длиной 0 или 1 пиксел не бывает. их коды зарезервированы для штрихов, инвариантных операции поворота (см. ritick).
формат ротационных инвариант (ritick)
bits[15:12] = X (0..11)
bits[11: 8] = Y (0..15)
bits[ 7: 1] = 000xx00b
bits[ 4: 3] = reserved (currently 00)
bit [ 0 ] : 0 = single pixel; 1 = 8pix ring
формат центрально-симметричных фигур (cstick)
bits[15:12] = X (0..11)
bits[11: 8] = Y (0..15)
bits[ 7: 3] = 11000b
bit [ 2 ] = rotation: 0 = flat; 1 = diagonal
bits[ 1: 0] = tick#
формат сложносоставных символов (cxtick)
bits[15:11] = origin# (0..31)
bits[10: 9] = char# (higher 2 bits)
bit [ 8 ] = rotation: 0 = no turn; 1 = turned
bits[ 7: 6] = 10b
bits[ 5: 0] = char# (lower 6 bits)
-- этот тип пока не реализован. Может быть полезен для дополнительного сжатия таблиц рисования,
определяя символы через уже определенные другие символы (b -> q, d -> p, и т.п.)
SoUrcerer wrote:Пощупать где можно? А-версия заработает на не-АМД?
Парсер кривой пока, даже не собирается. работаю.
Заливаю в А-код, чтобы не мусорить в основном транке.
Ограничение только одно - 32-битная графика.
На этой неделе можно будет пощупать, заодно сравним скорость отрисовки.
Теперь осталось неправильные закорючки поправить где надо.
... и приниматься за новые шрифты, побольше, побольше!
NSVF.png (9.94 KiB)
Viewed 10467 times
А размером - поменьше, поменьше.
Парсер занимает меньше 600 байт, еще около 200 в таблицах закорючек (они общие для всех шрифтов).
У каждого шрифта своя таблица адресов (512 байт) и карусель закорючек - всего 688 байт для вот этого "шрифта".
Last edited by art_zh on Fri Mar 16, 2012 2:38 am, edited 1 time in total.