LeshaInc 625 Опубликовано: 1 мая, 2018 (изменено) Большие растровые шрифты хорошо подходят для рекламных вывесок — бегающего текста. До появление этой библиотеки не было удобного способа использовать их в OpenComputers. Но теперь есть. pastebin get Mz7Ps5jQ /usr/lib/ocbf.lua Библиотека максимально прозрачна и сама по себе отрисовкой не занимается. Для отрисовки удобно использовать библиотеку Braille Bicycle от товарища @Totoro.Все шрифты хранятся по пути /usr/share/fonts в таком виде: /usr/share/fonts ├── IBM Plex Serif │ ├── Bold Italic.ocbf │ ├── Bold.ocbf │ ├── Italic.ocbf │ └── Regular.ocbf ├── Prosto One │ └── Regular.ocbf └── Roboto ├── Bold Italic.ocbf ├── Bold.ocbf ├── Italic.ocbf └── Regular.ocbf Для конвертирования новых шрифтов можно воспользоваться утилитой на языке Python: ocbf.py. Для ее работы необходимо установить библиотеки PIL, bitarray и tqdm (Python3).OCBF содержит в себе всего две функции: ocbf.load(family: string, style: string) — находит шрифт по указанному семейству и стилем, парсит его и возвращает объект шрифта. Если первый аргумент — это путь, то поиск производится не будет; вместо этого шрифт будет загружен из указанного файла (обязательно с расширением ocbf) ocbf.search(family: string, style: string) — находит шрифт и возвращает путь до него. Все функции ищут шрифт в директориях, указанных в переменной ocbf.path = "/usr/share/fonts:/home/.fonts:.". Из кода видно, что поиск осуществлятся в /usr/share/fonts, /home/.fonts и в текущей директории.Объект шрифта предоставляет следующие методы: font:drawChar(set: function, size: number, char: string, x: number, y: number) — отрисовывает один символ размером size используя шрифт по координатам (x; y). Функция set принимает три аргумента: координаты точки и значение 1 — точка заполнена и 0 — точка пуста. font:draw(set: function, size: number, str: string, x: number, y: number) — работает так же, как и font:drawChar, но отрисовывает сразу все символы. font:width(size: number, str: string — возвращает ширину строки с заданным размерам в точках. Помимо вышеперечисленных методов также есть свойства font.family, font.style и font.sizes. Все функции принимают аргумент size. Это высота шрифта в точках. Поскольку используя растровые шрифты невозможно обеспечить поддержку сразу всех размеров, size для разных шрифтов имеет разные допустимые значения. Для каждого размера в шрифте дублируются символы. Предоставляю также набор шрифтов Roboto — Regular Roboto — Bold Roboto — Italic Roboto — Bold Italic IBM Plex Serif — Regular IBM Plex Serif — Bold IBM Plex Serif — Italic IBM Plex Serif — Bold Italic Prosto One — Regular Все шрифты кроме Prosto One представлены в размерах 16 и 32 точек, Prosto One — 32 и 64. Имеется поддержка латиницы и кириллицы.Также стоит отметить, что для работы библиотеки необходим Lua 5.3 — используется string.unpack, побитовые операции, UTF-8.Для отрисовки текста на изображении в начале поста использовался следующий код: local ocbf = require("ocbf") local braille = require("braille") local matrix = braille.matrix(320, 200) local font1 = ocbf.load("Prosto One", "Regular") local font2 = ocbf.load("Roboto", "Bold") local font3 = ocbf.load("Roboto", "Regular") local function set(x, y, v) braille.set(matrix, x, y, v) end font1:draw(set, 64, "OCBF", 4, 1) font2:draw(set, 32, "Растровые шрифты", 4, 65) font2:draw(set, 32, "для OpenComputers", 4, 98) font3:draw(set, 32, "от LeshaInc", 4, 168) braille.render(matrix, 1, 1) Изменено 1 мая, 2018 пользователем LeshaInc 21 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах