Esempio n. 1
0
        private SKTypeface GetTypeface()
        {
            if (_typeFace == null || _typeFaceFontFamily != FontFamily || _typeFaceFontAttributes != FontAttributes)
            {
                SKTypefaceStyle style = SKTypefaceStyle.Normal;

                switch (FontAttributes)
                {
                case FontAttributes.None:
                    style = SKTypefaceStyle.Normal;
                    break;

                case FontAttributes.Bold:
                    style = SKTypefaceStyle.Bold;
                    break;

                case FontAttributes.Italic:
                    style = SKTypefaceStyle.Italic;
                    break;
                }

                _typeFace = SKTypeface.FromFamilyName(FontFamily == null ? Device.OnPlatform("Helvetica", "sans-serif", "Arial") : FontFamily, style);

                _typeFaceFontFamily     = FontFamily;
                _typeFaceFontAttributes = FontAttributes;
            }

            return(_typeFace);
        }
Esempio n. 2
0
        public static SKTypeface FromFamilyName(string familyName, SKTypefaceStyle style)
        {
            var weight = style.HasFlag(SKTypefaceStyle.Bold) ? SKFontStyleWeight.Bold : SKFontStyleWeight.Normal;
            var slant  = style.HasFlag(SKTypefaceStyle.Italic) ? SKFontStyleSlant.Italic : SKFontStyleSlant.Upright;

            return(FromFamilyName(familyName, weight, SKFontStyleWidth.Normal, slant));
        }
Esempio n. 3
0
        unsafe static SKTypeface GetTypeface(string name, SKTypefaceStyle style)
        {
            if (name == null)
            {
                name = "Arial";
            }

            Dictionary <SKTypefaceStyle, SKTypeface> entry;

            if (!Cache.TryGetValue(name, out entry))
            {
                Cache[name] = entry = new Dictionary <SKTypefaceStyle, SKTypeface>();
            }

            SKTypeface typeface = null;

            if (!entry.TryGetValue(style, out typeface))
            {
                typeface = SKTypeface.FromFamilyName(name, style);
                if (typeface == null)
                {
                    typeface = SKTypeface.FromFamilyName(null, style);
                }
                entry[style] = typeface;
            }
            return(typeface);
        }
Esempio n. 4
0
 public static SKTypeface FromFamilyName(string familyName, SKTypefaceStyle style = SKTypefaceStyle.Normal)
 {
     if (familyName == null)
     {
         throw new ArgumentNullException("familyName");
     }
     return(GetObject <SKTypeface> (SkiaApi.sk_typeface_create_from_name(familyName, style)));
 }
Esempio n. 5
0
 public static SKTypeface FromTypeface(SKTypeface typeface, SKTypefaceStyle style = SKTypefaceStyle.Normal)
 {
     if (typeface == null)
     {
         throw new ArgumentNullException("typeface");
     }
     return(GetObject <SKTypeface> (SkiaApi.sk_typeface_create_from_typeface(typeface.Handle, style)));
 }
Esempio n. 6
0
        /// <inheritdoc/>
        public override void Draw(object dc, TextShape text, double dx, double dy, object db, object r)
        {
            var canvas = dc as SKCanvas;

            var properties = (ImmutableArray <Property>)db;
            var record     = (Record)r;
            var tbind      = text.BindText(properties, record);

            if (string.IsNullOrEmpty(tbind))
            {
                return;
            }

            SKTypefaceStyle style = SKTypefaceStyle.Normal;

            if (text.Style.TextStyle.FontStyle != null)
            {
                if (text.Style.TextStyle.FontStyle.Flags.HasFlag(FontStyleFlags.Bold))
                {
                    style |= SKTypefaceStyle.Bold;
                }

                if (text.Style.TextStyle.FontStyle.Flags.HasFlag(FontStyleFlags.Italic))
                {
                    style |= SKTypefaceStyle.Italic;
                }

                if (text.Style.TextStyle.FontStyle.Flags.HasFlag(FontStyleFlags.Underline))
                {
                    // TODO: Add support for FontStyleFlags.Underline
                }

                if (text.Style.TextStyle.FontStyle.Flags.HasFlag(FontStyleFlags.Strikeout))
                {
                    // TODO: Add support for FontStyleFlags.Strikeout
                }
            }

            using (var pen = ToSKPaintBrush(text.Style.Stroke))
                using (var tf = SKTypeface.FromFamilyName(text.Style.TextStyle.FontName, style))
                {
                    pen.TextEncoding = SKTextEncoding.Utf16;
                    pen.TextSize     = _scaleToPage(text.Style.TextStyle.FontSize * _targetDpi / _sourceDpi);

                    var   fm     = pen.FontMetrics;
                    float offset = -(fm.Top + fm.Bottom);

                    var    rect   = CreateRect(text.TopLeft, text.BottomRight, dx, dy, _scaleToPage);
                    SKRect bounds = new SKRect();
                    pen.MeasureText(tbind, ref bounds);
                    SKPoint origin = GetTextOrigin(text.Style, ref rect, ref bounds);

                    canvas.DrawText(tbind, origin.X, origin.Y + offset, pen);
                }
        }
Esempio n. 7
0
        public static SKTypeface FromTypeface(SKTypeface typeface, SKTypefaceStyle style)
        {
            if (typeface == null)
            {
                throw new ArgumentNullException(nameof(typeface));
            }

            var weight = style.HasFlag(SKTypefaceStyle.Bold) ? SKFontStyleWeight.Bold : SKFontStyleWeight.Normal;
            var width  = SKFontStyleWidth.Normal;
            var slant  = style.HasFlag(SKTypefaceStyle.Italic) ? SKFontStyleSlant.Italic : SKFontStyleSlant.Upright;

            return(SKFontManager.Default.MatchTypeface(typeface, new SKFontStyle(weight, width, slant)));
        }
Esempio n. 8
0
        } // End Function MeasureText

        public static void DrawText(SKCanvas canvas, string text, SKColor color, string fontName, float fontSize,
                                    SKTypefaceStyle fontStyle)
        {
            using (var font = SKTypeface.FromFamilyName(fontName, fontStyle)) {
                using (var paint = new SKPaint()) {
                    paint.IsAntialias = true;
                    paint.Color       = color;
                    // paint.StrokeCap = SKStrokeCap.Round;
                    paint.Typeface = font;
                    paint.TextSize = fontSize;
                    canvas.DrawText(text, 10, 10, paint);
                } // End Using paint
            }     // End Using font
        }         // End Function MeasureText
Esempio n. 9
0
        public static SKTypeface GetTypeface(string name, FontStyle style, FontWeight weight)
        {
            SKTypefaceStyle sstyle = SKTypefaceStyle.Normal;

            if (style != FontStyle.Normal)
            {
                sstyle |= SKTypefaceStyle.Italic;
            }

            if (weight > FontWeight.Normal)
            {
                sstyle |= SKTypefaceStyle.Bold;
            }

            return(GetTypeface(name, sstyle));
        }
Esempio n. 10
0
        /// <summary>
        /// Convert Mapsforge FontStyle to Skia SKTypefaceStyle
        /// </summary>
        /// <param name="style">Mapsforge FontStyle</param>
        /// <returns>Skia SKTypefaceStyle</returns>
        public static SKTypefaceStyle ToSkia(this FontStyle style)
        {
            SKTypefaceStyle result = SKTypefaceStyle.Normal;

            if (style == FontStyle.Bold)
            {
                result = SKTypefaceStyle.Bold;
            }
            if (style == FontStyle.Italic)
            {
                result = SKTypefaceStyle.Italic;
            }
            if (style == FontStyle.BoldItalic)
            {
                result = SKTypefaceStyle.BoldItalic;
            }

            return(result);
        }
Esempio n. 11
0
        private void LoadedDocument_SubstituteFont(object sender, PdfFontEventArgs args)
        {
            //Get the font name
            string fontName = args.FontName.Split(',')[0];

            //Get the font style
            PdfFontStyle fontStyle = args.FontStyle;

            SKTypefaceStyle sKFontStyle = SKTypefaceStyle.Normal;

            if (fontStyle != PdfFontStyle.Regular)
            {
                if (fontStyle == PdfFontStyle.Bold)
                {
                    sKFontStyle = SKTypefaceStyle.Bold;
                }
                else if (fontStyle == PdfFontStyle.Italic)
                {
                    sKFontStyle = SKTypefaceStyle.Italic;
                }
                else if (fontStyle == (PdfFontStyle.Italic | PdfFontStyle.Bold))
                {
                    sKFontStyle = SKTypefaceStyle.BoldItalic;
                }
            }

            SKTypeface    typeface       = SKTypeface.FromFamilyName(fontName, sKFontStyle);
            SKStreamAsset typeFaceStream = typeface.OpenStream();
            MemoryStream  memoryStream   = null;

            if (typeFaceStream != null && typeFaceStream.Length > 0)
            {
                //Create fontData from type face stream.
                byte[] fontData = new byte[typeFaceStream.Length - 1];
                typeFaceStream.Read(fontData, typeFaceStream.Length);
                typeFaceStream.Dispose();
                //Create the new memory stream from font data.
                memoryStream = new MemoryStream(fontData);
            }
            //set the font stream to the event args.
            args.FontStream = memoryStream;
        }
Esempio n. 12
0
        unsafe static SKTypeface GetTypeface(string name, SKTypefaceStyle style)
        {
            if (name == null)
                name = "Arial";

            Dictionary<SKTypefaceStyle, SKTypeface> entry;
            if (!Cache.TryGetValue(name, out entry))
                Cache[name] = entry = new Dictionary<SKTypefaceStyle, SKTypeface>();

            SKTypeface typeface = null;
            if (!entry.TryGetValue(style, out typeface))
            {
                typeface = SKTypeface.FromFamilyName(name, style);
                if (typeface == null)
                {
                    typeface = SKTypeface.FromFamilyName(null, style);
                }
                entry[style] = typeface;
            }
            return typeface;
        }
Esempio n. 13
0
        public static SKPaint CreatePaint(SKColor color, string fontName, float fontSize, SKTypefaceStyle fontStyle)
        {
            var font = SKTypeface.FromFamilyName(fontName, fontStyle);

            var paint = new SKPaint {
                IsAntialias = true,
                Color       = color,
                Typeface    = font,
                TextSize    = fontSize
            };

            // paint.StrokeCap = SKStrokeCap.Round;

            return(paint);
        }
Esempio n. 14
0
 public static SKTypeface FromFamilyName(string familyName, SKTypefaceStyle style = SKTypefaceStyle.Normal)
 {
     return(GetObject <SKTypeface> (SkiaApi.sk_typeface_create_from_name(familyName, style)));
 }
Esempio n. 15
0
		public static SKTypeface FromTypeface (SKTypeface typeface, SKTypefaceStyle style = SKTypefaceStyle.Normal)
		{
			if (typeface == null)
				throw new ArgumentNullException (nameof (typeface));
			return GetObject<SKTypeface> (SkiaApi.sk_typeface_create_from_typeface (typeface.Handle, style));
		}
Esempio n. 16
0
		public static SKTypeface FromFamilyName (string familyName, SKTypefaceStyle style = SKTypefaceStyle.Normal)
		{
			return GetObject<SKTypeface> (SkiaApi.sk_typeface_create_from_name (familyName, style));
		}
Esempio n. 17
0
 public extern static sk_typeface_t sk_typeface_create_from_typeface(IntPtr typeface, SKTypefaceStyle style);
Esempio n. 18
0
 public extern static sk_typeface_t sk_typeface_create_from_name(string str, SKTypefaceStyle style);
Esempio n. 19
0
        } // End Function MeasureText

        // MeasureText("Impact", 12, SKTypefaceStyle.Bold);
        public static SkiaSharp.SKRect MeasureText(string text, string fontName, float fontSize, SKTypefaceStyle fontStyle)
        {
            SkiaSharp.SKRect rect = new SKRect();

            using (SkiaSharp.SKTypeface font = SkiaSharp.SKTypeface.FromFamilyName(fontName, fontStyle))
            {
                using (SKPaint paint = new SKPaint())
                {
                    paint.IsAntialias = true;
                    // paint.Color = new SKColor(0x2c, 0x3e, 0x50);
                    // paint.StrokeCap = SKStrokeCap.Round;
                    paint.Typeface = font;
                    paint.TextSize = fontSize;
                    paint.MeasureText(text, ref rect);
                } // End Using paint
            }     // End Using font

            return(rect);
        } // End Function MeasureText
Esempio n. 20
0
		public extern static sk_typeface_t sk_typeface_create_from_name([MarshalAs(UnmanagedType.LPStr)] string str, SKTypefaceStyle style);
Esempio n. 21
0
        public static SKPaint CreatePaint(SKColor color, string fontName, float fontSize, SKTypefaceStyle fontStyle)
        {
            SkiaSharp.SKTypeface font = SkiaSharp.SKTypeface.FromFamilyName(fontName, fontStyle);

            SKPaint paint = new SKPaint();

            paint.IsAntialias = true;
            paint.Color       = color;
            // paint.StrokeCap = SKStrokeCap.Round;
            paint.Typeface = font;
            paint.TextSize = fontSize;

            return(paint);
        }
Esempio n. 22
0
		public extern static sk_typeface_t sk_typeface_create_from_typeface(sk_typeface_t typeface, SKTypefaceStyle style);