Xamarin.forms: [Ошибка] ExportFont не работает в UWP

Созданный на 12 апр. 2020  ·  55Комментарии  ·  Источник: xamarin/Xamarin.Forms

Описание

Пользовательские шрифты не отображаются в UWP при использовании нового атрибута ExportFontAttribute.

Действия по воспроизведению

  1. Добавьте файл TTF или OTF из Google Fonts, FontAwesome, icomoon и т. Д. В качестве встроенного ресурса в ваш общий проект.
  2. Добавьте атрибут ExportFont в вашу сборку. например, [assembly: ExportFont("FA5Regular.otf", Alias = "FontAwesome")]
  3. Ссылка на семейство шрифтов в разметке XAML
  4. Скомпилируйте и запустите приложение UWP

Ожидаемое поведение

Следует использовать собственный шрифт.

Фактическое поведение

Пользовательский шрифт используется в iOS и Android, но не в UWP.

Основная информация

  • Версия с ошибкой: 4.5.0.617
  • Целевая платформа платформы:

    • iOS: 13.4

    • Android: 9.0

    • UWP: 18362

Ссылка на воспроизведение

https://github.com/jfversluis/EmbeddedFontsSample

embedded fonts fonts 3 in-progress high impact UWP bug

Самый полезный комментарий

У меня такая же проблема. Похоже, что с Xamarin.Forms о UWP всегда думают в последнюю очередь, и он почти не поддерживается. Я понимаю, что его использование, вероятно, намного меньше, чем у Android или iOS, но это очень расстраивает.

Все 55 Комментарий

Встроенные шрифты в формате TTF или OTF работают в Android и iOS.

Captura de pantalla 2020-04-20 a las 16 17 49

В UWP шрифт Fontawesome OTF не работает должным образом:
Captura de pantalla 2020-04-20 a las 16 17 59

У меня такая же проблема. Похоже, что с Xamarin.Forms о UWP всегда думают в последнюю очередь, и он почти не поддерживается. Я понимаю, что его использование, вероятно, намного меньше, чем у Android или iOS, но это очень расстраивает.

У меня тоже была эта проблема с UWP. Однако я заставил его работать, когда я отбросил псевдоним из объявления ExportFont.

Вот что я сделал:

  1. Я создал свой собственный шрифт. Все глифы, которые я использовал, были преобразованы в символы нижнего регистра.
  2. В моей общей проекции в App.xaml.cs я добавил: [сборка: ExportFont ("karenfont.ttf")]
  3. Я добавил karenfont.ttf в качестве встроенного ресурса в каталог верхнего уровня моего общего проекта.
  4. В моем файле xaml форм xamarin у меня было это:
    <Button Text="b" FontFamily="karenfont"/>

Теперь это работает в UWP. Не работает на Android. Я использую Xamarin Forms v4.5.0.617

У меня такая же проблема. Похоже, что с Xamarin.Forms о UWP всегда думают в последнюю очередь, и он почти не поддерживается. Я понимаю, что его использование, вероятно, намного меньше, чем у Android или iOS, но это очень расстраивает.

Я думаю, что многие разработчики Xamarin (и разработчики визуальных студий, которые работают над вещами, связанными с Xamarin) используют только Mac, а когда они используют окна, они полностью игнорируют UWP. иногда они включают UWP в примеры проектов, но РЕДКО они отображаются в видеопрезентациях, поэтому я даже не уверен, что демонстрируемые функции действительно работают в UWP.

@jsuarezruiz Сейчас я пробую ExportFont в первой версии Xamarin 4.6, я следил за примером, показанным в видео Xamarin, и угадайте, что, он не работает в UWP, я просто получаю квадраты. Прекрасно работает на Android. Согласно примеру в приложении FlyMe, я не использую псевдоним. файл шрифта находится на верхнем уровне общего проекта. не работает.

Я нахожусь в неудачном положении, поскольку мне приходится поддерживать iOS, Android и UWP для нашего продукта, а тот факт, что UWP так часто остается позади, привел к тому, что нам пришлось ждать несколько циклов выпуска, чтобы фактически использовать новые функции.
У нас есть три пользовательских шрифта, которые мы загружаем. По какой-то причине шрифт значка - единственный, который я не могу загрузить для UWP. С двумя другими платформами проблем нет.

@joshminor, чтобы получить 2 из 3 шрифтов, работающих в UWP с помощью этого метода?
Может быть, в некоторых шрифтах есть что-то особенное, что вызывает проблему ...

На самом деле, я только что понял, что два работающих шрифта установлены как системные шрифты на моем тестовом компьютере с Windows ... так что это может иметь какое-то отношение к этому.
редактировать
Пробовал установить нерабочий шрифт, ничего не изменилось. Я попробовал шрифт, совершенно отличный от Google WebFonts ("Lobster"), и он работает без проблем (за исключением того, что псевдонимы не работают)

Я пробовал шрифт лобстера, и единственный способ, которым он работал, - это установить его в системе. встраивание шрифтов не сработало.

Изменить: я беру его обратно, это сработало (у меня была опечатка в имени). Итак, кажется, что некоторые шрифты работают, а некоторые нет? очень интригующий

немного больше информации

Я схватил этот шрифт Google, переименовал файл и ссылки на него в коде с Lobster-Regular.ttf на Lobster-Regular-renamed.ttf - из-за этого он перестал работать. Верните исходное имя, и оно снова заработает.
это, вероятно, указывает на то, что имя файла должно соответствовать некоторому внутреннему свойству в самом шрифте, чтобы оно работало, и может объяснить, почему люди имеют разные результаты с одной и той же реализацией - это зависит от чего-то в самом файле шрифта.

Я только что обновился до Xamarin Forms 4.6.0.726, и мой встроенный шрифт karenfont все еще работает в UWP (Windows 10 1903). Он все еще не работает на Android (Android 10).

Шрифт, который не загружается для меня, является настраиваемым шрифтом значков, я проверил с помощью FontForge, что имена семейств внутренних шрифтов точно такие же, как имя файла, но все равно не загружаются. Я уверен, что где-то здесь есть закономерность. В настоящее время я собираюсь вернуться к тому способу, которым мы загружали шрифты раньше (ресурсы для каждой платформы)

Я создал свой собственный шрифт с помощью приложения IcoMoon. Что может быть интересно, так это то, что встраивание karenfont не работало, пока я не сопоставил глифы с буквами, а затем не сослался на букву в моем xaml (в отличие от использования шестнадцатеричного кода, например: &#xf57e; )

Я воссоздал свой файл шрифта и вижу, что он может работать, но похоже, что имя шрифта и имя файла должны быть похожими, чтобы он мог работать.

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

У меня такая же проблема с использованием шрифта MaterialDesignIcons (https://materialdesignicons.com/), отлично работает на iOS и Android, но все прямоугольники на UWP.

См. То же самое здесь, если пакет шрифтов установлен, кажется, он работает, но если он является частью проекта, например FontAwesome или MaterialDesignIcons, которые не установлены на машине, он не будет работать только с маленькими прямоугольниками.

Возврат к старому способу добавления к каждому проекту и ссылок в ResourceDictionary работает, но это больше работы, а не новая горячность.

Не уверен, что это регресс или он никогда не работал, поскольку другие мои проекты не включали UWP.

то же самое здесь, видя только квадраты на UWP ...

Есть ли обновления относительно того, когда это будет решено?

То же самое ... безнадежный UWP ...

Тоже самое. Похоже, UWP мертв.

Хорошо, все, что мне нужно, это исправить для моего текущего проекта, поэтому я собираюсь посмотреть, как это исправить.

@samhouts @jsuarezruiz , пожалуйста, покажите, как над этим работают. благодаря

Хорошо, я думаю, что обнаружил, что здесь происходит, и это не требует пиара.

Для UWP старый способ сделать это заключался в том, что вы добавляли FontPack с OnPlatform в ResourcesDictionary, и это выглядело примерно так:

<ResourceDictionary>
  <OnPlatform x:TypeArguments="x:String"
            x:Key="IconFont">
    <On Platform="Android"
        Value="materialdesignicons-webfont.ttf#Material Design Icons" />
    <On Platform="iOS"
        Value="Material Design Icons" />
    <On Platform="UWP"
        Value="/Assets/materialdesignicons-webfont.ttf#Material Design Icons" />
  </OnPlatform>
</ResourceDictionary>

Обратите внимание, что для Android и UWP существует #Material Design Icons для работы со встроенным шрифтом, эта часть по-прежнему необходима UWP.

Я нашел это, как в Xamarin Codebase для Control Gallery, в XAML была эта строка для страницы EmbeddedFonts:

<Label Text="Mono Font" FontFamily="PTM55FT#PTMono-Regular"/>

Обратите внимание на #PTMono-Regular в конце имени шрифта!

Итак, я добавил #Material Design Icons в конец имени шрифта следующим образом:

FontFamily="materialdesignicons-webfont#MaterialDesignIcons"

Привет, Престо, он работает, я проверил, и он работает на UWP / Droid и iOS, так как это все, что мне нужно для моего текущего проекта.

Если вы хотите узнать часть, которая идет после #, это имя шрифта внутри файла шрифта, и самый простой способ получить это - (в любом случае, в Win10!) Открыть файл шрифта и прямо там вверху находится имя:

image

Я надеюсь, что это поможет вам, и я думаю, что это закрывает эту проблему @samhouts @jsuarezruiz, поскольку здесь нечего исправить, кроме Документов.

Я думаю, что XF должен получить первое имя шрифта из файла, если оно не указано пользователем

Да! У меня это есть в моем app.xaml, и у меня работают шрифты:
<OnPlatform x:Key="MaterialWebFontFamily" x:TypeArguments="x:String"> <On Platform="Android" Value="materialdesignicons-webfont.ttf#Material Design Icons" /> <On Platform="UWP" Value="Assets/Fonts/materialdesignicons-webfont.ttf#Material Design Icons" /> </OnPlatform>

@ ktd12, но используете ли вы новые встроенные

@VladislavAntonyuk Может, тогда

Извините - я заговорил слишком рано. Шрифт, который я использую как встроенный, - это шрифт karenfont, который я создал. У меня, как и у всех, проблема противоположная: он работает на UWP, но не на Android. Я использую XF 4.6.0.726, Windows 10 1903 на Surface Pro 7 и Android 10 на Samsung Galaxy s10
<Button x:Name="btnBackup" Text="b" HorizontalOptions="FillAndExpand" FontSize="Medium" FontFamily="karenfont"/>

В Windows буква «b» выглядит так:
b on windows

На Android буква «b» выглядит так:
b on android

Как выглядит шрифт:
karenfont

Хорошо, я думаю, что обнаружил, что здесь происходит, и это не требует пиара.

Для UWP старый способ сделать это заключался в том, что вы добавляли FontPack с OnPlatform в ResourcesDictionary, и это выглядело примерно так:

<ResourceDictionary>
  <OnPlatform x:TypeArguments="x:String"
            x:Key="IconFont">
    <On Platform="Android"
        Value="materialdesignicons-webfont.ttf#Material Design Icons" />
    <On Platform="iOS"
        Value="Material Design Icons" />
    <On Platform="UWP"
        Value="/Assets/materialdesignicons-webfont.ttf#Material Design Icons" />
  </OnPlatform>
</ResourceDictionary>

Обратите внимание, что для Android и UWP существует #Material Design Icons для работы со встроенным шрифтом, эта часть по-прежнему необходима UWP.

Я нашел это, как в Xamarin Codebase для Control Gallery, в XAML была эта строка для страницы EmbeddedFonts:

<Label Text="Mono Font" FontFamily="PTM55FT#PTMono-Regular"/>

Обратите внимание на #PTMono-Regular в конце имени шрифта!

Итак, я добавил #Material Design Icons в конец имени шрифта следующим образом:

FontFamily="materialdesignicons-webfont#MaterialDesignIcons"

Привет, Престо, он работает, я проверил, и он работает на UWP / Droid и iOS, так как это все, что мне нужно для моего текущего проекта.

Если вы хотите узнать часть, которая идет после #, это имя шрифта внутри файла шрифта, и самый простой способ получить это - (в любом случае, в Win10!) Открыть файл шрифта и прямо там вверху находится имя:

image

Я надеюсь, что это поможет вам, и я думаю, что это закрывает эту проблему @samhouts @jsuarezruiz, поскольку здесь нечего исправить, кроме Документов.

Привет,
это работает на примере проекта? https://github.com/jfversluis/EmbeddedFontsSample
Я пробовал, но безуспешно.

Добавление # fontname, похоже, для меня ничего не дало. Сначала я думал, что это сработало, но после того, как я удалил шрифт из системы, он вернулся к отображению квадратов. Я подтвердил с другим коллегой, что если вы установите шрифт, он начнет отображаться правильно.

Я еще немного покопался, и это что-то связано с файлом шрифта. Я могу переключаться на другие шрифты, и все будет нормально. Я собираюсь попробовать реэкспорт нашего шрифта и посмотреть, смогу ли я заставить что-нибудь работать.

Да, согласен, на UWP это не работает. Также нельзя добавлять #FontName, как предлагает @CliffAgius , если вы не установите файл шрифта вручную в ОС Windows 10. Поэтому нет, это не исправление. :) и эту проблему должна решить команда @samhouts @jsuarezruiz, пожалуйста.

Пример проекта, который представлен в блоге о выпуске Xamarin, сам по себе не работает для UWP, https://github.com/jfversluis/EmbeddedFontsSample
https://devblogs.microsoft.com/xamarin/embedded-fonts-xamarin-forms/

image

Похоже, они намеренно отказываются от поддержки Windows 10, когда в наши дни выдвигают новую функцию в Xamarin.Forms! :(

@UdaraAlwis да, спасибо за публикацию, так как я полностью забыл об этом, мое исправление сработало, поскольку я загрузил FotPack на машину разработчика для чего-то еще, поэтому подумал, что он работает. Как только я отправил клиенту предварительный просмотр, он сломался. Мне пришлось вернуться к старому длинному способу добавления шрифтов для этого проекта, поскольку он нацелен на UWP для некоторых пользователей.

Я не согласен с тем, что команда игнорирует UWP в сборках, просто тесты пользовательского интерфейса не написаны для этого, и многие разработчики используют Mac, поэтому не могут протестировать UWP. Должен быть лучший способ сделать это, возможно, в стиле #HotRestart для Windows при сборке на Mac.

Просто добавляю свой голос.
ExportFont работает в UWP, только если шрифт уже установлен на компьютере с Windows. Поэтому после установки приложения оно не будет работать на клиентском компьютере.

На данный момент мне пришлось поместить шрифты в папку и установить действие как Contents и ссылаться на него с обозначением #

/fonts/xyx.ttf#xyz.ttf

Мне удалось добиться правильного отображения шрифтов в режиме отладки или когда отключена "компиляция с собственной цепочкой инструментов .net".
При повторном включении нативной компиляции .net все шрифты будут немедленно повреждены.

Я новичок в Xamarin, поэтому это решение может вводить в заблуждение. Я использовал подход, объясненный @CliffAgius. Опять же, я могу использовать старый способ или совершенно неправильно.

Мне не нужно устанавливать шрифт . Единственный способ, которым это работает для меня на всех трех платформах - это использование файлов ".otf", а не файлов ".ttf" .

Файлы .ttf работают только с семейством текстовых шрифтов, но не работают с Glyph.
Наряду с этим я должен добавить ".otf" в папку соответствующей платформы.

Ниже приведено мое использование и файл ресурсов.

Код ниже не тестировался для IOS.

Файл ресурса:

<?xml version="1.0" encoding="utf-8" ?>
<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
                    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                    xmlns:d="http://xamarin.com/schemas/2014/forms/design"
                    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                    xmlns:local="clr-namespace:ProjectName.Themes.FontIcon;assembly=ProjectName.Themes"
                    mc:Ignorable="d"
                    x:Class="ProjectName.Themes.Styles.IconImage">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="ColorsResource.xaml" />
    </ResourceDictionary.MergedDictionaries>
    <OnAppTheme x:Key="ImageLogoSample"
                x:TypeArguments="FileImageSource"
                Light="{x:Static local:AwesomeFontSolid.TicketAlt}"
                Dark="{x:Static local:AwesomeFontSolid.PersonBooth}" />  
    <!-- Sizes -->
    <x:Double x:Key="SizeTabIcon">24</x:Double>

    <!-- Fonts Icon -->

    <OnPlatform x:TypeArguments="x:String"
                x:Key="FontAwesomeBrand">
        <On Platform="Android"
            Value="FABrand.otf#Font Awesome 5 Brands" />
        <On Platform="iOS"
            Value="FABrand-Regular" />
        <On Platform="UWP"
            Value="/Assets/FABrand.otf#Font Awesome 5 Brands" />
    </OnPlatform>

    <OnPlatform x:TypeArguments="x:String"
                x:Key="FontAwesomeRegular">
        <On Platform="Android"
            Value="FARegular.otf#Font Awesome 5 Pro" />
        <On Platform="iOS"
            Value="FontAwesome5Free-Regular" />
        <On Platform="UWP"
            Value="/Assets/FARegular.otf#Font Awesome 5 Pro" />
    </OnPlatform>

    <OnPlatform x:TypeArguments="x:String"
                x:Key="FontAwesomeSolid">
        <On Platform="Android"
            Value="FASolid.otf#Font Awesome 5 Pro" />
        <On Platform="iOS"
            Value="FontAwesome5Free-Solid" />
        <On Platform="UWP"
            Value="/Assets/FASolid.otf#Font Awesome 5 Pro" />
    </OnPlatform>



    <OnPlatform x:TypeArguments="x:String"
                x:Key="FontAwesomeLight">
        <On Platform="Android"
            Value="FALight.otf#Font Awesome 5 Pro" />
        <On Platform="iOS"
            Value="Font Awesome 5 Pro" />
        <On Platform="UWP"
            Value="/Assets/FALight.otf#Font Awesome 5 Pro" />
    </OnPlatform>

    <OnPlatform x:TypeArguments="x:String"
                x:Key="FontAwesomeSolidDuoTone">
        <On Platform="Android"
            Value="FASolidDuotone.otf#Font Awesome 5 Duotone" />
        <On Platform="iOS"
            Value="Font Awesome 5 Duotone" />
        <On Platform="UWP"
            Value="/Assets/FASolidDuotone.otf#Font Awesome 5 Duotone" />
    </OnPlatform>


    <OnPlatform x:TypeArguments="x:String"
                x:Key="MaterialDesign">
        <On Platform="Android"
            Value="MD.otf#Material Design Icons" />
        <On Platform="iOS"
            Value="Material Design Icons" />
        <On Platform="UWP"
            Value="/Assets/MD.otf#Material Design Icons" />
    </OnPlatform>

    <!--ICONS 30 by 30-->  
    <!--Black-->
    <FontImageSource x:Key="IconPowerOff"
                     FontFamily="{DynamicResource FontAwesomeSolid}"
                     Glyph="{x:Static local:AwesomeFontSolid.PowerOff}"
                     Size="30"
                     Color="Black" />
    <!--ICONS 100 by 100-->
    <FontImageSource x:Key="IconHand"
                     FontFamily="{DynamicResource FontAwesomeSolid}"
                     Glyph="{x:Static local:AwesomeFontSolid.Hands}"
                     Size="100"
                     Color="Black" />   
</ResourceDictionary>

И в использовании Xamal

  <Image Margin="20,0" WidthRequest="30">
                        <Image.Source>
                            <FontImageSource
                                FontFamily="{StaticResource FontAwesomeSolid}"
                                Glyph="{x:Static local:AwesomeFontSolid.Users}"
                                Color="{DynamicResource SurfaceTextColor}" />
                        </Image.Source>
                    </Image>

Samit, у меня шрифт .ttf работает с использованием embedded / ExportFont на Android / iOS.

Однако устранение неполадок - это хит или промах - нет сообщений или показателей, которые помогли бы вам понять, почему это не работает. Это то, что мне не нравится в кодовой базе Xamarin: во многих случаях, когда вы передаете неправильный параметр, функция просто ничего не делает, а не сообщает вам, что значение параметра неверно. Сообщения об ошибках / ведение журнала / исключения могут быть действительно полезными.

Samit, у меня шрифт .ttf работает с использованием embedded / ExportFont на Android / iOS.

Однако устранение неполадок - это хит или промах - нет сообщений или показателей, которые помогли бы вам понять, почему это не работает. Это то, что мне не нравится в кодовой базе Xamarin: во многих случаях, когда вы передаете неправильный параметр, функция просто ничего не делает, а не сообщает вам, что значение параметра неверно. Сообщения об ошибках / ведение журнала / исключения могут быть действительно полезными.

Привет Крис,

Да, я наблюдал такое же поведение, и было сложно понять или отладить, что не так. Файл ".ttf" работает для Android и IOS, но не для UWP (Glyph).
Поэтому я попытался использовать файл .otf, и он работал для всех трех платформ для изображений (Glyph).

Также странно то, что ".ttf" действительно работает на всех трех платформах для текстового шрифта (не знаю, как объяснить, но файл Roboto-Italic.ttf будет работать на всех трех платформах), но, как я уже говорил ранее, Glyph из файла .ttf не работает. за работой.

Надеюсь, мы скоро исправим это.

@ Самит.
Я считаю, что ваш код ссылается на «устаревший» способ поддержки пользовательских шрифтов в Xamarin. В этом сценарии вы устанавливаете файл шрифта в каждую папку проекта и добавляете некоторый код манифеста, а затем ссылаетесь на имя шрифта, которое вы представляете в примере файла ресурсов, где каждая платформа получает немного другой вариант имени файла.
Проблема, о которой сообщалось здесь с функцией «ExportFont», которая была недавно представлена ​​с Xamarin и позволяет вам один раз включить шрифт в общий проект, а затем сообщить о нем приложению с помощью директивы ExportFont.
[сборка: ExportFont ("Samantha.ttf", Alias ​​= "MyAwesomeCustomFont")]

https://devblogs.microsoft.com/xamarin/embedded-fonts-xamarin-forms/

Ошибка сообщала, что это работает для проектов Android и iOS, но не для UWP, где нам нужно вернуться к предыдущему методу.

Здесь та же проблема. Мы использовали встраивание шрифтов, которое работает как ветер на Android и iOS. И мы добавили дополнительный проект UWP из-за некоторых требований клиентов. Это вообще не работает, и все, что мы видим, - это какие-то коробки.

Samit, у меня шрифт .ttf работает с использованием embedded / ExportFont на Android / iOS.
Однако устранение неполадок - это хит или промах - нет сообщений или показателей, которые помогли бы вам понять, почему это не работает. Это то, что мне не нравится в кодовой базе Xamarin: во многих случаях, когда вы передаете неправильный параметр, функция просто ничего не делает, а не сообщает вам, что значение параметра неверно. Сообщения об ошибках / ведение журнала / исключения могут быть действительно полезными.

Привет Крис,

Да, я наблюдал такое же поведение, и было сложно понять или отладить, что не так. Файл ".ttf" работает для Android и IOS, но не для UWP (Glyph).
Поэтому я попытался использовать файл .otf, и он работал для всех трех платформ для изображений (Glyph).

Также странно то, что ".ttf" действительно работает на всех трех платформах для текстового шрифта (не знаю, как объяснить, но файл Roboto-Italic.ttf будет работать на всех трех платформах), но, как я уже говорил ранее, Glyph из файла .ttf не работает. за работой.

Надеюсь, мы скоро исправим это.

Вы можете проверить, что «Roboto-Italic.ttf» работает на всех трех платформах, потому что он физически установлен на машине Windows, которую вы используете для тестирования.
Мне потребовалось много времени, чтобы понять, почему некоторые шрифты работают с ExportFont, в UWP, а другие - нет, пока я не понял, что используются только шрифты, которые уже были установлены в Windows.

Проблема в том, что UWP хочет, чтобы имя шрифта было частью имени семейства шрифтов. Xamarin Forms ошибочно предполагает, что имя шрифта совпадает с именем файла шрифта. Для многих шрифтов, которые не работают (например, FontAwesome)

Я создам PR, чтобы исправить эту проблему.

Xamarin.Forms: 4.8.0.1269
ExportFont работает для Android, но не для UWP

Вместо использования ExportFont в общем проекте есть обходной путь:

  1. Скопируйте файл шрифта (xxx.ttf) в папку Assets в Androind и проекте UWP:

[Android]:
Assets / xxx.ttf
Действие сборки: AndroidAsset
Копировать в выходной каталог: не копировать

[UWP]:
Assets / xxx.ttf
Действие сборки: контент
Копировать в выходной каталог: не копировать

  1. Устанавливает свойство FontFamily для вашего текста:

       <Label.FontFamily>
            <OnPlatform x:TypeArguments="x:String">
                <On Platform="Android"
                    Value="xxx.ttf#Font Name" />
                <On Platform="UWP"
                    Value="/Assets/xxx.ttf#Font Name" />
            </OnPlatform>
        </Label.FontFamily>
    

Теперь все работает как положено!

@ johncao158 Это [ExportFont] не работает с UWP. Предложенный вами обходной путь по-прежнему не позволяет добавлять шрифты в качестве встроенного ресурса.

Мой проект работает так:

[ОБЩИЙ ПРОЕКТ]
AssemblyInfo.cs
[сборка: ExportFont ("entypo.ttf", Alias ​​= "entypo-plus")]
Fonts / entypo.ttf "для iOS и Android"

Действие сборки: контент
Копировать в выходной каталог: не копировать

Мой проект работает так:

[ОБЩИЙ ПРОЕКТ]
AssemblyInfo.cs
[сборка: ExportFont ("entypo.ttf", Alias ​​= "entypo-plus")]
Fonts / entypo.ttf "для iOS и Android"

Действие сборки: контент
Копировать в выходной каталог: не копировать

Ты прав. Эта новая функция работает на iOS и Android.
Проблема в том, что он не будет работать в Windows, если шрифт уже не установлен на машине.

Почему это было закрыто? Хотя настраиваемые шрифты работают в отладке UWP, они не работают в версии выпуска.

Когда я использую их в боковой загрузке релизной версии, страница, на которой находится пользовательский шрифт, полностью пуста. Когда я комментирую семейство шрифтов в xaml, страница выглядит нормально ... но, конечно, без пользовательских шрифтов.

Я также проверил папку windows / font, и шрифт был на ноутбуке, на котором я установил приложение.

У меня та же проблема, что и у @ BillyMartin1964 в выпуске UWP, даже с последней версией XF 4.8.0.1534 + 384-sha.712849b9d-azdo.4114742

У нас та же проблема, что и у @ BillyMartin1964 - это очень сбивало с толку, поскольку шрифты нормально работают на Android / iOS и даже в UWP в режиме отладки, но не в режиме выпуска.

@samhouts есть ли

По крайней мере, можем ли мы иметь код, который игнорирует пользовательский шрифт, если он не установлен на компьютере пользователя / XBox?

По крайней мере, можем ли мы иметь код, который игнорирует пользовательский шрифт, если он не установлен на компьютере пользователя / XBox?

Я думаю, вы можете добавить два элемента на страницу и сделать их видимыми в зависимости от платформы, на которой они работают. Используйте для этого OnPlatform .

@ArtjomP , проблема не в этом. Вся страница остается пустой, когда мы используем встроенный шрифт для дополнительной загрузки сборки выпуска на другой компьютер. Кто-то сказал, что это потому, что на другом ПК ранее не был установлен шрифт. Я не уверен в этом, но если это так, нам нужно проверить установленный шрифт и не использовать его, если он не установлен.

Лично я считаю, что это еще одна проблема, потому что похоже, что шрифт находился в папке шрифтов на компьютере пользователя.

@ BillyMartin1964 Довольно странно, что все мои страницы хорошо работают в выпуске UWP. Ярлыки с настраиваемым шрифтом показывают только квадрат, как на картинке выше из @jsuarezruiz

@ArtjomP , вы устанавливаете на другую машину?

@ BillyMartin1964 уверен, что я разрабатываю приложения на своем компьютере, CI с тестированием пользовательского интерфейса на другом, а пользователи используют мои приложения из Магазина на своих ПК и Xbox

@ArtjomP , не могу рассказать вам о магазине, потому что боюсь использовать его в

@ BillyMartin1964, вы можете попытаться удалить папки obj и bin и перестроить свой проект с включенным атрибутом FontFamily. Иногда это помогает избавиться от загадочных ошибок.

Почему это было закрыто? Хотя настраиваемые шрифты работают в отладке UWP, они не работают в версии выпуска.

Когда я использую их в боковой загрузке релизной версии, страница, на которой находится пользовательский шрифт, полностью пуста. Когда я комментирую семейство шрифтов в xaml, страница выглядит нормально ... но, конечно, без пользовательских шрифтов.

Я также проверил папку windows / font, и шрифт был на ноутбуке, на котором я установил приложение.

Для этого есть новая проблема: # 12404

Была ли эта страница полезной?
0 / 5 - 0 рейтинги