Главная » Разработка для Windows Phone 7 » Пункты и пикселы Windows Phone 7

0

Еще одно свойство TextBlock, которое можно без труда изменить – FontSize:

FontSize="3 6"

Но что именно означает эта цифра?

Единицами измерения в Silverlight являются пикселы, и FontSize не исключение. Задавая 36, мы получаем шрифт, высота которого от самого верха надстрочного элемента до самого низа подстрочного элемента составляет примерно 36 пикселов.

Но со шрифтами все не так просто. Фактическая высока результирующего TextBlock будет составлять 48 пикселов, что примерно на 33% выше, чем подразумевается значением FontSize. Благодаря этому дополнительному промежутку (который называют межстрочным интервалом) строки текста не «наползают» друг на друга.

Традиционно размеры шрифтов выражаются в пунктах. В обычной типографии пункт примерно равен 1/72 дюйма, но в цифровой типографии за пункт часто принимается строго 1/72 дюйма. Шрифт размером 72 пункта равен примерно дюйму. (Я говорю «примерно», потому что размер пункта отражает высоту группировки строк, и, на самом деле, только

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

Как преобразовывать пикселы в пункты и обратно? Очевидно, что это можно сделать только для конкретного устройства вывода. На принтере с разрешением 600 точек на дюйм (dots- per-inch, DPI), например, 72-й шрифт будет 600 пикселов высотой.

Обычно используемые сегодня мониторы, как правило, имеют разрешение в районе 100 DPI. Например, возьмем монитор в 21", обеспечивающий 1600 пикселов по горизонтали и 1200 пикселов по вертикали. Это составляет 2000 пикселов по диагонали. Разделим на 21" и получим примерно 95 DPI.

По умолчанию Microsoft Windows предполагает разрешение экрана равным 96 DPI. При таком предположении соотношения размеров шрифтов и количества пикселов описываются следующими выражениями:

пункты = % х пикселы

пункты = 4/3 х пикселы

Данное отношение применимо только к обычным мониторам, но людям так нравятся эти формулы преобразования, что они используют их и в разработке для Windows Phone 7.

Итак, задавая свойству FontSize значение

FontSize="3 6"

можно утверждать, что задан шрифт размером 27 пунктов.

Чтобы получить размер в пикселах, увеличьте заданный в пунктах размер на 33%. Именно это значение задается свойству FontSize элемента TextBlock. Высота результирующего TextBlock будет еще на 33% больше FontSize.

Вопрос размера шрифта становится более острым при переходе к экранам с большим разрешением, которые используются на устройствах Windows Phone 7. Экран размером 480 х 800 имеет по диагонали 933 пиксела. Экран телефона, который я использовал для выполнения примеров для данной книги, равен примерно 3Уг", что обеспечивает плотность пикселов около 264 DPI. (Разрешение экрана обычно выражается числом, кратным 24.) Грубо говоря, это разрешение почти в два с половиной раза больше, чем разрешение обычных мониторов.

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

Для Веб-браузера в Silverlight по умолчанию применяется FontSize, равный 11 пикселам, что соответствует размеру шрифта 8,25 пункта. Это достаточно для монитора настольного компьютера, но несколько маловато для телефона. Поэтому Silverlight для Windows Phone определяет коллекцию типовых размеров шрифтов. (Подробнее эти вопросы рассматриваются в главе 7.) Стандартный файл MainPage.xaml включает следующий атрибут в корневом элементе:

FontSize="{StaticResource PhoneFontSizeNormal}"

FontSize наследуется через дерево визуальных элементов и применяется ко всем элементам TextBlock, для которых не задано собственное свойство FontSize. Его значение – 20 пикселов, что почти в два раза больше стандартного в Silverlight FontSize, применяемого для настольных приложений. Согласно стандартным формулам FontSize, равный 20 пикселам,

соответствует 15 пунктам. Но размер фактически отображаемого на экране телефона шрифта составляет примерно 2/5 того размера, какой имел бы шрифт в 15 пунктов в печатном варианте.

Фактическая высота TextBlock, отображающего текст такого размера, примерно на 33% больше FontSize. В данном случае это около 27 пикселов.

Источник: Чарльз Петзольд, Программируем Windows Phone 7, Microsoft Press, © 2011.

По теме:

  • Комментарии