MK-fonter – это редактор пользовательских шрифтов для клавишных ЭВМ (ЭКВМ)
производства НПП «СЕМИКО» (г. Новосибирск). Редактор позволяет загружать
шрифты из MKP-файлов (интегрированные в программу или хранящиеся независимо)
или создавать шрифты с нуля. Созданный шрифт можно сохранить в MKP-файле
для последующей загрузки в ЭКВМ, или для возможности редактирования
в дальнейшем. Можно сохранить шрифт в MKL-файле с последующей вставкой его
в исходный код программ, или скопировать в буфер обмена (в формате исходного
кода) и сразу вставить в программу. Загрузка шрифта из MKL-файла
не производится. Если шрифт сохранён только в MKL-файле, то для того, чтобы
его загрузить в MK-fonter, нужно воспользоваться компилятором.
MK-fonter также позволяет вставлять в шрифт графические файлы, как отдельные
символы, если они подходят по размеру. При преобразовании полноцветных
изображений точки считаются установленными (чёрными), если уровень всех трёх
цветовых компонент ниже 50%.
Загрузка как шрифта, так и графических файлов осуществляется через пункт
«Загрузить из файла» в меню «Файл». При открытии MKP-файла происходит
автоматический поиск содержащихся в нём шрифтов и загрузка первого из них.
Другой шрифт из того же файла можно загрузить через подменю «Использовать
шрифт по адресу» в меню «Файл». В каждом пункте этого подменю отображается
адрес, по которому располагается соответствующий шрифт (адреса отображаются
с учётом номера начальной страницы в первом байте файла). В скобках после
адреса выводятся высота шрифта и количество содержащихся в нём символов.
Если файл содержит признаки шестнадцатеричного ввода или текста, то адреса
шрифтов, обнаруженных в области команд, отмечаются звёздочкой, а в области
текста поиск не производится.
В комплекте с редактором предоставляется файл «stdfonts.mkp», содержащий три
встроенных в ЭКВМ шрифта. Этот файл можно использовать для создания
пользовательского шрифта на базе одного из встроенных.
Сохранение шрифта производится с помощью пункта «Сохранить в файле».
В открывшемся диалоговом окне можно выбрать тип файла из списка или
непосредственно ввести соответствующее расширение после имени файла. В файле
сохраняется только один текущий шрифт и ничего более, поэтому не следует
выполнять сохранение с перезаписью файла, в котором содержатся более одного
шрифта, программа или какие-либо другие данные. Копирование шрифта в буфер
обмена для последующей вставки в исходный код программы осуществляется
пунктом «Скопировать в буфер обмена».
Через пункт «Параметры сохранения» вызывается одноимённое диалоговое окно,
где можно задать номер начальной страницы для MKP-файла, параметры
MKL-файла, а также включить или выключить режим повторного использования
образов символов при кодировании шрифта (сжатие). Режим сжатия
распространяется на все виды сохранения (MKP, MKL, буфер обмена). Алгоритм
сжатия не абсолютно совершенен, но обнаруживает возможность использования
части образа одного символа другим, если левая часть символа с большим кодом
совпадает с правой частью символа с меньшим кодом. При этом могут
присутствовать символы с промежуточными кодами.
Редактируемый шрифт отображается в рабочей части окна одновременно
в нескольких масштабах, начиная от нижнего края окна, с удвоением масштаба
кверху до 16:1 или меньше, в зависимости от высоты окна. Текущий символ
отображается посередине и выделяется сверху градиентной полосой.
Редактировать можно только текущий символ в максимальном масштабе.
При нажатии левой кнопки мыши на другом символе в любом масштабе
он становится текущим. При наведении курсора мыши на какой-либо символ
(кроме текущего) отображается подсказка с десятичным и шестнадцатеричным
кодом символа.
В верхней части окна располагается панель инструментов, содержащая кнопки
выбора текущего инструмента и режима рисования, а также поля ввода
для выбора текущего кода символа в десятичном и шестнадцатеричном виде,
задания ширины текущего символа и задания высоты шрифта. Слева от поля кода
находится поле для отметки присутствия символа с данным кодом в шрифте.
С помощью этой отметки производится добавление нового символа или удаление
существующего. Изменение кода символа приводит к переключению на другой
символ, а при изменении ширины или высоты текущий символ или весь шрифт
соответственно модифицируются, при этом уменьшение размера ограничивается
во избежание потери данных.
Если фокус не находится на каком-либо поле ввода, то клавишами «Вверх»
и «Вниз» можно увеличивать и уменьшать текущий код символа, а клавишами
«Вправо» и «Влево» – переключаться на следующий и предыдущий существующий
символ. Также, если курсор мыши не находится над каким-либо полем ввода,
то колесом мыши можно перемещаться по шрифту (по существующим символам).
Клавишей пробела переключается отметка присутствия символа, и символ
соответственно создаётся или удаляется.
Для обзора используемых кодов символов предусмотрено окно «Карта шрифта».
Его можно вызвать с помощью одноимённого пункта в меню «Показать». Это окно
показывает кодовый состав шрифта в виде таблицы 16x16. В ячейках таблицы
могут отображаться десятичные коды или стандартные символы, которые имеют
серый цвет для отсутствующих в шрифте символов (кодов). Текущая ячейка этой
таблицы отражает текущий код символа, и изменяя положение курсора в таблице
можно переключаться на другие символы (коды).
Для редактирования символа предусмотрено несколько инструментов: «Карандаш»,
«Линия», «Прямоугольник», «Рамка», «Заливка» и «Штамп». Выбор текущего
инструмента может осуществляться нажатием на соответствующую кнопку панели
инструментов или через меню «Инструменты», а также клавишами F5‒F10.
У инструментов «Карандаш», «Линия», «Прямоугольник» и «Рамка» имеется четыре
режима рисования, которые также можно переключать кнопками на панели
инструментов или через меню «Инструменты», но можно производить временное
переключение, удерживая клавишу Shift, Ctrl или Alt. Режим рисования
определяет, как будут изменятся точки образа символа при воздействии на них
инструмента. Точки могут закрашиваться, очищаться или инвертироваться.
Кроме того, есть режим, в котором инвертируется первая точка, а остальные
устанавливаются в то же состояние, в каком оказалась первая точка после
инверсии.
Для рисования следует перемещать мышь с нажатой левой кнопкой, кроме случая,
когда нужно изменить только одну точку, и достаточно простого нажатия.
Одну точку можно инвертировать нажатием правой кнопки мыши независимо
от выбранного инструмента и режима. Инструмент «Заливка» требует указать
только одну точку, принадлежащую к области, которую необходимо закрасить
или очистить. Если выбран инструмент «Штамп», то перемещением мыши с нажатой
левой кнопкой выделяется область, которую требуется скопировать.
При отпускании левой кнопки выделенная область копируется в буфер образов
(см. ниже), и курсор мыши начинает сопровождаться рамкой выделения,
показывающей габариты образа в буфере. Вставка текущего образа в нужном
месте производится кратковременным нажатием левой кнопки мыши.
Кроме инструментов, текущий символ можно модифицировать с помощью подменю
«Модификация символа» в меню «Правка». Это подменю позволяет производить
такие операции, как циклический сдвиг, зеркальное отражение и вращение на 90
градусов. Вращение символа возможно, только если его ширина совпадает
с высотой шрифта. В меню «Правка» также есть пункты для сдвига всего шрифта
вверх или вниз. Сдвиг шрифта возможен, только если для этого есть место
во всех символах (пустая верхняя или нижняя строка соответственно).
Сделанные изменения можно отменять и возвращать с помощью пунктов «Отменить»
и «Вернуть» меню «Правка». Количество шагов отмены не ограничено. Изменения
ширины символа, высоты шрифта, а также сдвиги всего шрифта не являются
деструктивными, поэтому не сохраняются в буфере отмены сразу,
но сохраняются при модификации символа. При отмене модификации символа
высота и положение шрифта восстанавливаются.
Операции «Отменить» и «Вернуть» не влияют на буфер образов. При копировании
новый образ добавляется в конец последовательности и никогда более
не удаляется до закрытия приложения. В буфере образов может сохраняться
неограниченное количество символов или их фрагментов.
Просмотр и навигация по буферу образов осуществляется с помощью одноименного
окна, которое можно отобразить через меню «Показать» или клавишей F4.
В меню «Показать» есть опция для автоматического отображения окна буфера
при выполнении операции копирования (добавлении нового образа). В верхней
части окна буфера образов располагается панель с кнопками для переключения
между сохранёнными образами и модификации текущего образа. В основной части
окна отображается текущий образ с отметками точки привязки (жёлтые
прямоугольники по краям образа). Эти отметки показывают координаты точки
привязки, которая влияет на инструмент «Штамп». Точку привязки можно
изменять нажатием левой кнопки мыши внутри образа.
Кроме фрагментов, через буфер образов можно манипулировать целыми символами.
Для этого в меню «Правка» существуют пункты «Скопировать символ»,
«Скопировать с автоинкрементом», «Вставить символ» и «Вставить
с автоинкрементом». Вставка символа возможна, только если высота
вставляемого образа равна высоте шрифта. При копировании с автоинкрементом
происходит автоматический переход на следующий существующий символ,
а при вставке с автоинкрементом происходит переход на следующий код
(независимо от того, существует ли символ с таким кодом или нет)
и переключение на следующий образ в буфере. Выполнив нужное количество раз
копирование с автоинкрементом, затем, выбрав в окне буфера начальный образ,
и выполнив такое же количество раз вставку с автоинкрементом, можно создать
копию группы символов.
В версии 0.02 добавлены «горячие клавиши» для управления буфером образов.
Клавишами PageUp и PageDown можно переключаться на предыдущий и следующий
образ соответственно, клавишей Home — на первый образ, скопированный после
операции вставки символа (первый в группе копируемых символов), а клавишей
End — на последний образ в буфере. Эти клавиши действуют также в главном
окне. Когда фокус ввода находится в окне буфера образов, для модификации
образа можно пользоваться сочетаниями клавиш Shift+H, Shift+V, Alt+«Вправо»
и Alt+«Влево», аналогично функциям модификации текущего символа в главном
окне, а также — сочетанием Shift+I для инверсии образа. Нажатие клавиши Esc
возвращает фокус ввода в главное окно (клавиша Esc работает также в других
окнах).
В версии 0.03 добавлена возможность копирования в буфер обмена надписи для
вставки в какой-либо графический редактор. Это осуществляется при помощи
окна «Экспорт надписи», вызываемого через меню «Показать» или клавишей F2.
В верхней части этого окна расположены поля ввода для текста надписи
и величины межсимвольного интервала, а также кнопка для копирования надписи
в буфер обмена. В остальной части окна отображается результирующая надпись
в масштабе 2:1. При нажатии кнопки надпись копируется в буфер обмена в виде
изображения в масштабе 1:1. Вместо экранной кнопки можно нажимать клавишу
Enter. После копирования поле ввода текста очищается (но предыдущий текст
отображается с затенением), и можно вводить текст следующей надписи.
Для текста предусмотрена возможность ввода кодов символов. Префиксом кода
служит символ интерпункта (middle dot), который вводится сочетанием клавиш
Ctrl+8 (только в этом поле). Код может быть записан как в десятичном, так
и в шестнадцатеричном виде. Шестнадцатеричные коды должны заканчиваться
буквой «h» или начинаться символами «$» или «0x». Несколько кодов подряд
можно разделять запятой или интерпунктом, а для отделения от последующего
текста служит точка с запятой («;»). Если активным является главное окно,
карта шрифта или окно буфера образов, то код текущего символа можно вставить
в текст надписи нажатием клавиши Enter. Для карты шрифта работает также
двойное нажатие левой кнопки мыши.