Страница 1 из 1

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 05.10.2019{, 08:30}
diman27
Привет всем. Сделал часы на ленте ws2812 из Этой темы, но цифры занимают только 7 линеек. Пробовал сделать шрифты по видео автора, но там только английские шрифты. Подскажите как самому нарисовать или изменить существующие шрифты.

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 05.10.2019{, 14:46}
aidar_i
Почитайте тут
http://arduino.ru/forum/programmirovani ... lei-v-kodi

Отправлено спустя 6 минут 28 секунд:
Вот редактор
http://arduino.ru/forum/proekty/binfont ... a-ms-excel

Адафруитовский конвертер http://out.arduino.ru/?redirect=https%3 ... a-ms-excel

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 06.10.2019{, 07:28}
diman27
Я имел ввиду немного другое, самому нарисовать буквы и импортировать.
Я использовал и набил свои буквы, как мне его в библиотеку импортировать, пробовал, кракозябры получились. Или может еще какой софт есть? Те темы читал, но там штатные шрифты делают, а я хочу свой размер сделать.

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 06.10.2019{, 14:07}
aidar_i
Вот это смотрели?
Я попробовал, как раз Вам подойдет!
FontEditorRel.zip
(400.12 КБ) 64 скачивания
Снял даже ВИДЕО.
По быстрому попробовал данный редактор.

Все таки Вам нужен штатный конвертер.
СпойлерПоказать

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 06.10.2019{, 16:43}
diman27
Создал шрифт в этой программе, а как его в библиотеку добавить?

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 07.10.2019{, 18:20}
aidar_i
Почитайте fontconvert_win.md и попробуйте установить все как там написано. Еще видео.
Вот еще статья.

Вам нужно заполнить эту часть шрифта аналогично (взято с библиотеки) вручную или скомпилировать программами указанными выше.
СпойлерПоказать
const GFXglyph Open_Sans_Bold_7Glyphs[] PROGMEM = {
// bitmapOffset, width, height, xAdvance, xOffset, yOffset
{ 0, 1, 1, 3, 0, 0 }, // ' '
{ 1, 3, 5, 3, 0, -5 }, // '!'
{ 3, 4, 2, 4, 0, -5 }, // '"'
{ 4, 5, 5, 6, 0, -5 }, // '#'
{ 8, 5, 5, 5, 0, -5 }, // '$'
{ 12, 7, 5, 7, 0, -5 }, // '%'
{ 17, 6, 5, 6, 0, -5 }, // '&'
{ 21, 2, 2, 3, 0, -5 }, // '''
{ 22, 3, 6, 3, 0, -5 }, // '('
{ 25, 3, 6, 3, 0, -5 }, // ')'
{ 28, 5, 3, 5, 0, -5 }, // '*'
{ 30, 5, 3, 5, 0, -4 }, // '+'
{ 32, 3, 2, 3, 0, -1 }, // ','
{ 33, 3, 1, 3, 0, -2 }, // '-'
{ 34, 3, 1, 3, 0, -1 }, // '.'
{ 35, 4, 5, 4, 0, -5 }, // '/'
{ 38, 5, 5, 5, 0, -5 }, // '0'
{ 42, 4, 5, 5, 0, -5 }, // '1'
{ 45, 5, 5, 5, 0, -5 }, // '2'
{ 49, 5, 5, 5, 0, -5 }, // '3'
{ 53, 5, 5, 5, 0, -5 }, // '4'
{ 57, 5, 5, 5, 0, -5 }, // '5'
{ 61, 5, 5, 5, 0, -5 }, // '6'
{ 65, 5, 5, 5, 0, -5 }, // '7'
{ 69, 5, 5, 5, 0, -5 }, // '8'
{ 73, 5, 5, 5, 0, -5 }, // '9'
{ 77, 3, 4, 3, 0, -4 }, // ':'
{ 79, 3, 5, 3, 0, -4 }, // ';'
{ 81, 5, 3, 5, 0, -4 }, // '<'
{ 83, 5, 3, 5, 0, -4 }, // '='
{ 85, 5, 3, 5, 0, -4 }, // '>'
{ 87, 4, 5, 4, 0, -5 }, // '?'
{ 90, 7, 6, 7, 0, -5 }, // '@'
{ 96, 6, 5, 6, 0, -5 }, // 'A'
{ 100, 4, 5, 6, 1, -5 }, // 'B'
{ 103, 5, 5, 5, 0, -5 }, // 'C'
{ 107, 5, 5, 6, 1, -5 }, // 'D'
{ 111, 4, 5, 5, 1, -5 }, // 'E'
{ 114, 4, 5, 5, 1, -5 }, // 'F'
{ 117, 6, 5, 6, 0, -5 }, // 'G'
{ 121, 5, 5, 6, 1, -5 }, // 'H'
{ 125, 2, 5, 3, 1, -5 }, // 'I'
{ 127, 4, 6, 3, -1, -5 }, // 'J'
{ 130, 5, 5, 6, 1, -5 }, // 'K'
{ 134, 4, 5, 5, 1, -5 }, // 'L'
{ 137, 6, 5, 8, 1, -5 }, // 'M'
{ 141, 5, 5, 7, 1, -5 }, // 'N'
{ 145, 6, 5, 7, 0, -5 }, // 'O'
{ 149, 4, 5, 5, 1, -5 }, // 'P'
{ 152, 6, 6, 7, 0, -5 }, // 'Q'
{ 157, 5, 5, 6, 1, -5 }, // 'R'
{ 161, 5, 5, 5, 0, -5 }, // 'S'
{ 165, 5, 5, 5, 0, -5 }, // 'T'
{ 169, 5, 5, 6, 1, -5 }, // 'U'
{ 173, 6, 5, 6, 0, -5 }, // 'V'
{ 177, 8, 5, 8, 0, -5 }, // 'W'
{ 182, 6, 5, 6, 0, -5 }, // 'X'
{ 186, 5, 5, 5, 0, -5 }, // 'Y'
{ 190, 5, 5, 5, 0, -5 }, // 'Z'
{ 194, 3, 6, 3, 0, -5 }, // '['
{ 197, 4, 5, 4, 0, -5 }, // '\'
{ 200, 3, 6, 3, 0, -5 }, // ']'
{ 203, 5, 3, 5, 0, -5 }, // '^'
{ 205, 4, 2, 4, 0, 0 }, // '_'
{ 206, 3, 1, 5, 1, -5 }, // '`'
{ 207, 5, 4, 5, 0, -4 }, // 'a'
{ 210, 4, 5, 5, 1, -5 }, // 'b'
{ 213, 4, 4, 5, 0, -4 }, // 'c'
{ 215, 5, 5, 5, 0, -5 }, // 'd'
{ 219, 5, 4, 5, 0, -4 }, // 'e'
{ 222, 4, 5, 4, 0, -5 }, // 'f'
{ 225, 5, 6, 5, 0, -4 }, // 'g'
{ 229, 4, 5, 6, 1, -5 }, // 'h'
{ 232, 2, 5, 3, 1, -5 }, // 'i'
{ 234, 3, 7, 3, 0, -5 }, // 'j'
{ 237, 4, 5, 5, 1, -5 }, // 'k'
{ 240, 2, 5, 3, 1, -5 }, // 'l'
{ 242, 6, 4, 8, 1, -4 }, // 'm'
{ 245, 4, 4, 6, 1, -4 }, // 'n'
{ 247, 5, 4, 5, 0, -4 }, // 'o'
{ 250, 4, 6, 5, 1, -4 }, // 'p'
{ 253, 5, 6, 5, 0, -4 }, // 'q'
{ 257, 3, 4, 4, 1, -4 }, // 'r'
{ 259, 4, 4, 4, 0, -4 }, // 's'
{ 261, 4, 5, 4, 0, -5 }, // 't'
{ 264, 4, 4, 6, 1, -4 }, // 'u'
{ 266, 5, 4, 5, 0, -4 }, // 'v'
{ 269, 7, 4, 7, 0, -4 }, // 'w'
{ 273, 5, 4, 5, 0, -4 }, // 'x'
{ 276, 5, 6, 5, 0, -4 }, // 'y'
{ 280, 4, 4, 4, 0, -4 }, // 'z'
{ 282, 3, 6, 4, 0, -5 }, // '{'
{ 285, 3, 7, 5, 1, -5 }, // '|'
{ 288, 4, 6, 4, 0, -5 } // '}'
};
const GFXfont Open_Sans_Bold_7 PROGMEM = {
(uint8_t *)Open_Sans_Bold_7Bitmaps,(GFXglyph *)Open_Sans_Bold_7Glyphs,0x20, 0x7E, 11};
Вот гугле перевод структуры шрифтов
СпойлерПоказать
// Структуры шрифтов для более новой версии Adafruit_GFX (1.1 и более поздние).
// Примеры шрифтов включены в каталог «Fonts».
// Чтобы использовать шрифт в скетче Arduino, #include соответствующий .h
// файл и адрес передачи структуры GFXfont для setFont (). Передать NULL
// возвращаемся к «классическому» растровому шрифту с фиксированным пространством.

#ifndef _GFXFONT_H_
#define _GFXFONT_H_

/// Font data stored PER GLYPH
typedef struct {
uint16_t bitmapOffset; /// <Указатель на GFXfont-> растровое изображение
uint8_t width; /// <Растровые размеры в пикселях
uint8_t height; /// <Растровые размеры в пикселях
uint8_t xAdvance; /// <Расстояние до курсора (ось x)
int8_t xOffset; /// <X dist от курсора pos к углу UL
int8_t yOffset; /// <Y расстояние от позиции курсора до угла UL
} GFXglyph;

/// Данные хранятся для шрифта в целом
typedef struct {
uint8_t *bitmap; /// < /// <Glyph bitmaps, сцепленные
GFXglyph *glyph; /// <массив глифов
uint8_t first; /// <ASCII экстенты (последний символ)
uint8_t last; /// <ASCII экстенты (первый символ)
uint8_t yAdvance; /// <расстояние новой строки (ось y)
} GFXfont;

#endif // _GFXFONT_H_
У меня почему то не получилось установить библиотеку freetype в MinGw

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 07.10.2019{, 19:14}
diman27
Я пробовал так сделать, и библиотека даже схавала его, но на экране кракозябры, даже цифры.

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 07.10.2019{, 19:51}
aidar_i
Я здесь уже не смогу помочь.
Погуглите, может что нибудь нароете.

Как вариант , можете вставить в системный шрифт свой код. Должен работать.

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 09.10.2019{, 10:38}
aidar_i
diman27 писал(а):
06.10.2019{, 07:28}
Я имел ввиду немного другое, самому нарисовать буквы и импортировать.
Я использовал и набил свои буквы, как мне его в библиотеку импортировать, пробовал, кракозябры получились. Или может еще какой софт есть? Те темы читал, но там штатные шрифты делают, а я хочу свой размер сделать.
ВЛОЖЕНИЯ
FastFont_v0.03.rar
(569.77 КБ) 3 скачивания
Вернуться к началу
Вот Ваш шрифт вставил в glcdfont.c, замените в библиотеке и будет работать. А другие шрифты можете с помощью выбора шрифта использовать.
glcdfont.c
(13.37 КБ) 52 скачивания
diman27 писал(а):
06.10.2019{, 16:43}
Создал шрифт в этой программе, а как его в библиотеку добавить?
ВЛОЖЕНИЯ
Font_7x10_my.c
(31 КБ) 3 скачивания
Аналогично, но таким образом можно только один свой шрифт использовать.
Последний созданный Вами шрифт работает, но там неправильно расставлены буквы и символы.


Пример, там и блок выбора шрифта со входом добавил.
Выбор шрифтов1.flp
(378.08 КБ) 47 скачиваний

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 22.10.2019{, 13:42}
diman27
Ни как не могу победить шрифт, или маленький, или сильно большой. Замучился уже.

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 22.10.2019{, 20:29}
aidar_i
Какой Вам размер нужен?

Как создать Русский шрифт для Adafruit GFX?

Добавлено: 23.10.2019{, 14:48}
diman27
у меня матрица 30х10 цифры занимают 7х5+1 пробел. В идеале хотелось бы заполнить дисплей по максимуму. 9х5+1 пробел идеально было бы.