2

更新 (Hans Passant からの最初の回答に応じて): ユースケースを十分に説明していないと思います。このアプリケーションは、ユーザーが「マスター」言語 (ほとんどの場合英語ですが、必ずしもそうとは限りません) でデータを入力し、別の言語で翻訳を入力できるように設計されています。これはすべて、リッチテキスト ボックス インターフェイスで行われます。

したがって、翻訳を入力するために使用するフォントは、翻訳先の言語のスクリプトをサポートするフォントでなければなりません。

「ターゲット言語」がわかっている場合は、その言語でのテキストの入力をサポートするフォントのみをリストするとよいでしょう。

================================================== ====================

私は、SQL Server バックエンドを使用して VB.net アプリケーションに取り組んでいます。西欧文字以外の言語 (中国語、日本語、アラビア語など) を含む複数の言語でのリッチ テキスト エントリ (ユーザーから承認) をサポートする予定です。

ユーザーが使用したい言語を選択できるダイアログがあります。言語ごとに、ユーザーはアプリケーションのリッチ テキスト ボックスにその言語のテキストを入力するための適切な (既定の) フォントを指定する必要があります。

例: ユーザーは中国語でテキストを入力したいので、アプリケーションで使用する言語として「中国語」を選択します。ユーザーは漢字を入力するフォントを指定する必要があります。そのため、Windows.Forms.FontDialog を表示します。

このフォント選択ダイアログで、選択した言語のコードページ (スクリプト) に基づいて、使用可能なフォントのリストをフィルター処理できるようにしたいと考えています。

たとえば、フォント「Brush Script MT」は西洋文字のみをサポートし、中国語はサポートしていません。したがって、ユーザーが中国語のテキストを入力するためにフォントを選択している場合、「Brush Script MT」フォントはリストに表示されません。

これを達成する方法について誰かアイデアがありますか? System.Text.Encoding を使用して、ローカル システムで使用されている Windows コードページの番号を取得することから始めました。正しい道をたどっていますか?

助けてくれてありがとう!

マット

4

1 に答える 1

0

まずあなたが電話するEnumFontFamiliesEx()

コールバック関数NEWTEXTMETRICEXでは、フォントのプロパティを記述する構造体を取得します。

ntmTm構造体には、フィールド " " を持つ" "という名前の埋め込み構造体が含まれていますtmCharSet

値の例を次に示します。

128 = SHIFTJIS
129 = HANGUL
130 = JOHAB
134 = GB2312
136 = CHINESEBIG5

このようにして、フォントは、たとえば BIG5 文字セットをサポートしていることを示します。

さらに、この構造体には、最大 126 の Unicode サブレンジを識別する 128 ビット Unicode サブセット ビットフィールドを持つntmFontSigフィールド " " を含む別の埋め込み構造体 " " があります。fsUsb

于 2014-07-25T00:44:02.977 に答える