C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 135 を表示中)
■79415 / )  Re[7]: 外字印字のフォント
□投稿者/ 魔界の仮面弁士 (677回)-(2016/03/31(Thu) 19:40:58)
No79412 (furu さん) に返信
> 「Segoe UI Symbol」だと、じゃんけんのグー,チョキ,パーが印字(表示)できますが
> 「MS Pゴシック」だと、チョキしか印字(表示)できません。

とりあえず、これで判定できるかも。


'参照設定「PresentationCore.dll」

Dim fontFamilyTypefaceName As String = "MS ゴシック"
Dim character As Char = ChrW(&H337B)

Dim tf As New System.Windows.Media.Typeface(fontFamilyTypefaceName)
Dim gt As New System.Windows.Media.GlyphTypeface()
If tf.TryGetGlyphTypeface(gt) Then
 Dim map As IDictionary(Of Integer, UShort) = gt.CharacterToGlyphMap
 Dim p As Integer = AscW(character)
 If map.ContainsKey(p) Then
  MessageBox.Show("利用可能:" & CStr(map(p)))
 Else
  MessageBox.Show("利用不可")
 End If
Else
 MessageBox.Show("取得失敗")
End If



ただ、フォントごとのチェックは、あまり意味がないかもしれません。

仮に
>> 2.ある文字が印字できるフォントを検索
が可能だったとしても、各フォントは必ずしも包含関係には無いためです。

文章の一部はこっちのフォント、残りの部分はあっちのフォントといったかんじで
一文字ごとにフォントを切り替えてレンダリングするわけにもいきませんよね。


アプリで表示できる文字を増やしたいのなら、対応文字の多いフォントを購入するなり、
複数フォントをフォントリンクで補間させるなり(ソフト側の対応も必要)、
環境整備も含めた準備が必要かと思います。

さもなくば、そのアプリで利用可能な文字集合をあらかじめ定義しておき、
そこから外れた物は、印字結果を保証できない or 入出力を制限するなど、
いずれにせよ、泥臭い対応になってしまうのではないでしょうか。


> JIS第2水準に限れば、入力時にチェックもしやすいのですが
> 昨今、そうも言ってられなくて、なんでも入ってきます。

今も昔も、悩ましい問題ではありますね…。

昔は昔で、三重複文字(¬∵)や二重複文字(≒≡∫√⊥∠∩∪)などの
変換問題があったりしましたし。(特に、PC-9800版のWindows 95)
https://support.microsoft.com/ja-jp/kb/170559
返信 編集キー/


管理者用

- Child Tree -