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 とも呼ばれます) で追加または更新されました。

新しい

Windows 10 April 2018 Update

次の機能と API は、Windows 10 バージョン 1803 (10.0;ビルド 17134) (Windows 10 April 2018 Update とも呼ばれます) で追加または更新されました。

新しい

Windows 10 Fall Creators Update

次の機能と API は、Windows 10 バージョン 1709 (10.0;ビルド 16299) (Windows 10 Fall Creators Update とも呼ばれます) で追加または更新されました。

新しい

移動済み

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)、または WOFFWOFF2 コンテナー形式でパッケージ化されたフォントにアクセスするために使用できます。 この新しい API は、リモート フォント データをダウンロードする要求をキューに入れる、または実際のダウンロード処理を行うために、既存の API と組み合わせて使用されます。

その他の新しい API では、ローカル ファイル システムに格納されているカスタム フォントやメモリ バッファーに読み込まれるカスタム フォントをアプリで簡単に操作できます。

リモート フォント、カスタム フォント セット、または WOFF/WOFF2 コンテナー形式を操作するための新しい API の詳細については、次のトピックをご覧ください。

カスタム フォント セット

そのトピックで提供されている API リファレンス トピックへのリンクもご覧ください。  カスタム フォントを操作するための新規および既存の API の使用方法は、DirectWrite カスタム フォント セットのサンプルにも示されています。 このサンプルでは、ディスク上のローカル フォント、Web 上のリモート フォント、メモリ内フォント データ、パックされた WOFF または WOFF2 形式のフォントなど、いくつかの異なるシナリオのコード実装を示します。

OpenType フォント バリエーションの初期サポート

OpenType フォント形式仕様のバージョン 1.8 では、OpenType フォント バリエーションと呼ばれる形式に優れた新しい拡張機能が追加されました。 DirectWrite は、変数フォントの名前付きインスタンスをサポートするために、Windows 10 Creators Update で更新されました。 詳細については、次のトピックを参照してください。

OpenType 変数フォント

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 を使用する Direct2DD2D1_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 を使用する必要があります。 詳細については、次のトピックを参照してください。

ダウンロード可能なフォント (DirectWrite) のコード サンプルでは、新しい API の使用方法を示します。

フォント セット API

DirectWrite のフォント コレクション インターフェイスは、サブファミリ属性として太さ、ストレッチ、スタイルを使用して、フォント ファミリ別に編成されたフォントのコレクションにビューを提供します。 内部的には、DirectWrite は、さまざまな属性を持つフォントのフラット リストを使用して、フォント コレクション インターフェイスを実装します。 この方法は、太さ/ストレッチ/スタイル ファミリの列挙をサポートできる点でより柔軟ですが、他のフォント属性を使用したクエリとフィルター処理もサポートできます。

Windows 10 では、このより柔軟なフォント処理メカニズムが、IDWriteFontSet および関連 API を介してアプリケーションで使用できるようになります。 フォント セット API は、たとえば、カスタム フォント セット内のアプリケーションでカスタマイズされたフォント プロパティを利用して、カスタマイズされたフォント ピッカー ユーザー インターフェイスを作成するために使用できます。

詳細については、次のトピックを参照してください。

新しいテキスト レイアウト行間モード

DirectWrite のテキスト形式とテキスト レイアウト インターフェイスでは、新しい行間モードがサポートされます。 以前のバージョンの DirectWrite のテキスト レイアウトの実装では、各行の高さが行内の最も高い項目 ("既定" モード) に基づいて自動的に設定される行間、またはすべての行の間隔がアプリケーションによって決まる均一な高さ ("uniform" モード) に設定されていました。 Windows 10 では、"比例" 行間モードが追加サポートされており、アプリケーションで行間動作のオプションが増えます。 詳細については、次のトピックを参照してください。

行間 (DirectWrite) のコード サンプルでは、いくつかの新しい API の使用法を示し、使用可能なさまざまな行間オプションを理解しやすくする、さまざまな行間モードをすべて視覚化することもできます。

GDI 相互運用

Windows 7 での導入以来、DirectWrite は、もともと GDI のフォント モデル、テキスト レイアウト、レンダリングを使用して実装されたアプリケーションに移行手段を提供してきました。 これは [[IDWriteGdiInterop]] インターフェイスを介して提供されていました。 Windows 10 では、追加の API によって、GDI 相互運用機能が追加提供されます。 その他の情報については、次のサブセクションをご覧ください。

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 CExtension 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)
  • サマリア
  • タイ タム (ランナ)
  • タイ ベト