Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Are you limited to .NET 2.0? In .NET 3.0 or higher, there's the <code>GlyphTypeface</code> class, which can load a font file and exposes the <code>CharacterToGlyphMap</code> property, which I believe can do what you want.</p> <p>In .NET 2.0, I think you'll have to rely on PInvoke. Try something like: </p> <pre><code>using System.Drawing; using System.Runtime.InteropServices; [DllImport("gdi32.dll", EntryPoint = "GetGlyphIndicesW")] private static extern uint GetGlyphIndices([In] IntPtr hdc, [In] [MarshalAs(UnmanagedType.LPTStr)] string lpsz, int c, [Out] ushort[] pgi, uint fl); [DllImport("gdi32.dll")] private static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj); private const uint GGI_MARK_NONEXISTING_GLYPHS = 0x01; // Create a dummy Graphics object to establish a device context private Graphics _graphics = Graphics.FromImage(new Bitmap(1, 1)); public bool DoesGlyphExist(char c, Font font) { // Get a device context from the dummy Graphics IntPtr hdc = _graphics.GetHdc(); ushort[] glyphIndices; try { IntPtr hfont = font.ToHfont(); // Load the font into the device context SelectObject(hdc, hfont); string testString = new string(c, 1); glyphIndices = new ushort[testString.Length]; GetGlyphIndices(hdc, testString, testString.Length, glyphIndices, GGI_MARK_NONEXISTING_GLYPHS); } finally { // Clean up our mess _graphics.ReleaseHdc(hdc); } // 0xffff is the value returned for a missing glyph return (glyphIndices[0] != 0xffff); } private void Test() { Font f = new Font("Courier New", 10); // Glyph for A is found -- returns true System.Diagnostics.Debug.WriteLine(DoesGlyphExist('A', f).ToString()); // Glyph for ಠ is not found -- returns false System.Diagnostics.Debug.WriteLine(DoesGlyphExist((char) 0xca0, f).ToString()); } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload