После загрузки моей PCL DLL под Дополнительные ссылки в LINQpad, я пробовал два разных метода загрузки и отображения шрифтов. Первым из них является наиболее прямо вперед:Можем ли мы загружать и отображать удаленные шрифты в LINQpad?
var xaml = @"
<UserControl
xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
<TextBox
FontFamily=""/Songhay.Portable.Resources;Component/Fonts/#FontAwesome""
FontSize=""64""
Text=""""
/>
</UserControl>
";
var control = (UserControl)XamlReader.Parse(xaml);
control.Dump();
XAML декларации выше работы достаточно хорошо в WPF правильной, но LINQPad отображает пустой квадрат. Поэтому я попробовал более явный маршрут:
var dll = Assembly.GetAssembly(typeof(Songhay.Portable.Resources.ResourceModule));
dll.GetManifestResourceNames().Dump();
var resourceName = dll.GetManifestResourceNames().First(i => i.EndsWith("FontAwesome.otf"));
using (var stream = dll.GetManifestResourceStream(resourceName))
{
var localData = new PrivateFontCollection();
var fontdata = new byte[stream.Length];
stream.Read(fontdata, 0, (int)stream.Length);
unsafe
{
fixed(byte * pFontData = fontdata)
{
localData.AddMemoryFont((System.IntPtr)pFontData, fontdata.Length);
}
}
localData.Dump();
var textBox = new TextBox
{
FontFamily = new System.Windows.Media.FontFamily(localData.Families.First().Name),
FontSize = 64,
Text = System.Net.WebUtility.HtmlDecode("")
};
textBox.Dump();
}
Тот же вопрос: пустой квадрат. Слишком большая часть края для LINQpad?
Решение этой проблемы, между прочим, сделало бы LINQpad очень мощным инструментом проектирования - неофициальной эскизной площадкой за пределами церемонии Blend/Visual Studio.