OberonCore
https://forum.oberoncore.ru/

Выводимые на экран символы
https://forum.oberoncore.ru/viewtopic.php?f=1&t=203
Страница 1 из 1

Автор:  Grabli [ Пятница, 12 Май, 2006 11:13 ]
Заголовок сообщения:  Выводимые на экран символы

Мне всегда казалось, что у каждого символа какого либо текста должна быть одинаковая ширина, если размер и тип шрифта одинаковый, конечно.

Это так, или мне только кажется?
И можно ли узнать какая ширина у символа?
Например, как узнать ширину символа "W", шрифта "Arial"?

Автор:  Илья Ермаков [ Пятница, 12 Май, 2006 11:21 ]
Заголовок сообщения: 

Есть особые моноширинные шрифты (еще их называют терминальными). Это системные аппаратные шрифты текстового режима и "косящие" под них - System, Terminal, Luicida Console...
В полиграфии используются разноширинные шрифты, что позволяет сделать текст нормально читабельным. Да еще может делаться кернинг, когда некоторые символы ставятся между собой ближе, чем другие, например, после Г интервал делается меньше.
Как работать со шрифтами в ББ - см. модуль Fonts, там в документации все описано.

Автор:  Grabli [ Пятница, 12 Май, 2006 11:33 ]
Заголовок сообщения: 

Кстати, документ в Black Box, в котором отображается текст использует стандартный класс Windows "Edit", или это снуля написанный компонент, где текст выводится с помощью GDI?

Автор:  Trurl [ Пятница, 12 Май, 2006 14:59 ]
Заголовок сообщения: 

Стандартные класы используются только в контролах.

Автор:  Info21 [ Пятница, 12 Май, 2006 16:35 ]
Заголовок сообщения:  Re: Выводимые на экран символы

Grabli писал(а):
как узнать ширину символа "W", шрифта "Arial"?


Посмотрите Ports:

(f: Frame) CharPos (x, index: INTEGER; IN s: ARRAY OF CHAR; font: Fonts.Font): INTEGER

f.CharPos( 0, 1, "Wx", <Arial> )

Автор:  Cardinal [ Пятница, 12 Май, 2006 18:06 ]
Заголовок сообщения: 

Хм..
Код:
PROCEDURE (f: Font) GetBounds (OUT asc, dsc, w: INTEGER)
NEW, ABSTRACT
Возвращает подъем, спуск шрифта и ширину самого широкого символа

Автор:  Илья Ермаков [ Пятница, 12 Май, 2006 20:27 ]
Заголовок сообщения: 

Тогда уже:
Код:
font := Fonts.dir.This("Arial", размер, стиль, толщина Fonts.normal, FOnts.bold или промежуточная);
font.StringWidth("W")

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/