I think, it needs to make other theme, about "DESKTOP" editor, isn't it?
Вид для печати
I think, it needs to make other theme, about "DESKTOP" editor, isn't it?
У меня часто возникает необходимость рисовать шрифты для разрабатываемых устройств. Очень рекомендую утилиту SG Bitmap FontEditor. Очень много красивых шрифтов под нее со спека перетащил, начиная с 6x6 и заканчивая 32x32, могу поделиться, если надо. Правда, ни один из них не пригодился, в коммерческое устройство пришлось рисовать самостоятельно, а до некоммерческих, где их можно заюзать, руки не доходят ;)
Кстати, эта утилита может TTF шрифт использовать в качестве шаблона, но на практике полезность сомнительна, т.к. обычно требуются шрифты шириной около 10, и до 16 в высоту, а при этих условиях импорт из ttf получается корявым.
И, по поводу хранения шрифтов разной ширины. Я делаю так: в момент инициализации программы прохожусь по всему шрифту, и для каждого символа считаю максимальную ширину каждой строки в битах (банально проверка крайнего бита, буквы выровнены по левому краю), по итогам записываю максимальную ширину каждой буквы куда-нибудь в ОЗУ. Дешево и сердито, не надо никаких доп. байт выделять, и при изменении шрифта все само пересчитывается программой. Насчет вывода особо не заморачиваюсь, т.к. в сигнальном проце устройства тактовая 600+ мгц, и надо умудриться написать вывод с тормозами :)
New theme about DESKTOP / FONTEDITOR / PROPORTIONAL TEXT / PRINTING FROM REAL ZX
http://zx.pk.ru/showthread.php?t=16295
эх как повезло - теперь точно нашёл то, что надо :) См. РЕВЮ №5 за 1994 год. Страница 10
Ссылка на мою прогу для редактирования пропорциональных шрифтов для телефонов Siemens mobile (RIP). Для других нужд (спек) тоже вполне подходит. Помимо телефонов народ использовал для изменения шрифтов в mp3 плеерах, dvd проигрывателях и прочем.
Ширина символа хранится в первом байте, при правке символа расчитывается автоматом.
http://v3.allsiemens.com/manual_rus.htm
а векторные шрифты никто не пробовал? что-то вспомнил, кажется DT`шники их придумали или как топытались раскрутить, был даже редактор и кажется печаталка...
В турбо-паскале вроде бы 7-м были шрифты векторные и либы для их использования, и вроде бы в 90-х кто-то портировал это дело на спек, но широкого распространения не получило, уж не знамо почему. Вру конечно, знамо - с математикой надо дружить, а для спека это несколько напряжно. Тут вон даже пропорционалные шрифты не быстро получаются, что уж говорить про векторные.
Не помню, писал я тут, как сам поступал с пропорциональной печатью, потому напишу:
формат был такой: 8 байт на символ, символ положен набок, 1 байт - длина символа в пикселях (по сути в байтах) + 7 байт матрица. Печаталось всё в буфер прямым копированием нужного количества байт из матрицы в текущую позицию буфера. После того, как вся строка напечатана, буфер копировался с поворотом через rr/rl прямо в нужную позицию экрана. Получалось довольно быстро, уж во всяком случае точно быстрее печаталок из РЕВЮ. Ну и сам эффект пропорциональной печати на тот момент был конечно восторженным.
Кстати, пробовал писать транспонирование знакоместа в 3 приёма (сначала меняем местами квадраты 4x4 (правый верхний, левый нижний), потом 2x2 (по аналогичной сетке), потом 1x1), оказалось 1494 такта - медленнее, чем pop de:rl e:rla:rl d:rla... (1176 тактов). Пичалька.
А на сколько я помню, там использовался прямой шрифт со сдвигом и OR'ом.
7 процедур на 7 возможных вариантов ширины?
Ага, я тоже разные варианты пробовал, в том числе и полубайтовые, а вот на 7 разных процедур, как у Витамина, в 97м году я не догадался, а может и пожмотничал памяти, сейчас уже не помню подробности.
---------- Post added at 18:50 ---------- Previous post was at 18:47 ----------
И да, еще идея была сэкономить памяти на символах одинакового написания за счет таблицы смещений по коду символа. В коде не было реализовано по причине мизерности выигрыша по памяти, все раскладки так и остались на бумаге.