Re: swt, stringExtent
От: Chmmr Россия  
Дата: 02.12.08 09:27
Оценка: 7 (2)
Здравствуйте, ., Вы писали:

.>Что за размеры возвращает stringExtent?


Возвращает он не совсем то, что написано в документации, а именно ширину текста только по базовой линии. Верхняя правая часть буквы W оказывает торчащей из этого прямоугольника. Но, видимо, так работает вся система шрифтов, по крайней мере, в Windows. Убедиться в этом можно, набрав например в MS Word'е курсивом строку "Wa" и выделив только первую букву — прямоугольник выделения будет точно такой же.

У org.eclipse.swt.graphics.TextLayout такое же поведение.
swt, stringExtent
От: . Великобритания  
Дата: 30.11.08 16:49
Оценка:
Что за размеры возвращает stringExtent?
Если я делаю
gc.setFont(new Font(gc.getDevice(), "Arial", 20, SWT.NORMAL));
final Point point = gc.stringExtent("W");
gc.drawString("W", 2, 2);

то размеры в принципе соответствуют действительности. А если сделать SWT.ITALIC,
то буква рисуется шире (если измерить на screenshot, то 28х22), а stringExtent
возвращает 25х31.
SWT 3.3.0-v3346, win32
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: swt, stringExtent
От: . Великобритания  
Дата: 02.12.08 19:37
Оценка:
Chmmr wrote:

> .>Что за размеры возвращает stringExtent?

>
> Возвращает он не совсем то, что написано в документации, а именно ширину
> текста только по базовой линии. Верхняя правая часть буквы W оказывает
> торчащей из этого прямоугольника. Но, видимо, так работает вся система
> шрифтов, по крайней мере, в Windows. Убедиться в этом можно, набрав
> например в MS Word'е курсивом строку "Wa" и выделив только первую букву
> — прямоугольник выделения будет точно такой же.
Точно, вот ведь! WordPad так же рисует, как и у меня. А я сижу пикселы притираю.
Кстати, в Arial ещё более-менее, а вот Tahoma вообще жуть.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.