Просмотр полной версии : Пропорциональный шрифты
moroz1999
29.06.2011, 23:45
Есть ли какой-то устоявшийся стандарт хранения пропорциональных шрифтов?
Каким редактором можно их редактировать?
Есть ли где-то коллекции пропорциональных шрифтов?
Заранее спасибо.
Есть ли какой-то устоявшийся стандарт хранения пропорциональных шрифтов?
В основном, в 8м байте битплана символа находится информация о ширине символа. Сам формат хранения стандартен - 768 или 2048 байтовый файл.
В одном из zx-review было кое-что на эту тему (номер не упомню).
Для QHTV (http://vtrdos.ru/sbor/QHTS065.ZIP) писал свою печаталку с упором на скорость работы и эффекты.
Формат шрифта простой- экранный формат, в первом байте- ширина символа. В остальных байтах- растр, прижатый к левому краю.
Сорцы http://opensourcezx.untergrund.net/c_soft-text_editor-qhts065_src.html
Каким редактором можно их редактировать?
любой редактор шрифтов, просто в 8й строке в двоичном виде отображаешь ширину пикселя.
Может кто и делал редактор конкретно для проп.шрифтов, но не вспомню ни одного.
moroz1999
30.06.2011, 00:33
И всё же, в восьмой или первой строке сделать?
Я тут делаю мини-тулу на php для собственных нужд, чтобы на входе подавать TTF шрифт, набор символов и размер, а на выходе - готовый для использования на ZX файл.
Ну, естественно, такой шрифт после конверсии нужно будет ручками допилить, чтобы получить нормальный результат, но это уже будет кое-что.
Не обращайте внимания, что на PHP - можно скомпилить и в exe как command-line тулу.
---------- Post added at 23:22 ---------- Previous post was at 23:21 ----------
А, еще - как быть с высотой? она любая может быть? иногда ведь неплохо и 16, и 24 иметь.
---------- Post added at 23:26 ---------- Previous post was at 23:22 ----------
ZX-Press подсказывает, что Professional Font Editor пропорциональные шрифты умеет:
http://vtrdos.ru/system/PFE_71.ZIP
Сейчас попробую, что он умеет и как.
---------- Post added at 23:33 ---------- Previous post was at 23:26 ----------
Не похоже, чтоб он умел пропорциональные шрифты.
А, еще - как быть с высотой? она любая может быть? иногда ведь неплохо и 16, и 24 иметь.
обычно высота символов в шрифте неизменна.
И всё же, в восьмой или первой строке сделать?
могут конечно быть вариации... но использовал у себя с кодировкой в 8м байте.
moroz1999
30.06.2011, 00:46
Честно говоря, я удивлен, что нет устоявшегося стандарта.
Честно говоря, я удивлен, что нет устоявшегося стандарта.
А много ли случаев применения пропорциональных шрифтов на практике?
NovaStorm
30.06.2011, 12:18
>на практике?
На практике, при высоте в 8px, как смотрел шрифты последний раз, получалось, что символов, отличающихся по ширине от основной массы, всего-то около 4-6 штук. Потому наверное для большинства случаев овчинка выделки и не стоит.
moroz1999
30.06.2011, 21:42
Это очень зависит от шрифта. Основное применение - игры и демки, наверное.
Основное применение - игры и демки
В демках применяют шрифты в основном из арт студии. Такая коллекция существует у ААА.
moroz1999
30.06.2011, 22:14
Раз готового софта нет, остановлюсь на таком варианте:
Байт ширины, байт высоты, байты изображения символа.
Такой формат позволит использовать шрифты (и отдельные символы) разной высоты. Рассчитываю, что размер особо не вырастет.
---------- Post added at 21:14 ---------- Previous post was at 21:08 ----------
В демках применяют шрифты в основном из арт студии. Такая коллекция существует у ААА.У арт-студии шрифты непропорциональные. В демках, имхо, самое место, чтобы использовать пропорциональные, но насколько я понял, их на ZX готовых особо не было.
Если меня хватит допилить мини-конвертер, то можно будет без особых усилий с PC заготовки шрифтов брать, допиливать их ручками после конверсии и пользоваться!
http://i013.radikal.ru/1106/1c/d3f0ac9a0cd7.png
http://sderni.ru/73669
Слова твои что значат мне не понятно. Я приложил, то что применяют в демо.
moroz1999
30.06.2011, 22:27
Спасибо, давно этот архив искал. Я как сделаю - выложу пример с исходником.
---------- Post added at 21:27 ---------- Previous post was at 21:22 ----------
http://i013.radikal.ru/1106/1c/d3f0ac9a0cd7.png
http://sderni.ru/73669
Слова твои что значат мне не понятно. Я приложил, то что применяют в демо.Стандартный шрифт на ZX - это моноширинный шрифт. Каждый символ - ровно 8 (или 16) пикселей в ширину, независимо от того, насколько реально толстая каждая буква.
Например, посмотри букву I на том скриншоте, который ты приложил - вокруг буквы I большие отступы, так как в моноширинной печати есть жесткая фиксация ширины всех букв.
Пропорциональный шрифт отличается тем, что в нем каждая буква занимает в пикселях только то место, которое ей реально требуется, то есть у каждой буквы своя ширина.
Плюсы пропорциональных шрифтов:
- Красивее.
- Больше букв влазит в строку без потери удобства чтения.
Минусы:
- Сложнее и тормознутее их печатать на экране.
- Готовых шрифтов на ZX почти нет.
Спасибо, давно этот архив искал. Я как сделаю - выложу пример с исходником.
Была на форуме такая тема про шрифты, я туда очень много клал. В том числе собственно выдранных. Раньше была специальная программа, она маджики потрошила и вынимала из них шрифты. Я понавыдирал все самые красивые шрифты, которые пользовал в демах, а еще дорисовывал.
Искать их нада в коллекциях AIG, NOMY, потому что я им давал.
У меня было точно примерно две дискеты набитых шрифтами.
А если серьезно подходить к впоросу, тебе надо искать ту системную программу, и ею выдирать шрифты из игр и дем, называя их соответсвенно выдранному.
Сейчас выложу ссылку на коллекции ААА, АИГ, НОМИ. Но там надо долго искать в системных дисках и не факт. Хотя все шрифты заканчиваються: .fnt Можно грабелку настроить чтобы руками не искать.
http://files.mail.ru/5MX2P7
- Готовых шрифтов на ZX почти нет.
Готовые есть, их просто не выдирали из софта и журналов за ненадобностью.
moroz1999
30.06.2011, 22:44
Я тут подумал, что разная высота у каждого символа - это зло, навигировать по такому шрифту при печати будет большой болью.
что разная высота у каждого символа - это зло
все верно ;) она статично по всему набору символов шрифта
Да какому кодеру охота разные размеры буквов высчитывать. Понятное дело, что все под одну шаблонку закатают. А так вот все шрифты, бери любой и пользуй на спеке:
http://www.fontoteka.ru/font-category-technical-1.html
Я уже давно оттудова буквы тырю для надписей. И в кошку оттуда понатырил. а потом доработал в паинт.
Шрифт переводиться один в один.
Сегодня читал zx-ревю на бумаге, и как раз выпала статья про пропорциональный шрифт :) Статья находится в журнале номер 5/95.
SoftLight
01.07.2011, 00:25
http://files.mail.ru/5MX2P7
"Извините, один или несколько файлов находятся в обработке. Попробуйте скачать их через 30 минут." и так постоянно
Извините, один или несколько файлов находятся в обработке. Попробуйте скачать их через 30 минут." и так постоянно
Майл и Яндекс счас в дауне. Я даже писем счастья со спамом, отправить не могу.
http://narod.ru/disk/17721279001/DISKETY.rar.html
Положил сюда может заработает.
SoftLight, обманул я, в этом номере ревю - статья про печать 42-х символов в строке. Сорри...
зы. SoftLight, удали спасибку...
SoftLight
01.07.2011, 17:53
Майл и Яндекс счас в дауне. Я даже писем счастья со спамом, отправить не могу.
http://narod.ru/disk/17721279001/DISKETY.rar.html
Положил сюда может заработает.
Усе скачалось! Спасибо!
SoftLight, обманул я, в этом номере ревю - статья про печать 42-х символов в строке. Сорри...
зы. SoftLight, удали спасибку...
Это к Морозу.
moroz1999
01.07.2011, 20:19
Я со второго одиссея взял пример - он вроде как с дефолтным шрифтом работает, а с моим нет.
Пока дебаггером не мучал, не смотрел, что там.
Есть ли где-то коллекции пропорциональных шрифтов?
Любой шрифт можно в пропорциональный превратить.
Я, например, накалякал себе универсальную прогу которая печатает любым шрифтом пропорционально (т.е. каждая буква занимает столько пикселей на экране, сколько сама по ширине имеет + 1. пример можно поглядеть в игре Fighter. там шрифт прям из ПЗУ используется).
А можно и вручную редактировать.
шрифт из демки - буквы влазят в квадрат 4х4 (3х4 и пустое знакоместо для визуального разделения)
VELESOFT
03.07.2011, 12:53
FONTEDITOR (PROXIMA) for proportional fonts (add my Kempston mouse driver)
http://velesoft.speccy.cz/kmouse/kmprog/fontedit-km.tap.zip
After start you press space and define controll keys. Press key "F" jump to proportional font editor. Press key "G+F" jump to big proportional font editor.
http://velesoft.speccy.cz/other/fonteditor-proxima-proportional.png
http://velesoft.speccy.cz/kmouse/kmprog/fonteditor-scr.gif http://velesoft.speccy.cz/kmouse/kmprog/fonteditor-game.gif
moroz1999
03.07.2011, 17:47
Thanks Velesoft - the most interesting question for me is the file format this editor is using.
Do you have any font examples for it? I've tried to google them, but got no luck finding any.
VELESOFT
04.07.2011, 03:31
Thanks Velesoft - the most interesting question for me is the file format this editor is using.
Do you have any font examples for it? I've tried to google them, but got no luck finding any.
Exist more fonts designed in FONTEDITOR. All this fonts is usable in DESKTOP:
http://www.worldofspectrum.org/infoseekid.cgi?id=0016682
DESKTOP is best word processor for ZX Spectrum. Can write documents with more different fonts and combine graphic (pictures) with text (proportional) and big text with size up to 16x16 pixels.
I need time for search this fonts, please wait. Also exist more documents for DESKTOP (printable documents).
I don't know details about font format, but it's can't be hard detect :)
You can make clear font with first chars and save it. Then change char size and save it. Both fonts can be compared in hex editor on PC and detect format...
this book is writed and printed from DESKTOP on ZX Spectrum:
http://softhouse.speccy.cz/documents/download/ASMaZX1.pdf
example of fonts for FONTEDITOR/DESKTOP:
http://softhouse.speccy.cz/fonts.htm
I think, it needs to make other theme, about "DESKTOP" editor, isn't it?
Если меня хватит допилить мини-конвертер, то можно будет без особых усилий с PC заготовки шрифтов брать, допиливать их ручками после конверсии и пользоваться!
У меня часто возникает необходимость рисовать шрифты для разрабатываемых устройств. Очень рекомендую утилиту SG Bitmap FontEditor (http://armag.newmail.ru/sgfed.htm). Очень много красивых шрифтов под нее со спека перетащил, начиная с 6x6 и заканчивая 32x32, могу поделиться, если надо. Правда, ни один из них не пригодился, в коммерческое устройство пришлось рисовать самостоятельно, а до некоммерческих, где их можно заюзать, руки не доходят ;)
Кстати, эта утилита может TTF шрифт использовать в качестве шаблона, но на практике полезность сомнительна, т.к. обычно требуются шрифты шириной около 10, и до 16 в высоту, а при этих условиях импорт из ttf получается корявым.
И, по поводу хранения шрифтов разной ширины. Я делаю так: в момент инициализации программы прохожусь по всему шрифту, и для каждого символа считаю максимальную ширину каждой строки в битах (банально проверка крайнего бита, буквы выровнены по левому краю), по итогам записываю максимальную ширину каждой буквы куда-нибудь в ОЗУ. Дешево и сердито, не надо никаких доп. байт выделять, и при изменении шрифта все само пересчитывается программой. Насчет вывода особо не заморачиваюсь, т.к. в сигнальном проце устройства тактовая 600+ мгц, и надо умудриться написать вывод с тормозами :)
VELESOFT
04.07.2011, 23:38
I think, it needs to make other theme, about "DESKTOP" editor, isn't it?
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`шники их придумали или как топытались раскрутить, был даже редактор и кажется печаталка...
James DiGreze
20.01.2012, 10:45
а векторные шрифты никто не пробовал? что-то вспомнил, кажется DT`шники их придумали или как топытались раскрутить, был даже редактор и кажется печаталка...В турбо-паскале вроде бы 7-м были шрифты векторные и либы для их использования, и вроде бы в 90-х кто-то портировал это дело на спек, но широкого распространения не получило, уж не знамо почему. Вру конечно, знамо - с математикой надо дружить, а для спека это несколько напряжно. Тут вон даже пропорционалные шрифты не быстро получаются, что уж говорить про векторные.
Не помню, писал я тут, как сам поступал с пропорциональной печатью, потому напишу:
формат был такой: 8 байт на символ, символ положен набок, 1 байт - длина символа в пикселях (по сути в байтах) + 7 байт матрица. Печаталось всё в буфер прямым копированием нужного количества байт из матрицы в текущую позицию буфера. После того, как вся строка напечатана, буфер копировался с поворотом через rr/rl прямо в нужную позицию экрана. Получалось довольно быстро, уж во всяком случае точно быстрее печаталок из РЕВЮ. Ну и сам эффект пропорциональной печати на тот момент был конечно восторженным.
Получалось довольно быстро, уж во всяком случае точно быстрее печаталок из РЕВЮ. Ну и сам эффект пропорциональной печати на тот момент был конечно восторженным.
В РЕВЮ как раз такой подход и использовался- повернутый символ.
По моим результатам исследований самый быстрый подход- выборка символа в 7 регистров и 7 процедур вывода символа в буфер
После того, как вся строка напечатана, буфер копировался с поворотом через rr/rl прямо в нужную позицию экрана.
Кстати, пробовал писать транспонирование знакоместа в 3 приёма (сначала меняем местами квадраты 4x4 (правый верхний, левый нижний), потом 2x2 (по аналогичной сетке), потом 1x1), оказалось 1494 такта - медленнее, чем pop de:rl e:rla:rl d:rla... (1176 тактов). Пичалька.
James DiGreze
20.01.2012, 14:50
В РЕВЮ как раз такой подход и использовался- повернутый символ.
А на сколько я помню, там использовался прямой шрифт со сдвигом и OR'ом.
По моим результатам исследований самый быстрый подход- выборка символа в 7 регистров и 7 процедур вывода символа в буфер7 процедур на 7 возможных вариантов ширины?
Кстати, пробовал писать транспонирование знакоместа в 3 приёма (сначала меняем местами квадраты 4x4 (правый верхний, левый нижний), потом 2x2 (по аналогичной сетке), потом 1x1), оказалось 1494 такта - медленнее, чем pop de:rl e:rla:rl d:rla... (1176 тактов). Пичалька.Ага, я тоже разные варианты пробовал, в том числе и полубайтовые, а вот на 7 разных процедур, как у Витамина, в 97м году я не догадался, а может и пожмотничал памяти, сейчас уже не помню подробности.
---------- Post added at 18:50 ---------- Previous post was at 18:47 ----------
И да, еще идея была сэкономить памяти на символах одинакового написания за счет таблицы смещений по коду символа. В коде не было реализовано по причине мизерности выигрыша по памяти, все раскладки так и остались на бумаге.
А на сколько я помню, там использовался прямой шрифт со сдвигом и OR'ом.
Там два метода описывалось. Я четко помню прямо рисунок повернутых набок символов. В этой ветке уже есть ссылка.
7 процедур на 7 возможных вариантов ширины?
Нет. 7 процедур для разных сдвигов + 1 вывода без сдвига.
Если надо, могу кинуть прямо сюда:)
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot