桌面應用程式使用內嵌字型 WPF 篇

  • 1036
  • 0

前一篇文章談到了在 Windows Forms 上使用內嵌字型,這一篇來聊聊在 WPF 上的作法。

事實上在 WPF 要使用內嵌字型是比 Windows Forms 來得簡單,依照以下方式即可。

準備工作

(1) 準備好字型檔案是必要的。

(2) 為專案新建一個資料夾,就命名為 Fonts 吧,接著將字型檔案加入這個資料夾。建置動作部分請確認是否為「Resource」。我們會加入兩個思源黑體字型檔分別是 Bold 與 Light。

設定 Application ResourceDictionary

由於字型通常會是全域使用的情境,所以我們將資源設定在 App.xaml 中 ,使用的方式是 路徑\#字型名稱。(詳情參考 Microsoft Docs 將字型與應用程式一起封裝 )

<Application x:Class="Wpf_CustomFontSample001.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:Wpf_CustomFontSample001"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <FontFamily x:Key="sourceHansSansFont">
            ./Fonts/#Source Han Sans TW
        </FontFamily>
    </Application.Resources>
</Application>
使用字型

最後在 MainWindow.xaml 中加入以下程式碼。

 <StackPanel >
     <StackPanel.Resources >
         <Style TargetType="TextBlock" >
             <Setter Property="FontSize" Value="25"/>
             <Setter Property="Margin" Value="12"/>
             <Setter Property="Foreground" Value="Brown" />
             <Setter Property="Text" Value="內嵌字型示範"/>
             <Setter Property="FontFamily" Value="{StaticResource sourceHansSansFont}"/>
         </Style>
     </StackPanel.Resources> 
     <TextBlock  FontWeight="Bold" />
     <TextBlock  FontWeight= "Light"  />
 </StackPanel>

執行後可以發現它會依據 FontWeight (Bold \ Light)  選擇對應的字型檔案。

一點都不費力的,對吧?範例程式請點選此處