Browse Source

Introduce FontFamily.Parse

repros/custom-fonts-pr
Benedikt Schroeder 8 years ago
parent
commit
b55fdfd31a
  1. 45
      src/Avalonia.Visuals/Media/FontFamily.cs
  2. 36
      src/Markup/Avalonia.Markup.Xaml/Converters/FontFamilyTypeConverter.cs
  3. 2
      src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github

45
src/Avalonia.Visuals/Media/FontFamily.cs

@ -60,5 +60,50 @@ namespace Avalonia.Media
return Name;
}
/// <summary>
/// Parses a <see cref="FontFamily"/> string.
/// </summary>
/// <param name="s">The <see cref="FontFamily"/> string.</param>
/// <returns></returns>
/// <exception cref="ArgumentException">
/// Specified family is not supported.
/// </exception>
public static FontFamily Parse(string s)
{
if (string.IsNullOrEmpty(s)) throw new ArgumentException("Specified family is not supported.");
var fontFamilyExpression = s.Split('#');
if (fontFamilyExpression.Length == 1)
{
return new FontFamily(s);
}
string familyName;
Uri source = null;
switch (fontFamilyExpression.Length)
{
case 1:
{
familyName = fontFamilyExpression[0];
break;
}
case 2:
{
source = new Uri(fontFamilyExpression[0], UriKind.RelativeOrAbsolute);
familyName = fontFamilyExpression[1];
break;
}
default:
{
throw new ArgumentException("Specified family is not supported.");
}
}
return new FontFamily(familyName, source);
}
}
}

36
src/Markup/Avalonia.Markup.Xaml/Converters/FontFamilyTypeConverter.cs

@ -14,41 +14,7 @@ namespace Avalonia.Markup.Xaml.Converters
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
var s = (string)value;
if (string.IsNullOrEmpty(s)) throw new ArgumentException("Specified family is not supported.");
var fontFamilyExpression = s.Split('#');
if (fontFamilyExpression.Length == 1)
{
return new FontFamily(s);
}
string familyName;
Uri source = null;
switch (fontFamilyExpression.Length)
{
case 1:
{
familyName = fontFamilyExpression[0];
break;
}
case 2:
{
source = new Uri(fontFamilyExpression[0], UriKind.RelativeOrAbsolute);
familyName = fontFamilyExpression[1];
break;
}
default:
{
throw new ArgumentException("Specified family is not supported.");
}
}
return new FontFamily(familyName, source);
return FontFamily.Parse((string)value);
}
}
}

2
src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github

@ -1 +1 @@
Subproject commit cdf46d7892def8a6ba29f12a9339147377f7cf5c
Subproject commit c0664014455392ac221a765e66f9837704339b6f
Loading…
Cancel
Save