文字の描画(Ver9.35対応版)
目次−
動作環境−
ウィンドウー
文字の描画
- 3Dグラフィックスアクセラレータによる文字の描画
-
Windows7の新機能である、Direct2D / DirectWrite の仕組みを使い、3Dグラフィックスアクセラレータを使って文字を描画するかどうか指定します。
編集エリア(エディタ本文部分)の文字の描画について、この仕組みを適用することが出来ます。
この機能を使うには、Windowsの種類がWindows7以上であるか、またはWindows Vistaの場合には「Widows Vistaプラットフォーム更新プログラム」を別途インストールする必要があります。WindowsXP以下では使えません。
Windows Vistaプラットフォーム更新プログラムについては、「kb971644」でインターネット検索すると詳細が出てきます。
ただし、DirectWriteが機能する環境であっても、印刷時はDirectWriteは使用しません。
Windows 10以降では、縦書きモードでもDwirectWriteが使用できます。ただし、横書きモードに比べて描画速度は遅いです。
プロポーショナルフォントや、固定ピッチフォントでも日本語対応じゃないフォントだと画面の描画が極端に遅くなります。特にカーソル位置の縦線をONにしてると遅さが目立つので、ご注意ください。
- アンチエイリアスの方式
-
3Dグラフィックスアクセラレータで文字を描画する時の、アンチエイリアスの方式を指定します。アンチエイリアスというのは、いわゆる文字をなめらかに描画する方式のことです。
「ClearType高精細」にすると、普通のClearTypeと違って上下方向についてもアンチエイリアスが効くようになっていいみたいです。ただ、そのままだとちょっと偽色が出やすいので、ClearTypeのレベルを30%程度に落として、さらにコントラストは100%を指定するのがいいんじゃないかと思います。
「アウトライン式」を指定すると、おかしな描画になります。(作者の環境だと)。これの理由はいまいち分かりませんが、Windows SDKに付属のサンプルでテストしても同じだったので、たぶんそういう物(まだ未サポート)なんだと思います。
「ClearType高精細」と「アウトライン式」以外については、文字のサイズが小さい場合で日本語用のフォントだと、ほとんどアンチエイリアスが効かないようです。
「アンチエイリアス無し」、「GDI CLASSIC」、「GDI NATURAL」だと、文字ピッチがピクセル単位に補正されて、結果として英文字のピッチが一定せず、いびつになることがあります。さらに、太字の描画で文字がダブって見えることがあります。なのでこの3つの方式はお勧めしません。
- コントラストの指定
-
アンチエイリアスをかける時のコントラスト(enhanced cotrast)という値を指定することが出来ます。これは100%にしてやった方が文字がくっきりしていいんじゃないかと思いますが、くっきりさせるとその分なめらか度合いは下がるような気もします。
- ClearTypeLevelの指定
-
ClearTypeでの色の付き具合を指定するようでして、0%を指定すると、ClearTypeじゃなくて普通のアンチエイリアスになります。100%にすると偽色が出やすくなっていまいちな気がします。
- (プロポ)文字間隔拡張
-
プロポーショナルフォントの場合の文字間隔の割合を指定します。ここで指定する文字間隔は0.01ポイント以下の単位で処理されるるので、ごくわずかのパーセンテージを指定しても正確な間隔で文字が描画されます。
- カラー絵文字
-
Windows8.1以上の場合にカラー絵文字をカラーで描画します。
ここのオプションをONにすると、カラー絵文字の描画に「Segoe UI Emoji」のフォントを強制的に適用してカラーで表示します。
ここのオプションOFFの場合でも、フォントにあえて「Segoe UI Emoji」を指定した場合は、どっちにしてもカラーで表示されます。
Windowsがカラー絵文字をサポートしてない場合はここのオプションは選択できません。(2015年4月時点では、Windows8.0以下ではサポートされていません)
結合文字を1つの文字として扱うためには、高度な編集2の「結合文字を1つの文字として扱う」もONにする必要があります。
固定ピッチフォントの場合、必ずマス目状に収まるようになっているため、幅の広い文字は収まらない場合があります。
幅の広い文字も扱う場合は、[その他]→[ファイルタイプ別の設定]→[フォント]で、プロポーショナルフォントを使ってください。
(または、固定ピッチフォントでも「プロポーショナルフォント扱い」をONにすることで可能)
ここのオプションをONにしてもカラー絵文字にならない文字も存在します。例えば半角文字との結合でカラーになる「囲み数字」の類はカラーになりません。または時代の進化によって後で追加された絵文字で対応がまだ追いついてないケースもあるかもしれません。後から追加された絵文字については作者に連絡いただければ対応できる可能性が高いです。
- 縦書きでも使用
-
このオプションはWindows10以降専用です。
縦書きでも「3Dグラフィックスアクセラレータによる文字の描画」を適用します。
縦書きの描画は通常より遅くなるため、OFFにして従来通りの描画にすることができます。
- 秀丸パブリッシャーでも使用
-
このオプションはWindows10以降専用です。
秀丸パブリッシャーの印刷でも「3Dグラフィックスアクセラレータによる文字の描画」を適用します。
注意点:
・文字は画像として処理され、pdfやxpsなどで文字としてのコピーができなくなります。
・プレビューの結果などが遅くなったり、縮小で文字がつぶれて見える場合があります。
・縦書き時のフォントによって回転する文字が、ON/OFFで違う場合があります。
・カラー印刷に対応していないプリンタ(Faxなど)でカラー印刷する設定にしていると、強制的にカラーになって不都合がある場合があります。
- 性能チェック
-
3Dグラフィックスアクセラレータによる文字の描画と通常の描画との性能比較を行って結果表示します。アンチエイリアスの方式やビデオカードの種類によって性能はかなり違ってきます。
- 詳細
-
3Dグラフィックスアクセラレータによる文字の描画での、その他の詳細な設定を行います。
- ちらつき防止の描画方式
-
このオプションはV9.15で廃止され、常にON扱いと同等になりました。
- プロポーショナルフォント時のタブ文字の最低幅
-
プロポーショナルフォントの場合でタブ文字を使った場合、タブ文字の幅が、普通だと最低で1ピクセルになってしまうことがあり、画面上でタブ文字の見分けが難しい場合があります。
ここのオプションを「半角空白1文字分」にすると、タブ文字の表示幅が最低でも半角空白1文字分だけ確保されるので、見た目的にはよくなります。
- 補足
-
アンチエイリアスやコントラスト等の指定については、「DirectWrite Antialias」とかのキーワードでインターネット検索などすると、いろいろとヒントが出てくるようです。その辺も参考にしてほしいです。
噂によると、DirectWrite / Direct2D関係についてはまだドライバーにバグがあったり未サポートの部分があったりしてうまく描画されないケースもあるそうです。そういう場合はアンチエイリアスの方式をいろいろ変えてみるなどしてください。
それとあと、DirectWrite / Direct2D を使うと、Windowsを起動してから一番最初の秀丸エディタの起動はかなり遅くなってしまいます。DirectWrite / Direct2D用のライブラリをロードするのに時間がかかるので、これも仕方が無いと思います。
- 性能(パフォーマンス)について
-
3Dグラフィックスアクセラレータを使って文字を描画する設定にすると、描画性能が極端に遅い場合があります。こちらで確認した所では、以下のケースで極端に遅くなりました。
- 秀丸エディタを起動する用のショートカットの「互換性」ページでの「互換モードでこのプログラムを実行する」をONにしているケース。
- 秀丸エディタのプログラムが保護違反を何回か発生させたことによって、「フォールト トレラント ヒープ」が有効化されてしまったケース。
「2.」のケースについては、レジストリエディタを使って「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers」の中にあるデータを削除することで回復するようです。詳しくは「フォールトトレラントヒープ」でインターネット検索するなどして調べてみてください。
3Dグラフィックスアクセラレータを使った文字の描画の性能は、アンチエイリアスの指定の仕方によってもだいぶ変わるようです。また、たぶんですが、DirectX 11にハードウェアで対応したアクセラレータを使えば、より高速になるんじゃないかと思います。