10

2 つ以上のスクリプトにテキストを含む文字列があるとします。のような GDI 関数を使用するとTextOut、(最新バージョンの) Windows は「フォント リンク」を実行します。つまり、GDI は、選択したフォントで可能なものを描画し、残りは自動的に選択した適切なフォントで描画します。たとえば、テキストの一部が英語 (ローマ字を使用) で一部が中国語 (CJK 文字を使用) である場合、Arial を選択すると、英語部分は Arial で描画され、中国語部分はCJK グリフを持つ別のフォントで描画されます。

私の質問は、TextOutフォントのリンクにどのフォントを選択するか (または選択したか) を判断する方法はありますか?

自動フォントリンクを行わない低レベルの Uniscribe API でテキストを描画する必要があります。TextOut独自のフォント リンクを実装しましたが、アルゴリズムが同じテキストとは異なるフォントを選択することがあります。私は Windows アルゴリズムをよりよく理解しようとしていますが、視覚的にフォントを識別するのは得意ではありません (特になじみのないスクリプトでは)。

4

1 に答える 1

3

フォントは、レジストリ エントリによって選択されます。この記事でよく説明されています。 関連部分を引用:

デバイスでフォント リンクが有効になっている場合は、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink にあるレジストリ キーのサブキーを列挙してレジストリを調べ、リンクされたフォントとベース フォントのマッピングを確認できます。Regedit を使用してリンクを追加し、追加のサブキーを作成できます。

于 2010-03-11T18:18:42.563 に答える