Я пытаюсь перенести приложение из традиционного ASP.NET в Azure, и у меня возникает проблема со шрифтами. Есть компонент, который визуализирует изображения с текстом, нарисованным на нем определенным нестандартным шрифтом (давайте назовем шрифт «Вода»).
Вода существует в виде нескольких различных файлов TTF, каждый из которых представляет свой стиль. Всего у меня 12 различных файлов TTF, включая такие стили, как «Water Black Italic», «Water Light», «Water Regular», «Water Ultralight» и т. Д.
В ASP.NET это был простой случай установки шрифтов в каталог Windows, а затем из кода, вызывающего:
Font _fontMedium = new Font("Water Medium", iFontMedium, FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
Однако в Azure вы не можете устанавливать свои собственные шрифты. Поэтому, чтобы иметь возможность рисовать эти шрифты на изображении, мне нужно загрузить файлы шрифтов как контент с приложением и использовать класс PrivateFontCollection для их индивидуальной загрузки.
Мой текущий код такой:
PrivateFontCollection fontcollection = new PrivateFontCollection();
string fontpath = string.Concat(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "assets\\");
fontcollection.AddFontFile(string.Concat(fontpath,"water-bold-webfont.ttf"));
fontcollection.AddFontFile(string.Concat(fontpath, "water-ultralight-webfont.ttf"));
fontcollection.AddFontFile(string.Concat(fontpath, "water-medium-webfont.ttf"));
FontFamily[] privatefontfamilies = fontcollection.Families;
Font _fontMedium = new Font("Water Medium", iFontMedium, FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
Font _fontSmall = new Font("Water UltraLight", iFontSmall, System.Drawing.GraphicsUnit.Pixel);
Font _fontMini = new Font("Water Bold", iFontMini, System.Drawing.GraphicsUnit.Pixel);
У меня проблема в том, что после разрыва после добавления файлов шрифтов в коллекции fontcollection.Families есть только одно семейство: «Вода».
Аналогичным образом, после того, как объекты шрифта были объявлены, по умолчанию семейство становится Microsoft Sans-Serif. Если я вместо этого использую:
Font _fontMedium = new Font("Water", iFontMedium, FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
Шрифт загружается с семейством "Water", но, похоже, не дает мне возможности правильно выбрать стиль. Мои единственные параметры стиля шрифта - те, которые определены в перечислении FontStyle, которые не охватывают все стили шрифтов, которые я пытаюсь загрузить.
Короче говоря, учитывая конкретный шрифт и все его доступные стили, загруженные в отдельные файлы TTF, как бы вы загрузили их в PrivateFontCollection и использовали их по отдельности?