/// <summary> /// Draws multilanguage text with font fallback support /// </summary> private static void DrawTextWithFontFallback() { using (var bitmap = new Bitmap(400, 200, PixelFormat.Format24bppRgb, RgbColor.White)) using (var graphics = bitmap.GetAdvancedGraphics()) { var fontRegistry = new CustomFontRegistry(); fontRegistry.Add("../../../../_Input/Fonts/Lobster.ttf"); fontRegistry.Add("../../../../_Input/Fonts/ARIALUNI.TTF"); fontRegistry.FallbackFonts.Add("Arial Unicode MS"); graphics.FontRegistry = fontRegistry; var dummyText = "Lorem ipsum dolor sit amet, ex mel latine pertinax. 載自大制節規信兵著旋避漂。"; var boundedText = new BoundedText(dummyText, graphics.CreateFont("Lobster", 32f), new SolidBrush(RgbColor.Black)) { Rectangle = new System.Drawing.RectangleF(20f, 20f, 360f, 360f) }; graphics.DrawText(boundedText); bitmap.Save("../../../../_Output/DrawTextWithFontFallback.png"); } }
public void UpdateLocalFonts() { if (string.IsNullOrEmpty(FontDirectory) || !Directory.Exists(FontDirectory)) { return; } lock (FontRegistry) FontRegistry = new CustomFontRegistry(AdvancedDrawing.FontRegistry.Installed); RegisterFonts(FontDirectory); }
private Configuration() : base("Aurigma.GraphicsMill.AjaxControls.VectorObjects") { FontRegistry = new CustomFontRegistry(AdvancedDrawing.FontRegistry.Installed); SystemFonts = FontRegistry.Fonts .Select(fontInfo => new FontData(fontInfo) { System = true }) .ToLookup(fd => fd.Family) .ToDictionary(g => g.Key, g => g.ToList() as IList <FontData>, StringComparer.InvariantCultureIgnoreCase); if (!string.IsNullOrEmpty(FontDirectory) && Directory.Exists(FontDirectory)) { RegisterFonts(FontDirectory); } }
/// <summary> /// Adds font to FontRegistry from file and shows its metrics /// </summary> private static void LoadFontAndMeasureText() { using (var bitmap = new Bitmap(600, 250, PixelFormat.Format24bppRgb, new RgbColor(255, 255, 255, 255))) using (var graphics = bitmap.GetAdvancedGraphics()) using (var fontRegistry = new CustomFontRegistry()) { var fontSize = 60f; // Load custom font fontRegistry.Add(@"../../../../_Input/Fonts/Lobster.ttf"); graphics.FontRegistry = fontRegistry; var font = graphics.CreateFont("lobster", fontSize); // Plain text metrics var plainText = new PlainText("plain text", font); plainText.Position = new System.Drawing.PointF(5, plainText.GetBlackBox().Height + 10); ShowTextPosition(plainText.String, plainText.Position, plainText.GetBlackBox()); DrawPlainTextWithMarkup(plainText, graphics); // Round text metrics var roundText = new RoundText("Art round text", font, new System.Drawing.PointF(50, 50)) { Bend = 0.9f }; roundText.Center = new System.Drawing.PointF(graphics.Width - roundText.GetBlackBox().Width / 2 - 15, graphics.Height - roundText.GetBlackBox().Height / 2 - 10); ShowTextPosition(roundText.String, roundText.Center, roundText.GetBlackBox()); DrawArtTextWithMarkup(roundText, graphics); bitmap.Save("../../../../_Output/FontLoadingAndTextMeasuring.png"); } }
/// <summary> /// Adds font to FontRegistry from file and shows its metrics /// </summary> private static void ShowCustomFontMetrics() { using (var fontRegistry = new CustomFontRegistry()) { var fontSize = 30f; var dpi = 150f; fontRegistry.Add(@"../../../../_Input/Fonts/Lobster.ttf"); var font = fontRegistry.CreateFont("lobster", fontSize, dpi, dpi); // Font metrics Console.WriteLine("Font: {0} {1}", font.Family, font.Style); Console.WriteLine(" DPI (X,Y): {0},{0}", dpi); Console.WriteLine(" Size: {0}pt", fontSize); Console.WriteLine(" Ascender: {0}px", font.Metrics.Ascender); Console.WriteLine(" Descender: {0}px", font.Metrics.Descender); Console.WriteLine(" Height: {0}px", font.Metrics.Height); Console.WriteLine(" Underline position: {0}px", font.Metrics.UnderlinePosition); Console.WriteLine(" Underline thickness: {0}px", font.Metrics.UnderlineThickness); Console.WriteLine(); } }