public static WinGdiFont GetWinGdiFont(RequestFont f) { if (f == null) { throw new NotSupportedException(); } if (f == latestFont) { return(latestWinFont); } WinGdiFont actualFontInside = WinGdiFont.GetCacheFontAsWinGdiFont(f); if (actualFontInside != null) { return(actualFontInside); } //----- //need to create a new one //get register font or create the new one int key = f.FontKey; WinGdiFont found; if (!registerFonts.TryGetValue(key, out found)) { //create the new one and register //create fontface FontFaceKey fontfaceKey = new FontFaceKey(key); WinGdiFontFace fontface; if (!winGdiFonFaces.TryGetValue(fontfaceKey, out fontface)) { //create new fontface = new WinGdiFontFace(f); winGdiFonFaces.Add(fontfaceKey, fontface); } found = (WinGdiFont)fontface.GetFontAtPointSize(f.SizeInPoints); registerFonts.Add(key, found);//cache here } latestFont = f; found.AssignToRequestFont(f); return(latestWinFont = found); }
public static WinGdiFont GetWinGdiFont(RequestFont f) { if (f == null) { throw new NotSupportedException(); } if (f == latestFont) { return latestWinFont; } WinGdiFont actualFontInside = WinGdiFont.GetCacheFontAsWinGdiFont(f); if (actualFontInside != null) { return actualFontInside; } //----- //need to create a new one //get register font or create the new one FontKey key = f.FontKey; WinGdiFont found; if (!registerFonts.TryGetValue(key, out found)) { //create the new one and register //create fontface FontFaceKey fontfaceKey = new FontFaceKey(key); WinGdiFontFace fontface; if (!winGdiFonFaces.TryGetValue(fontfaceKey, out fontface)) { //create new fontface = new WinGdiFontFace(f.Name, f.Style); winGdiFonFaces.Add(fontfaceKey, fontface); } found = (WinGdiFont)fontface.GetFontAtPointsSize(f.SizeInPoints); registerFonts.Add(key, found);//cache here } latestFont = f; found.AssignToRequestFont(f); return latestWinFont = found; }