Перейти к содержимому


Фотография

OCBF — Растровые шрифты для OpenComputers

ocbf leshainc пиво сок opencomputers

  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 Оффлайн   LeshaInc

LeshaInc
  • Пользователи
  • Сообщений: 1 212
  • Уровень сигнала: 14,42%
  • В игре: 117 час. 41 мин.
  • ГородЛуна

Награды

                       

Отправлено 01 Май 2018 - 19:36

*
Популярное сообщение!

gHGETvO.png

 

Большие растровые шрифты хорошо подходят для рекламных вывесок — бегающего текста. До появление этой библиотеки не было удобного способа использовать их в 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 для разных шрифтов имеет разные допустимые значения. Для каждого размера в шрифте дублируются символы.
 

Предоставляю также набор шрифтов

Все шрифты кроме 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)

Сообщение отредактировал LeshaInc: 01 Май 2018 - 21:22






Темы с аналогичным тегами ocbf, leshainc, пиво, сок, opencomputers

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных