1
加载我的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仪式之外的非正式素描板。在SVG Web字体格式和XAML Path
元素的