Aracılığıyla paylaş


içindeki yazı tipleri Xamarin.Forms

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

  • FontAttributes, türüne FontAttributesgöre üç üyesi olan bir sabit listesidir: None, Boldve Italic. Bu özelliğin varsayılan değeridir None.
  • FontSize, türündedir double.
  • FontFamily, türündedir string.

Bu özellikler nesneler tarafından BindableProperty desteklenir; bu da veri bağlamalarının hedefleri olabileceği ve stillendirilebileceği anlamına gelir.

Yazı tipi özniteliklerini ayarlama

Metin görüntüleyen denetimler, yazı tipi özniteliklerini belirtmek için özelliğini ayarlayabilir FontAttributes :

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

Eşdeğer C# kodu:

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üleyen denetimler, yazı tipi boyutunu belirtmek için özelliğini ayarlayabilir FontSize . FontSize özelliği doğrudan bir değere veya NamedSize bir double numaralandırma değerine ayarlanabilir:

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

Eşdeğer C# kodu:

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, yönteminin Device.GetNamedSize ikinci bağımsız değişkeni olarak belirten bir Elementgeçersiz kılması vardır:

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

Not

FontSize değeri olarak belirtildiğinde doublecihazdan bağımsız birimler halinde ö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üleyen denetimler, özelliğini "Times Roman" gibi bir yazı tipi ailesi adı olarak ayarlayabilir FontFamily . Ancak, bu yalnızca söz konusu yazı tipi ailesi belirli bir platformda destekleniyorsa çalışır.

Bir platformda kullanılabilen yazı tiplerini türetmeye çalışmak için kullanılabilecek çeşitli teknikler vardır. Ancak, TTF (True Type Format) yazı tipi dosyasının varlığı mutlaka bir yazı tipi ailesi anlamına gelmez ve TDF'ler genellikle uygulamalarda kullanılmak üzere tasarlanmamıştır. Buna ek olarak, bir platforma yüklenen yazı tipleri platform sürümüyle değişebilir. Bu nedenle, yazı tipi ailesi belirtmek için en güvenilir yaklaşım özel bir yazı tipi kullanmaktır.

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

  1. Paylaşılan projenize Xamarin.Forms ekli kaynak olarak yazı tipini ekleyin (Derleme Eylemi: EmbeddedResource).
  2. özniteliğini kullanarak yazı tipi dosyasını derlemeye AssemblyInfo.cs gibi bir dosyaya ExportFont kaydedin. İsteğe bağlı bir diğer ad da belirtilebilir.

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

using Xamarin.Forms;

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

Not

Yazı tipi, yazı tipini derlemeye kaydederken klasör adını belirtmek zorunda kalmadan paylaşılan projedeki herhangi bir klasörde bulunabilir.

Windows'da yazı tipi dosya adı ve yazı tipi adı farklı olabilir. Windows'ta yazı tipi adını bulmak için .ttf dosyasına sağ tıklayın ve Önizleme'yi seçin. Yazı tipi adı önizleme penceresinden belirlenebilir.

Yazı tipi daha sonra dosya uzantısı olmadan adına başvurarak her platformda kullanılabilir:

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

Alternatif olarak, diğer adına başvurarak her platformda kullanılabilir:

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

Eşdeğer C# kodu:

// 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

Windows'daki yayın derlemeleri için, özel yazı tipini içeren derlemenin yöntem çağrısında bağımsız değişken olarak geçirildiğinden Forms.Init emin olun. Daha fazla bilgi için bkz. Sorun giderme.

Platform başına yazı tipi özelliklerini ayarlama

OnPlatform ve On sınıfları platform başına yazı tipi özelliklerini ayarlamak için XAML'de kullanılabilir. Aşağıdaki örnek, her platformda farklı yazı tipi aileleri ve boyutları ayarlar:

<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. İşaretlemeyi genişletme hakkında OnPlatform bilgi için bkz . OnPlatform işaretleme uzantısı.

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

Xamarin.Forms , numaralandırmada NamedSize belirli yazı tipi boyutlarını temsil eden alanları tanımlar. Aşağıdaki tabloda üyeler ve iOS, Android ve Evrensel Windows Platformu (UWP) üzerindeki varsayılan boyutları gösterilmektedirNamedSize:

Ü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 14 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çeklenir. Bu davranış, platforma özgü bir iOS ile devre dışı bırakılabilir. Daha fazla bilgi için bkz . iOS'ta Adlandırılmış Yazı Tipi Boyutları için Erişilebilirlik Ölçeklendirme.

Yazı tipi simgelerini görüntüleme

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

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

Yazı tipi verileri, görüntüleyebilen herhangi bir ImageSourcegörünüm tarafından görüntülenebilir. Bu yaklaşım, yazı tipi simgesinin görüntülenmesini sınırlandırmak yerine, emojiler gibi yazı tipi simgelerinin birden çok görünüm tarafından görüntülenmesine izin verir.Label

Önemli

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

Aşağıdaki XAML örneğinde bir görünüm tarafından görüntülenen tek bir Image yazı tipi simgesi 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 ailesinden bir XBox simgesini bir Image görünümde görüntüler. Bu simgenin unicode karakteri olduğunda \uf30c, XAML'de kaçış karakterine sahip olması ve bu şekilde olması &#xf30c;gerektiğini unutmayın. Eşdeğer C# kodu:

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

Aşağıdaki ekran görüntüleri, bağlanabilir bir düzen tarafından görüntülenen birkaç yazı tipi simgesini gösterir:

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