Visual Basic サンプル集 |
Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
フォントに指定した文字が収録されているか確認する
2022/10/16
→ C# のサンプルに切り替える → Python のサンプルに切り替える
目次
文字「桜」がフォント「メイリオ」に収録されているか調べる
Dim codePoint As Integer = "桜".EnumerateRunes().First().Value
'Dim codePoint As Integer = &H685C 'Unicodeでのコードポイントを直接指定することもできます。
'フォント名の例 "メイリオ", "Meiryo", "MS Mincho" ,"MS 明朝", "Arial", "Segoe UI Emoji"
Dim fontName As String = "メイリオ"
Dim typeFace As New System.Windows.Media.Typeface(fontName)
Dim gtf As System.Windows.Media.GlyphTypeface
'複合フォントの場合は、ここで取得に失敗します。
'Global User Interface, Global Monospace, Global Sans Serif, Global Serif は複合フォントです。
'https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.media.fontfamily?view=windowsdesktop-6.0#composite-fonts
If typeFace.TryGetGlyphTypeface(gtf) = False Then
Debug.WriteLine($"{fontName} は複合フォントのため判断できませんでした。")
Return
End If
Dim letter As String = Char.ConvertFromUtf32(codePoint)
If gtf.CharacterToGlyphMap.ContainsKey(codePoint) Then
'出力例 メイリオ に 桜 (0685C) は収録されています。
Debug.WriteLine($"{fontName} に {letter} ({codePoint:X5}) は収録されています。")
Else
'出力例 Arial に 桜(0685C) は収録されていません。
Debug.WriteLine($"{fontName} に {letter} ({codePoint:X5}) は収録されていません。")
End If
メモ:Windows フォームアプリ や コンソールアプリ や ASP.NET Core Webアプリなどでこのプログラムを実行するにはWPFアプリの有効化が必要です。 その方法 → WPFの機能を有効にする
文字「桜」がフォントファイル「meiryo.ttc」に収録されているか調べる
Dim codePoint As Integer = "桜".EnumerateRunes().First().Value
'Dim codePoint As Integer = &H685C 'Unicodeでのコードポイントを直接指定することもできます。
' フォントファイル名の例 "meiryo.ttc", "arial.ttf"
Dim fontFileName As String = "C:\Windows\Fonts\meiryo.ttc"
Dim gtf As New System.Windows.Media.GlyphTypeface(New Uri(fontFileName))
Dim letter As String = Char.ConvertFromUtf32(codePoint)
If gtf.CharacterToGlyphMap.ContainsKey(codePoint) Then
'出力例 C:\Windows\Fonts\meiryo.ttc に 桜 (0685C) は収録されています。
Debug.WriteLine($"{fontFileName} に {letter} ({codePoint:X5}) は収録されています。")
Else
'出力例 C:\Windows\Fonts\meiryo.ttc に 桜(0685C) は収録されていません。
Debug.WriteLine($"{fontFileName} に {letter} ({codePoint:X5}) は収録されていません。")
End If
メモ:Windows フォームアプリ や コンソールアプリ や ASP.NET Core Webアプリなどでこのプログラムを実行するにはWPFアプリの有効化が必要です。 その方法 → WPFの機能を有効にする
メモ:既定のフォントのディレクトリーは System.Environment.GetFolderPath(Environment.SpecialFolder.Fonts) で取得できます。
古代エジプトの象形文字(ヒエログリグ)がフォント「Segoe UI Historic」に収録されているか調べる
Dim codePoint As Integer = &H13000 'Unicodeで定義されているヒエログリフの1文字目
'フォント名の例 "メイリオ", "Meiryo", "MS Mincho" ,"MS 明朝", "Arial", "Segoe UI Emoji"
Dim fontName As String = "Segoe UI Historic"
Dim typeFace As New System.Windows.Media.Typeface(fontName)
Dim gtf As System.Windows.Media.GlyphTypeface
'複合フォントの場合は、ここで取得に失敗します。
'Global User Interface, Global Monospace, Global Sans Serif, Global Serif は複合フォントです。
'https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.media.fontfamily?view=windowsdesktop-6.0#composite-fonts
If typeFace.TryGetGlyphTypeface(gtf) = False Then
Debug.WriteLine($"{fontName} は複合フォントのため判断できませんでした。")
Return
End If
Dim letter As String = Char.ConvertFromUtf32(codePoint)
If gtf.CharacterToGlyphMap.ContainsKey(codePoint) Then
'出力例 Segoe UI Historic に 𓀀 (13000) は収録されています。 ← この例ではこれが表示されます。
Debug.WriteLine($"{fontName} に {letter} ({codePoint:X5}) は収録されています。")
Else
'出力例 Segoe UI Historic に 𓀀 (13000) は収録されていません。
Debug.WriteLine($"{fontName} に {letter} ({codePoint:X5}) は収録されていません。")
End If
メモ:Windows フォームアプリ や コンソールアプリ や ASP.NET Core Webアプリなどでこのプログラムを実行するにはWPFアプリの有効化が必要です。 その方法 → WPFの機能を有効にする
メモ:コードポイント 13000 はこの文字です。