ヘッダー
Visual Basic サンプル集
 

フォントに指定した文字が収録されているか確認する

2022/10/16

→ C# のサンプルに切り替える → Python のサンプルに切り替える

 

文字「桜」がフォント「メイリオ」に収録されているか調べる

VB2019対応 Visual Studio 2022

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

Debug.WriteLineが表示される場所

メモ:Windows フォームアプリ や コンソールアプリ や ASP.NET Core Webアプリなどでこのプログラムを実行するにはWPFアプリの有効化が必要です。 その方法 → WPFの機能を有効にする

 

 

文字「桜」がフォントファイル「meiryo.ttc」に収録されているか調べる

VB2019対応 Visual Studio 2022

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

Debug.WriteLineが表示される場所

メモ:Windows フォームアプリ や コンソールアプリ や ASP.NET Core Webアプリなどでこのプログラムを実行するにはWPFアプリの有効化が必要です。 その方法 → WPFの機能を有効にする

メモ:既定のフォントのディレクトリーは System.Environment.GetFolderPath(Environment.SpecialFolder.Fonts) で取得できます。

 

 

古代エジプトの象形文字(ヒエログリグ)がフォント「Segoe UI Historic」に収録されているか調べる

VB2019対応 Visual Studio 2022

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

Debug.WriteLineが表示される場所

メモ:Windows フォームアプリ や コンソールアプリ や ASP.NET Core Webアプリなどでこのプログラムを実行するにはWPFアプリの有効化が必要です。 その方法 → WPFの機能を有効にする

メモ:コードポイント 13000 はこの文字です。