2016-11-23 44 views
2

我有多个.TTF文件来自同一个家庭,如:UWP - 如何重量添加到自定义的FontFamily

MyFont.ttf 
MyFont_Bold.ttf 
MyFont_Light.ttf 
MyFont_Medium.ttf 

如果我想使用的每个重量,我应该定义主题作为单独的FontFamily是这样的:

<FontFamily x:Key="MyFont"> 
    ms-appx:///Fonts/MyFont.ttf#MyFont 
</FontFamily> 
<FontFamily x:Key="MyFont_Bold"> 
    ms-appx:///Fonts/MyFont_Bold.ttf#MyFont 
</FontFamily> 
<FontFamily x:Key="MyFont_Light"> 
    ms-appx:///Fonts/MyFont_Light.ttf#MyFont 
</FontFamily> 
<FontFamily x:Key="MyFont_Medium"> 
    ms-appx:///Fonts/MyFont_Medium.ttf#MyFont 
</FontFamily> 

,并利用它们喜欢:

<TextBlock FontFamily="{StaticResource MyFont}" /> 
<TextBlock FontFamily="{StaticResource MyFont_Bold}" /> 
<TextBlock FontFamily="{StaticResource MyFont_Light}" /> 
<TextBlock FontFamily="{StaticResource MyFont_Medium}" /> 

有没有办法使用的主题是这样的:

<TextBlock FontFamily="{StaticResource MyFont}" /> 
<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Bold" /> 
<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Light" /> 
<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Medium" /> 

回答

1

TextBlock有一个TextBlock.FontWeight property。有了这个属性,我们可以为TextBlock设置字体重量。所以,你可以使用一些类似的代码如下:

<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Bold">The quick brown fox jumps over the lazy dog.1234567890</TextBlock> 
<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Light">The quick brown fox jumps over the lazy dog.1234567890</TextBlock> 
<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Medium">The quick brown fox jumps over the lazy dog.1234567890</TextBlock> 

但是在使用自定义字体,字符的厚度勾勒根据您设定的字体来计算。它不能根据FontWeight使用相应的字体文件。计算出的厚度可能与您的自定义字体中的厚度不同。例如:

<TextBlock FontFamily="Assets/Fonts/consola.ttf#Consolas" FontSize="36">The quick brown fox jumps over the lazy dog.1234567890</TextBlock> 
<TextBlock FontFamily="Assets/Fonts/consolab.ttf#Consolas" FontSize="36">The quick brown fox jumps over the lazy dog.1234567890</TextBlock> 
<TextBlock FontFamily="Assets/Fonts/consola.ttf#Consolas" FontSize="36" FontWeight="Bold">The quick brown fox jumps over the lazy dog.1234567890</TextBlock> 

在上述样品中,“consola.ttf”是与常规字体重量和“onsolab.ttf”的字体文件与粗体字体粗细的字体文件。在第三个TextBlock中,我使用了常规字体文件并将FontWeight设置为Bold。和输出的样子:
enter image description here

正如你可以设置FontWeightBold后看到,人物的轮廓厚度较大,但其不一样的使用加粗字体重量文件之一。所以你可能需要考虑根据你的实际情况使用FontWeight还是不同的字体文件。

+0

谢谢你的回答,但这正是我所要求的。我需要一种方法来匹配FontWeight属性和相应的字体文件,或者任何可以将FontWeight用于单独字体的方法。 – TheSETJ