PDA

Просмотр полной версии : вывод символа 4*8



Dexus
10.04.2007, 07:47
Вывод делать через маску. Всего два варианта: #f0 и #0f
Символы сами кодировать тоже выгоднее двойными. Одновременно и левую и правую половинку. Т.е. допустим #00,#77,#55,#55,#55,#55,#77,#00 - "квадратный" вариант нолика. И сдвиги нафиг не нужны.

Vitamin
10.04.2007, 10:04
Если мне не изменяет склероз, есть 3 подхода к печати символов 4х8: экономный, нормальный и быстрый. Все 3 подхода отличаются форматом хранения символов в шрифте
1)в шрифте только печатные символы (32-255, может быть меньше) по 2 в 8 байтах. весьма экономно, но относительные трудности с расчетом адреса символа и его доставанием
2)в шрифте символы продублированы, сам шрифт имеет "экранную" структуру (для ускорения). Вывод по маске 15/240 (#0f/#f0).
3)два шрифта в экранном формате. В одном символы слева, в другом- справа. Крайне неэкономно по памяти, зато очень и очень быстро. Обычно такой вариант редко используется, поскольку выигрыш в скорости обычно не перекрывает проигрыша в памяти (2кб).

Если нужна печать без привязки к знакоместам, то тут почти все ухищрения по скорости идут насмарку, ибо надо скроллировать данные перед выводом. В таком случае символы лучше хранить по одному в 8 байтах, прижатые к левому краю. Экранную структуру шрифта лучше всегда использовать для ускорения вывода и поиска символа.
Куча всего разного собрано на http://www.zxdn.narod.ru/

Evgeny Muchkin
10.04.2007, 10:54
Для вывода без привязки к знакоместу можно неэкономично хранить в памяти 8 уже сдвинутых циклически шрифтов, а затем их выводить, используя соответствующую маску, а-ля вывод 4*8.

В плюс к этому, для ускорения вывода, имеет смысл делать вывод не посимвольно, а построчно; т.е. сначала рисуется верхняя линия всей текстовой строки, затем следующая (ниже) и так далее.

Grand
11.04.2007, 03:28
Для полной ясности укажу, что шрифте в каждом знакоместе (8*8) хранится по 2 символа.В моём Grand's Boot (http://grands.land.ru/creative.htm) процедура печати очевидно именно такая (написана мной в 2000 году): весь фонт занимает в два раза меньше места. Исходники на ZX Open Source (http://opensourcezx.untergrund.net/): http://opensourcezx.untergrund.net/c_soft-commander-grand_boot2.html.

MYA
20.04.2007, 18:41
Если критична память то
можно попробовать следующий алгоритм:
хранить в памяти не 1 набор знакомест, а 4 т.е.
1 это нормальное значение ххххХХХХ,
2 это сдвинутое значение XxxxxXXX,
3 xxxxXXXX
4 xxxXXXXx
маленькие х это само знакоместо, большие пустота.
Таким образом чтоб получить 3 вариант XXxxxxXX требуется сдвинуть 1 раз или влево или вправо.
Если память не критична то наприсовать 5 табличку.
впринципе этот алгоритм можно подправить под любое колво пикселей.

А езе самый быстрый вариант это создать отдельно табличку с 2 буквами. по идее навскидку 32 русских буквы комбинации кадой с каждой это 1024 вариации 32*32.
а в букве 8 сайт соответсвенно 1024*8=8192. зато оч много проблем решается.

gRAVER_ZX
30.04.2007, 16:32
В своем Сапере - смотри ветку про игры - я в бейсике сделал шрифт 4*8. Для этого использовал два нарисованных шрифта - одна буква нарисована слева, другая соответственно справа - а потом при печати накладывал их по OR'у.

MYA
03.05.2007, 15:55
это есть долго.

gRAVER_ZX
04.05.2007, 01:58
с компилятором DELPHIN быстро.

Andrew771
12.04.2011, 16:32
Меня всегда интересовал вопрос: как в таком шрифте делать буквы Ж, Ш и Щ :)

---------- Post added at 16:32 ---------- Previous post was at 16:29 ----------


А езе самый быстрый вариант это создать отдельно табличку с 2 буквами. по идее навскидку 32 русских буквы комбинации кадой с каждой это 1024 вариации 32*32.
На самом деле, комбинаций меньше. Т.к. после гласных нет мягкого знака, не встречаются две подряд буквы ЙЙ, ЫЫ и т.п. К тому же, неэкономное хранение этих комбинаций с лихвой компенсируется экономным в 2 раза кодированием слов из них. Так что, предложенный вариант имеет место быть.

Sinus
12.04.2011, 19:27
###. #.#. #.#.
###. ###. ###.
###. ###. ###.
.#.. ###. ###.
###. ###. ###.
###. ###. ###.
###. ###. ###.
.... .... ..#.


как-то так

Andrew771
12.04.2011, 22:34
как-то так
если честно, не понял.. Закрашенный прямоугольник что ли? :)

Sinus
13.04.2011, 12:13
а чо тут понимать то? :)
точка "." - нет пикселя, "#" - есть пиксель

открываешь BGE (или Art Studio, да MS Paint на худой конец), рисуешь там это и смотришь.

Andrew771
13.04.2011, 13:19
речь-то про 4х8 пикселей

jerri
13.04.2011, 15:54
так там и есть 4*8 :)

NovaStorm
14.04.2011, 11:09
<fatality mode/>А как отличить W и Ш? А в нижнем регистре?

Sinus
14.04.2011, 14:14
W Ш w ш

#.#. #.#. .... ....
###. ###. .... ....
###. ###. #.#. #.#.
###. ###. ###. ###.
###. ###. ###. ###.
###. ###. ###. ###.
.#.. ###. .#.. ###.
.... .... .... ....

приаттачил жесть для настоящих джедаев - шрифт 4x5 из TargeT-а