
Lib_font32
Библиотека для работы с графическими шрифтами

---


Шрифты создаются специальной программой FontGen из папки src и представляют из себя набор из 2-х файлов: *.dat и *.png (для каждого шрифта - отдельно).
НЕ ЗАБЫВАЙТЕ ПРИКРЕПЛЯТЬ ВНУТРЬ ПРОЕКТА ИСПОЛЬЗУЕМЫЕ ФАЙЛЫ РЕСУРСОВ!
Программа для генерации шрифтов FontGen (GenFont) находится в папке с дополнениями главного архива библиотек.


Init(k: integer) - Начальная инициализация библиотеки.
    k - количество шрифтов, которое мы собираемся использовать
    Процедура может вызываться неоднократно (например, для очистки памяти от ненужных уже шрифтов),
    но после неё все измененные параметры текста сбиваются и шрифты нужно тоже загружать заново.
    
Font(i: integer) - Выбрать текущий шрифт.
    i - номер шрифта, может быть от 0 до k-1 (см. функцию Init)
    
Color(a: integer; r: integer; g: integer; b: integer) - Выставить цвет выводимого текста
    a - прозрачность (0 - 255)
    r, g, b - RGB цвет
    
LoadFont(fname: string) - Загрузить шрифт. Номер шрифта должен был быть задан заранее процедурой Font().
    fname - название шрифта (без расширения и без символа "/")
    
LoadFont2(fname: string; fname2: string) - Другая вариация загрузчика шрифтов.
    fname - название шрифта (без расширения и без "/");
    fname2 - название таблицы для данного шрифта (без расширения и без "/").
    Данной функцией удобно пользоваться если у вас несколько разноцветных шрифтов с одной таблицей.

DrawString(s: string; x: integer; y: integer) - Вывод одной строки текста на экран (без переносов)
    s - текст выводимой строки
    x, y - координаты, куда нужно выводить строку
    
TextWindow(x: integer; y: integer; w: integer; h: integer) - Задать окно, в которое будет выводиться строка
    x, y - координаты верхнего левого угла окна
    w, h - ширина и высота окна
    По умолчанию задано окно размером в весь экран данного телефона.

integer TextHeight - Возвращает высоту текущего шрифта в пикселах

integer TextWidth(s: string) - Возвращает длину текста s в пикселах.
    Это нужно, например, для того, чтобы прикинуть влезет ли данная строка на экран.

Modify(im: image) - Модифицировать текущий шрифт. Применяется для изменения цвета/прозрачности
    шрифта, например, с помощью библиотеки Lib_alpha.
    
integer Format(s: string; b: integer) - Разбить длинный текст на мелкие строчки так, чтобы он помещался в
    окно, заданное процедурой TextWindow. Функция возвращает расчётную высоту полученного разбитого
    текста в пикселах. Параметр b определяет тип добавления текста:
    0 - Форматировать новый текст (старый при этом будет удалён)
    1 - Добавить строку в конец к уже отформатированному тексту
    При необходимости вставки в текст переноса строки нужно делать так:
    s:='Сейчас будет пере-' + chr(13) + 'нос текста.';
    или для двойного переноса:
    s:='Михаил Булгаков' + chr(13) + chr(13) + 'Мастер и Маргарита';
    
DrawTextWindow - Нарисовать ранее разбитый функцией Format текст в окне
    Окно должно было быть заданно функцией TextWindow до форматирования.

MoveUp(px: integer) - Перемотать текст в окне на px пикселов вверх

MoveDown(px: integer) - Перемотать текст в окне на px пикселов вниз

Spacing(i: integer) - Установить межбуквенное расстояние.
i - расстояние между буквами в пикселах. По умолчанию значение Spacing равно нулю.
    Может принимать как положительные так и отрицательные значения.
    
Leading(i: integer) - Установить межстрочное расстояние (при выводе текста функцией DrawTextWindow)
    i - межстрочное расстояние в пикселах. По умолчанию значение Leading равно нулю.
    Может принимать как положительные так и отрицательные значения.

Align(i: integer) - Установить выравнивание текста при отображении его функцией DrawTextWindow
    i - требуемый тип выравнивания текста, может быть таким:
    0 - Выравнивание строки по левому краю окна (стоит по умолчанию)
    1 - Вырвнивание строки по центру окна
    2 - Выравнивание строки по правому краю окна
    
GetPosition - Выяснить текущее положение текста в пикселах.
    К примеру, у вас очень длинный текст, который не влазит в окно. Вы его передвинули вниз, скажем, на 33 пиксела
    и вверх на 10 пикселов. Функция GetPosition вернет 23.
    Данная функция применяется в основном для полосы прокрутки текста (см. библиотеку Lib_vscroll)
    
AddImage(im: image) - Добавление иллюстрации к тексту в массив иллюстаций.
    Всем иллюстациям присваиваются внутренние номера начиная с 0 и выше.
    Для вставки иллюстрации в текст нужно вставить в текст строку вида
    "[IMG N]"
    где N - номер иллюстрации (с 0)
    Все иллюстрации должны быть загружены в массив до форматирования текста!
    Иначе форматирование текста приведет к ошибке!
    Желательно до иллюстрации и после нее вставить пустые строки в тексте.
    
RemoveImages - Очистить массив иллюстраций


Пример использования в папке Example
Проверено на телефонах SE K550i, SE C510i


---

by odd
