是否可以在 Azure 应用服务上安装字体?

Is it possible to install fonts on an Azure App Service?

我们正在使用 MigraDoc/PDFsharp GDI+,这取决于将字体安装到系统以便进行渲染。我们已尝试嵌入字体,但 MigraDoc 的 GDI+ 版本似乎不支持此功能。

尝试将此组件移动到 Azure 应用服务时,找不到字体。有没有办法 "install" 将字体本地化到应用服务,以便它们对 GDI 可见?

据我所知,依赖于 GDI 的组件 API 可能无法在 Azure Web APP 上运行。我们可以在以下位置找到此已知问题:https://social.msdn.microsoft.com/Forums/en-US/6ed5c738-390a-4ca7-81d0-370124a4fc88/azure-websites-faq?forum=windowsazurewebsitespreview. At currently, please try to use Azure Web role or Azure VM instead. Please also vote this idea 在 Azure 反馈论坛上。

MigraDoc 使用 PDFsharp 生成 PDF 文件,PDFsharp 可以使用来自嵌入式资源或应用程序读取的文件的字体。

我会使用 PDFsharp/MigraDoc 1.50 或更高版本的 WPF 版本并使用 IFontResolver 接口。

如果满足您的需要,您可以使用通用的 EZFontResolver 实现:
http://forum.pdfsharp.net/viewtopic.php?f=8&t=3244

您可以在应用服务上使用 Windows 容器来安装自定义字体。方法如下:

https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-windows-containers-custom-fonts

开始使用 Windows 应用服务上的容器:

https://docs.microsoft.com/en-us/azure/app-service/app-service-web-get-started-windows-container

有点晚了 - 但迟到总比不到好!

我发现这其实很简单 - 我们都知道怎么做!

在应用服务的WWWROOT添加一个web.config 添加以下

你可能不需要 部分,除非你想要 CORS

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <directoryBrowse enabled="false" />
        <httpProtocol>
            <customHeaders>
                <add name="Access-Control-Allow-Origin" value="*" />
            </customHeaders>
        </httpProtocol>
        <staticContent>
            <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
            <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
            <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
        </staticContent>
    </system.webServer>
</configuration>