コード例 #1
0
        private IntPtr GetFontByCodePointNonCached(int codePoint)
        {
            foreach (IntPtr font in fonts)
            {
                if (LibXft.XftCharExists(display, font, (uint)codePoint) != 0)
                {
                    return(font);
                }
            }

            if (fonts.Count >= MaxFontsCount)
            {
                return(MainFont);
            }

            IntPtr fontPtr = LibXft.XftFontOpenName(display, screen, GetXftFontConfig(fontConfig, codePoint));

            if (fontPtr == IntPtr.Zero)
            {
                return(MainFont);
            }

            if (LibXft.XftCharExists(display, fontPtr, (uint)codePoint) == 0)
            {
                LibXft.XftFontClose(display, fontPtr);
                return(MainFont);
            }

            fonts.Add(fontPtr);
            return(fontPtr);
        }
コード例 #2
0
 public void Dispose()
 {
     foreach (IntPtr font in fonts)
     {
         LibXft.XftFontClose(display, font);
     }
 }