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) 要素には、 Button TextBlock FontFamily コントロールのテキストコンテンツのフォントを指定するために使用できるプロパティが用意されています。 フォントを定義するには、そのプロパティに値を設定し FontFamily ます。 次の例は、Extensible Application Markup Language (XAML) とコードでフォントを参照する方法を示しています。

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

前の例では、参照される "漫画 Sans MS" というフォントが フレンドリ名 で参照されています。 また、この例では、フォントはシステムフォントコレクションに含まれると見なされます。

代替ディレクトリでのフォントの指定

Windows Presentation Foundation (WPF) アプリケーションでは、フォント参照を解決するために、systems フォントコレクションが格納されているディレクトリ以外のディレクトリを指定できます。 フォントのフレンドリ名は、次の Extensible Application Markup Language (XAML) とコード例に示すように、フォント参照を解決するための絶対 URI (uniform resource identifier) 値を指定できます。

// 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 アプリケーションでは、フォントをコンテンツ項目、リソース項目、またはライブラリリソース項目としてパッケージ化できます。 詳細については、「アプリケーションでのフォントのパッケージング」を参照してください。

フォントフォールバック

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

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

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

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

WPF のフォントフォールバック機構によって、以前の Win32 フォント置換テクノロジが置き換えられます。

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

フォントフォールバックシーケンスをコードに定義すると、代替フォントを定義できます。 オブジェクトを作成するときは、 FontFamily パラメーターに複数のフォントファミリ名をコンマで区切っ String て指定します ("漫画 Sans MS, Verdana" など)。 この場合、"漫画 Sans MS" タイプフェイスのグリフが使用できない場合、"Verdana" タイプフェイスのグリフが使用されます。 "漫画 Sans MS" と "Verdana" のどちらにも必要なグリフがない場合、タイプフェイスのフォールバックフォントファミリが使用されます。これは、既定では "グローバルユーザーインターフェイス" になります。

次の例は、Extensible Application Markup Language (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 "file.

<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>

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

フォント メモ
GlobalMonospace 英文字の "Courier New" など、等幅フォントを使用してテキストを表示します。
GlobalSanSerif. CompositeFont ラテン文字の "Arial" など、sans serif フォントを使用してテキストを表示します。
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 が使用され、 "Arial, Century Gothic" 代替フォントファミリとして Century ゴシックが指定されています。

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

fontFamilyUriReference
フォントファミリ名と共に、フォントの uniform resource identifier (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 プロパティの値を返します。

適用対象

こちらもご覧ください