Инструменты пользователя

Инструменты сайта


msx:font_editor:font_editor

MSX2 Font editor

MSX2 Font editor

© by Dolphin_Soft Vladivostok 2018–2022

Написан на NestorBASIC.

Программа предназначена для редактирования экранных шрифтов, разрешением 8×16 пикселей. Эти шрифты могут использоваться во всех текстовых режимах или тайловых режимах:

  • Screen 0, 40 символов шириной (аппаратное разрешение символа 6×16)
  • Screen 0, 80 символов шириной (аппаратное разрешение символа 6×16)
  • Screen 1 и выше: 32 символа шириной (аппаратное разрешение символа 8×16)

Программа при старте включает режим черезстрочной развёртки, и инициализирует прерывание луча развёртки, в котором производится считывание чётности выводимого кадра, и в соответствии ей переключается адрес знакогенератора.
Тем самым достигается возможность реалтаймового отображения редактируемого шрифта, и его изменение «на лету».

При редактировании, возможно искажение символов до такой степени, что интерфейс программы становится нечитаемым. Для того чтобы этого избежать, была создана возможность использования «Системного шрифта», который загружается на этапе запуска, и реализована возможность переключения между редактируемым шрифтом и системным.

Так как при операциях дискового ввода/вывода, невозможна работа прерываний, программа при старте копирует штатный шрифт (8×8) в теневую страницу, и при выполнении дискового ввода/вывода, переключается кратковременно на него.
Эта возможность не была предусмотрена на этапе разработки программы, поэтому изначально, адреса банков для редактирования были выбраны штатные для режима SCREEN0, 80 символов в строке (адрес знакогенератора 0x1000).
Таким образом, проблема была устранена.

Сразу после завершения операции чтения/записи шрифта, программа вновь инициализирует прерывание отображения, и включает режим отображения шрифтов 6х16.

Работа с программой

При старте программы, выполняются инициализации, загрузка системного шрифта, перемещение таблицы цветов (области блинка), и выполняется вывод интерфейса.

Редактируемый шрифт при этом, берётся штатный (8×8), и выполняется его копия в Банк1 из Банк0, тем самым достигается конвертирование стандартного шрифта 8×8, в удвоенный — 8×16.

Все дальнейшие операции с программой эти действия не выполняют.

Используемая видеопамять распределена следующим образом:

0x0000–0x07FFЭкранная область
0x0800–0x0FFFТеневая страница (при старте в ней создаётся справка по клавишам)
0x1000–0x17FFБанк №0 редактируемого шрифта (чётные строки)
0x1800–0x1FFFБанк №1 редактируемого шрифта (нечётные строки)
0x2000–0x27FFБанк №0 системного шрифта (чётные строки)
0x2800–0x2FFFБанк №1 системного шрифта (нечётные строки)
0x3000–0x37FFБанк стандартного шрифта (8×8) для операций ввода/вывода
0x3800–0xBFFFНеиспользуемая область видеопамяти
0xC000–0xC0FFТаблица цветов (знакоместа областей блинка)
0xC100–0xC112Служебная область флагов и буфер копирования символа

При сохранении редактируемого шрифта, создаётся бинарный файл font.fnt, в который копируется область видео–буфера, лежащая по адресам:
0x1000 – 0x1FFF, размером 4кб. Полученный файл представляет собой два банка шрифта, в первой половине файла находятся чётные строки, во второй соответственно нечётные.

Файл можно преобразовать для использования на других платформах.

Перед сохранением редактируемого шрифта, в нем автоматически стирается карта символа с кодом 0, так как этот служебный символ используются программой в качестве курсора линзы символа. Второй служебный символ с кодом 255, может быть изменён, и все изменения будут сохранены. Это свойство использует шрифт cp1251, в котором символ с кодом 255, содержит русскую букву «я». ВНИМАНИЕ: Если включено отображение редактируемого шрифта, то при переключении вида курсора, этот символ будет уничтожен, битовой картой курсора, выбранной для соответствующего режима его отображения!

При загрузке символа, эти же коды карт автоматически заполняются картами курсора линзы символа, которые так же могут быть изменены программой, при переключении режимов отображения (2D/3D).

Так же, при загрузке шрифта, автоматически выбирается для отображения, вновь загруженный шрифт. Это сделано для удобства и устранения путаницы.
В интерфейсе программы, это отображается строкой: System Font, за которой следует адрес в видеопамяти (назначение адресов указано выше в таблице).

Интерфейс программы очень прост и информативен.
Вверхней части находится тайтл, в котором содержится названия, номер версии, и правообладатель (я — Dolphin_Soft) :)
В центре экрана находится табличка адресов редактируемого фонта, текущий адрес отображаемого шрифта (системный), под которым находится информация о текущем символе редактирования (его код в hex и dec виде, а так же сам символ) Под таблицей адресов, распологается карта шрифта, с выделенным в ней символом, который выбран в качестве редактируемого.

В правой части находится «Линза символа» — область для редактирования, в которой можно выполнять перемещения курсора, клавишами управления.
Строки линзы тонированны разным цветом, показывая, в каком банке шрифта, находится редактируемая строка.
При нажатии клавиши «Пробел», происходит инверсия текущего блока (точки символа).
«Курсор линзы», автоматически инвертируется в зависимости от блока под ним.
Это сделано ввиду ограничений текстового видеорежима. Для облегчения поиска местоположения курсора в линзе, нажатие клавиши Shift, заставляет его мигать.
Используя клавиши управления курсором, при зажатой клавише Shift, можно выбирать редактируемый символ в карте шрифта. Так же можно перемещаться между редактируемыми символами, используя клавиши < и > (больше/меньше).

Возможно «безотрывное» редактирование, то есть неотпуская клавишу Пробел, перемещая курсор клавишами управления, блоки автоматически инвертируются по траектории его движения.

Внизу экрана находится панграма, отображающая все буквы шрифта, в кодировке MSX.

Под ней располагаются «Ключи» — клавиши управления, более развёрнутую справку по которым, можно получить, удерживая клавишу — H:

ShiftSave Font.fntСохранение редактируемого шрифта
LLoad Font.fntЗагрузка редактируемого шрифта
BSystem Font Adr.Переключает вид между шрифтами «редактируемый» ↔ «системный»
CtrlCopy Bank 0 → 1Выполняет копирование банка 0 в банк 1
RLoad BIOS charПеречитывает карту символа из ПЗУ, с копированием в банк 1
FFill ( white )Заполняет все блоки линзы
<To previous charПереход к предыдущему коду символа
>To next charПереход к следующему коду символа
3View in 2D or 3DПереключает форму курсора «плоский» ↔ «псевдо 3D»
DELClear blocksОчищает все блоки линзы
SPACEInvert blockИнвертирует текущий блок линзы
SHIFTSeek modeПри нажатии, курсор линзы становится мигающим, и в этом режиме, можно производить произвольное перемещение по таблице символов фонта, используя клавиши управления курсором
CTRLRoll modeУдерживая клавишу CTRL, можно производить прокрутку редактируемого символа, для центровки в поле битовой карты
ESCExit ProgramВыход из программы
CTRL+InsCopyКопировать карту символа в буфер обмена
SHIFT+InsPasteКопировать карту символа из буфера обмена в линзу

При нажатии клавиши 3, происходит переключение вида блоков линзы, из «плоского», в «псевдо 3D» и обратно.

Текущий редактируемый символ, можно вернуть в состояние стандартного вида, путём загрузки его из системного ППЗУ. При этом происходит его копирование в оба банка (0 и 1).
Вызов этой функции возможен через нажатие клавиши R

Клавишами F и DEL, можно соответственно заполнить все блоки линзы, или очистить.

Комбинациями клавиш CTRL+INS, SHIFT+INS, можно копировать и вставлять карту редактируемого символа в буфер обмена и обратно.

Удерживая клавишу CTRL, и используя клавиши управления курсором, можно «прокручивать» редактируемый символ в редактируемом поле, для корректировки его положения.

Клавишей B, переключается отображение шрифта на экране, между «Системным» и «Редактируемым».

Клавишами Shift и L, производятся сохранение и загрузка редактируемого шрифта, соответственно.
Загрузка и сохранение не подразумевают задания имени шрифта.
Используется имя файла — font.fnt

Ссылки

msx/font_editor/font_editor.txt · Последние изменения: 2022-07-31 22:39 — GreyWolf