Asp.net字体文件.otf文件未找到异常AddFontFile

pat*_*719 2 c# asp.net fonts

所以我需要使用我项目中包含的font.otf文件将.otf字体文件添加到c#中的PrivateFontCollection.当文件在本地加载时,我在部署到服务器时收到以下异常.

[例外:无法在路径中找到字体:D:\ Inetpub\MyApplication\Content\Fonts\ProximaNovaAlt-Black.otf例外是:System.IO.FileNotFoundException:找不到文件.在System.Drawing.Text.PrivateFontCollection.AddFontFile(String filename)

但是,当我查看Web服务器并导航到该确切目录时,该文件就在那里并且不是只读的.

字体文件在我的项目中的位置如下/Content/Fonts/ProximaNovaAlt-Black.otf

此外,ProximaNovaAlt-Black.otf文件的属性如下所示.
在此输入图像描述

最后,这是抛出错误的代码

     public Font GetFont(float fontSize)
     {
       string path = HttpContext.Current.Server.MapPath(AppDomain.CurrentDomain.BaseDirectory + @"Content\Fonts\ProximaNovaAlt-Black.otf");

       try
       {

          PrivateFontCollection privateFontCollection = new PrivateFontCollection();
          privateFontCollection.AddFontFile(path);               

          return new Font(privateFontCollection.Families[0], fontSize);

          }
          catch (Exception ex)
          {                   
             throw new Exception("Could not find font at path: " + path + "   The exception is: " +  ex.ToString());
          }

}
Run Code Online (Sandbox Code Playgroud)

ath*_*aos 12

如果字体文件是不受支持的类型(http://msdn.microsoft.com/en-us/library/system.drawing.text.privatefontcollection.addfontfile.aspx),则FileNotFoundException也是抛出的异常.TrueType字体有很好的支持,但对OpenType的支持有限.根据我的经验,这似乎因平台而异.

我使用http://everythingfonts.com/otf-to-ttf将我的OpenType字体转换为TrueType ,这解决了问题.

  • 我正在 Windows 8 上开发,当我部署到 window 2003 时,OTF 字体不会加载。当我使用 http://everythingfonts.com/otf-to-ttf 将 OTF 转换为 TTF 时,它也解决了我的问题。 (2认同)