binFontsTool - редактор шрифтов AdafruitGFX, UTFT на MS Excel

DenSyo
Offline
Зарегистрирован: 13.01.2017

binFontsTool - редактор шрифтов для библиотек AdafruitGFX и UTFT на MS Excel VBA

Создание собственных шрифтов, чтение и запись файлов шрифтов AdafruitGFX, UTFT, бинарных файлов, файлов Adobe BDF. Изменение кодировки импортированных шрифтов. Функции редактирования символов.

ссылка на скачивание

Пример использования: с редактором идут досовские шрифты 8х16, в программе наживаем Open binary, задаем ширину 8, высоту 16, первый символ например 32, последний 255. После загрузки шрифта жмем Encoding и выбираем смену кодировки DOS 866 на Windows 1251. После смены кодировки жмем Save as fonts C, выбираем библиотеку для которой хотим сохранить шрифт. Задаем файл сохранения, имя шрифта и жмем Ок

DenSyo
Offline
Зарегистрирован: 13.01.2017

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

В столбце 353 (char) первой строки каждого символа отображается десятичное значение кода которое будет присвоено символу при сохранении С файла. Код формируется последовательно начиная с заданного значения для первого символа. При чтении BDF файла коды символов из шрифта в файле вносятся в столбец 354 (code), диапазон этих кодов не всегда будет соответствовать диапазону значений в столбце char. В таком случае для корректного сохранения С файла сначала следует провести операцию смены кодировки по столбцу 354. Если нет необходимости менять кодовую страницу, следует указать текущую в полях From и To. Если после этого остались пустые строки вместо символов, следует провести операцию Refresh которая расставит нули в пропущенных символах. Такой шрифт уже можно использовать в глифовых версиях, например AdafruitGFX или UTFT glyph (для библиотеки UTFT_binFonts), либо можно заполнить пустые символы любыми своими по желанию. Пример: с редактором идут шрифты BDF, откройте LucidaSans-Typewriter14_koi8r задав код первого символа 32 и последнего 255. Сделайте смену кодировки из страницы row: 3 Russian KOI8-R (20866) в страницу row 1: Arduino (RUS) - Windows (1251). Сохраните шрифт как С файл выбрав желаемую библиотеку.

blackbird5
Offline
Зарегистрирован: 16.12.2016

Подскажите пожалуйста. Как в Вашем редакторе добавить символ в шрифт? У меня есть шрифт который состоит только из цифр. Мне туда надо добавить точку и тире. Как это сделать?

DenSyo
Offline
Зарегистрирован: 13.01.2017

цифры имеют коды с 48 по 57. тире код 45, точка 46. надо добавить в ваш шрифт 3 символа с начала. загружаем шрифт с цифрами, затем в settings меняем код первого символа шрифта на 45, жмем ОК без рефреш. выделеям любую группу столбцов: либо с изображением символов, либо группу столбцов бинарных значений, либо десятичных, либ шестнадцетиричных. важно выделить только столбцы принадлежащие к одной группе иначе при вставке столбцов разных групп программа не будет проводить отрисовку. выделять надо только начиная со значащей строки, выделенные первая и вторая строки так же не дадут отрисовки при вставке. т.е. выделяем с третьей строки только, например, ячейки содержащие бинарные значения символов (257-288), выделяем только имеющие значение столбцы, остальные нет смысла. выделили, нажимаем вырезать и устанавливаем курсор на первую ячейку бинарных значений четвертого по счету символа. жмем вставить. теперь можно сделать рефреш и программа заполнит нулями пустые символы сверху, либо начать рисовать их прямо с пустого места. соответственно для сборки символов из разных шрифтов в один можно воспользоваться временным листом экселя, в него по своему усмотрению вставлять значения символов и в последствии вставить все одним массивом в редактор.

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

еще вариант. после загрузки шрифта копируем столбец 353 (char) начиная с третьей строки до конца в столбец 354 (code). меняем в settings значение кода первого символа на 45 и делаем смену кодировки по столбцу 354 выбрав в качестве исходной и результирующей row 6: RUS Arduino - Windows (1251) либо любую другую содержащую символы основной таблицы (с 0 по 127). таблицы кодировок заполнены на листе Encoding, их можно строить только для дополнительных (региональных) символов, тогда основные символы не будут участвовать в перестроении. в нашем случае следует выбрать любую из кодировок содержащую символы с 0 по 255. смена кодировки расставит символы по порядку и добавит в начале массива три пустых символа.

PS в новой версии этот вариант значительно упрощается. после загрузки шрифта идем в settings меняем количество символов и код первого символа, жмем ОК без refresh, идем в encoding, жмем "copy chars to codes", ставим "sort by column 354" и жмем ОК, кодировка установленная по умолчанию включает все символы.

blackbird5
Offline
Зарегистрирован: 16.12.2016

Ну как бы все получилось. Спасибо! Будем ковырять )))

DenSyo
Offline
Зарегистрирован: 13.01.2017

доступна новая версия 0.2.6

существенно поднял скорость чтения файлов. если требуется только открыть файл и сохранить в другой версии, можно отключить раскраску в настройках для ускорения процесса. добавлена поддержка шрифтов: Squix V2, Squix V3, ILI9341_t3 V1, OLED_I2C

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

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Доброго времени суток.

Делаю первые шаги в кастомизации шрифтов. Что есть x и y offset в окне сохранения?

Пытался редактировать шрифты для Adafruit GFX с глифами. В итоге получаю смещение на 1 символ в маленьких латиницей (вместо "d" рисует "e"; слово "Wed" пишет как "Wfe"), и на два символа для всей кириллицы. 

Тут https://yadi.sk/d/paeYsYWB3UXKbV оригинал и отредактированный (просто открытый и сохраненный) файлы

Оригинал получен фонтконвертером из либы Adafruit GFX, путем слива из двух кусков (с 1 по 191 и с 1040 по 1103 символы) шрифта colibrii.ttf  Пришлось вручную править таблицу глифов (русскую часть), прибавляя смещение.

Плюсом маленький вопросик /"хотелка"  - можно сделать вывод Bitmap data в файл .c (.h) по такому 

  
1// Bitmap Data:
20x00, // ' '
30xFF, 0xF8, 0xF0, // '!'
40xDE, 0xF6, // '"'
50x12, 0x32, 0x36, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0x4C, 0x48, // '#'

шаблону ?

 Спасибо за ваш труд!

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Еще в догонку

Гдето попадалось описание принципов кодировки шрифтов в Adafruit GFX и расшифровки глиф таблицы, а где? - не помню.

Не подскажите?

DenSyo
Offline
Зарегистрирован: 13.01.2017

В редакторе массив символов всегда представлен как отцентрованный по левому краю моноширный шрифт с шириной и высотой по максимальным значениям всех символов. Для пропорциональных шрифтов указывается правая граница символа в столбце 356 первой строки значений символа (подразумевается, что минимальное значение высоты символов может быть 1 и используется только первая строка для уникальных значений символов. для работы только с этой строкой есть чекбокс на основной панели). Форматы шрифтов AdafritGFX и ILI9341_t3 кроме ширины символа так же позволяют задать смещение глифа символа относительно оси координат. В редакторе в случае ненулевого значения смещения Y положительное значение означает количество строк сверху до первой значащей нижней строки символа «А» (это условно), отрицательное значение – количество строк снизу до той же строки. Смещение X по модулю задает количество строк слева до первого значащего столбца символа «а» (в следующей версии скорее всего сделаю отрицательное значение количеством строк справа относительно ширины шрифта) и действует для всего шрифта, все символы в редакторе считаются выровненными по смещению X. Сделаю раскраску границ ячеек по смещениям в следующей версии для наглядности, пока можно воспользоваться выделением столбцов с первого по значение смещения X, все что попадает в выделенную область условно говоря заходит на предыдущий символ при печати. Это для всяких завитушек и курсива, и по этой причине нет закраски фона символа при печати. Если добавляете в шрифт символ со смещением X большим чем текущий у шрифта, в редакторе прежде необходимо добавить столбцов слева для всех текущих символов до этого значения. Смещение X в редакторе, как и ширина с высотой имеет максимальное значение для всех символов шрифта. При сохранении шрифта в различные форматы программа вычисляет параметры глифов символов в столбцы 361-364 первой строки символов, эти значения имеют разный смысл в разных форматах и носят информативный характер.

Спасибо что обратили внимание на детский баг) плохой идеей было использовать в комментариях неэкранированные символы. Удалите знак слеш в комментарии к символу 92 «// symbol \» или возьмите его в одинарные кавычки '\' тогда все станет отображаться правильно. Надо подробнее почитать про спецсимволы С, в редакторе при чтении после двойного слеша отсекается все до конца строки и такой баг не проявляется, собственно такое поведение внешне и в IDE. В следующей версии редактора поправлю комментарии к символам, пока используйте Default схему добавления имен символов или экранируйте символы самостоятельно на листе Chars. 

Все реализованные форматы изучал по комментариям в библиотеках и идущих с ними шрифтах. Для Адафруит структура описана в gfxfont.h

Глиф занимает целое количество байт в массиве Bitmap от произведения высоты и ширины символа, остаток последнего байта принято забивать нолями, но не думаю, что это имеет значение. Хранится глиф построчно без выравнивания на байты, т.е. надо читать количество бит равное ширине символа и следом следующую строку количество раз равное высоте символа.

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

немного про смещения глифов в адафруит здесь в конце 
https://github.com/adafruit/Adafruit-GFX-Library/blob/master/fontconvert...

PS много багов обнаружил сегодня, выложу вечером апдейт на текущий релиз

DenSyo
Offline
Зарегистрирован: 13.01.2017

выложил версию 0.2.6.2 

Кроме сказанного исправлена работа с шириной символа, убрано принудительное изменение, сделал допустимым значение меньше реальной ширины символа, так в адафруит рюшечки справа могут заходить на следующий символ. Исправил реплэйс шрифта адафруит при сохранении в существующий файл. Добавил внесение ширины символа при чтении BDF. В общем много на что начинаешь обращать внимание когда есть общение с пользователем) 

Для работы с региональными символами удобно использовать инструмент Encoding, надо только создать таблицу соответствия символов для UTF или чего угодно получаемого различными конвертерами в CP1251 или в любую иную кодировку. Можно создать свои кодировки без русских символов имеющих соответствие среди английских, например.

Для генерации шрифтов из установленных в системе рекомендую fonty, после генерации экспортировать в BDF и открывать его в редакторе. 

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Доброго времени суток. Вот пускай я покажусь занудой, но у меня опять хотелка.

Копаюсь с библиотекой UCGLIB https://github.com/olikraus/ucglib/tree/master/tools/font 

По факту в либе есть только два шрифта с кирилицей и то она сдвинута выше чем обычно (шрифт unifont 08 русская А по адресу 90Н, а не С0Н)

https://github.com/olikraus/ucglib/wiki/fontgroupunifont_old

Описание шрифтов

/*=================================================*/
/* OLD FONT FORMAT */
 
/* size of the font data structure, there is no struct or class... */
/* this is the size for the new font format */
#define UCG_FONT_DATA_STRUCT_SIZE 21
 
/*
  OLD Font Data Struct 
  ... instead the fields of the font data structure are accessed directly by offset 
  font information 
  offset
  0             font format
  1             FONTBOUNDINGBOX width           unsigned
  2             FONTBOUNDINGBOX height          unsigned
  3             FONTBOUNDINGBOX x-offset         signed
  4             FONTBOUNDINGBOX y-offset        signed
  5             capital A height                                unsigned
  6             start 'A'
  8             start 'a'
  10            encoding start
  11            encoding end
  12            descent 'g'                     negative: below baseline
  13            font max ascent
  14            font min decent             negative: below baseline 
  15            font xascent
  16            font xdecent             negative: below baseline 
 
  new font data:
 
  offset bytes description
  0 1 glyph_cnt number of glyphs
  1 1 bbx_mode 0: proportional, 1: common height, 2: monospace, 3: multiple of 8
  2 1 bits_per_0 glyph rle parameter
  3 1 bits_per_1 glyph rle parameter
 
  4 1 bits_per_char_width glyph rle parameter
  5 1 bits_per_char_height glyph rle parameter
  6 1 bits_per_char_x glyph rle parameter
  7 1 bits_per_char_y glyph rle parameter
  8 1 bits_per_delta_x glyph rle parameter
 
  9 1 max_char_width
  10 1 max_char_height
  11 1 x offset
  12 1 y offset (descent)
  
  13 1 ascent (capital A)
  14 1 descent (lower g)
  15 1 ascent '('
  16 1 descent ')'
  
  17 1 start pos 'A' high byte
  18 1 start pos 'A' low byte
 
  19 1 start pos 'a' high byte
  20 1 start pos 'a' low byte
 
  Font build mode, 0: proportional, 1: common height, 2: monospace, 3: multiple of 8
 
  Font build mode 0:
    - "t"
    - Ref height mode: UCG_FONT_HEIGHT_MODE_TEXT, UCG_FONT_HEIGHT_MODE_XTEXT or UCG_FONT_HEIGHT_MODE_ALL
    - use in transparent mode only (does not look good in solid mode)
    - most compact format
    - different font heights possible
    
  Font build mode 1:
    - "h"
    - Ref height mode: UCG_FONT_HEIGHT_MODE_ALL
    - transparent or solid mode
    - The height of the glyphs depend on the largest glyph in the font. This means font height depends on postfix "r", "f" and "n".
 
*/
 
Редактора шрифта нет. Конвертеры есть но из .BDF или из OTF, из TTF нету. ttf2bdf тоже вменяемую не нашел. 
Напрямую .bdf с кирилицей уже наверно не найти - архаизм.
Как бы добавить к вашему редактору поддержку этой либы?
Заранее премного благодарен.
З.Ы. А фони умеет вроде ttf to bdf. Если так - то часть поблем в прошлом!

 

pavel_bbb
Offline
Зарегистрирован: 27.01.2014

Найти бы еще шрифты русские готовые в формате BDF или конвертор хороший..

DenSyo
Offline
Зарегистрирован: 13.01.2017

на странице по ссылке на скачивание есть ссылки на два хороших конвртера: FontForge и Fonty, их вполне хватит на любой случай. если нужны шрифты 8х16, то рекомендую погуглить DOS шрифты формата FNT, ссылка на моей странице к сожалению умерла, но их много в сети.
 

b707
Offline
Зарегистрирован: 26.05.2017

pavel_bbb пишет:

Найти бы еще шрифты русские готовые в формате BDF или конвертор хороший..

Русские фонты можно сделать в 2 приема.

В формате TTF - фонтов просто тысячи, в том числе и русских. Адафруитовская утилита легко конвертит их в свой формат. а потом конвертер уважаемого DenSyo - в любой другой

pavel_bbb
Offline
Зарегистрирован: 27.01.2014

b707 пишет:

Русские фонты можно сделать в 2 приема.

В формате TTF - фонтов просто тысячи, в том числе и русских. Адафруитовская утилита легко конвертит их в свой формат. а потом конвертер уважаемого DenSyo - в любой другой

Дайте пожалуйста ссылку на Адафруитовскую утилиту.

 

b707
Offline
Зарегистрирован: 26.05.2017

pavel_bbb пишет:

Дайте пожалуйста ссылку на Адафруитовскую утилиту.

 

вот тут лежат исходники и инструкция по сборке, но я где-то и в виде .exe находил, сейчас что-то не попадается

https://github.com/adafruit/Adafruit-GFX-Library/tree/master/fontconvert

и вот эта ссылка очень полезна

https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts

Casper17
Offline
Зарегистрирован: 21.06.2013

Вот в этом видео есть ссылка на exe файл. Пробовал через него создавать, но по умолчанию он делает только английский шрифт. Если указывать диапазон, то в скаченом шрифте, кириллица начинается с 1040 позиции 0x410. Как правильно или какую кодировку указать, чтобы не было такого разброса

1const GFXfont c__font_1931932pt8b PROGMEM = {
2  (uint8_t  *)c__font_1931932pt8bBitmaps,
3  (GFXglyph *)c__font_1931932pt8bGlyphs,
4  0x410, 0x44F, 49 };

 

b707
Offline
Зарегистрирован: 26.05.2017

Casper17 пишет:

Если указывать диапазон, то в скаченом шрифте, кириллица начинается с 1040 позиции 0x410. Как правильно или какую кодировку указать, чтобы не было такого разброса

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

Вам главное знать, где и в каком порядке лежат символы - а какие у них коды - дело десятое, главное чтоб ваша программа их понимала

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Кириллица в 0х4хх позициях - это Юникод (UTF-16). И на сегодня считается, что это - единственно правильная кодировка.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Подскажите как создать шрифт с кириллицей для Adafruit-GFX-Library.

Конвертирую латиницу
fontconvert arialcyr.ttf 14 32 126

Кириллицу 
fontconvert arialcyr.ttf 14 1040 1103

Как это объединить?

Посмотрел готовые шрифты с кириллицей, там символы р - я имеют коды 128 - 143
далее от А -Я а - п коды 144 - 191
 

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv, в описании к моей либе dmd- stm32 есть обьяснение, как генерить кириллические шрифты фонтконвертом

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Да, я прекрасно пользуюсь этим конвертором. Но как правильно объединить кириллицу и латиницу в одном файле (не как в вашей библиотеке, где разделены диапазоны на 2 массива)?

b707
Offline
Зарегистрирован: 26.05.2017

Непосредственно из фонтконвертора - никак.

А еще в моей теме обьяснено, почему этого делать и не надо

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Это понятно. И почему лишний диапазон плохо.

Я и спрашиваю как сделать шрифт в binFontsTool в диапазоне 32-255 с кириллицей.

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Я и спрашиваю как сделать шрифт в binFontsTool в диапазоне 32-255 с кириллицей.

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

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Фонтконвертер не умеет. Но судя по постам топистартера можно слить. Я смотрю на готовые фонты с кириллицей, которые работают на матрицах Р4. Выше написал про диапазоны кодов. Пробовал руками все переставить, но на панели козябры. 
Не смотрели код по Вашей новой версии, который я присылал? Там тоже с кириллицей проблема. 
ПС: Какие уроды ее изобрели :)

 

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Фонтконвертер не умеет. Но судя по постам топистартера можно слить.

можно

Цитата:
Не смотрели код по Вашей новой версии, который я присылал? Там тоже с кириллицей проблема.

нет пока

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

b707 пишет:

Antsanv пишет:

Фонтконвертер не умеет. Но судя по постам топистартера можно слить.

можно

Вот в этом и вопрос был. Не подскажите как?

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Вот в этом и вопрос был. Не подскажите как?

вечером посмотрю

b707
Offline
Зарегистрирован: 26.05.2017

блин... написал две страницы про слияние фонтов, а сервер сглючил и ничего не отправилось! и все пропало...

Короче, Antsanv. ничего там сложного нет.

Фонт состоит из трех структур. Формат их описан в файле gfxfont.h

01// Font structures for newer Adafruit_GFX (1.1 and later).
02// Example fonts are included in 'Fonts' directory.
03// To use a font in your Arduino sketch, #include the corresponding .h
04// file and pass address of GFXfont struct to setFont().  Pass NULL to
05// revert to 'classic' fixed-space bitmap font.
06 
07#ifndef _GFXFONT_H_
08#define _GFXFONT_H_
09 
10/// Font data stored PER GLYPH
11typedef struct {
12    uint16_t bitmapOffset;     ///< Pointer into GFXfont->bitmap
13    uint8_t  width;            ///< Bitmap dimensions in pixels
14        uint8_t  height;           ///< Bitmap dimensions in pixels
15    uint8_t  xAdvance;         ///< Distance to advance cursor (x axis)
16    int8_t   xOffset;          ///< X dist from cursor pos to UL corner
17        int8_t   yOffset;          ///< Y dist from cursor pos to UL corner
18} GFXglyph;
19 
20/// Data stored for FONT AS A WHOLE
21typedef struct {
22    uint8_t  *bitmap;      ///< Glyph bitmaps, concatenated
23    GFXglyph *glyph;       ///< Glyph array
24    uint16_t   first;       ///< ASCII extents (first char)
25        uint16_t   last;        ///< ASCII extents (last char)
26    uint8_t   yAdvance;    ///< Newline distance (y axis)
27} GFXfont;
28 
29#endif // _GFXFONT_H_

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

Чтобы собрать кириллицу и латиницу в один фонт, массивы битмапрв просто тупо склеиваем - кириллицу в конец латиницы.

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

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

Далее остается только поправить значение кода последнего символа в структуре GFXfont

Как видите, правки довольно простые, но, конечно, лучше это делать не вручную, а написать какой-нить скриптик на любом подкодящем языке. типа питона или перла.

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

DenSyo
Offline
Зарегистрирован: 13.01.2017

Всем привет, давно не был и пока к сожалению нет времени на этот проект на который сейчас самому очень больно смотреть, но оно работает же)

Antsanv пишет:

Конвертирую латиницу
fontconvert arialcyr.ttf 14 32 126

Кириллицу 
fontconvert arialcyr.ttf 14 1040 1103

Как это объединить?

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

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

 

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Спасибо большое, разбираюсь.

 

Туцик
Туцик аватар
Offline
Зарегистрирован: 31.03.2020

Вылазит ошибкп, при попытке сконвертировать bdf шрифт в библиотеку OLED_I2C. Поправьте пожалуйста. А так конвертер четенький, под все ходовые либы. Мне не хватает еще tft_espi и сразу из ttf, но это хотелки.