Большинство фонтов .chr, находящихся в директории BGI, не содержат русских символов, однако там есть директория Rus, внутри которой есть соответствующие русифицированные фонты. Для работы можно их просто переписать в директорию BGI, заменив соответствующие нерусифицированные. Кроме того, в директории Rus есть еще несколько русифицированных фонтов, которые можно использовать в программе с помощью функции installuserdriver. Там же находится программа Редактор фонтов Fe.exe, с помощью которой можно корректировать отдельные символы штриховых фонтов.
void settextstyle(int font, int direction, int charsize); Устанавливает фонт, направление вывода текста(горизонтальное, символическая константа – HORIZ_DIR(0) и вертикальное(VERT_DIR(1), поворот на 900 против часовой стрелки), коэффициент увеличения символа(0 – 10). Если использовать точечный DEFAULT_FONT, то при charsize=5 размер символ составляет 40*40 пикселей. Значение charsize=0 используется только для штриховых фонтов и соответствует множителю по умолчанию 4 либо коэффициенту, заданному функцией setusercharsize.
Пример.
settextstyle(EUROPEAN_FONT, VERT_DIR, 3);
void getsettingstype(struct * texttypeinfo); Дает информацию о текущем текстовом фонте. Структура textsettingstype имеет вид:
struct textsettingstype{
int font;
int direction;
int charsize;
int horiz; // Параметры выравнивания по горизонтали
int vert; // и вертикали, см. функцию settextjustify
}
Пример. После действия функции settextstyle примера будем иметь:
gettextsettings(&cur_text);
cur_text.font à EUROPEAN_FONT
cur_text.direction à VERT_DIR
cur_text.charsize à 3
void settextjustify(int horiz, int vert); Устанавливает выравнивание выводимого текста относительно текущего положения курсора. Задает 3 возможных положения текста в обоих направлениях. Эти положения определяются символическими константами:
по горизонтали:
0 LEFT_TEXT // Курсор слева от текста
1 CENTER_TEXT // Курсор по центру
2 RIGHT_TEXT // Курсор справа от текста
по вертикали:
0 BOTTOM_TEXT // Курсор под текстом
1 CENTER_TEXT // Курсор по центру
2 TOP_TEXT // Курсор над текстом
int textheight(char* string); Возвращает высоту текстовой строки в пикселях.
int textwidth(char* string); Возвращает длину текстовой строки в пикселях.
Эти функции полезны при расчете растояний между строками, размеров окон, в которые строки выводятся, и т.п.
void setusercharsize(int multx, int divx, int multy, int divy); Позволяет задать нецелые коэффициенты увеличения символов по горизонтали и вертикали. Коэффициент по горизонтали равен multx / divx, по вертикали – multy / divy.
Пример. Увеличение по вертикали на 50%, по горизонтали – вдвое.
setusercharsize(2, 1, 3, 2);
Замечание. Функция работает только в том случае, если в предыдущем вызове функции settextstyleтретий параметр charsize равен 0.
Если в программе требуется использование штрихового фонта, который не входит перечень символических констант BGIсистемы, то для его установки применяют функцию:
int installuserdriver(char* full_path); Параметр full_path указывает полный путь к файлу .chr, возвращается идентификатор файла, который позже используется в функции settextstyle.
Пример.
fn03 = installuserdriver("c:\bc\bgi\rus\fn03.chr");
……………………………………………………
settextstyle(fn03, HORIZ_DIR, 2);