我正在构建我的第一个 UWP 应用程序(所以还是很新手)。
详细的上下文
我需要任何网站(不仅仅是我的网站)才能在用户单击链接时打开我的应用程序,并在应用程序不可用时打开我的网站。我不能使用网络到应用程序链接,因为根据文档,它不适用于所有浏览器。所以我需要使用自定义方案来打开应用程序(我已经有了这个功能)。
现在我需要在 JS 中检测是否安装了应用程序以在 http 链接或自定义方案链接之间进行选择。我找到的解决方案是在应用程序中安装系统范围的字体。然后,一个 JS 脚本可以比较使用 'font-family: monospace;' 渲染的字符的大小。使用“font-family: customAppFont, monospace;”渲染的相同字符的大小 并总结应用程序的存在。
我的问题
我不知道如何在我的 UWP 应用程序中嵌入我的 ttf 自定义字体文件,以便所有浏览器都可以使用它。
到目前为止我尝试过的
我已尝试按照此文档uap4:SharedFonts
使用App 扩展。我卸载了该应用程序,重新构建了它,然后重新启动了我的计算机,但我的自定义字体从未对浏览器可用(使用 Chrome 和 Edge 测试)。
我的 package.appxmanifest
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:uap4="http://schemas.microsoft.com/appx/manifest/uap/windows10/4"
IgnorableNamespaces="uap mp uap4">
...
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Applications>
<Application ...>
<Extensions>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="myprotocol" DesiredView="useMinimum">
<uap:DisplayName>MyApp</uap:DisplayName>
</uap:Protocol>
</uap:Extension>
<uap4:Extension Category="windows.sharedFonts">
<uap4:SharedFonts>
<uap4:Font File="Assets\myCustomFont.ttf"/>
</uap4:SharedFonts>
</uap4:Extension>
</Extensions>
</Application>
</Applications>
</Package>
我已Assets\myCustomFont.ttf
使用 Visual Studio 2019 将文件添加到解决方案中。
我想拥有什么
安装应用程序后,让我的自定义字体在所有浏览器中可用。我还希望在卸载应用程序时自动删除字体。
奖励:我可以阻止用户手动删除字体吗?(或者更好地完全隐藏它?)