MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Магия шрифтов по умолчанию в WPF"
Answer 702282
В WPF существует механизм автоматического замещения (fallback) шрифтов. (См. MSDN: FontFamily.) Если указанный физический шрифт не удается найти на целевой системе, вместо него используется составной (composite) шрифт Global User Interface. По сути это XML-файл, который содержит параметры шрифта (в т.ч. и Baseline) и сопоставления диапазонов символов физическим шрифтам. Этот файл лежит в
%WINDIR%\MICROSOFT.NET\Framework\версия\WPF\Fonts\GlobalUserInterface.COMPOSITEFONT
Диапазону символов 0000-052F (куда и входят английские буквы) в нем сопоставлены следующие шрифты:
Segoe UI, Tahoma, Arial, Simplified Arabic, Traditional Arabic, Arial Unicode MS, Microsoft Sans Serif, Lucida Sans Unicode
Параметры шрифта по умолчанию следующие:
Baseline: 0.9
Line spacing: 1.2
Таким образом, как Segoe UI, так и Arial могут, в зависимости от ситуации, замещать не найденные шрифты (при этом вид будет отличаться от соответствующих "нормальных" шрифтов, из-за отличающихся LineSpacing и BaseLine). При указании пустой строки вместо шрифта используется Arial, поскольку он прописан как NullFontFamilyCanonicalName в коде модуля FontFamily.cs:
internal static readonly CanonicalFontFamilyReference NullFontFamilyCanonicalName = CanonicalFontFamilyReference.Create(null, "#ARIAL");
При указании несуществующего шрифта используется Segoe UI, так как он является шрифтом по умолчанию для GUI в Windows Vista и всех более поздних ОC. См. Change the Default Font of a WPF Application.
Если вас не устраивают параметры Composite Font по умолчанию, можно отредактировать XML-файл (там несколько секций, надо брать соответствующую вашей ОС). Но лучше, я полагаю, этого не делать, и просто не ошибаться в шрифтах.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.