Почему Silverlight утверждает, что высота шрифта указана в пикселях, а ЭТО НЕТ? - PullRequest
0 голосов
/ 29 октября 2011

Вся документация, которую я могу найти, и каждый поиск, который я выполняю, продолжает возвращаться с утверждением, что в Silverlight, когда вы устанавливаете FontHeight, это высота в пикселях, и аналогично для LineHeight, например, в. текстовый блок. Но на практике это совсем не так: когда я устанавливаю высоту шрифта (и высоту строки) в 22 с помощью обычного шрифта, такого как Lucida Sans Unicode, фактическая высота между строками составляет 33 пикселя. (На самом деле 33 и дробь.)

Чтобы обойти это, я попытался сделать то, что делал в Java-апплетах: использовать метрики шрифта, чтобы спросить, какой у меня текст на самом деле. Единственный способ сделать это, как я обнаружил, - визуализировать образец текста в закадровый TextBlock, измерить его и посмотреть, насколько высоким он окажется. Он дал очень удобный ответ: 32 пикселя.

Обратите внимание, что это почти правильно. Текстовый блок TextBlock отображал шрифт высотой 33 пикселя, а экранный - 32 пикселя. Единственный способ точно измерить мой текст - это поставить блок «за кадром» на экране, прозрачный и позади реального экрана. Затем измерение возвращается 33.

Что мне здесь не хватает? Почему все говорят, что высота указана в пикселях, но я нахожу, что число здесь представляет фактическую высоту, измеряемую в полутора пикселях, и, кроме того, точное соотношение изменяется в зависимости от того, является ли элемент управления активной страницей или отстраненный и самодостаточный? Что я не понимаю ??

Добавлено примечание : я знаю разницу между высотой, занимаемой строкой текста, и высотой фактических глифов. Но в той же документации, в которой говорится, что высота шрифта указана в пикселях, также говорится, что высота строки указывается в пикселях и по умолчанию совпадает с высотой шрифта. Это ясно подразумевает, что высота шрифта должна включать все используемое вертикальное пространство, а не только высоту глифа.


Последнее замечание : В конце концов, моя проблема в том, что я постоянно сталкиваюсь с дезинформацией о серебряном свете, а потом забываю, где я ее читаю, и перепутал ее с точной информацией. Например, где я читал, что Canvas тянется, чтобы вместить его содержимое? Это не так.

Ответы [ 2 ]

2 голосов
/ 14 октября 2012

высота шрифта в 1,5 раза больше высоты шрифта в типографии

Использовать сетку на этой странице http://www.studentsportfolio.nl/10pxGrid/

2 голосов
/ 30 октября 2011

Здесь является некоторым объяснением понятия «размер шрифта».

Я создал пример текста размером 200 пикселей. Желтый прямоугольник также имеет размер 200 пикселей:

<Rectangle Height="200" Width="96" Fill="Yellow" />
<TextBlock FontSize="200" FontFamily="Arial" Text="ÂSj" />

enter image description here

  • Восхождение (высота) = 180 пикселей,

  • Спуск (расстояние ниже Â и S) = 50 пикселей,

  • Внутренний отвод (окружность выше Â) = 30 пикселей

  • Высота шрифта = подъем + спуск = 180 + 50 = 230 пикселей

  • Размер шрифта = высота шрифта - внутренний шрифт = 230 - 30 = 200 пикселей

Как видите, фактическая высота шрифта в 200 пикселей составляет 230 пикселей. Соответственно, шрифт в 22 пикселя имеет фактическую высоту 33 пикселя.

Вывод: акценты над буквами не включены в размер шрифта , но включены в высоту шрифта .

...