GOOGLE ADS

среда, 11 мая 2022 г.

Проверьте, существует ли FontStretch для определенного семейства шрифтов.

В моем инструменте есть несколько функций редактирования текста, которые позволяют пользователю выбирать свойства текущего шрифта, включая FontStretch. Я пытаюсь использовать конвертер, чтобы проверить, доступны ли определенные значения FontStretch, создав TypeFace с FontFamily и FontStretch. К сожалению, даже если FontStretch не поддерживается (и возвращается к одному из других значений), он все равно сообщает, что шрифт был создан с указанным мною FontStretch. Вот код, который у меня есть для этого теста:

private static bool IsFontStretchAvailable(FontFamily font, FontStretch stretch)
{
Typeface testFont = new Typeface(font, FontStyles.Normal, FontWeights.Normal, stretch);
return (0 == FontStretch.Compare(stretch, testFont.Stretch));
}

Это всегда так, несмотря ни на что. Есть ли способ определить, какие значения FontStretch являются допустимыми? Я знаю, что есть способы использовать FontStretch с LayoutTransform, которые я также могу поддерживать в будущем, но я хочу использовать шрифты FontStretch, когда это возможно, поскольку я думаю, что в некоторых случаях это может дать лучший визуальный результат.


Решение проблемы

Кажется, лучший способ — проверить коллекцию Fonts.SystemFonts, которая представляет собой полный список допустимых шрифтов TypeFaces. Вот код этого теста:

Typeface testFont = Fonts.SystemTypefaces.FirstOrDefault(x => x.FontFamily.Equals(font) && x.Stretch.Equals(stretch));
return testFont!= null;

Это делает то, что я хочу, но я, вероятно, в конечном итоге использую Fonts.SystemFonts для создания собственного словаря FontFamilies с допустимыми весами и размерами для каждого, чтобы выполнять поиск вместо этого поиска. Если у кого-то есть лучший метод, пожалуйста, дайте мне знать.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...