При разработке формы символов растрового шрифта приходится учитывать множество факторов, определяющих "читабельность" символов, и в то же время "уложиться" в заданное поле пикселей. Как видно на примере символа, изображенного на рис. 9.23, при выборе формы символа даже самого малого размера на поле пикселей следует оставлять интервал между буквами как по горизонтали, так и по вертикали, предусмотреть место для выступающих частей таких букв, как g и у (а в наборе символов кириллицы еще и буквы Й), обеспечить различную высоту строчных и прописных букв. Разработанный шрифт сохраняется в виде двоичного кода. Например, для шрифта из 128 символов размером 8x13 потребуется выделить массив

GLubyte my_font[128][13]?

Перенос двоичного массива bitmap некоторого символа на экран в текущую позицию растра выполняется обращением к функции glBitmap():

glBitmap(width, height, xo, yo, xi, yi, bitmap);

Аргументы width и height задают соответственно ширину и высоту символа в пикселях. Аргументы хо и уо имеют формат числа с плавающей точкой и задают смещение положения

Символ растрового шрифта

Рис. 9.23. Символ растрового шрифта В русскоязычной терминологии эта характеристика шрифта называется кеглем - название достаюсь компьютерной технологии по наследству от ручного типографского набора. - Прим. перев.

''Символы пропорционального шрифта, в отличие от моноширинного, имеют разную ширину букв, например "I" и "Н/".

Операции с изображением на уровне растрового представления

выводимого образа (его левого нижнего угла) относительно текущей позиции растра, а аргументы х1 и у1, которые также имеют формат чисел с плавающей точкой, - приращение текущей позиции растра после завершения операции (рис. 9.24).

Вывод на экран образов символов растрового шрифта

Рис. 9.24. Вывод на экран образов символов растрового шрифта В главе 3 уже рассматривалась методика использования дисплейных списков для вывода текста. Если массив образов символов my_f ont уже определен, то новый дисплейный список будет сформирован следующим фрагментом программы5"opengl5_438.html">⇐ Предыдущая| |Следующая ⇒