問題タブ [privatefontcollection]
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.
c# - リソースから PrivateFontCollection にフォントをロードすると、破損した再投稿が発生する
リソースから PrivateFontCollection にフォントをロードする際に問題があります。
これを開始したとき、ファイルからフォントを読み込むことに成功しましたが、プロジェクトにフォントを埋め込みたいと思います (そのため、ユーザー側のファイルの混乱が少なくなり、アプリケーションの実行中の IO が少し少なくなります)。
次のコードは、フォントをロードし、適切な名前を取得し、スケーリングを可能にしますが、どの文字も適切に表示されません。
使用例:
埋め込みリソースとファイル ベースのテストの両方で、現在の FontAwesome TTF ファイルを使用しています。埋め込み時、または埋め込みからの読み込み時に、翻訳で何かが失われたり、スクランブルされたりしているようです。フォントを埋め込みリソースから PrivateFontCollection にロードできるように、これを機能させるには助けが必要です。
SO で調べた「解決策」がいくつかありますが、それらはかなり古く、一部またはすべてのコマンド/アクセサーは Visual Studio 2013 では使用できなくなりました (記事の解決策は 4 ~ 5 年前のものです)。「解決策」の例と、それらが機能しない理由:
解決策 #1 - フォントのアクセサー文字列が null を返すため、これは機能しません。私の場合、アクセサはMyProject.Properties.Resources.fontawesome_webfont
解決策 2 - この解決策が最も近かったのですが、リソースへのアクセスに使用されていた方法が機能しなくなりました。上記のコードは、byte[] 配列をメモリに渡し、メモリからロードするというコア コンセプトを取り除いた、このハーベスト バージョンを実装しています。私の場合、リソースの get{} プロパティはすでに byte[] 配列を返しているため、それをバイト配列に「変換」する必要はなく、コードのその部分を (一見) 安全に削除することができました。新しいアクセサーを使用するように更新します。
どちらの場合も、フォント ファイルを埋め込みリソースから PrivateFontCollection にロードできるようにする、この問題の解決策が必要です。
c# - リソースからの PrivateFontCollection の作成に関する問題
私はこの同じコードを何ヶ月も実行してきましたが、うまく機能しています。最近、このコードを TFS のソース管理に追加しましたが、正しく機能しなくなりました。唯一の変更は、製品ガイドラインを満たすためにいくつかの名前空間を変更したことです。目的はpfc
、ファイルにリソースとして埋め込まれているフォントを作成することです。その理由は、実行可能ファイルは移植可能であり、適切な .NET バージョンがインストールされていること以外には依存しないためです。
突然起こり始めたのは、すべてのフォントが辞書にロードされないということです。デバッグ中にわかる限り、リソースは問題ありません。すべてのフォント リソースを正しくループします。ただし、到達すると、s_FontCollection.AddMemoryFont
一部をスキップし始めます。Status
メソッドから戻り値を読み取る方法を見つけようとしていましたが (ここで説明したように)、それを機能させることができないようです。正直なところ、これに関連する他のコードは変更していません。
本当に奇妙な部分は、実行時の問題です。同じビルドを複数回実行すると、使用可能なフォントに関して異なる結果になることがあります。
winforms - フォントがインストールされていない場合、System::Drawing::Text::PrivateFontCollection が機能しない
メモリ (埋め込みリソース) からフォントを追加して、Windows フォーム (c++/cli) アプリケーションに使用しようとしました... コードは機能していますが、指定されたフォントがコンピューターにインストールされていない場合、テキスト ボックスは既定のフォントを使用しています。私のカスタムフォントの代わりに。CompatibleTextRenderingDefault は true に設定されています。
c# - C#でPrivateFontCollection経由で常に英語のフォント名を取得するには?
今、私は次のコードでフォント名を取得しています:
英語の Win7 システムでは「DFPHeiMedium-UN」と表示されますが、中国語の Win7 システムでは「華康中黑體(P)-UN」と表示されます。そのため、フォント名はシステム言語によって異なります。
私の質問は、システム言語に関係なく常に「DFPHeiMedium-UN」を取得できるようにコードを書く方法ですか?
ありがとうございました。
ところで、CurrentCulture を試してみました。この行を上記のコードの前に置きます。それでもうまくいきません。Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");