質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

3110閲覧

C# フォントにグリフが含まれているか確認したい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/08/19 10:17

フォントにグリフが含まれているか確認したい

JavaにはcanDisplayがあります

Java

1public boolean canDisplay(char c) 2この Font が指定された文字のグリフを持つかどうかを判定します。

C#に「canDisplay」相当のメソッドはありますか?

GraphicsのDrawStringを使って描画しています。
DrawStringはフォントに定義のない文字をを豆腐文字に置き換えます。
代替文字を変更することは出来ません、なのでフォントに定義されていない文字を除外したいです。

C#

1public void DrawString (string s, System.Drawing.Font font, System.Drawing.Brush brush, float x, float y, System.Drawing.StringFormat format); 2指定した Brush の書式属性を使用して、指定した Font オブジェクトおよび StringFormat オブジェクトで、指定した位置に指定した文字列を描画します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/08/19 10:23

元のアカウントで行った同じ質問はなぜ放置しているんですか?
退会済みユーザー

退会済みユーザー

2020/08/19 10:31

同じ質問とは何でしょうか?
退会済みユーザー

退会済みユーザー

2020/08/19 10:45

身に覚えのない質問です。 荒しですか?通報しました
Zuishin

2020/08/19 10:48

やはりあなたで間違いないようですね。
退会済みユーザー

退会済みユーザー

2020/08/19 10:54

訳がわかりません。 いま制作しているソフトの制作を開始したのは6月19日です。 4月30日に該当の質問があったようです、4月30日にはプロジェクトの案さえありません。 Gitの履歴見せましょうか??? このサイトは頭のおかしい人しか居ないのですね。
Zuishin

2020/08/19 10:55

新しく作り直すことのできるものを見せられてもね。
GlassGrass

2020/08/20 03:24

@Zuishin 横からで失礼しますが、複アカマルチポストと断定するに足る根拠はあるのでしょうか?
guest

回答1

0

ベストアンサー

C#

1 var fontFamily = new System.Windows.Media.FontFamily("MS UI Gothic"); 2 foreach (var typeface in fontFamily.GetTypefaces()) 3 { 4 GlyphTypeface gTypeface; 5 if( !typeface.TryGetGlyphTypeface(out gTypeface) ) 6 { 7 return; 8 } 9 10 //下記を実行すると、デバッグ出力結果は 11 //Contains 'A' 41 12 //Contains 'あ' 3042 13 //Contains 'お' 304A 14 //となる 15 var chars = new char[] { 'A', 'あ', Convert.ToChar(0x380), 'お'}; 16 foreach(var chr in chars) 17 { 18 if (gTypeface.CharacterToGlyphMap.ContainsKey(chr)) 19 { 20 Debug.WriteLine($"Contains '{chr}' {(ushort)chr:X}"); 21 } 22 23 } 24 return; 25 }

Typefaceは書体の違いだと思うので、最初に取れたものを使えばいいと思います(多分)
フォント詳しい訳じゃないので、違ってたらすみません。
.NET Frameworkの場合、PresentationCore の参照を追加してください。
.NET Coreの場合は、WPFアプリケーションにする必要があるかもしれません。

投稿2020/08/20 02:31

編集2020/08/20 02:34
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/20 04:00

ありがとうございます、助かりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問