示例#1
0
    /// <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");
            }
    }
示例#2
0
        public void UpdateLocalFonts()
        {
            if (string.IsNullOrEmpty(FontDirectory) || !Directory.Exists(FontDirectory))
            {
                return;
            }

            lock (FontRegistry)
                FontRegistry = new CustomFontRegistry(AdvancedDrawing.FontRegistry.Installed);

            RegisterFonts(FontDirectory);
        }
示例#3
0
        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();
        }
    }