2

我正在构建我的第一个 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 将文件添加到解决方案中。

我想拥有什么

安装应用程序后,让我的自定义字体在所有浏览器中可用。我还希望在卸载应用程序时自动删除字体。

奖励:我可以阻止用户手动删除字体吗?(或者更好地完全隐藏它?)

4

0 回答 0