問題タブ [directwrite]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
locale - Windows 7 での IDWriteFont::GetInformationalStrings(...) の問題 (日本語システム ロケール)
IDWriteFont::GetInformationalStrings(...) を使用して、Windows 7 (日本語ロケール ja-JP) でフォントの完全な名前を取得していますが、問題は次のとおりです。
DWRITE_INFORMATIONAL_STRING_FULL_NAME または DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME を DWRITE_INFORMATIONAL_STRING_ID として渡すと、exists=false が返され、IDWriteLocalizedStrings が返されません (システム上のすべてのフォントに対して)。
ただし、対応するエントリはフォントの名前テーブルに存在し、IDWriteFont::GetInformationalStrings(...) 呼び出しは Win 7 (en-us ロケール) の同じフォントに対して正常に機能します。
これが DirectWrite の問題かどうか教えてください。
ありがとう。
c++ - DirectWrite テキストの中央揃え
描画する必要があるテキストを中央に揃えようとしています。ID2D1RenderTarget::DrawTextLayout メソッドを使用します。問題は、テキストの水平方向の配置をDWRITE_TEXT_ALIGNMENT_LEADING
(デフォルト値) に設定するとテキストが不自然に描画されることですが、この値を変更するDWRITE_TEXT_ALIGNMENT_CENTER
とテキストが右にシフトします。
例の文字列は
結果は次のとおりです(最初は調整の主導です):
delphi - DrawTextLayout の DWriteMeasuringMode の変更
現在、DrawText を使用して DirectWrite でテキストを描画しています。
DrawTextLayout に切り替えたときに、エイリアス文字のレンダリングがうまく行われていないことに気付きました。
DrawText でできるように測定モードを変更する方法はありますかDWRITE_MEASURING_MODE_GDI_CLASSIC
上のテキストは DrawText (およびDWRITE_MEASURING_MODE_GDI_CLASSIC
) で描画され、下のテキストは DrawTextLayout で描画されます。
http://img5.fotos-hochladen.net/uploads/wwwwwwwww3b9zou6icp.jpg
http://img5.fotos-hochladen.net/uploads/xxxxxxxag8pdm5h2e.jpg
ご覧のとおり、下部のテキストでは文字間隔が適切ではありません。
DrawText の測定モードをに設定するDWRITE_MEASURING_MODE_NATURAL
と、TextLayout での描画とまったく同じ結果が得られます。問題は、変更方法がわからない測定モードです。
direct2d - IDWriteTextLayout は日本語の単語をトリミングしませんか?
ここの例に従って、省略記号を使用してテキストをトリミングしました: http://cx5software.sakura.ne.jp/blog/2011/01/18/directwrite-ellipsis-trimming-sign/
英語のテキストには問題なく機能しますが、日本語のテキストには機能しません。誰も理由を知っていますか?
テキストを書き込もうとする私のコードのスニペットは次のとおりです。
そして、これが結果のテキストです。省略記号は英語の文字に追加されますが、日本語のテキストには追加されないことに注意してください。
fonts - IDWriteTextLayout で使用される既定のタイポグラフィ設定は何ですか?
少なくとも私が使用しているフォント (つまり、Calibri) では、デフォルトで有効になっているように見える合字を無効にしたいと考えています。これを行う方法は、 を使用して、さまざまな合字関連のフォント機能を含むレイアウトにオブジェクトをIDWriteTextLayout::SetTypography
設定し、値をゼロにしてそれらを無効にすることです。IDWriteTypography
これは合字を無効にするために機能しますが、カーニングなど、私が台無しにしたくない他のタイポグラフィ設定にも影響します (無効にします)。
いくつかの実験の後、空のIDWriteTypography
オブジェクトを設定するだけで合字を無効にできることがわかりました (単に によって作成され、IDWriteFactory
変更せずにレイアウトに適用されたもの)。空のタイポグラフィは、可能なすべてのフォント機能をゼロ/無効に設定する効果があるようです。したがって、実際にやりたいことは、デフォルトのタイポグラフィ設定を取得し、合字に関連するものをオーバーライドしてから、それをレイアウトに設定することです。
残念ながら、デフォルト設定を取得する場所が見つかりません。何も設定されていない場合はnullをIDWriteTextLayout::GetTypography
返すだけですが、その場合は合字などのさまざまなタイポグラフィ設定が明らかに有効になっています。また、インスタンスIDWriteFactory
を作成するための他の方法 (またはその新しいバージョンのいずれか) またはフォント関連のインターフェイスも見つかりません。no が設定されている場合、どのタイポグラフィ設定を使用するかをIDWriteTypography
どのように決定しますか? デフォルト設定はフォント固有ですか? これらの設定を何らかの方法で取得して、いくつかを微調整し、残りのデフォルト値を継承することはできますか?IDWriteTextLayout
IDWriteTypography
c# - winrt でのフォント ファイルの内容の読み取り
WinRT プラットフォームからフォント ファイル ストリームを読み取るには? C# UWP からフォント ファイルのコンテンツを取得する必要があります。ご存じのとおり、Fonts フォルダーからファイルを直接読み取る方法はありません。このフォルダーを選択するのはユーザーの責任ではないため、FilePicker も私にはオプションではありません。DirectWrite (C++) を使用してフォント名を列挙し、C# で利用できる COM コンポーネントでラップする方法を見つけました ( https://code.msdn.microsoft.com/FontExplorer-lets-you-f01d415e#content )、フォントファイルの内容をバイト[]またはストリームとして読み取るために、同様のことができるのでしょうか?