Fontes no .NET MAUI
Por padrão, os aplicativos .NET Multi-platform App UI (.NET MAUI) usam a fonte Open Sans em cada plataforma. No entanto, esse padrão pode ser alterado e fontes adicionais podem ser registradas para uso em um aplicativo.
Todos os controles que exibem texto definem propriedades que podem ser definidas para alterar a aparência da fonte:
FontFamily
, de tipostring
.FontAttributes
, do tipoFontAttributes
, que é uma enumeração com três membros:None
,Bold
eItalic
. O valor padrão dessa propriedade éNone
.FontSize
, de tipodouble
.FontAutoScalingEnabled
, do tipobool
, que define se a interface do usuário de um aplicativo reflete as preferências de dimensionamento de texto definidas no sistema operacional. O valor padrão dessa propriedade étrue
.
Essas propriedades são apoiadas por BindableProperty objetos, o que significa que elas podem ser alvos de associações de dados e estilizadas.
Todos os controles que exibem texto automaticamente usam o dimensionamento de fonte, o que significa que a interface do usuário de um aplicativo reflete as preferências de dimensionamento de texto definidas no sistema operacional.
Registrar fontes
As fontes True Type Format (TTF) e Open Type Font (OTF) podem ser adicionadas ao seu aplicativo e referenciadas por nome de arquivo ou alias, com o CreateMauiApp
registro sendo realizado no método na MauiProgram
classe. Isso é feito invocando o ConfigureFonts
método no MauiAppBuilder
objeto. Em seguida, no objeto, chame IFontCollection
o AddFont
método para adicionar a fonte necessária ao seu aplicativo:
namespace MyMauiApp
{
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("Lobster-Regular.ttf", "Lobster");
});
return builder.Build();
}
}
}
No exemplo acima, o primeiro argumento para o método é o nome do arquivo da fonte, enquanto o AddFont
segundo argumento representa um alias opcional pelo qual a fonte pode ser referenciada ao consumi-la.
Uma fonte pode ser adicionada ao seu projeto de aplicativo arrastando-a para a pasta Resources\Fonts do projeto, onde sua ação de compilação será definida automaticamente como MauiFont. Isso cria uma entrada correspondente no arquivo de projeto. Como alternativa, todas as fontes no aplicativo podem ser registradas usando um curinga no arquivo de projeto:
<ItemGroup>
<MauiFont Include="Resources\Fonts\*" />
</ItemGroup>
As fontes também podem ser adicionadas a outras pastas do seu projeto de aplicativo. No entanto, nesse cenário, sua ação de compilação deve ser definida manualmente como MauiFont na janela Propriedades .
Em tempo de compilação, as fontes são copiadas para o pacote do aplicativo. Para obter informações sobre como desabilitar o empacotamento de fontes, consulte Desabilitar o empacotamento de fontes.
Observação
O *
caractere curinga indica que todos os arquivos dentro da pasta serão tratados como sendo arquivos de fonte. Além disso, se você quiser incluir arquivos de subpastas também, configure-o usando caracteres curinga adicionais, por exemplo, Resources\Fonts\**\*
.
Consumir fontes
As fontes registradas podem ser consumidas definindo a propriedade de um controle que exibe texto para o nome da fonte, sem a FontFamily
extensão de arquivo:
<!-- Use font name -->
<Label Text="Hello .NET MAUI"
FontFamily="Lobster-Regular" />
Como alternativa, ele pode ser consumido fazendo referência ao seu alias:
<!-- Use font alias -->
<Label Text="Hello .NET MAUI"
FontFamily="Lobster" />
Este é o código C# equivalente:
// Use font name
Label label1 = new Label
{
Text = "Hello .NET MAUI!",
FontFamily = "Lobster-Regular"
};
// Use font alias
Label label2 = new Label
{
Text = "Hello .NET MAUI!",
FontFamily = "Lobster"
};
No Android, as seguintes fontes do sistema podem ser consumidas definindo-as como o valor da FontFamily
propriedade:
- espaçamento uniforme
- com serifa
- sans-serif (ou sansserif)
- sans-serif-black (ou sansserif-preto)
- sans-serif-condensado (ou sansserif-condensado)
- sans-serif-condensed-light (ou sansserif-condensed-light)
- sans-serif-light (ou sansserif-light)
- sans-serif-medium (ou sansserif-medium)
Por exemplo, a fonte do sistema monospace pode ser consumida com o seguinte XAML:
<Label Text="Hello .NET MAUI"
FontFamily="monospace" />
Este é o código C# equivalente:
// Use font name
Label label1 = new Label
{
Text = "Hello .NET MAUI!",
FontFamily = "monospace"
};
Definir atributos de fonte
Os controles que exibem texto podem definir a FontAttributes
propriedade para especificar atributos de fonte:
<Label Text="Italics"
FontAttributes="Italic" />
<Label Text="Bold and italics"
FontAttributes="Bold, Italic" />
Este é o código C# equivalente:
Label label1 = new Label
{
Text = "Italics",
FontAttributes = FontAttributes.Italic
};
Label label2 = new Label
{
Text = "Bold and italics",
FontAttributes = FontAttributes.Bold | FontAttributes.Italic
};
Definir o tamanho da fonte
Os controles que exibem texto podem definir a FontSize
propriedade para especificar o tamanho da fonte. A FontSize
propriedade pode ser definida como um double
valor:
<Label Text="Font size 24"
FontSize="24" />
Este é o código C# equivalente:
Label label = new Label
{
Text = "Font size 24",
FontSize = 24
};
Observação
O FontSize
valor é medido em unidades independentes do dispositivo.
Desativar o dimensionamento automático de fontes
Todos os controles que exibem texto têm o dimensionamento de fonte habilitado por padrão, o que significa que a interface do usuário de um aplicativo reflete as preferências de dimensionamento de texto definidas no sistema operacional. No entanto, esse comportamento pode ser desabilitado definindo a FontAutoScalingEnabled
propriedade em controles baseados em texto como false
:
<Label Text="Scaling disabled"
FontSize="18"
FontAutoScalingEnabled="False" />
Essa abordagem é útil quando você deseja garantir que o texto seja exibido em um tamanho específico.
Observação
O dimensionamento automático de fontes também funciona com ícones de fonte. Para obter mais informações, consulte Exibir ícones de fonte.
Definir propriedades de fonte por plataforma
As OnPlatform
classes e On
podem ser usadas em XAML para definir propriedades de fonte por plataforma. O exemplo abaixo define diferentes famílias e tamanhos de fontes:
<Label Text="Different font properties on different platforms"
FontSize="{OnPlatform iOS=20, Android=22, WinUI=24}">
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="iOS" Value="MarkerFelt-Thin" />
<On Platform="Android" Value="Lobster-Regular" />
<On Platform="WinUI" Value="ArimaMadurai-Black" />
</OnPlatform>
</Label.FontFamily>
</Label>
A DeviceInfo.Platform
propriedade pode ser usada no código para definir propriedades de fonte por plataforma:
Label label = new Label
{
Text = "Different font properties on different platforms"
};
label.FontSize = DeviceInfo.Platform == DevicePlatform.iOS ? 20 :
DeviceInfo.Platform == DevicePlatform.Android ? 22 : 24;
label.FontFamily = DeviceInfo.Platform == DevicePlatform.iOS ? "MarkerFelt-Thin" :
DeviceInfo.Platform == DevicePlatform.Android ? "Lobster-Regular" : "ArimaMadurai-Black";
Para obter mais informações sobre como fornecer valores específicos da plataforma, consulte Informações do dispositivo. Para obter informações sobre a extensão de marcação, consulte Personalizar a aparência da OnPlatform
interface do usuário com base na plataforma.
Exibir ícones de fonte
Os ícones de fonte podem ser exibidos por aplicativos .NET MAUI especificando os dados do ícone de fonte em um FontImageSource objeto. Essa classe, que deriva da ImageSource classe, tem as seguintes propriedades:
Glyph
– o valor do caractere unicode do ícone de fonte, especificado como umstring
arquivo .Size
– umdouble
valor que indica o tamanho, em unidades independentes do dispositivo, do ícone de fonte renderizada. O valor padrão é 30. Além disso, essa propriedade pode ser definida como um tamanho de fonte nomeado.FontFamily
– umstring
representante da família de fontes à qual o ícone de fonte pertence.Color
– um valor opcional Color a ser usado ao exibir o ícone de fonte.
Esses dados são usados para criar um PNG, que pode ser exibido por qualquer exibição que possa exibir um ImageSourcearquivo . Essa abordagem permite que ícones de fonte, como emojis, sejam exibidos por várias exibições, em vez de limitar a exibição de ícones de fonte a uma única exibição de apresentação de texto, como um Labelarquivo .
Importante
No momento, os ícones de fonte só podem ser especificados por sua representação de caracteres unicode.
O exemplo XAML a seguir tem um único ícone de fonte sendo exibido por um Image modo de exibição:
<Image BackgroundColor="#D1D1D1">
<Image.Source>
<FontImageSource Glyph=""
FontFamily="{OnPlatform iOS=Ionicons, Android=ionicons.ttf#}"
Size="44" />
</Image.Source>
</Image>
Esse código exibe um ícone XBox, da família de fontes Ionicons, em uma Image exibição. Observe que, embora o caractere unicode para esse ícone seja \uf30c
, ele precisa ser escapado em XAML e, portanto, se torna 
. Este é o código C# equivalente:
Image image = new Image { BackgroundColor = Color.FromArgb("#D1D1D1") };
image.Source = new FontImageSource
{
Glyph = "\uf30c",
FontFamily = DeviceInfo.Platform == DevicePlatform.iOS ? "Ionicons" : "ionicons.ttf#",
Size = 44
};
A captura de tela a seguir mostra vários ícones de fonte sendo exibidos:
Como alternativa, você pode exibir um ícone de fonte com a extensão de FontImage
marcação. Para obter mais informações, consulte Carregar um ícone de fonte.