Menu Home

Бесплатная техническая библиотека для любителей и профессионалов Бесплатная техническая библиотека


Редактор растровых шрифтов для графических ЖКИ. Энциклопедия радиоэлектроники и электротехники

Бесплатная техническая библиотека

Энциклопедия радиоэлектроники и электротехники / Радиолюбителю-конструктору

Комментарии к статье Комментарии к статье

Автор предлагает компьютерную программу собственной разработки, предназначенную для создания и редактирования шрифтов для распространенных сегодня графических ЖКИ.

В последние годы радиолюбители все чаще используют в своих разработках для отображения информации графические ЖКИ. Особенность большинства таких приборов - наличие частично или полностью загружаемого внешним управляющим устройством знакогенератора либо полное отсутствие такового. В первом случае при инициализации индикатора требуется загрузка шрифта (набора образов символов) в память знакогенератора. Чтобы вывести символ на экран, программа передает в контроллер ЖКИ только его код (адрес в знакогенераторе), а отображение символа на экране обеспечивает контроллер ЖКИ. Во втором случае все операции, необходимые для изображения символа на экране, выполняет программа управляющего устройства. Зачастую готовые процедуры имеются в библиотеках систем разработки программ.

Но в обоих случаях необходимы внешние шрифты. С одной стороны, это хорошо, так как дает возможность использовать наборы символов, наиболее подходящие для решения конкретных задач. Однако нужные шрифты приходится либо искать, либо создавать самостоятельно. Нельзя сказать, что файлы шрифтов для графических ЖКИ редкость. Их легко найти в Интернете, но далеко не всегда найденный шрифт может быть использован.

Дело в том, что различные контроллеры ЖКИ по-разному разворачивают образ символа в матрице знакоместа. Например, контроллер KS0107 (KS0108) индикатора WG12864 разворачивает байты образа вертикально, как показано на рис. 1, а контроллер RA6963 индикатора WG240128 - горизонтально (рис. 2). В первом случае символ R должен быть описан последовательностью байтов 00H, 00H, 00H, 7FH, 09H, 19H, 29H, 49H, во втором - 1EH, 11H, 11H, 1EH, 14H, 12H, 11H, 00H. Следовательно, шрифт, подготовленный для ЖКИ с горизонтальной разверткой байтов образов символов, будет некорректно отображен на индикаторах с вертикальной разверткой, и наоборот.

Редактор растровых шрифтов для графических ЖКИ
Рис. 1. Образ символа в матрице знакоместа

Редактор растровых шрифтов для графических ЖКИ
Рис. 2. Образ символа в матрице знакоместа

С точки зрения программирования шрифт представляет собой массив констант. При разработке программ, выводящих информацию на ЖКИ, используют различные языки программирования с разными правилами описания таких массивов. Например, на языке ассемблера константы задают директивами db (define byte), а на языке BASIC - операторами Data. На языке C массив констант можно задать просто набором их значений. Представление шестнадцатеричных чисел тоже различно. В разных языках программирования используются, например, форматы 0xNN, &hNN, $NN, NNH, где NN - шестнадцатеричные цифры.

Учитывая сказанное, можно сделать вывод, что поиск файла с подходящим готовым шрифтом дело непростое, а если учитывать возможную необходимость иметь в нем какие-либо специфические символы, задача зачастую становится и вовсе неразрешимой. В таких случаях приходится корректировать найденный где-либо шрифт либо разрабатывать новый "с нуля". Это удобно делать с помощью специализированных программ - так называемых редакторов шрифта.

Такие редакторы можно найти в Интернете. Их (по крайней мере, тех, с которыми имел дело автор) основной недостаток - узконаправленность. Создается впечатление, что программа разработана энтузиастом для решения своей конкретной задачи. Например, одна программа создает выходной файл в формате, который понятен единственному компилятору языка программирования, другая создает образы символов, пригодные только для ЖКИ определенного типа. Поэтому создать нужный шрифт с их помощью либо вовсе не удается, либо выходной файл приходится корректировать, например, с помощью текстового редактора, что занимает много времени и редко обходится без ошибок. Возможности этих программ по редактированию шрифтов, созданных другими редакторами, зачастую весьма ограничены.

Предлагаемая программа CG-Edit разработанаавтором как более универсальный инструмент. Она позволяет разрабатывать новые и корректировать ранее созданные (в том числе "чужие") шрифты в наиболее употребительных в радиолюбительской практике форматах.

Допустимы следующие размеры знакомест (первый сомножитель - число пикселов по горизонтали, второй - по вертикали): 6x8, 8x8, 12x16, 16x16, 16x24, 24x16, 24x24. Можно разрабатывать и редактировать шрифты как в позитивном, так и в негативном изображении, а также изменять направление развертки байта в знакоместе с вертикального на горизонтальное, и наоборот. Выходная информация может быть оптимизирована для использования в программах на языке ассемблера, на различных версиях языков BASIC и С.

Программа предназначена для персональных компьютеров, работающих под управлением 32- и 64-разрядных версий ОС Windows. Она состоит из единственного исполняемого файла CG-Edit.exe и не требует установки, проста в использовании, имеет интуитивно понятный пользовательский интерфейс.

После запуска программы на экране компьютера будет открыто окно, показанное на рис. 3. В его левой верхней части находится область выбора редактируемого символа в виде таблицы, в ячейках которой размещены символы кодовой страницы Windows-1251. Отображены только символы с кодами 20Н-0FFH, область управляющих кодов 0H-1FH отсутствует, поскольку они не имеют графических эквивалентов. Все основные символы латиницы, кириллицы и цифры находятся за пределами области кодов 7FH-0BFH, поэтому эту область удобно использовать для создания любых нужных для решаемой задачи символов взамен имеющихся там согласно кодовой странице Windows-1251.

Редактор растровых шрифтов для графических ЖКИ
Рис. 3. Окно программы на экране компьютера

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

Необходимо заметить, что для знакомест не всех размеров допустимы оба направления развертки байтов. Дело в том, что программа ориентирована на максимальную плотность упаковки информации. Ведь основные "потребители" создаваемых с ее помощью шрифтов - микроконтроллерные устройства, имеющие относительно небольшой объем памяти.

На рис. 4 видно, что при горизонтальной развертке байта в знакоместе размерами 6x8 пкс полезно используются лишь шесть разрядов, а два разряда остаются лишними. Всего образ символа занимает восемь байтов. При вертикальной развертке (рис. 5) каждый столбец знакоместа занимает байт полностью, поэтому для образа символа требуется всего шесть байтов. Разница в два байта на каждый символ шрифта довольно существенна, поэтому во всех знакоместах, где число столбцов не кратно восьми, разрешена только вертикальная развертка.

Редактор растровых шрифтов для графических ЖКИ
Рис. 4. Горизонтальная развертка байта в знакоместе размерами 6x8 пкс

Редактор растровых шрифтов для графических ЖКИ
Рис. 5. Вертикальная развертка байта в знакоместе размерами 6x8 пкс

Выбрав параметры шрифта, нажимают на экранную кнопку "Создать". Этим закрывают окно ввода параметров, а основное окно приобретает вид, представленный на рис. 6.

Редактор растровых шрифтов для графических ЖКИ
Рис. 6. Вид окна компьютерной программы

Программа создает в ОЗУ компьютера пустой образ знакогенератора. Он будет оставаться пустым до загрузки в него какого-либо шрифта из имеющегося файла нажатием на экранную кнопку "Импортировать знакогенератор" либо до создания собственных символов после нажатия на экранную кнопку "Создать знакогенератор". Символы в поле "Выбор символа" не отображают фактическое содержимое образа знакогенератора. Они всегда остаются неизменными и служат лишь для ориентировки. В области редактирования программа выводит изображение знакоместа выбранного размера.

Символ создаваемого или редактируемого знакогенератора, ячейка которого выбрана в таблице "Выбор символа" (она выделена в ней красным фоном), отображается в поле "Редактируемое знакоместо". Первоначально - это символ с кодом 20Н. Для перехода к другому символу нужно щелкнуть по соответствующей ему ячейке таблицы левой кнопкой мыши. Надпись выше знакоместа характеризует параметры создаваемого шрифта.

Редактируют содержимое знакоместа щелчками по его пикселам левой кнопкой мыши. Каждый такой щелчок изменяет состояние пиксела на противоположное. В нижней части поля редактирования находятся четыре экранные кнопки группового управления пикселами. Нажатие на одну из них сдвигает содержимое знакоместа на пиксел вверх, вниз, влево или вправо в его пределах. Нажатие на экранную кнопку "Стереть" полностью очищает знакоместо, а нажатие на кнопку "Откат" восстанавливает исходное начертание редактируемого символа. Ввиду того что операции стирания и отката безвозвратно удаляют результаты редактирования символа, перед их выполнением программа выдает соответствующие предупреждающие сообщения.

Нижняя строка и правый столбец знакоместа выделены желтым фоном. Это напоминает, что включенные пикселы в них нежелательны, так как эти области служат разделителями соседних символов на экране ЖКИ. Однако понятие "нежелательно" не означает запрета. Включить пиксел можно, что и приходится делать, создавая такие символы, как "Д" или "Щ". При работе со знакоместами большого размера желтым фоном выделены две нижние строки и два крайних правых столбца, так как для хорошего восприятия больших символов целесообразно иметь между ними увеличенные промежутки.

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

Допускаются произвольный порядок выбора символов и их многократное повторное редактирование. После первого же изменения состояния любого пиксела символ в соответствующей ячейке выбора будет выделен полужирным шрифтом увеличенного размера. Это показывает, что он подвергался редактированию. Все, что отображается в окне программы в процессе редактирования, показано на рис. 7. Видно, что символы "3" и "Щ" уже редактировались, сейчас редактируется символ "Щ", причем его "хвостик" находится в нежелательной зоне.

Редактор растровых шрифтов для графических ЖКИ
Рис. 7. Окно программы в процессе редактирования

При необходимости можно в любой момент изменить развертку байтов в знакоместе с вертикальной на горизонтальную, и наоборот. Для этого следует нажать на экранную кнопку "Изменить вид развертки". Операция действует одновременно на все символы знакогенератора. После ее выполнения на экран будет выведено соответствующее сообщение и изменены параметры шрифта, выведенные над знакоместом. Изменить направление развертки невозможно, если это приводит к увеличению объема образа шрифта.

Несколько слов о работе с негативными шрифтами. Само понятие негативного шрифта уже стало атавизмом, так как многие современные контроллеры ЖКИ умеют инвертировать изображение самостоятельно. Тем не менее возможность создания и редактирования негативных шрифтов в программе имеется. Никаких отличий от работы с позитивным шрифтом нет. Символы в любом случае выглядят на экране компьютера позитивными. Превращение их образов в негативные происходит в процессе записи созданного шрифта на диск компьютера. Забегая вперед, отметим, что при загрузке для редактирования файла, содержащего негативный шрифт, информация заносится в образ знакогенератора в памяти компьютера в инвертированном (позитивном) виде и инвертируется еще раз при записи на диск.

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

В выпадающем списке "Формат строки" (рис. 8) выбирают структуру строки в выходном текстовом файле. Последовательности шестнадцатеричных чисел, разделенных запятыми, может предшествовать ключевое слово "Data" или ".Db" либо оно может отсутствовать.

Редактор растровых шрифтов для графических ЖКИ
Рис. 8. Выпадающий список "Формат строки"

В выпадающем списке "Формат числа" (рис. 9) выбирают способ представления шестнадцатеричного числа. К двум шестнадцатеричным цифрам NN может быть добавлен один из имеющихся в списке префиксов либо суффикс "h".

Редактор растровых шрифтов для графических ЖКИ
Рис. 9. Выпадающий список "Формат числа"

Отметив пункт "Негативный шрифт", можно создать файл с таким шрифтом.

Для записи файла на диск компьютера необходимо нажать на экранную кнопку "Сохранить знакогенератор". Путь к нему указывают в стандартном диалоге Windows. По умолчанию для файла предлагается имя FontXXxYYmn.fnt, где XXxYY - формат знакоместа; m - символ "v" или "h", означающий соответственно вертикальную или горизонтальную развертку байта; n - символ "p" или "n", обозначающий соответственно позитивное или негативное изображение символов; fnt - расширение имени.

Имя файла можно модифицировать, добавляя в начале или конце допустимые символы. Однако разрушать конструкцию "FontXXxYYmn" не рекомендуется. По ней программа распознает параметры "своего" шрифта при его загрузке. В противном случае программа сочтет файл "чужим" и потребует ручного ввода параметров.

При необходимости отредактировать готовый файл знакогенератора в окне, изображенном на рис. 3, нажимают на экранную кнопку "Импортировать знакогенератор". Будет открыт стандартный диалог загрузки файлов Windows, в котором следует выбрать файл, подлежащий редактированию. Процесс загрузки этого файла различен в зависимости от его формата.

Файл, созданный с помощью рассматриваемого редактора, загружается в него без вмешательства пользователя. Вся необходимая информация о параметрах шрифта имеется в имени файла, конечно, если в нем сохранена конструкция, описанная выше.

Если же имя файла не содержит требуемой для идентификации информации, программа предложит ввести ее вручную и откроет окно, в котором необходимо указать размер знакоместа, направление развертки байтов, позитивный или негативный шрифт находится в файле. Поэтому перед редактированием "чужого" файла следует получить представление об этих параметрах.

Если параметры указаны правильно, то "чужой" шрифт с высокой вероятностью будет загружен успешно. Алгоритм чтения содержащейся в файле информации "понимает" как десятичные, так и шестнадцатеричные числа в различных представлениях, извлекает полезную информацию из операторов Data и .Db, игнорирует комментарии. Пожалуй, единственное, что может стать препятствием для правильной загрузки - наличие в файле какой-либо дополнительной информации в незакомментированном виде.

Процесс редактирования загруженного шрифта ничем не отличается от процесса создания нового. Последним этапом будет сохранение сделанной работы в файле, который станет для программы "своим".

Файл программы-редактора: ftp://ftp.radio.ru/pub/2016/03/CG-Edit.zip.

Автор: А. Савченко

Смотрите другие статьи раздела Радиолюбителю-конструктору.

Читайте и пишите полезные комментарии к этой статье.

<< Назад

Последние новости науки и техники, новинки электроники:

Оптимальная продолжительность сна 12.11.2025

Сон играет ключевую роль в поддержании здоровья, когнитивных функций и общего самочувствия. Несмотря на широко распространенный стереотип о восьмичасовом сне, последние исследования показывают, что оптимальная продолжительность сна для большинства здоровых взрослых ближе к семи часам. Эволюционный биолог из Гарварда, Дэниел Э. Либерман, утверждает, что традиционная норма восьми часов сна - это скорее культурное наследие индустриальной эпохи, чем биологическая необходимость. По его словам, полевые исследования, проведенные в сообществах, не использующих электричество, показывают, что средняя продолжительность сна составляет 6-7 часов, что значительно отличается от общепринятого стандарта. Современные эпидемиологические данные подтверждают этот взгляд. Исследования выявили так называемую "U-образную кривую" зависимости между продолжительностью сна и рисками для здоровья. Минимальные показатели заболеваемости и смертности наблюдаются именно у людей, спящих около семи часов в сутки. ...>>

Дефицит кислорода усиливает выброс закиси азота 12.11.2025

Парниковые газы играют ключевую роль в изменении климата, а закись азота (N2O) - один из наиболее опасных среди них. Этот газ не только втрое сильнее углекислого газа в удержании тепла, но и разрушает озоновый слой. Недавнее исследование американских ученых показало, что микробы в зонах с низким содержанием кислорода активно производят N2O, усиливая глобальные климатические риски. Команда из Университета Пенсильвании изучала прибрежные воды у Сан-Диего и провела наблюдения на глубинах от 40 до 120 метров в Восточной тропической северной части Тихого океана - одной из крупнейших зон дефицита кислорода. Исследователи сосредоточились на том, как морские микроорганизмы превращают нитраты в закись азота. В ходе работы выяснилось, что существует два пути образования N2O. Один путь начинается с нитрата, другой - с нитрита. На первый взгляд более короткий путь должен быть эффективнее, однако микробы, использующие нитрат, продуцируют больше газа, поскольку этот "сырьевой" источник более д ...>>

Омега-3 помогают молодым кораллам выживать 11.11.2025

Сохранение коралловых рифов становится все более актуальной задачей в условиях глобального изменения климата. Молодые кораллы особенно уязвимы на ранних стадиях развития, когда стрессовые условия и нехватка питательных веществ могут привести к высокой смертности. Недавнее исследование ученых из Технологического университета Сиднея показывает, что специальные пищевые добавки способны существенно повысить выживаемость личинок кораллов. В ходе работы исследователи разработали особый состав "детского питания" для коралловых личинок. В него вошли масла, богатые омега-3 жирными кислотами, а также важные стерины, необходимые для формирования клеточных мембран. Личинки, получавшие эти добавки, развивались быстрее, становились крепче и демонстрировали более высокую устойчивость к стрессовым факторам. Особое внимание ученые уделили липидам. Анализ показал, что личинки активно усваивают эти вещества, что напрямую влияет на их жизнеспособность. Стерины, содержащиеся в корме, повышают устойчи ...>>

Случайная новость из Архива

Геймерский смартфон Black Shark 2 21.03.2019

Компания Xiaomi представила новую версию геймерского смартфона Black Shark 2, которая получила платформу Qualcomm Snapdragon 855 и чувствительный к степени нажатия OLED-экран.

Смартфон Black Shark 2 оснастили 6,39-дюймовым OLED-дисплеем от Samsung с разрешением Full HD+, поддержкой HDR, кадровой частотой 240 Гц и встроенным под поверхность матрицы сканером отпечатков пальцев. Вдобавок разработчики реализовали технологию распознавания силы нажатия на экран Magic Press, благодаря чему пользователь может самостоятельно назначить программные кнопки по углам экрана для большего удобства игры. Срабатывать такие кнопки будут при более сильном, чем обычно, нажатии на экран. Помимо прочего Xiaomi поработала над оптимизацией характеристик дисплея под игровые нужды, в результате была улучшена цветопередача, снижен эффект мерцания (flicker) при низкой яркости и снижена задержка срабатывания сенсорного слоя до отметки 43,5 мс.

В качестве аппаратной платформы в Black Shark 2 используется мощный восьмиядерный процессор Qualcomm Snapdragon 855 с трекластерной системой, на которой самое мощное ядро Kryo 485 работает на частоте 2,84 ГГц, три "средних" - на частоте 2,42 ГГц и оставшиеся младшие - на частотах 1,8 ГГц. За обработку графики отвечает GPU Adreno 640, которая на 20% быстрее, чем аналогичная система в Snapdragon 845. Естественно, разработчики установили усиленную систему охлаждения Liquid Cool 3.0 с медной пластиной и тепловой трубкой, также будет доступен специальный чехол Cooling Case с вентилятором, который дополнительно снизит температуру корпуса во время игры.

Для базовой версии модели будет предлагаться конфигурация с 6 ГБ ОЗУ и хранилищем данных на 128 ГБ, более продвинутый вариант получит 8 ГБ ОЗУ и 256 ГБ внутренней памяти. Емкость аккумулятора составляет 4000 мАч, он поддерживает скоростную зарядку в режиме 27 Вт. Основной фотоблок собран из 48 Мп и 12 Мп камер, на фронтальной панели установлена 20 Мп селфи-камера и пара стереодинамиков.

На первом этапе смартфон Black Shark 2 будет доступен только в Китае по цене $480 за базовую и $625 за топовую версию, на выбор будут предложены цвета оформления "frozen silver" и "shadow black".

Другие интересные новости:

▪ Кремниевые светодиоды светятся в 100 раз ярче

▪ Микроструктурированное оптоволокно для скоростного квантового интернета

▪ Новая комплексная система безопасности для борьбы с киберугрозами

▪ Твердотельный накопитель Transcend MSM610

▪ Кишечные бактерии влияют на мозг и настроение людей

Лента новостей науки и техники, новинок электроники

 

Интересные материалы Бесплатной технической библиотеки:

▪ раздел сайта Альтернативные источники энергии. Подборка статей

▪ статья Павлов Иван. Биография ученого

▪ В чем заключалась уникальность развития культуры ХIХ в.? Подробный ответ

▪ статья Пальчатая трава. Легенды, выращивание, способы применения

▪ статья Быстродействующий измеритель температуры. Энциклопедия радиоэлектроники и электротехники

▪ статья Режекторный фильтр. Энциклопедия радиоэлектроники и электротехники

Оставьте свой комментарий к этой статье:

Имя:


E-mail (не обязательно):


Комментарий:





Главная страница | Библиотека | Статьи | Карта сайта | Отзывы о сайте

www.diagram.com.ua

www.diagram.com.ua
2000-2025