Page 1 of 5

Re: Немасштабируемые векторные шрифты

Posted: Tue Nov 29, 2011 12:21 am
by art_zh
(продолжение. Начало - в первом посте)

6) Реперная точка для специальных штрихов (см. п.5) задается абсолютными координатами X, Y.
Для обычных штрихов абсолютные координаты - непозволительная роскошь. Реперная точка (origin) у них кодируется 5-битным номером, т.е. допускается не более 32 разных реперных точек на шрифт.

Code: Select all

формат вставки обычных штрихов в битовое поле символа: (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, и т.п.)

Re: Немасштабируемые векторные шрифты

Posted: Tue Nov 29, 2011 8:00 am
by SoUrcerer
Пощупать где можно? А-версия заработает на не-АМД?

Re: Немасштабируемые векторные шрифты

Posted: Tue Nov 29, 2011 8:35 am
by Mario
Если перенести в trunk то вполне может работать - это же не платформа-зависимая часть.

Re: Немасштабируемые векторные шрифты

Posted: Tue Nov 29, 2011 10:05 am
by SoUrcerer
Я, конечно, сам такой - ничего не показываю, пока не посчитаю, что можно показывать. Но очень уж посмотреть хочется.

Re: Немасштабируемые векторные шрифты

Posted: Tue Nov 29, 2011 11:52 am
by art_zh
SoUrcerer wrote:Пощупать где можно? А-версия заработает на не-АМД?
Парсер кривой пока, даже не собирается. работаю.
Заливаю в А-код, чтобы не мусорить в основном транке.
Ограничение только одно - 32-битная графика.
На этой неделе можно будет пощупать, заодно сравним скорость отрисовки.

UPD. Уже собирается :)

Re: Немасштабируемые векторные шрифты

Posted: Tue Nov 29, 2011 1:55 pm
by Mario
А разве проблемно для 24 бит допилить? Другие разрешения, кроме 24 и 32 в Колибри по факту не используются.

Re: Немасштабируемые векторные шрифты

Posted: Tue Nov 29, 2011 2:27 pm
by art_zh
Больших проблем с 24-битным режимом не должно быть - отличие только в PutPixel

Серьезная разница только с VGA (и по-моему даже ЕGA еще можно сэмулировать). В DosBoxe ядро не сможет само себя загружать :lol:

Хотя по большому счету все можно свести к тому же putpixel.

Re: Немасштабируемые векторные шрифты

Posted: Tue Nov 29, 2011 2:33 pm
by Mario
Если никто не ломал, то для 320*240*256 и 640*480*16 создавался буфер и уж из него все копировалось на экран.

Re: Немасштабируемые векторные шрифты

Posted: Thu Mar 15, 2012 4:13 am
by art_zh
После (технического) перерыва вернулся к вычесыванию блох из НВШ.

Парсер прямых линий и некоторых спецштрихов наконец заработал :D
"Прямолинейные" символы вроде П или Щ отлично рисуются.

сложные штрихи пока виснут.

PS. Технические версии выкладываю в SVN "для докУменту".
Есть причины.

Re: Немасштабируемые векторные шрифты

Posted: Fri Mar 16, 2012 2:08 am
by art_zh
Уфф, этот парсер меня вконец запарсил :D

Теперь осталось неправильные закорючки поправить где надо.
... и приниматься за новые шрифты, побольше, побольше!
NSVF.png
NSVF.png (9.94 KiB)
Viewed 13763 times
А размером - поменьше, поменьше.
Парсер занимает меньше 600 байт, еще около 200 в таблицах закорючек (они общие для всех шрифтов).
У каждого шрифта своя таблица адресов (512 байт) и карусель закорючек - всего 688 байт для вот этого "шрифта".

Re: Немасштабируемые векторные шрифты

Posted: Fri Mar 16, 2012 2:37 am
by Mario
Больше! Больше! Больше! Чорт! Больше 200 не дает! Но все равно больше чем 146%

Как там с заполнением кишков у больших шрифтов?

Re: Немасштабируемые векторные шрифты

Posted: Fri Mar 16, 2012 11:07 am
by SoUrcerer
Мда, мои шрифты побольше занимают, однако. На два порядка.

Re: Немасштабируемые векторные шрифты

Posted: Fri Mar 16, 2012 8:12 pm
by XVilka
Браво, art_zh! Отличная работа!

Re: Немасштабируемые векторные шрифты

Posted: Fri Mar 23, 2012 4:19 am
by art_zh
#2499: закорючки перенумерованы.
Выделено больше места для самых ходовых 5- и 6-пиксельных элементов.

Блин, как же сложно оказывается эти шрифты рисовать :(
Но это плата за очень плотный формат и распаковку символов "слёту" на экран, без битмапов, .

Re: Немасштабируемые векторные шрифты

Posted: Tue Mar 27, 2012 1:59 am
by art_zh
Гы, однако они очень легко "масштабируются":
Spoiler:
NSVF.png
NSVF.png (10.5 KiB)
Viewed 13627 times
дочищаю кракозябры...