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" など、同じファミリ名を共有する一連の書体ですが、機能は異なります。 これらの機能の違いには、斜体などの 、太字Weightなどの が含まれますStyle

フォント フォント
"Times New Roman" フォント ファミリのメンバーである書体の例

TextBlockなどのButtonほとんどのユーザー インターフェイス (UI) 要素は、コントロールの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) アプリケーションでは、フォント参照を解決するために、システム フォント コレクションを含むディレクトリ以外のディレクトリを指定できます。 フォントのフレンドリ名では、次の拡張アプリケーション マークアップ言語 (XAML) とコード例に示すように、フォント参照を解決するための絶対 UNIFORM リソース識別子 (URI) 値を指定できます。

// 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 が必要です。 オブジェクトの プロパティは BaseUriFontFamily ベース 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 値と共に使用されます。 次の拡張アプリケーション マークアップ言語 (XAML) の例では、相対 URI 値で "./" 表記が使用されていることに注意してください。これは、ベース URI 値の "現在のフォルダー内" を意味します。

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

WPF アプリケーションでは、フォントをコンテンツ アイテム、リソース アイテム、またはライブラリ リソース アイテムとしてパッケージ化できます。 詳細については、「アプリケーションでのフォントのパッケージング」を参照してください。

フォント フォールバック

フォント フォールバックは、クライアント アプリケーションによって選択されたフォント以外のフォントの自動置換を指します。 フォント フォールバックが呼び出される主な理由は 2 つあります。

  • クライアント アプリケーションによって指定されたフォントがシステム上に存在しません。

  • クライアント アプリケーションで指定されたフォントには、テキストのレンダリングに必要なグリフが含まれていません。

WPF では、フォント フォールバック メカニズムでは、代替フォントとして既定のフォールバック フォント ファミリ "グローバル ユーザー インターフェイス" が使用されます。 このフォントは、ファイル名が "GlobalUserInterface.CompositeFont" である複合フォントとして定義されます。 複合フォントの詳細については、このトピックの「複合フォント」セクションを参照してください。

WPF フォント フォールバック メカニズムは、以前の Win32 フォント置換テクノロジに置き換えられます。

コードでのフォント フォールバック シーケンスの定義

コードでフォント フォールバック シーケンスを定義できます。これにより、代替フォントを定義できます。 オブジェクトを FontFamily 作成するときは、"Comic Sans MS, Verdana" などのパラメーターに複数のフォント ファミリ名をコンマで String 区切って指定します。 この場合、"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) メカニズムに置き換わります。

複合フォント ファミリは、他のフォント ファミリと同様に、 FontFamily および Typeface コンストラクターを使用してアプリケーションで使用できます。 各複合フォント ファミリには名前が付けられ、他のフォントと同様に、複数の言語でその名前のローカライズされたバリエーションを提供できます。

次のマークアップの例は、複合フォント ファミリをディスク ファイルとして定義する方法を示しています。 このファイルは、インストールされている他のフォントと同様に、既定の 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>

WPF インストールの一部として、既定の Windows フォント ディレクトリに次の 4 つの複合フォントが表示されます。

フォント メモ
GlobalMonospace.CompositeFont ラテン文字の "Courier New" など、モノスペース フォントを使用してテキストをレンダリングします。
GlobalSanSerif.CompositeFont sans serif フォント (ラテン文字の場合は "Arial" など) を使用してテキストをレンダリングします。
GlobalSerif.CompositeFont セリフ フォント (ラテン文字の "Times New Roman" など) を使用してテキストをレンダリングします。
GlobalUserInterface.CompositeFont 既定のフォント (ラテン文字の "Times New Roman" など) を使用してテキストをレンダリングします。

XAML 属性の使用方法

<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 Gothic をフォールバック フォント ファミリとして指定します。

fontFamilyFolderReference
フォントを含むフォルダーとフォント ファミリ名を指定する文字列。 フォルダーとフォント ファミリ名は、 # 文字で区切られます。 フォルダー参照は、絶対参照または相対参照である場合があります。 たとえば、「 "Custom Fonts\#My Custom Font" 」のように入力します。

fontFamilyUriReference
フォントの UNIFORM リソース識別子 (URI) とフォント ファミリ名を指定する文字列。 URI とフォント ファミリ名は、 # 文字で区切られます。 たとえば、「 "http://MyFontServer/Fonts/#My Custom Font" 」のように入力します。

コンストラクター

FontFamily()

匿名の FontFamily クラスの新しいインスタンスを初期化します。

FontFamily(String)

指定したフォント ファミリ名から、FontFamily クラスの新しいインスタンスを初期化します。

FontFamily(Uri, String)

指定したフォント ファミリ名およびオプションの基本 Uniform Resource Identifier (URI) の値から FontFamily クラスの新しいインスタンスを初期化します。

プロパティ

Baseline

ベースラインと文字セルの上端との間の距離を取得または設定します。

BaseUri

フォント ファミリ名を解決するために使用される基本 Uniform Resource Identifier (URI) を取得します。

FamilyMaps

FontFamilyMap オブジェクトのコレクションを取得します。

FamilyNames

CultureInfo オブジェクトのフォント ファミリ名を表す文字列と FontFamily 値のコレクションを取得します。

FamilyTypefaces

FontFamily オブジェクトのタイプフェイスのコレクションを取得します。

LineSpacing

FontFamily オブジェクトの行間隔の値を取得または設定します。 行間隔は、全角サイズを基準とする、このフォントのテキストに対して推奨されるベースライン間の距離です。

Source

FontFamily オブジェクトを構築するために使用されるフォント ファミリ名を取得します。

メソッド

Equals(Object)

現在のフォント ファミリ オブジェクトと、指定したフォント ファミリ オブジェクトが同じであるかどうかを示す値を取得します。

GetHashCode()

FontFamily のハッシュ関数として機能します。 ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetTypefaces()

既定のシステム フォントの場所にあるタイプフェイスを表す Typeface オブジェクトのコレクションを返します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

Source プロパティの値を返します。

適用対象

こちらもご覧ください