FontFamily 類別

定義

代表一系列的相關字型。

public ref class FontFamily
[System.ComponentModel.TypeConverter(typeof(System.Windows.Media.FontFamilyConverter))]
[System.Windows.Localizability(System.Windows.LocalizationCategory.Font)]
public class FontFamily
[<System.ComponentModel.TypeConverter(typeof(System.Windows.Media.FontFamilyConverter))>]
[<System.Windows.Localizability(System.Windows.LocalizationCategory.Font)>]
type FontFamily = class
Public Class FontFamily
繼承
FontFamily
屬性

備註

字型系列是一組具有相同系列名稱的字樣,例如「Times New Roman」,但功能不同。 這些功能差異包括 Style ,例如斜體和 Weight ,例如粗體。

字型字
屬於「Times New Roman」 字型系列成員的字型範例

大部分的使用者介面 (UI) 專案,例如 ButtonTextBlock ,提供 FontFamily 可用來指定控制項文字內容的字型的屬性。 您可以使用 值設定該屬性 FontFamily 來定義字型。 下列範例示範如何在可延伸的應用程式標記語言中參考字型, (XAML) 和程式碼中。

myTextBlock.FontFamily = new FontFamily("Comic Sans MS");
myTextBlock.FontFamily = New FontFamily("Comic Sans MS")
<TextBlock FontFamily="Comic Sans MS">Hello, world</TextBlock>

在上述範例中,參考 「Comic Sans MS」 的字型會以其 易記名稱來參考。 此外,在此範例中,會假設字型位於系統字型集合中。

在替代目錄中指定字型

Windows Presentation Foundation (WPF) 應用程式可以指定目錄,而不是包含系統字型集合的目錄,以解析字型參考。 字型的易記名稱可以指定絕對統一資源識別項 (URI) 值來解析字型參考,如下列可延伸應用程式標記語言 (XAML) 和程式碼範例所示。

// Create a new FontFamily object, using an absolute URI reference.
myTextBlock.FontFamily = new FontFamily("file:///d:/MyFonts/#Pericles Light");
' Create a new FontFamily object, using an absolute URI reference.
myTextBlock.FontFamily = New FontFamily("file:///d:/MyFonts/#Pericles Light")
<TextBlock FontFamily="file:///d:/MyFonts/#Pericles Light">
  Aegean Sea
</TextBlock>

字型的易記名稱也可以指定相對 URI 值,這需要基底 URI 來解析字型參考。 物件的 BaseUri 屬性 FontFamily 會對應至基底 URI 值。 下列程式碼範例示範如何建立由基底 URI 值和相對 URI 值組成的字型參考。

// Create a new FontFamily object, using a base URI reference and a relative URI reference.
myTextBlock.FontFamily = new FontFamily(new Uri("file:///d:/MyFonts/"), "./#Pericles Light");
' Create a new FontFamily object, using a base URI reference and a relative URI reference.
myTextBlock.FontFamily = New FontFamily(New Uri("file:///d:/MyFonts/"), "./#Pericles Light")

當您參考封裝為應用程式一部分的字型時,可以使用基底 URI 值。 例如,基底 URI 值可以是「pack://application」URI,可讓您參考封裝為應用程式資源的字型。 下列程式碼範例顯示由基底 URI 值和相對 URI 值組成的字型參考。

// The font resource reference includes the base URI reference (application directory level),
// and a relative URI reference.
myTextBlock.FontFamily = new FontFamily(new Uri("pack://application:,,,/"), "./resources/#Pericles Light");
' The font resource reference includes the base URI reference (application directory level),
' and a relative URI reference.
myTextBlock.FontFamily = New FontFamily(New Uri("pack://application:,,,/"), "./resources/#Pericles Light")

FontFamily當 指定為標記中的屬性時,一律會隱含基底 URI 值 - 其值是 XAML 頁面的 URI。 隱含基底 URI 值會與易記名稱字串中的相對 URI 值搭配使用,以取得字型的位置。 在下列 Extensible Application Markup Language (XAML) 範例中,請注意相對 URI 值使用 「./」 標記法,這表示基底 URI 值的 「./」 標記法。

<TextBlock FontFamily="./resources/#Pericles Light">
  Aegean Sea
</TextBlock>

WPF 應用程式可以將字型封裝為內容專案、資源專案或程式庫資源專案。 如需詳細資訊,請參閱將字型與應用程式一起封裝

字型後援

字型後援是指用戶端應用程式所選取字型以外的字型自動替代。 叫用字型後援的原因有兩個主要原因:

  • 用戶端應用程式指定的字型不存在於系統上。

  • 用戶端應用程式指定的字型不包含轉譯文字所需的字元。

在 WPF 中,字型後援機制會使用預設後援字型系列 「Global User Interface」 做為替代字型。 此字型定義為複合字型,其檔案名為 「GlobalUserInterface.CompositeFont」。 如需複合字型的詳細資訊,請參閱本主題中的複合字型一節。

WPF 字型後援機制會取代先前的 Win32 字型替代技術。

在程式碼中定義字型後援序列

您可以在程式碼中定義字型後援序列,讓您定義替代字型。 當您建立 FontFamily 物件時,請為 參數提供多個字型系列名稱,以逗號分隔, String 例如 「Comic Sans MS, Verdana」。 在此情況下,如果無法使用來自 「Comic Sans MS」 字型的字元,則會使用 「Verdana」 字樣中的字元。 如果 「Comic Sans MS」 和 「Verdana」 都沒有必要的字元,則會使用字型的後援字型系列,預設為「全域使用者介面」。

下列範例示範如何在可延伸的應用程式標記語言 (XAML) 和程式碼中定義字型後援序列。

myTextBlock.FontFamily = new FontFamily("Comic Sans MS, Verdana");
myTextBlock.FontFamily = New FontFamily("Comic Sans MS, Verdana")
<TextBlock FontFamily="Comic Sans MS, Verdana">Hello, world</TextBlock>

後援序列中的任何一個字型都可以指定字型位置。 在下列範例中,「Pericles Light」 會參考為應用程式資源,而 「Verdana」 會參考為系統字型集合成員。

myTextBlock.FontFamily = new FontFamily(new Uri("pack://application:,,,/"), "./resources/#Pericles Light, Verdana");
myTextBlock.FontFamily = New FontFamily(New Uri("pack://application:,,,/"), "./resources/#Pericles Light, Verdana")
<TextBlock FontFamily="./resources/#Pericles Light, Verdana">Aegean Sea</TextBlock>

複合字型

WPF 平臺提供複合字型功能,以允許建構完整範圍的多語系字型,並避免顯示遺漏的字元。 複合字型會取代 Win32 字型連結、字型後援、字型系結、字型關聯,以及使用者定義字元 (EUDC) 機制。

複合字型系列可供應用程式透過 FontFamilyTypeface 建構函式使用,就像任何其他字型系列一樣。 每個複合字型系列都命名為 ,而且與其他字型一樣,可以在多種語言中提供其名稱的當地語系化變體。

下列標記範例顯示覆合字型系列如何定義為磁片檔案。 此檔案可以儲存在預設 Windows 字型目錄中,如同任何其他已安裝的字型一樣,也可以在任何位置中參考,方法是在依名稱參考系列時包含其 URI。

下列範例顯示 「 中的字型系列標記。CompositeFont「 檔案。

<FontFamily
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/composite-font"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:System="clr-namespace:System;assembly=mscorlib"
    Baseline="0.9"
    LineSpacing="1.2">

    <!-- Name mapping -->
    <FontFamily.FamilyNames>
        <System:String x:Key="en-US">Global User Interface</System:String>
    </FontFamily.FamilyNames>

    <!-- Faces to report in font chooser UI -->
    <FontFamily.FamilyTypefaces>
        <FamilyTypeface
            Weight="Normal" Stretch="Normal" Style="Normal"
            UnderlinePosition="-0.1" UnderlineThickness="0.05"
            StrikethroughPosition="0.3" StrikethroughThickness="0.05"
            CapsHeight="0.5" XHeight="0.3" />

        <FamilyTypeface
            Weight="Bold" Stretch="Normal" Style="Normal"
            UnderlinePosition="-0.1" UnderlineThickness="0.05"
            StrikethroughPosition="0.3" StrikethroughThickness="0.05"
            CapsHeight="0.5" XHeight="0.3" />
    </FontFamily.FamilyTypefaces>

    <!-- Character to family lookups (in lookup order) -->
    <FontFamily.FamilyMaps>

        <!--
            Basic Latin                 0000-007F
            Latin-1 Supplement          0080-00FF
            Latin Extended-A            0100-017F
            Latin Extended-B            0180-024F
            IPA Extensions              0250-02AF
            Spacing Modifier Letters    02B0-02FF 
            Combining Diacritics Marks  0300-036F 
            Greek and Coptic            0370-03FF
            Cyrillic                    0400-04FF 
            Cyrillic Supplement         0500-052F 
            Phonetic Extensions         1D00-1D7F
            Latin Extended Additional   1E00-1EFF
            Greek Extended              1F00-1FFF
            Alpha Pres Forms Latin      FB00-FB0F -->
        <!-- CHS -->    
        <FontFamilyMap
            Unicode="0000-052F, 1D00-1FFF, FB00-FB0F"
            Language="zh-Hans"
            Target="Times New Roman"
            Scale="1.0" />
        <!-- CHT -->    
        <FontFamilyMap
            Unicode="0000-052F, 1D00-1FFF, FB00-FB0F"
            Language="zh-Hant"
            Target="Times New Roman"
            Scale="1.0" />
        <!-- Other (include JA and KO) -->    
        <FontFamilyMap
            Unicode="0000-052F, 1D00-1FFF, FB00-FB0F"
            Target="Comic Sans MS, Verdana"
            Scale="4.0" />

        <!--
            Armenian                    0530-058F    
            Georgian                    10D0-10FF
            Alpha Pres Forms Armenian   FB10-FB1C -->
        <FontFamilyMap
            Unicode="0530-058F, 10D0-10FF, FB10-FB1C"
            Target="Sylfaen"
            Scale="1.0" />

        <!-- Other FontFamilyMap elements defined ... --> 

    </FontFamily.FamilyMaps>

</FontFamily>

下列四個複合字型會出現在預設 Windows 字型目錄中,做為 WPF 安裝的一部分。

字型 注意
GlobalMonospace.CompositeFont 使用單空格字型轉譯文字,例如拉丁字元的「Courier New」。
GlobalSanSerif.CompositeFont 使用 sans serif 字型轉譯文字,例如拉丁字元的 「Arial」。
GlobalSerif.CompositeFont 使用 serif 字型轉譯文字,例如拉丁字元的「Times New Roman」。
GlobalUserInterface.CompositeFont 使用預設字型轉譯文字,例如拉丁字元的「Times New Roman」。

XAML Attribute Usage

<object FontFamily="fontFamilyName"/>  
- or -  
<object FontFamily="fontFamilyNamesList"/>  
- or -  
<object FontFamily="fontFamilyFolderReference"/>  
- or -  
<object FontFamily="fontFamilyUriReference"/>  

XAML 值

fontFamilyName
指定字型系列名稱的字串。 例如,"Arial""Century Gothic"

fontFamilyNamesList
指定多個字型系列名稱的字串,每個名稱會以逗號分隔, (忽略在逗號之後的任何空白字元) 。 指定的第一個字型系列做為主要字型系列;後續字型系列可作為後援系列,用於主要字型系列無法使用或不適用的情況。 例如, "Arial, Century Gothic" 將 Arial 指定為主要字型系列,而 Century 為後援字型系列。

fontFamilyFolderReference
指定包含字型的資料夾以及字型系列名稱的字串。 資料夾和字型系列名稱是以 # 字元分隔。 資料夾參考可能是絕對或相對的。 例如: "Custom Fonts\#My Custom Font"

fontFamilyUriReference
字串,指定字型的統一資源識別項 (URI) ,以及字型系列名稱。 URI 和字型系列名稱是以 # 字元分隔。 例如: "http://MyFontServer/Fonts/#My Custom Font"

建構函式

FontFamily()

初始化匿名 FontFamily 類別的新執行個體。

FontFamily(String)

從指定的字型系列名稱初始化 FontFamily 類別的新執行個體。

FontFamily(Uri, String)

從指定的字型系列名稱和選擇性基底統一資源識別項 (URI) 值,初始化 FontFamily 類別的新執行個體。

屬性

Baseline

取得或設定基準線與字元儲存格頂端之間的距離。

BaseUri

取得或設定用於解析字型系列名稱的統一資源識別項 (URI)。

FamilyMaps

取得 FontFamilyMap 物件的集合。

FamilyNames

取得字串和 CultureInfo 值的集合,這些字串和值表示 FontFamily 物件的字型系列名稱。

FamilyTypefaces

取得 FontFamily 物件的字樣集合。

LineSpacing

取得或設定 FontFamily 物件的行距值。 行距是當使用這個字型的文字時,基準線與基準線之間的建議距離,以相對於 em 大小的大小表示。

Source

取得用來建構 FontFamily 物件的字型家族名稱。

方法

Equals(Object)

取得值,這個值表示目前的字型家族物件與指定的字型家族物件是否相同。

GetHashCode()

作為 FontFamily 的雜湊函式。 它適用於雜湊演算法和資料結構,例如雜湊資料表。

GetType()

取得目前執行個體的 Type

(繼承來源 Object)
GetTypefaces()

傳回 Typeface 物件的集合,這些物件表示預設系統字型位置中的字樣。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回 Source 屬性值。

適用於

另請參閱