字体文件中的哪个属性使程序决定模拟粗体?

Tod*_*ain 7 .net wpf fonts

我正在寻找字体文件中的属性(来自WPF System.Windows.Media.Fonts TypefaceGlyphTypeface)或直接访问.ttf/.otf文件,这将允许我确定Windows中的Write/WordPad等程序是否将Bold应用于字体.基本上,一些具有Bold属性的字体仍会获得额外的粗体,有些则不会.我试图发现用于做出这种决定的逻辑是什么.

若要手动查看此内容,请将以下内容复制并粘贴到"写入/写字板"(或OOo的Writer或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的情况下,它没有大胆的重量,但它仍然没有大胆的应用它.

这是它的样子: 替代文字

有趣的是,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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

回答的问题是:字体文件的哪些属性告诉程序添加更多粗体?我在字体文件中寻找一个标志或属性来告诉我这个逻辑.

以下是应用"Bold"无效的其他字体列表: - Adob​​e Caslon Pro Bold - Adob​​e Garamond Pro Bold - Andy - Arial Black - Bell Gothic Std Black - Bell Gothic Light Black - Berlin Sans FB Demi - Blackoak Std - Bodoni MT Black - Charlemagne Std - Minion Pro Cond - Moire ExtraBold - Myriad Pro Light - Poplar Std - Prestige Elite Std - Rockwell Extra Bold - Script MT Bold - Segoe WP Black - Tekton Pro Ext - Stencil Std

Tod*_*ain 5

通过大量的试验,我已经弄明白了.在OS/2表中,大多数程序会查看2个值:

  1. 如果usWeightClass值为549或更低,则字体将变得更加粗体.
  2. 如果fsSelection设置了第5位,则无论usWeightClass(上面的#1)中的值如何,它都不会变得更加粗体.