DirectWrite の新機能
このトピックでは、Windows 10 のさまざまなリリースにおける DirectWrite の新機能について説明します。
Windows App SDK
Windows App SDK には、DWriteCore と呼ばれる新しいバージョンの DirectWrite が導入されています。 詳細については、「DWriteCore の概要」をご覧ください。
Windows 10 May 2019 Update
Windows 10 のバージョン 1903 (10.0、Build 18362) (Windows 10 May 2019 Update とも呼ばれます) では、機能や API の追加または更新は行われませんでした。
Windows 10 October 2018 Update
次の機能と API は、Windows 10 バージョン 1809 (10.0;ビルド 17763) (Windows 10 October 2018 Update とも呼ばれます) で追加または更新されました。
新しい
- DWRITE_FONT_SOURCE_TYPE 列挙型
- IDWriteFontSet3 インターフェイスとそのメソッド
Windows 10 April 2018 Update
次の機能と API は、Windows 10 バージョン 1803 (10.0;ビルド 17134) (Windows 10 April 2018 Update とも呼ばれます) で追加または更新されました。
新しい
- IDWriteFactory7 インターフェイスとそのメソッド
- IDWriteFontCollection3 インターフェイスとそのメソッド
- IDWriteFontSet2 インターフェイスとそのメソッド
Windows 10 Fall Creators Update
次の機能と API は、Windows 10 バージョン 1709 (10.0;ビルド 16299) (Windows 10 Fall Creators Update とも呼ばれます) で追加または更新されました。
新しい
- DWRITE_AUTOMATIC_FONT_AXES 列挙型
- DWRITE_FONT_AXIS_ATTRIBUTES 列挙型
- DWRITE_FONT_AXIS_TAG 列挙型
- DWRITE_FONT_FAMILY_MODEL 列挙型
- IDWriteFactory6 インターフェイスとそのメソッド
- IDWriteFontCollection2 インターフェイスとそのメソッド
- IDWriteFontFace5 インターフェイスとそのメソッド
- IDWriteFontFaceReference1 インターフェイスとそのメソッド
- IDWriteFontFallback1 インターフェイスとそのメソッド
- IDWriteFontFamily2 インターフェイスとそのメソッド
- IDWriteFontList2 インターフェイスとそのメソッド
- IDWriteFontResource インターフェイスとそのメソッド
- IDWriteFontSet1 インターフェイスとそのメソッド
- IDWriteFontSetBuilder2 インターフェイスとそのメソッド
- IDWriteTextFormat3 インターフェイスとそのメソッド
- IDWriteTextLayout4 インターフェイスとそのメソッド
- DWRITE_MAKE_FONT_AXIS_TAG マクロ
- DWRITE_FONT_AXIS_RANGE 構造体
- DWRITE_FONT_AXIS_VALUE 構造体
移動済み
DWRITE_GLYPH_IMAGE_FORMATS 列挙体は、dwrite_3.h
から dcommon.h
に移動しました。
Windows 10 Creators Update
次の機能と API は、Windows 10 バージョン 1703 (10.0;ビルド 15063) (Windows 10 Creators Update とも呼ばれます) で追加または更新されました。
クラウド フォントとカスタム フォント セットに対する拡張 API のサポート
Windows 10 には、アプリが Windows フォント サービスからフォントに簡単にアクセスできる API が含まれています。 Windows 10 Creators Update では、リモート フォントの API が拡張され、HTTP または HTTPS を使用してアクセスできる Web 上の他のソースから簡単にフォントにアクセスできます。
新しいリモート フォント API は、パブリック Web サービスまたはプライベート Web サービスで使用できます。 さらに、未加工の OpenType フォント ファイル (.ttf、.otf.、.ttc、.otc)、または WOFF や WOFF2 コンテナー形式でパッケージ化されたフォントにアクセスするために使用できます。 この新しい API は、リモート フォント データをダウンロードする要求をキューに入れる、または実際のダウンロード処理を行うために、既存の API と組み合わせて使用されます。
その他の新しい API では、ローカル ファイル システムに格納されているカスタム フォントやメモリ バッファーに読み込まれるカスタム フォントをアプリで簡単に操作できます。
リモート フォント、カスタム フォント セット、または WOFF/WOFF2 コンテナー形式を操作するための新しい API の詳細については、次のトピックをご覧ください。
そのトピックで提供されている API リファレンス トピックへのリンクもご覧ください。 カスタム フォントを操作するための新規および既存の API の使用方法は、DirectWrite カスタム フォント セットのサンプルにも示されています。 このサンプルでは、ディスク上のローカル フォント、Web 上のリモート フォント、メモリ内フォント データ、パックされた WOFF または WOFF2 形式のフォントなど、いくつかの異なるシナリオのコード実装を示します。
OpenType フォント バリエーションの初期サポート
OpenType フォント形式仕様のバージョン 1.8 では、OpenType フォント バリエーションと呼ばれる形式に優れた新しい拡張機能が追加されました。 DirectWrite は、変数フォントの名前付きインスタンスをサポートするために、Windows 10 Creators Update で更新されました。 詳細については、次のトピックを参照してください。
Windows 10 Anniversary Update
次の機能と API は、Windows 10 バージョン 1607 (10.0;ビルド 14393) (Windows 10 Anniversary Update とも呼ばれます) で追加または更新されました。
カラー フォントのサポートの強化
Windows 10 Anniversary Update 以降、DirectWrite では、さまざまなカラー フォント形式の組み込みサポートが提供されており、開発者は DirectWrite を搭載したアプリでこれまで以上に多くの種類のフォントを使用できます。 これには、次のサポートが含まれます。
- 'COLR' OpenType テーブル。フォント内のコンパクト ベクトル コンテンツを有効にします。 (Windows 8.1 以降でサポートされています。)
- 'SVG ' OpenType テーブル。フォントで SVG コンテンツを実現します。
- 'CBDT' OpenType テーブル。フォントでカラー ビットマップ コンテンツを実現します。
- 'sbix' OpenType テーブル。フォントでカラー ビットマップ コンテンツを実現します。
テキストレンダリングに DirectWrite を使用する Direct2D。D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT フラグが有効になっている場合、これらのカラー フォント形式が自動的にサポートされます。 詳細については、次のトピックを参照してください。
Adobe Typekit およびその他のフォント サービス クライアントのサポート
Adobe Typekit などの一部のフォント サービスには、ユーザーがサービスからフォントを読み込み、Windows マシン上の異なるアプリケーションで使用できるクライアント側ユーティリティがあります。 通常、これらのユーティリティは、システムにフォントを永続的にインストールするのではなく、GDI にランタイム呼び出しを行い追加のフォントを読み込むことで機能します。 このような設計のため、以前の Windows バージョンでは、フォントは GDI ベースのアプリケーションで使用できますが、DirectWrite アプリケーションでは使用できません。 Windows 10 Anniversary Update 以降では、このようなユーティリティによって読み込まれるフォントは、DirectWrite でも GDI でも使用できるようになります。
フォント サービス ユーティリティによって読み込まれたフォントは、IDWriteFactory::GetSystemFontCollection メソッドを呼び出して取得したシステム フォント コレクションに表示されます。 フォント サービスは通常、ユーザーごとのライセンス モデルに従うため、これらのユーティリティによって読み込まれるフォントはユーザーごとに管理されます。 その結果、既存の DirectWrite アプリケーションでは、エンドユーザーがこのようなサービスを使用して取得したフォントを利用でき、アプリケーションでコードを変更する必要がなく、ユーザーにシームレスなエクスペリエンスを提供できます。
CFF アウトラインを使用した OpenType コレクションのサポート
OpenType フォント形式と TrueType フォント形式では、"フォント コレクション" と呼ばれる 1 つのフォント ファイルに複数のフォントをパッケージ化する機能が長い間サポートされています。 OpenType 仕様では、グリフ アウトライン データに TrueType 形式または CFF 形式を使用するフォントが常に許可されています。 ただし、最近まで、グリフ アウトラインで TrueType 形式を使用するコレクションに対してのみ、仕様が許可されています。 OpenType バージョン 1.7 では、コレクションでグリフ アウトライン データに TrueType 形式または CFF 形式を使用できるようになりました。 Windows 10 Anniversary Update 以降、DirectWrite では CFF アウトライン データを使用した OpenType コレクションがサポートされます。
Windows 10
Windows フォント サービスの統合
Windows 10 以降、Windows に含まれるフォントはオンライン サービスで利用でき、任意の Windows 10 デバイスで DirectWrite 経由でアクセスできます。 これは、すべての Windows 10 エディションに適用されます。 これにより、現在デバイスにフォントがインストールされていない場合でも、アプリケーションは Windows フォントを使用してコンテンツを表示できます。
DirectWrite フォント サービス メカニズムのサポートは XAML フレームワークに実装されています。つまり、XAML を使用するすべてのアプリケーションで、フォント サービスを利用するためにコードを変更する必要はありません。 ダウンロード可能なフォント (XAML) のコード サンプルで、これを示します。 DirectWrite API を直接呼び出すアプリケーションでは、フォント サービス メカニズムを利用するために新しい API を使用する必要があります。 詳細については、次のトピックを参照してください。
- IDWriteFactory3::GetSystemFontCollection メソッド
- IDWriteTextLayout3 インターフェイス
- IDWriteFontDownloadQueue インターフェイス
- IDWriteFontDownloadListener インターフェイス
ダウンロード可能なフォント (DirectWrite) のコード サンプルでは、新しい API の使用方法を示します。
フォント セット API
DirectWrite のフォント コレクション インターフェイスは、サブファミリ属性として太さ、ストレッチ、スタイルを使用して、フォント ファミリ別に編成されたフォントのコレクションにビューを提供します。 内部的には、DirectWrite は、さまざまな属性を持つフォントのフラット リストを使用して、フォント コレクション インターフェイスを実装します。 この方法は、太さ/ストレッチ/スタイル ファミリの列挙をサポートできる点でより柔軟ですが、他のフォント属性を使用したクエリとフィルター処理もサポートできます。
Windows 10 では、このより柔軟なフォント処理メカニズムが、IDWriteFontSet および関連 API を介してアプリケーションで使用できるようになります。 フォント セット API は、たとえば、カスタム フォント セット内のアプリケーションでカスタマイズされたフォント プロパティを利用して、カスタマイズされたフォント ピッカー ユーザー インターフェイスを作成するために使用できます。
詳細については、次のトピックを参照してください。
- IDWriteFontSet インターフェイス
- IDWriteFontSetBuilder インターフェイス
- DWRITE_FONT_PROPERTY_ID 列挙型
- IDWriteFontFactory3::GetSystemFontSet メソッド
新しいテキスト レイアウト行間モード
DirectWrite のテキスト形式とテキスト レイアウト インターフェイスでは、新しい行間モードがサポートされます。 以前のバージョンの DirectWrite のテキスト レイアウトの実装では、各行の高さが行内の最も高い項目 ("既定" モード) に基づいて自動的に設定される行間、またはすべての行の間隔がアプリケーションによって決まる均一な高さ ("uniform" モード) に設定されていました。 Windows 10 では、"比例" 行間モードが追加サポートされており、アプリケーションで行間動作のオプションが増えます。 詳細については、次のトピックを参照してください。
- IDWriteTextLayout3 インターフェイス
- IDWriteTextLayout3::SetLineSpacing メソッド
- DWRITE_LINE_SPACING 構造体
- DWRITE_LINE_SPACING_METHOD 列挙型
- DWRITE_FONT_LINE_GAP_USAGE 列挙型
- IDWriteTextLayout3::GetLineMetrics メソッド
- DWRITE_LINE_METRICS1 構造体
行間 (DirectWrite) のコード サンプルでは、いくつかの新しい API の使用法を示し、使用可能なさまざまな行間オプションを理解しやすくする、さまざまな行間モードをすべて視覚化することもできます。
GDI 相互運用
Windows 7 での導入以来、DirectWrite は、もともと GDI のフォント モデル、テキスト レイアウト、レンダリングを使用して実装されたアプリケーションに移行手段を提供してきました。 これは [[IDWriteGdiInterop]] インターフェイスを介して提供されていました。 Windows 10 では、追加の API によって、GDI 相互運用機能が追加提供されます。 その他の情報については、次のサブセクションをご覧ください。
- IDWriteGdiInterop1 インターフェイス
Windows 8.1
カラー フォントのレンダリング
Windows 8.1 以降、DirectWrite ではカラー フォントがサポートされています。 テキストレンダリングに DirectWrite を使用する Direct2D では、テキストを描画する際にこの機能を有効にするための列挙値 D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT が追加されました。 詳細については、次のトピックを参照してください。
Windows 8
新しいファクトリ インターフェイス IDWriteFactory1 は、使用可能な追加インターフェイスの作成に使用できます。
追加のフォント プロパティ (上付き文字/下付き文字、キャレットの傾き、PANOSE、Unicode 範囲など)。
制御文字の間隔、従来のカーニング ペア、両端揃えなど、間隔の改善。 詳細については、「両端揃え、カーニング、および間隔」トピックをご覧ください。
レンダー ターゲットとパラメーターが改善されました。
テキストの複雑さの分析の機能が強化されました。
新しい書体プロパティ、新しい書体のサポート (Unicode 6)、フォント フォールバックの追加、ペアのかっこ、および bidi 拡張。
フォント キャッシュのパフォーマンスが向上しました。 Windows 8 以降では、フォント キャッシュはグローバルで、コンピューターの起動時に開始されます。
新しいレンダリング モード。
Windows 8 以降、DirectWrite では、世界市場向けのアプリ作成に役立つ多くの機能がサポートされています。
世界中の顧客に合わせて調整できるリッチ テキスト アプリの実装に役立ついくつかの領域を次に示します。
中国語、日本語、韓国語の拡張 C & D
数年ごとに Unicode コンソーシアムは、中国語、日本語、および韓国語の統一イデオグラフ ブロックへの追加の標準化されたリストをリリースします。 Unicode 6.0 リビジョンでは、拡張ブロック C と D がリリースされました。これらの表意文字のブロックは、Unicode Web サイトの Extension C と Extension D にあります。
Windows 8 以降、DirectWrite では、標準化された CJK 表意文字のこれら新しいブロックの Unicode コード ポイントがサポートされているため、DirectWrite アプリで使用できます。
インド ルピー記号
2005年3月、インド政府はインドルピー通貨のシンボルを選ぶコンペの開催を発表しました。 多くの競争の後、2010 年 7 月 15 日、インド政府は D.Udaya Kumar によって作成されたデザインを選択しました。DirectWrite にはシンボルに関連付けられた Unicode コードポイントのサポートが含まれています。 そのため、DirectWrite アプリでは、この通貨記号がサポートされるようになりました。
Emoji
DirectWrite では、アプリでの絵文字の使用がサポートされるようになりました。 以前のバージョンの DirectWrite では、絵文字の表意記号をレンダリングしようとすると、不足しているグリフ ボックスが表示されました。 Windows 8 以降、DirectWrite では絵文字に関連付けられている Unicode コードブロックがサポートされているため、アプリで絵文字に Unicode 標準コードポイントを使用している場合は、適切なグリフが表示されます。
ミャンマー語、ティフィーナ語、旧ハングル語
Windows 8 以降、DirectWrite では、ミャンマー、ティフィーナ、および古いハングル言語のグリフに対応する Unicode コードポイントのブロックがサポートされているため、これら 3 つの言語のテキストを含むアプリを作成できます。 DirectWrite は、これらの文字をサポートするだけでなく、古いハングルが改行を処理する独自の方法をサポートしています。
新しいスクリプト
Windows 8 以降、GetScriptProperties メソッドは多くの新しいスクリプトの情報を返します。 Windows 8 以降で DirectWrite がサポートするスクリプトの一覧を次に示します。
- アベスタ
- バムン
- バタク
- ブラーフミー
- エジプトの象形文字
- インペリアル アラミック
- Inscriptional Pahlavi
- Inscriptional Parthian
- ジャワ文字
- カイティー
- リス (フレーザー)
- マンダ
- メイテイ マイェック文字
- 旧南アラビア語
- 旧トルコ語 (Orkhon)
- サマリア
- タイ タム (ランナ)
- タイ ベト