Yazı tipleri Xamarin.Forms

Örneği İndir Örneği indirme

Varsayılan olarak, Xamarin.Forms her platform tarafından tanımlanan bir sistem yazı tipi kullanır. Ancak, metin görüntü eden denetimler, bu yazı tipini değiştirmek için kullanabileceğiniz özellikleri tanımlar:

  • FontAttributes, FontAttributes türü, üç üyesi olan bir numaralamadır: None , ve BoldItalic . Bu özelliğin varsayılan değeri None olur.
  • FontSizetüründe double .
  • FontFamilytüründe string .

Bu özellikler nesnelerle BindableProperty desteklene, bu da veri bağlamalarının hedefi ve stile sahip olması anlamına gelir.

Yazı tipi özniteliklerini ayarlama

Metin görüntüleme denetimleri özelliği yazı FontAttributes tipi özniteliklerini belirterek değiştirebilir:

<Label Text="Italics"
       FontAttributes="Italic" />
<Label Text="Bold and italics"
       FontAttributes="Bold, Italic" />

Eşdeğer C# kodu şöyledir:

Label label1 = new Label
{
    Text = "Italics",
    FontAttributes = FontAttributes.Italic
};

Label label2 = new Label
{
    Text = "Bold and italics",
    FontAttributes = FontAttributes.Bold | FontAttributes.Italic
};    

Yazı tipi boyutunu ayarlama

Metin görüntü alan denetimler, özelliği FontSize yazı tipi boyutunu belirterek değiştirebilir. özelliği FontSize doğrudan bir double değere veya bir numaralama NamedSize değerine göre ayar olabilir:

<Label Text="Font size 24"
       FontSize="24" />
<Label Text="Large font size"
       FontSize="Large" />

Eşdeğer C# kodu şöyledir:

Label label1 = new Label
{
    Text = "Font size 24",
    FontSize = 24
};

Label label2 = new Label
{
    Text = "Large font size",
    FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label))
};

Alternatif olarak, Device.GetNamedSize yöntemin ikinci bağımsız değişkeni olarak belirten bir geçersiz kılma Element vardır:

Label myLabel = new Label
{
    Text = "Large font size",
};
myLabel.FontSize = Device.GetNamedSize(NamedSize.Large, myLabel);

Not

FontSizedeğeri, olarak belirtilirse double cihazdan bağımsız birimlerle ölçülür. Daha fazla bilgi için bkz. Ölçü Birimleri.

Adlandırılmış yazı tipi boyutları hakkında daha fazla bilgi için bkz. Adlandırılmış yazı tipi boyutlarını anlama.

Yazı tipi ailesini ayarlama

Metin görüntü alan denetimler özelliğini FontFamily "Times Roman" gibi bir yazı tipi ailesi adı olarak değiştirebilir. Ancak bu yalnızca söz konusu yazı tipi ailesi belirli bir platformda destek alıyorsa çalışır.

Bir platformda kullanılabilen yazı tiplerini türetmek için kullanılabilen birkaç teknik vardır. Ancak, bir TTF (Doğru Tür Biçimi) yazı tipi dosyasının olması bir yazı tipi ailesi anlamına gelmez ve TTF'ler genellikle uygulamalarda kullanılmak üzere tasarlanmış değildir. Ayrıca, bir platforma yüklenmiş yazı tipleri platform sürümüyle değişebilir. Bu nedenle, yazı tipi ailesi belirtmeye en güvenilir yaklaşım, özel bir yazı tipi kullanmaktır.

Özel yazı tipleri paylaşılan projenize Xamarin.Forms eklenebilir ve ek bir çalışma olmadan platform projeleri tarafından kullanılabilir. Bunu gerçekleştirme işlemi aşağıdaki gibidir:

  1. Paylaşılan projenize eklenmiş kaynak Xamarin.Forms olarak yazı tipini ekleyin ( DerlemeXamarin.Forms).
  2. özniteliğini kullanarak yazı tipi dosyasını AssemblyInfo.csgibi bir dosyaya derlemeye kaydedin. İsteğe bağlı bir diğer ad da belirtilebilir.

Aşağıdaki örnek, derlemeye Lobster-Regular bir diğer ad ile birlikte aşağıdaki yazı tipini gösterir:

using Xamarin.Forms;

[assembly: ExportFont("Lobster-Regular.ttf", Alias = "Lobster")]

Not

Yazı tipi, derlemeye kaydedilirken klasör adını belirtmek zorunda kalmadan, paylaşılan projedeki herhangi bir klasörde yer alan yazı tipi olabilir.

Bu Windows, yazı tipi dosya adı ve yazı tipi adı farklı olabilir. Dosyanın yazı tipi adını bulmak Windows .ttf dosyasına sağ tıklayın ve Önizleme'yi seçin. Yazı tipi adı daha sonra önizleme penceresinden belirlenebilirsiniz.

Daha sonra yazı tipi, dosya uzantısı olmadan adına başvurarak her platformda tüketilebilir:

<!-- Use font name -->
<Label Text="Hello Xamarin.Forms"
       FontFamily="Lobster-Regular" />

Alternatif olarak, diğer adı başvurarak her platformda da tüketilebilir:

<!-- Use font alias -->
<Label Text="Hello Xamarin.Forms"
       FontFamily="Lobster" />

Eşdeğer C# kodu şöyledir:

// Use font name
Label label1 = new Label
{
    Text = "Hello Xamarin.Forms!",
    FontFamily = "Lobster-Regular"
};

// Use font alias
Label label2 = new Label
{
    Text = "Hello Xamarin.Forms!",
    FontFamily = "Lobster"
};

Aşağıdaki ekran görüntüleri özel yazı tipini gösterir:

iOS ve Android'de Özel Yazı Tipi

Önemli

Üzerinde yayın derlemeleri Windows özel yazı tipini içeren derlemenin yöntem çağrısında bağımsız değişken olarak Forms.Init geçirildikten emin olur. Daha fazla bilgi için bkz. Sorun giderme.

Platform başına yazı tipi özelliklerini ayarlama

ve OnPlatformOn sınıfları, platform başına yazı tipi özelliklerini ayarlamak için XAML'de kullanılabilir. Aşağıdaki örnekte her platformda farklı yazı tipi aileleri ve boyutları ayarlanmıştır:

<Label Text="Different font properties on different platforms"
       FontSize="{OnPlatform iOS=20, Android=Medium, UWP=24}">
    <Label.FontFamily>
        <OnPlatform x:TypeArguments="x:String">
            <On Platform="iOS" Value="MarkerFelt-Thin" />
            <On Platform="Android" Value="Lobster-Regular" />
            <On Platform="UWP" Value="ArimaMadurai-Black" />
        </OnPlatform>
    </Label.FontFamily>
</Label>

özelliği, Device.RuntimePlatform platform başına yazı tipi özelliklerini ayarlamak için kodda kullanılabilir

Label label = new Label
{
    Text = "Different font properties on different platforms"
};

label.FontSize = Device.RuntimePlatform == Device.iOS ? 20 :
    Device.RuntimePlatform == Device.Android ? Device.GetNamedSize(NamedSize.Medium, label) : 24;
label.FontFamily = Device.RuntimePlatform == Device.iOS ? "MarkerFelt-Thin" :
   Device.RuntimePlatform == Device.Android ? "Lobster-Regular" : "ArimaMadurai-Black";

Platforma özgü değerler sağlama hakkında daha fazla bilgi için bkz. Platforma özgü değerler sağlama. Işaretleme uzantısı hakkında bilgi OnPlatform için bkz. OnPlatform

Adlandırılmış yazı tipi boyutlarını anlama

Xamarin.Forms , belirli yazı NamedSize tipi boyutlarını temsil eden numaralama alanlarını tanımlar. Aşağıdaki tabloda üyeleri ve NamedSize iOS, Android ve Universal Windows Platform(UWP) ile ilgili varsayılan boyutları ve bu üyeler göstermektedir:

Üye iOS Android UWP
Default 17 14 14
Micro 12 10 15.667
Small 14 14 18.667
Medium 17 17 22.667
Large 22 22 32
Body 17 16 14
Header 17 96 46
Title 28 24 24
Subtitle 22 16 20
Caption 12 12 12

Boyut değerleri cihazdan bağımsız birimlerle ölçülür. Daha fazla bilgi için bkz. Ölçü Birimleri.

Not

iOS ve Android'de, adlandırılmış yazı tipi boyutları işletim sistemi erişilebilirlik seçeneklerine göre otomatik olarak ölçekler. Bu davranış, platforma özgü bir şekilde iOS'ta devre dışı bırakılabilir. Daha fazla bilgi için bkz. iOS'ta Adlandırılmış Yazı Tipi Boyutları için Erişilebilirlik Ölçeklendirmesi.

Yazı tipi simgelerini görüntüleme

Yazı tipi simgeleri, bir Xamarin.Forms nesnede yazı tipi simgesi verileri belirterek uygulamalar tarafından FontImageSource görüntülenebilir. sınıfından türeyen bu ImageSource sınıf aşağıdaki özelliklere sahiptir:

  • Glyph – bir olarak belirtilen yazı tipi simgesinin unicode karakter string değeri.
  • Sizedouble işlenmiş yazı tipi simgesinin cihazdan bağımsız birimlerde boyutunu gösteren bir değer. Varsayılan değer 30’dur. Ayrıca, bu özellik adlandırılmış bir yazı tipi boyutuna da ayar olabilir.
  • FontFamilystring yazı tipi simgesinin ait olduğu yazı tipi ailesini temsil eden.
  • Color – yazı Color tipi simgesi görüntülenirken kullanılacak isteğe bağlı bir değer.

Bu veriler, bir görüntüleyen herhangi bir görünüm tarafından görüntülenebilir bir PNG oluşturmak için ImageSource kullanılır. Bu yaklaşım, yazı tipi simgesinin görüntülemesini tek bir metin sunum görünümüyle sınırlamak yerine emojiler gibi yazı tipi simgelerini birden çok görünümle görüntülemeye izin Label verir.

Önemli

Yazı tipi simgeleri şu anda yalnızca unicode karakter gösterimiyle belirtilebilir.

Aşağıdaki XAML örneğinde bir görünüm tarafından görüntülenen tek bir yazı tipi simgesi Image vardır:

<Image BackgroundColor="#D1D1D1">
    <Image.Source>
        <FontImageSource Glyph="&#xf30c;"
                         FontFamily="{OnPlatform iOS=Ionicons, Android=ionicons.ttf#}"
                         Size="44" />
    </Image.Source>
</Image>

Bu kod, Ionicons yazı tipi ailesinde bir görünümde bir XBox simgesi Image görüntüler. Bu simgenin unicode karakterinin olduğunu unutmayın; XAML'de bu karaktere kaçarak bu karaktere \uf30c sahip olması &#xf30c; gerekir. Eşdeğer C# kodu şöyledir:

Image image = new Image { BackgroundColor = Color.FromHex("#D1D1D1") };
image.Source = new FontImageSource
{
    Glyph = "\uf30c",
    FontFamily = Device.RuntimePlatform == Device.iOS ? "Ionicons" : "ionicons.ttf#",
    Size = 44
};

Bağlanabilir Düzenler örneğinde yer alan aşağıdaki ekran görüntüleri, bağlanabilir bir düzen tarafından görüntülenen birkaç yazı tipi simgesi gösterir:

iOS ve Android'de görüntülenen yazı tipi simgelerinin ekran