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
元素的