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); }
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)); }
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); }
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))); }
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))); }
/// <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); } }
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))); }
} // 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
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)); }
/// <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); }
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; }
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; }
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); }
public static SKTypeface FromFamilyName(string familyName, SKTypefaceStyle style = SKTypefaceStyle.Normal) { return(GetObject <SKTypeface> (SkiaApi.sk_typeface_create_from_name(familyName, style))); }
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)); }
public static SKTypeface FromFamilyName (string familyName, SKTypefaceStyle style = SKTypefaceStyle.Normal) { return GetObject<SKTypeface> (SkiaApi.sk_typeface_create_from_name (familyName, style)); }
public extern static sk_typeface_t sk_typeface_create_from_typeface(IntPtr typeface, SKTypefaceStyle style);
public extern static sk_typeface_t sk_typeface_create_from_name(string str, SKTypefaceStyle style);
} // 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
public extern static sk_typeface_t sk_typeface_create_from_name([MarshalAs(UnmanagedType.LPStr)] string str, SKTypefaceStyle style);
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); }
public extern static sk_typeface_t sk_typeface_create_from_typeface(sk_typeface_t typeface, SKTypefaceStyle style);