[WPF] Можно ли улучшить отображение шрифтов?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.10.09 15:16
Оценка:
Можно ли как-то улучшить отображение шрифтов в WPF?

Пытаюсь прикрутить к интеграции Nemerle с VS 2008 хинты на основе WPF.

При отображении шрифтов тех же размеров, что в обычных хинтах текст читается очень плохо. Даже увеличенный шрифт (Arial 14) выглядит не очень здорово (и при этом занимает намного больше места на экране). Все смазано и причем весьма криво.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [WPF] Можно ли улучшить отображение шрифтов?
От: korzhik Россия  
Дата: 30.10.09 15:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Можно ли как-то улучшить отображение шрифтов в WPF?


VD>Пытаюсь прикрутить к интеграции Nemerle с VS 2008 хинты на основе WPF.


VD>При отображении шрифтов тех же размеров, что в обычных хинтах текст читается очень плохо. Даже увеличенный шрифт (Arial 14) выглядит не очень здорово (и при этом занимает намного больше места на экране). Все смазано и причем весьма криво.


проблемы с шрифтами и отображением иконок починили только в WPF4, который идёт с VS2010 beta2
Re: [WPF] Можно ли улучшить отображение шрифтов?
От: Vladek Россия Github
Дата: 30.10.09 16:06
Оценка: 126 (1)
Здравствуйте, VladD2, Вы писали:

VD>Можно ли как-то улучшить отображение шрифтов в WPF?


VD>Пытаюсь прикрутить к интеграции Nemerle с VS 2008 хинты на основе WPF.


VD>При отображении шрифтов тех же размеров, что в обычных хинтах текст читается очень плохо. Даже увеличенный шрифт (Arial 14) выглядит не очень здорово (и при этом занимает намного больше места на экране). Все смазано и причем весьма криво.


Забавно, я с тем же вопросом. Вот код для начала, надо положить его например в App.OnStartup:
var fontFamily = "Calibri"; // looks really good
var fontSize = 10.0d * (96d / 72d); // 10 points

TextElement.FontFamilyProperty.OverrideMetadata(typeof(TextElement), new FrameworkPropertyMetadata(new FontFamily(fontFamily)));
TextElement.FontSizeProperty.OverrideMetadata(typeof(TextElement), new FrameworkPropertyMetadata(fontSize));

TextBlock.FontFamilyProperty.OverrideMetadata(typeof(TextBlock), new FrameworkPropertyMetadata(new FontFamily(fontFamily)));
TextBlock.FontSizeProperty.OverrideMetadata(typeof(TextBlock), new FrameworkPropertyMetadata(fontSize));


Это решит проблему, но шрифты в TextBox-ах останутся прежними (класс Control переопределяет метаданные для шрифта и их вышеприведённым макаром не сменишь). Вопрос: как сменить шрифт для наследников класса Control одним махом?
Everything is an object
Re[2]: [WPF] Можно ли улучшить отображение шрифтов?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.10.09 16:30
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Забавно, я с тем же вопросом. Вот код для начала, надо положить его например в App.OnStartup:

V>
V>var fontFamily = "Calibri"; // looks really good
V>var fontSize = 10.0d * (96d / 72d); // 10 points
V>


V>Это решит проблему, но шрифты в TextBox-ах останутся прежними (класс Control переопределяет метаданные для шрифта и их вышеприведённым макаром не сменишь). Вопрос: как сменить шрифт для наследников класса Control одним махом?


Как я понял — это всего лишь задание шрифта Calibri.
Химия с размерами шрифта имеет смысл?
Можно ли это дело просто задать в нужный элемент, а не назначать глобально?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: [WPF] Можно ли улучшить отображение шрифтов?
От: Vladek Россия Github
Дата: 30.10.09 18:49
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Как я понял — это всего лишь задание шрифта Calibri.


Он выглядит чётче других.

VD>Химия с размерами шрифта имеет смысл?


Чем больше размер, тем меньше заметна размытость.

VD>Можно ли это дело просто задать в нужный элемент, а не назначать глобально?


Да, можно — через стиль или напрямую, установив нужные свойства.
I ♥ (+[___]x)
Re[4]: [WPF] Можно ли улучшить отображение шрифтов?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.10.09 19:07
Оценка:
Здравствуйте, Vladek, Вы писали:

V>... установив нужные свойства.


Можно по подробнее?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [WPF] Можно ли улучшить отображение шрифтов?
От: Аноним  
Дата: 30.10.09 21:13
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Можно ли как-то улучшить отображение шрифтов в WPF?

Пиши белым по черному фону как в бленде и еще лучше жирным шрифтом — будет довольно готично, но размытие реально меньше заметно.
Кстати, в бленде похоже всплывающие подсказки в коде рендерятся не WPF, уж очень чётко они выглядят по сравнению со всем остальным интерфейсом.
Re[2]: [WPF] Можно ли улучшить отображение шрифтов?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.10.09 21:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Кстати, в бленде похоже всплывающие подсказки в коде рендерятся не WPF, уж очень чётко они выглядят по сравнению со всем остальным интерфейсом.


Блин. Хоть выбрасывай этот WPF и бери банальный броузер.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: [WPF] Можно ли улучшить отображение шрифтов?
От: Аноним  
Дата: 30.10.09 22:00
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Блин. Хоть выбрасывай этот WPF и бери банальный броузер.

А зачем там вообще WPF? Нужна какая-то интерактивность от отдельных элементов текста?
На худой конец можно рендерить текст в картинку обычными средствами и составлять хинт из картинок по такой же схеме.
Re[4]: [WPF] Можно ли улучшить отображение шрифтов?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.10.09 22:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А зачем там вообще WPF? Нужна какая-то интерактивность от отдельных элементов текста?


Да.

А>На худой конец можно рендерить текст в картинку обычными средствами и составлять хинт из картинок по такой же схеме.


Еще можно на принтер выводить, а потом сканировать, но я не настолько веселый парень.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [WPF] Можно ли улучшить отображение шрифтов?
От: Кирилл Осенков Украина
Дата: 31.10.09 03:16
Оценка: 42 (1)
Здравствуйте, VladD2, Вы писали:

VD>Можно ли как-то улучшить отображение шрифтов в WPF?

В 2008 почти никак Хотя ухищрения есть (см. внизу)
В 2010 Beta2 устанавливаешь UseLayoutRounding="True" на корне дерева и TextOptions.TextFormattingMode="Display", станет сильно лучше.

Детали здесь:
  • http://windowsclient.net/wpf/white-papers/wpftextclarity.aspx
  • http://blogs.msdn.com/text
  • http://karlshifflett.wordpress.com/2009/10/22/much-improved-net-4-0-wpf-text-rendering/
  • http://blogs.msdn.com/text/archive/2009/04/15/introducing-the-directwrite-font-system.aspx
  • Re[3]: [WPF] Можно ли улучшить отображение шрифтов?
    От: Аноним  
    Дата: 31.10.09 09:31
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Блин. Хоть выбрасывай этот WPF и бери банальный броузер.

    Как вариант, а по производительности устраивает?
    Я погуглил по free с# html renderer и с ходу наткнулся на это, правда больше всё-таки коммерческих контролов.
    Re[4]: Опять про вывод типов и overload resolution
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 31.10.09 20:09
    Оценка:
    Здравствуйте, Аноним, Вы писали:

    VD>>Блин. Хоть выбрасывай этот WPF и бери банальный броузер.

    А>Как вариант, а по производительности устраивает?

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

    А>Я погуглил по free с# html renderer и с ходу наткнулся на это, правда больше всё-таки коммерческих контролов.


    Спасибо. Если WPF все же достанет, попробую это дело.
    В текущем варианте уже почти все готово, так что пока его бросать не хочется.
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[2]: [WPF] Можно ли улучшить отображение шрифтов?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 02.11.09 16:19
    Оценка:
    Здравствуйте, Кирилл Осенков, Вы писали:

    КО>В 2008 почти никак Хотя ухищрения есть (см. внизу)

    КО>В 2010 Beta2 устанавливаешь UseLayoutRounding="True" на корне дерева и TextOptions.TextFormattingMode="Display", станет сильно лучше.

    А можно поставить версию WPF идующую с 2010 Beta2 отдельно?
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[2]: [WPF] Можно ли улучшить отображение шрифтов?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 02.11.09 18:08
    Оценка:
    Здравствуйте, Кирилл Осенков, Вы писали:

    КО>В 2008 почти никак Хотя ухищрения есть (см. внизу)

    КО>В 2010 Beta2 устанавливаешь UseLayoutRounding="True" на корне дерева и TextOptions.TextFormattingMode="Display", станет сильно лучше.

    Кстати, 2010 Beta 1 жудко тормозила при загрузке. Это хоть немного поправят к релизу?
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[3]: [WPF] Можно ли улучшить отображение шрифтов?
    От: Кирилл Осенков Украина
    Дата: 05.11.09 22:26
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>А можно поставить версию WPF идующую с 2010 Beta2 отдельно?


    Можно поставить .NET Framework 4.0 Beta 2, без студии:
    http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx

    Там несколько вариантов, можно скачать даже не весь framework, а только Client Profile — 35 MB, но в нём WPF есть.
    Re[3]: [WPF] Можно ли улучшить отображение шрифтов?
    От: Кирилл Осенков Украина
    Дата: 05.11.09 22:28
    Оценка: 42 (1)
    Здравствуйте, VladD2, Вы писали:

    VD>Кстати, 2010 Beta 1 жудко тормозила при загрузке. Это хоть немного поправят к релизу?


    Да, Beta 2 значительно быстрее Beta1. А текущие билды уже ощутимо лучше Beta 2
    В некоторых сценариях 2010 быстрее 2008. К сожалению, не во всех.
    Re[4]: [WPF] Можно ли улучшить отображение шрифтов?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 06.11.09 06:42
    Оценка:
    Здравствуйте, Кирилл Осенков, Вы писали:

    КО>Можно поставить .NET Framework 4.0 Beta 2, без студии:

    КО>http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx

    КО>Там несколько вариантов, можно скачать даже не весь framework, а только Client Profile — 35 MB, но в нём WPF есть.


    Я правильно понял, что повышение качества рендеринга мы получим только если перейдем на 4-ый фрэймворк.
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[4]: [WPF] Можно ли улучшить отображение шрифтов?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 06.11.09 06:45
    Оценка:
    Здравствуйте, Кирилл Осенков, Вы писали:

    КО>Да, Beta 2 значительно быстрее Beta1. А текущие билды уже ощутимо лучше Beta 2

    КО>В некоторых сценариях 2010 быстрее 2008. К сожалению, не во всех.

    А загрузка ускорилась?

    Кстати, закинь (если есть такая возможность) мысль, о том, что МС сам подрывает доверие к WPF поставляя в составе виндовс сильно деоптимизированные 3D-дрова. Давиче мне один товарищ жаловался на неприемлемую производительность прокрутки в 2010-ой студии. После некоторого разбирательства и скачивания дров для видюхи с сайта Интела все вроде бы как нормализовалось.

    Понятно, что в одночасье МС не начнет поставлять в составе виндовс быстрые дрова, но хотя бы написать в блогах и рейдми об этом надо.
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[5]: [WPF] Можно ли улучшить отображение шрифтов?
    От: Кирилл Осенков Украина
    Дата: 07.11.09 00:06
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Я правильно понял, что повышение качества рендеринга мы получим только если перейдем на 4-ый фрэймворк.


    Да.
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.