Какое свойство в файле шрифта делает программу решающей имитировать жирный шрифт? - PullRequest
7 голосов
/ 09 сентября 2010

Я ищу свойство в файле шрифта (из файлов WPF System.Windows.Media.Fonts Typeface или GlyphTypeface) или непосредственно обращаюсь к файлу .ttf / .otf, которое позволит мне определить, есть ли такая программа, как Write /WordPad в Windows будет применять полужирный шрифт.По сути, некоторые шрифты, имеющие атрибут Bold, все равно получат дополнительную смелость, а некоторые - нет.Я пытаюсь выяснить, какая логика используется для этого определения.

Чтобы вручную увидеть это, скопируйте и вставьте следующее в Write / WordPad (или в Writer OOo, или в MS Word, или ...) и измените начертание шрифта каждой строки на его имя (т.е. примените Arial Black к Arial Black)

  1. Arial Black
  2. Arial Rounded MT Bold
  3. Arial Narrow

Теперь примените к ним жирный шрифт.Вы увидите, что # 2 и # 3 изменятся, но не # 1.

С # 3, однако, происходит нечто иное, чем два других - все вместе применяется другой шрифт.А именно ARIALNB .TTF (добавлено 'NB', которое Arial Narrow Bold ) вместо ARIALN.TTF (добавлено 'N', что Arial Narrow ).Таким образом, в случае этого шрифта жирный шрифт фактически не применяется.

Вернуться к списку.№ 1 не меняется, но № 2 меняется.# 1 вес «черный», а № 2 «жирный».Если вы возьмете жирную версию # 3, ARIALNB.TTF и примените к ней жирный шрифт, она будет действовать как # 1 - она ​​не изменится.Но у него тот же вес, что и у # 2, у "Bold".

Другими словами, два полужирных шрифта (Arial Rounded MT Bold и Arrow Narrow Bold), но только Arial Rounded MT Bold применяется более жирным шрифтом.,В случае Arial Black у него нет жирного веса, но к нему также не применяется жирный жир.

Вот как это выглядит: alt text

Интересно, что WPF не демонстрирует такого поведения (т.е. добавляет больше жирного шрифта), но Silverlight делает:

WPF (Обратите внимание, что FontFamily - "Arial Rounded MT"):

<StackPanel Orientation="Vertical">
    <TextBlock FontSize="24" Text="Arial Rounded MT Bold" FontFamily="Arial Rounded MT"/>
    <TextBlock FontSize="24" Text="Arial Rounded MT Bold" FontWeight="Black" FontFamily="Arial Rounded MT"/>
</StackPanel>

Silverlight (обратите внимание, что FontFamily является "Arial Rounded MT Bold"):

<StackPanel Orientation="Vertical">
    <TextBlock  FontSize="24" FontFamily="Arial Rounded MT Bold" >Arial Rounded MT Bold</TextBlock>
    <TextBlock  FontSize="24" FontFamily="Arial Rounded MT Bold" FontWeight="Bold" >Arial Rounded MT Bold</TextBlock>
</StackPanel>

Вопрос возвращается к: Какое свойство файла шрифта говоритпрограмма, которая добавляет жирный шрифт или нет? Я ищу флаг или свойство в файле шрифта, который сообщит мне эту логику.

Вот список других шрифтов, где применение "Bold" имеетбез эффекта: - Adobe Caslon Pro Bold - Adobe Garamond Pro Bold - Энди - Ариал Блэк - Белл Готик Стд Блэк - Белл Готик Лайт Чёрный - Берлин Санс ФБ Деми - Блэкоак Стд - Бодони МТ Блэк - Шарлемань Стд - Minion Pro Cond- Муар ExtraBold - Мириад Про Лайт - Тополь Стд - ПрестиGe Elite Std - Rockwell Extra Bold - Скрипт MT Bold - Segoe WP Black - Tekton Pro Ext - Трафарет Std

1 Ответ

5 голосов
/ 11 сентября 2010

Через огромное количество испытаний я понял это.Из таблицы OS / 2 большинство программ рассматривают 2 значения:

  1. Если значение usWeightClass равно 549 или ниже, шрифт будет выделен жирным шрифтом.
  2. Если для fsSelection установлен бит 5, он никогда не будет выделен жирным шрифтом, независимо от значения в usWeightClass (# 1 выше).
...