コード例 #1
0
        void Issue119(PaintEventArgs e)
        {
            Text = "Issue 119 Demo";
            const float z = 80;
            var         m = GetType().Assembly;
            var         t = new OpenFontReader().Read
                                (m.GetManifestResourceStream
                                    (Array.Find(m.GetManifestResourceNames(), n => n.EndsWith("otf"))));

            t.UpdateAllCffGlyphBounds();
            var c = t.CalculateScaleToPixelFromPointSize(z);
            var b = new B(t);
            var r = new SampleWinForms.GlyphTranslatorToGdiPath();
            var g = t.GetGlyphByName("radical.v4");
            var o = g.Bounds;
            var k = R.FromLTRB(o.XMin * c, o.YMin * c, o.XMax * c, o.YMax * c);

            b.BuildFromGlyph(g, z);
            b.ReadShapes(r);
            e.Graphics.ScaleTransform(1, -1);
            e.Graphics.TranslateTransform(0, -Height / 2.5f);
            e.Graphics.FillRectangle(Pens.Red.Brush, k.X, k.Y, k.Width, k.Height);
            e.Graphics.DrawRectangle(Pens.Blue, k.X, k.Y, t.GetHAdvanceWidthFromGlyphIndex(g.GlyphIndex) * c, k.Height);
            e.Graphics.FillPath(Pens.Black.Brush, r.ResultGraphicsPath);
            e.Graphics.ResetTransform();
            e.Graphics.DrawString("Blue = GetHAdvanceWidthFromGlyphIndex,\nRed = Glyph.Bounds of radical.v4", Font, Pens.Black.Brush, 0, 0);
        }
コード例 #2
0
        void Issue120(PaintEventArgs e)
        {
            Text = "Issue 120 demo";
            const float z = 20;
            var         m = GetType().Assembly;
            var         t = new OpenFontReader().Read
                                (m.GetManifestResourceStream
                                    (Array.Find(m.GetManifestResourceNames(), n => n.EndsWith("otf"))));

            t.UpdateAllCffGlyphBounds();
            var c = t.CalculateScaleToPixelFromPointSize(z);
            var b = new B(t);
            var r = new SampleWinForms.GlyphTranslatorToGdiPath();
            var i = 1;

            e.Graphics.DrawString("Point size = " + z, Font, Brushes.Black, 0, 0);
            e.Graphics.ScaleTransform(1, -1);
            e.Graphics.TranslateTransform(0, -Height / 1.5f);
            var f = (Action <string>)(n =>
            {
                var g = t.GetGlyphByName(n);
                var o = g.Bounds;
                var k = R.FromLTRB(o.XMin * c, o.YMin * c, o.XMax * c, o.YMax * c);
                b.BuildFromGlyph(g, z);
                b.ReadShapes(r);
                e.Graphics.FillPath(Brushes.Black, r.ResultGraphicsPath);
                e.Graphics.DrawRectangle(Pens.Blue, k.X, k.Y, k.Width, k.Height);
                var a = e.Graphics.Save();
                e.Graphics.ResetTransform();
                e.Graphics.DrawString($"{n} - X: {k.X}, Y: {k.Y}, W: {k.Width}, H: {k.Height}", Font, Brushes.Black, 0, Font.Height * i);
                i++;
                e.Graphics.Restore(a);
                e.Graphics.TranslateTransform(k.Right, 0);
            });

            f("radical");
            f("radical.v1");
            f("radical.v2");
            f("radical.v3");
            f("radical.v4");
            f("slash.v6");
            f("slash.v7");
            f("backslash.v6");
            f("backslash.v7");
            f("fraction.v6");
            f("fraction.v7");
        }