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

.net 字体文件中的哪个属性使程序决定模拟粗体?,.net,wpf,fonts,.net,Wpf,Fonts,我正在字体文件中查找属性(从WPF的系统.Windows.Media.Fonts字体或字形)或直接访问.ttf/.otf文件,该文件将允许我确定Windows中的Write/WordPad等程序是否将粗体应用于字体。基本上,某些具有粗体属性的字体仍将应用额外的粗体,而有些字体则不会。我试图发现,做出这个决定的逻辑是什么 要手动查看此内容,请将以下内容复制并粘贴到Write/WordPad(或OOo的Writer或MS Word或…)中,并将每行的字体改为其名称(即应用Arial Black到Ar

我正在字体文件中查找属性(从WPF的
系统.Windows.Media.Fonts
字体
字形
)或直接访问.ttf/.otf文件,该文件将允许我确定Windows中的Write/WordPad等程序是否将粗体应用于字体。基本上,某些具有粗体属性的字体仍将应用额外的粗体,而有些字体则不会。我试图发现,做出这个决定的逻辑是什么

要手动查看此内容,请将以下内容复制并粘贴到Write/WordPad(或OOo的Writer或MS Word或…)中,并将每行的字体改为其名称(即应用Arial Black到Arial Black)

  • Arial黑色
  • Arial四舍五入MT粗体
  • Arial狭窄
  • 现在用粗体表示。你会看到2和3的变化,但不会看到1

    不过,有了#3,情况就不同了 比其他两个发生-a 不同的字体一起被使用 应用即ARIALNB.TTF('NB' 附加,这是Arial窄 粗体)代替ARIALN.TTF('N' 附加的,这是Arial窄)。所以 对于这种字体,粗体不适用 实际应用中

    回到清单上来#1不会改变,但2会改变#1的重量为“黑色”,2的重量为“粗体”。如果您使用粗体版本的#3,ARIALNB.TTF,并对其应用粗体,它的行为就像#1-它不会改变。但它的分量与#2“Bold”的分量相同

    换句话说,有两个是粗体的(Arial圆角MT粗体和Arrow窄粗体),但只有Arial圆角MT粗体应用得更粗体。在Arial Black的情况下,它没有粗体的权重,但也没有应用粗体

    下面是它的样子:

    有趣的是,WPF没有表现出这种行为(即添加更多粗体),但Silverlight做到了:

    WPF(注意FontFamily是“Arial Rounded MT”):
    
    
    Silverlight(注意,FontFamily是“Arial圆角MT Bold”):
    
    Arial四舍五入MT粗体
    Arial四舍五入MT粗体
    
    问题又回到:字体文件的哪个属性告诉程序是否添加更粗的字体?我正在字体文件中寻找一个标志或属性,它将告诉我这个逻辑

    以下是应用“粗体”无效的其他字体列表: -Adobe Caslon Pro Bold -Adobe Garamond Pro Bold -安迪 -Arial黑色 -钟形哥特式标准黑色 -贝尔哥特式浅黑色 -柏林无国界医生 -黑橡树标准 -博多尼黑山 -查理曼大帝性病 -仆从秒 -云纹超粗 -万象亲光 -杨树性病 -威望精英酒店 -罗克韦尔超大胆 -黑体字 -Segoe WP黑色 -特克顿专业分机 -模板标准

    通过大量的试验,我已经找到了答案。从表中,大多数程序查看2个值:

  • 如果
    usWeightClass
    的值为549 或以下,字体将变得更大 大胆的
  • 如果
    fsSelection
    设置了位5,则 无论
    usWeightClass
    (#1以上)中的值如何,都不会变得更粗体
  • <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>
    
    <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>