Commit f8a16fd4 authored by Tebjan Halm's avatar Tebjan Halm
Browse files

Merge pull request #17 from samjudson/master

Added support for multiple font-family strings
parents cbf311e2 57ea0472
...@@ -27,6 +27,8 @@ namespace Svg ...@@ -27,6 +27,8 @@ namespace Svg
private GraphicsPath _path; private GraphicsPath _path;
private SvgTextAnchor _textAnchor = SvgTextAnchor.Start; private SvgTextAnchor _textAnchor = SvgTextAnchor.Start;
private static readonly SvgRenderer _stringMeasure; private static readonly SvgRenderer _stringMeasure;
private const string DefaultFontFamily = "Times New Roman";
/// <summary> /// <summary>
/// Initializes the <see cref="SvgText"/> class. /// Initializes the <see cref="SvgText"/> class.
/// </summary> /// </summary>
...@@ -42,7 +44,7 @@ namespace Svg ...@@ -42,7 +44,7 @@ namespace Svg
/// </summary> /// </summary>
public SvgText() public SvgText()
{ {
this._fontFamily = "Times New Roman"; this._fontFamily = DefaultFontFamily;
this._fontSize = new SvgUnit(0.0f); this._fontSize = new SvgUnit(0.0f);
} }
...@@ -134,7 +136,11 @@ namespace Svg ...@@ -134,7 +136,11 @@ namespace Svg
public virtual string FontFamily public virtual string FontFamily
{ {
get { return this._fontFamily; } get { return this._fontFamily; }
set { this._fontFamily = value; this.IsPathDirty = true; } set
{
this._fontFamily = ValidateFontFamily(value);
this.IsPathDirty = true;
}
} }
/// <summary> /// <summary>
...@@ -271,6 +277,21 @@ namespace Svg ...@@ -271,6 +277,21 @@ namespace Svg
} }
} }
private static string ValidateFontFamily(string fontFamilyList)
{
// Split font family list on "," and then trim start and end spaces and quotes.
var fontParts = fontFamilyList.Split(new[] { ',' }).Select(fontName => fontName.Trim(new[] { '"', ' ' }));
var families = System.Drawing.FontFamily.Families;
// Find a the first font that exists in the list of installed font families.
foreach (var f in fontParts.Where(f => families.Any(family => family.Name == f)))
{
return f;
}
// No valid font family found from the list requested.
return DefaultFontFamily;
}
private void DrawString(GraphicsPath path, SvgUnit x, SvgUnit y, SvgUnit dx, SvgUnit dy, Font font, float fontSize, string text) private void DrawString(GraphicsPath path, SvgUnit x, SvgUnit y, SvgUnit dx, SvgUnit dy, Font font, float fontSize, string text)
{ {
...@@ -355,4 +376,4 @@ namespace Svg ...@@ -355,4 +376,4 @@ namespace Svg
return newObj; return newObj;
} }
} }
} }
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment