This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Yazı tipleri (font), etiket bileşenlerinde (Label component) ve GUI metin düğümlerinde (GUI text node) metnin görüntüsünü oluşturmak için işleme (rendering) sırasında kullanılır. Defold çeşitli yazı tipi dosya biçimlerini destekler:
Hem eski hem de tam metin yerleşimi motorları, .ttf ve .otf kaynaklarından çalışma sırasında üretim de dahil olmak üzere TrueType dış hatlarını ve OpenType CFF1/CFF2 dış hatlarını destekler.
Metnin ayrı bölümlerini biçimlendirme, bağlantılar ve satır içi sprite bileşenleriyle çalışma hakkında bilgi için Zengin metin işaretleme kılavuzuna bakın.
TrueType ve OpenType yazı tiplerinde Mode özelliği, gliflerin nasıl işleneceğini seçer:
Yeni oluşturulan yazı tipi kaynakları Vector modunu ve Dynamic glif oluşturmayı kullanır. Mevcut yazı tipi kaynakları Bitmap veya SDF modlarını korur. BMFont kaynakları her zaman sağladıkları bit eşlemi kullanır.
Vector modu, RGBA16F ve R32UI dokuları için grafik desteği gerektirir ve OpenGL ES 2 ya da WebGL 1 üzerinde desteklenmez. Desteklenmeyen grafik bağdaştırıcılarını hedeflerken Bitmap veya SDF yazı tiplerini ve bunlarla eşleşen materyalleri kullanın; Vector’dan SDF’ye otomatik geri dönüş yoktur. Kurulum için Vektör yazı tipleri bölümüne bakın.
Glyph Generation özelliği, her yazı tipinin glif verilerinin ne zaman oluşturulacağını seçer:
.ttf veya .otf dosyası çalışma sırasında oluşturma için paketlenmez..ttf veya .otf dosyasını paketler ve glifleri çalışma sırasında gerektikçe oluşturur. Prewarm Text, yazı tipi yüklenirken glifleri hazırlar. Diğer glifler daha sonra ihtiyaç duyuldukça oluşturulabilir.SDF ve Vector yazı tipleri her iki seçeneği de destekler. Bitmap yazı tipleri ve BMFont kaynakları Static oluşturmayı kullanır. Her yazı tipi kaynağı bağımsız yapılandırılır; bu nedenle bir proje Static ve Dynamic yazı tiplerini birlikte kullanabilir.
Dinamik oluşturma, özellikle büyük karakter kümelerine sahip yazı tiplerinde paket boyutunu ve çalışma zamanı bellek kullanımını azaltabilir. Motorda tam metin yerleşim sistemini gerektirir; Çalışma zamanı yazı tiplerini etkinleştirme bölümüne bakın.
Çalışma zamanı yazı tipleri, sağdan sola gibi tam metin yerleşimlerini destekleme avantajına da sahiptir. Şu anda HarfBuzz, SheenBidi, libunibreak ve SkriBidi kütüphanelerini kullanıyoruz.
Çalışma zamanı yazı tiplerini etkinleştirme bölümüne bakın.
Düzenleyici, yazı tipi ve sahne metni önizlemeleri için motorun yazı tipi işleyicisini kullanır. Metin şekillendirme ve sağdan sola yerleşim, çalışma zamanı yazı tiplerini ve App Manifest içindeki Use full text layout system seçeneğini gerektirir. Çevrimdışı yazı tiplerinde önizleme, yazı tipinin Characters ve All Chars ayarlarını dikkate alır.
.fontc dosya biçimi, yazı tipi koleksiyonu (font collection) olarak da bilinir. Çevrimdışı modda bu koleksiyonla yalnızca bir yazı tipi ilişkilendirilir.
Çalışma zamanı yazı tiplerini kullanırken yazı tipi koleksiyonuyla birden fazla yazı tipi dosyasını (.ttf veya .otf) ilişkilendirebilirsiniz.
Bu, bellek kullanımını düşük tutarken farklı dillerdeki birden fazla metni işlemek için bir yazı tipi koleksiyonu kullanmanızı sağlar. Örneğin, Japonca yazı tipini içeren bir koleksiyon yükleyebilir, ardından bu yazı tipini geçerli ana yazı tipiyle ilişkilendirebilir ve sonrasında Japonca yazı tipi koleksiyonunu bellekten kaldırabilirsiniz.
Defold’da kullanmak üzere bir yazı tipi oluşturmak için menüden File ▸ New... seçeneğini, ardından Font seçeneğini seçerek yeni bir yazı tipi dosyası oluşturun. Ayrıca Assets tarayıcısında bir konuma sağ tıklayıp New... ▸ Font seçeneğini seçebilirsiniz.

Yeni yazı tipi dosyasına bir ad verin ve Ok düğmesine tıklayın. Yeni yazı tipi dosyası düzenleyicide açılır.
Kullanmak istediğiniz yazı tipini Assets tarayıcısına sürükleyin ve uygun bir konuma bırakın.
Font özelliğini yazı tipi dosyasına ayarlayın. .ttf veya .otf kaynağı için Mode ve Glyph Generation seçeneklerini seçin, ardından kalan özellikleri gerektiği gibi yapılandırın. Dynamic oluşturma için çalışma zamanı yazı tipi kurulumunu da tamamlayın.

Vector yazı tiplerinde görüntülenen metin boyutunu değiştirmek için Label bileşeninin veya GUI metin düğümünün Font Size özelliğini kullanın. Outline/Shadow Bitmap Size, efekt bit eşlemlerinin çözünürlüğünü görüntülenen metin boyutundan bağımsız olarak kontrol eder.
Bitmap ve SDF yazı tiplerinde oluşturulan glif boyutunu seçmek için yazı tipi kaynağında Size ayarını kullanın. BMFont boyutları kaynak .fnt dosyasından gelir. Bu yazı tiplerinin görüntülenen boyutunu değiştirmek için Label bileşenini veya GUI metin düğümünü ölçekleyin.
.fnt dosyası..ttf veya .otf kaynağı için işleme tekniği: Bitmap, SDF veya Vector. Eski Output Format özelliğinin yerini alır. BMFont kaynaklarında bu özellik gösterilmez..ttf ve .otf kaynaklarında Bitmap modunda gösterilir. SDF, Vector ve BMFont kaynakları için Defold katman düzenini otomatik seçer.
.fnt dosyasından okunur ve burada düzenlenemez..ttf ve .otf kaynaklarında Bitmap modunda gösterilir.Yerleşik Bitmap yazı tipi gölgelendiricisi, hem Single Layer hem de Multi Layer işleme modlarında gölgeleri destekler. Single Layer işleme kullanan ve gölgeye ihtiyaç duymayan oluşturulmuş Bitmap yazı tipleri için özel bir materyal /builtins/fonts/font-singlelayer.fp kullanabilir. SDF ve Vector yazı tipleri modlarıyla eşleşen gölgelendiriciler gerektirir; Yazı tipi materyalleri bölümüne bakın.
font.prewarm_text() ile metni önceden hazırlayabilirsiniz.Yazdırılabilir ASCII karakterleri şunlardır: space ! “ # $ % & ‘ ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
ERROR:RENDER: Out of available cache cells! Consider increasing cache_width or cache_height for the font.).
0 olarak ayarlanırsa önbellek boyutu otomatik olarak belirlenir ve en fazla 2048x4096 boyutuna kadar büyür.
Yazı tipi moduyla eşleşen bir materyal kullanın. Yazı tipi kaynağının Material özelliği GUI metin düğümleri tarafından kullanılır. Label bileşenlerinin, yazı tipiyle eşleşmesi gereken ayrı bir Material özelliği vardır:
| Yazı tipi modu veya kaynağı | GUI metni için yazı tipi materyali | Label bileşeni materyali |
|---|---|---|
| Bitmap | /builtins/fonts/font.material |
/builtins/fonts/label.material |
| SDF | /builtins/fonts/font-df.material |
/builtins/fonts/label-df.material |
| Vector | /builtins/fonts/font-vector.material |
/builtins/fonts/label-vector.material |
BMFont (.fnt) |
/builtins/fonts/font-fnt.material |
/builtins/fonts/label-fnt.material |
Yazı tipi düzenleyicisinde Mode değiştirmek, bu materyallerden biri zaten atanmışsa ilgili yerleşik Bitmap, SDF ve Vector materyalleri arasında geçiş yapar. Özel materyaller otomatik değiştirilmez. Yazı tipini kullanan Label bileşenlerinin Material özelliğini de kontrol edin.
Vektör yazı tipleri, glif yüzlerini eğrilerden işlediği için görüntülenen metin boyutu değiştiğinde keskin kalır. Gliflerini çalışma sırasında oluşturan bir yazı tipi kurmak için:
/fonts/ui.font adlı bir .font kaynağı oluşturun ve Font özelliğinde TrueType veya OpenType kaynağı seçin. Normal metin için yerleşik /builtins/fonts/vera_mo_bd.ttf kullanılabilir./builtins/fonts/font-vector.material yapın. Yeni oluşturulan yazı tipi kaynaklarının varsayılanları bunlardır./builtins/fonts/label-vector.material olarak ayarlayın. Bileşenin veya düğümün Font Size değerini istenen görüntüleme boyutuna ayarlayın.Vektör glif yüzleri eğri dokuları kullanır; ancak etkin dış çizgiler ve gölgeler yine SDF bit eşlem verileri oluşturur ve glif önbelleği doku belleği tüketir. Outline/Shadow Bitmap Size, bu bit eşlem çözünürlüğünü Label veya GUI metin düğümünün Font Size değerinden bağımsız olarak ayarlar. Bu efektlere ihtiyaç duyulmadığında bit eşlem verilerinin oluşturulmasını önlemek için Outline Alpha ve Shadow Alpha değerlerini 0 yapın.
Vektör yazı tipleri, palet renkleri ile doğrusal ve dairesel renk geçişleri dahil COLRv1 renkli emoji işleyebilir. Bitmap ve SDF modları COLRv1 renklerini işlemez. Yukarıdaki Dynamic Vector kurulumunu kullanın, ardından yazı tipi koleksiyonuna yedek olarak bir COLRv1 emoji yazı tipi ekleyin. Normal metin özgün yazı tipini kullanmaya devam eder.
Örneğin COLRv1 Noto Color Emoji yazı tipini projenize /fonts/NotoColorEmoji-Regular.ttf adıyla kopyalayın. COLRv1 sürümünü seçin: diğer emoji yazı tipleri, dosya adları .ttf ile bitse bile farklı bir renk biçimi kullanabilir.
game.project dosyasında Project ▸ Custom Resources alanına /fonts/NotoColorEmoji-Regular.ttf ekleyin. Başka özel kaynak yoksa ayar şöyledir:
[project]
custom_resources = /fonts/NotoColorEmoji-Regular.ttf
Lua içinde yazılmış bir yazı tipi yolu, yazı tipi dosyasının pakete eklenmesini sağlamaz. Custom Resources, bu kaynak yazı tipini kaynak sistemi üzerinden yükleyen font.add_font() işlevine sunar. Paketten yüklerken kaynak yazı tipinin dize yolunu verin.
Yedek yazı tipini paylaşılan yazı tipi kaynağı başına bir kez ekleyin. Değişiklik bu yazı tipini kullanan her Label ve GUI metin düğümünü etkiler; aynı yedek yazı tipini iki kez eklemek hata verir. Aynı .font ile hem Label örneğini hem de GUI örneğini kullanıyorsanız, iki örnekten biri metni önceden hazırlamadan veya göstermeden önce yedek yazı tipinin bir kez eklenmesini sağlayacak şekilde başlangıç işlemlerini düzenleyin. Örnekler, yedek yazı tipini ekledikten sonra metnin tamamını önceden hazırlar ve geri çağırım başarılı olduğunda gösterir.
Uzaklık alanı yazı tipleri, dokuda bit eşlem verileri yerine glifin kenarına olan uzaklığı saklar. Motor yazı tipini işlerken uzaklık verilerini yorumlamak ve bunları kullanarak glifi çizmek için özel bir gölgelendirici gerekir. Uzaklık alanı yazı tipleri, bit eşlem yazı tiplerinden daha fazla kaynak tüketir ancak boyutlandırmada daha fazla esneklik sağlar.

Mode alanında SDF, Glyph Generation alanında Static veya Dynamic seçin. Yazı tipi için /builtins/fonts/font-df.material, Label bileşenleri için /builtins/fonts/label-df.material veya uzaklık alanı verilerini işleyen özel materyaller kullanın.
Defold, üretilen bit eşlemlere ek olarak önceden hazırlanmış bit eşlem “BMFont” biçimindeki yazı tiplerini de destekler. Bu yazı tipleri, tüm glifleri içeren bir PNG yazı tipi sayfasından oluşur. Ayrıca bir .fnt dosyası, her glifin sayfanın neresinde bulunduğunu, boyutunu ve karakter çifti aralığı (kerning) bilgilerini içerir. (Defold’un, Phaser ve bazı diğer araçların kullandığı .fnt biçiminin XML sürümünü desteklemediğini unutmayın.)
Bu tür yazı tipleri, TrueType veya OpenType yazı tipi dosyalarından üretilen bit eşlem yazı tiplerine göre performans artışı sağlamaz; ancak doğrudan görüntü içinde istediğiniz grafikleri, renklendirmeleri ve gölgeleri barındırabilir.
Üretilen .fnt ve .png dosyalarını Defold projenize ekleyin. Bu dosyalar aynı klasörde bulunmalıdır. Yeni bir yazı tipi dosyası oluşturun ve Font özelliğini .fnt dosyasına ayarlayın. Defold, sağlanan bit eşlemi kullanır ve boyutunu .fnt dosyasından okur. BMFont kaynaklarında Mode ve Glyph Generation gösterilmez.
BMFont oluşturmak için uygun dosyaları üretebilen bir araç kullanmanız gerekir. Çeşitli seçenekler bulunur:

Yazı tipinin Material özelliğini /builtins/fonts/font-fnt.material olarak ayarlayın. Label bileşenleri için /builtins/fonts/label-fnt.material kullanın.
Genel olarak bit eşlem yazı tipleri, yazı tipi ölçeklenmeden işlendiğinde en iyi sonucu verir. Ekrana işlenmeleri, uzaklık alanı yazı tiplerine göre daha hızlıdır.
Uzaklık alanı yazı tipleri büyütüldüğünde çok iyi sonuç verir. Bit eşlem yazı tipleri ise yalnızca piksellerden oluşan görüntüler olduğundan yazı tipi ölçeklenip büyütüldükçe pikseller de büyür ve bloklu görüntü kusurları oluşur. Aşağıdaki örnekte, 48 piksel boyutundaki bir yazı tipi 4 kat büyütülmüştür.

Küçültme sırasında GPU, bit eşlem dokularını iyi bir sonuç verecek şekilde ve verimli olarak küçültebilir ve kenarlarını yumuşatabilir. Bit eşlem yazı tipi, rengini uzaklık alanı yazı tipinden daha iyi korur. Aşağıda, aynı örnek yazı tipinin 48 piksel boyutundan 1/5’ine küçültülmüş halinin yakınlaştırılmış görünümü bulunur:

Uzaklık alanı yazı tiplerinin, gliflerin eğrilerini ifade edebilecek uzaklık bilgilerini barındıracak kadar büyük bir hedef boyutta işlenmesi gerekir. Aşağıdaki, yukarıdakiyle aynı yazı tipidir; ancak 18 piksel boyutundadır ve 10 kat büyütülmüştür. Bu boyutun, bu yazı tipinin şekillerini kodlamak için çok küçük olduğu açıktır:

Gölge veya dış çizgi desteği istemiyorsanız bunlara ait alfa değerlerini sıfıra ayarlayın. Aksi takdirde gölge ve dış çizgi verileri yine üretilir ve gereksiz yere bellek tüketir. Vector modunda her iki efekti de devre dışı bırakmak, bit eşlem verilerinin oluşturulmasını önler; glif yüzleri eğri verilerini kullanmaya devam eder.
Bitmap ve SDF yazı tipi kaynakları çalışma sırasında bir glif önbelleği dokusu ve yazı tipi verileri kullanır. Vektör yazı tipleri glif yüzlerini eğri verileri olarak saklar ve etkin dış çizgi ve gölge efektleri için bit eşlem önbelleği kullanır. Aşağıda açıklanan doku düzeni Bitmap ve SDF yazı tipleri için geçerlidir.
Çalışma sırasında metin işlenirken motor, hangi gliflerin doku önbelleğinde bulunduğunu kontrol etmek için önce işlenecek glifler üzerinde dolaşır. Glif doku önbelleğinde bulunmayan her glif, yazı tipi verilerinde saklanan bit eşlem verilerinden dokuya aktarım yapılmasını tetikler.
Her glif, önbelleğe yazı tipinin taban çizgisine göre yerleştirilir. Bu, bir gölgelendiricide glifin karşılık gelen önbellek hücresi içindeki yerel doku koordinatlarının hesaplanmasını sağlar. Böylece renk geçişleri veya doku kaplamaları gibi belirli metin efektlerini dinamik olarak elde edebilirsiniz. Motor, önbellekle ilgili ölçüleri gölgelendiriciye texture_size_recip adlı özel bir gölgelendirici sabiti aracılığıyla sunar. Bu sabitin vektör bileşenleri aşağıdaki bilgileri içerir:
texture_size_recip.x, önbellek genişliğinin çarpmaya göre tersidirtexture_size_recip.y, önbellek yüksekliğinin çarpmaya göre tersidirtexture_size_recip.z, önbellek hücresi genişliğinin önbellek genişliğine oranıdırtexture_size_recip.w, önbellek hücresi yüksekliğinin önbellek yüksekliğine oranıdırÖrneğin, bir gölgelendirici parçasında renk geçişi oluşturmak için şunu yazmanız yeterlidir:
float horizontal_gradient = fract(var_texcoord0.y / texture_size_recip.w);
Gölgelendirici uniform parametreleri hakkında daha fazla bilgi için Gölgelendirici kılavuzuna bakın.
Çalışma sırasında oluşturma, yazı tipi kaynağı başına yapılandırılır:
.font kaynağını açın ve TrueType (.ttf) veya OpenType (.otf) kaynağı seçin.font.prewarm_text() kullanın ve göstermeden önce geri çağırımını bekleyin.Yeni yazı tipi kaynakları zaten Vector modunu ve Dynamic oluşturmayı kullanır; ancak yine de yukarıdaki App Manifest yapılandırmasını gerektirir.
Dynamic yazı tipleri, yüklendiklerinde Prewarm Text için gereken glifleri oluşturur. Alan, yerleşimi yapılacak metin olarak yorumlandığından önbellek, metnin gerektirdiği glifler için hazırlanır. Dynamic yazı tiplerinde All Chars kullanılamaz.
Dynamic yazı tipi için font.prewarm_text(font_collection, text, callback) çağırabilirsiniz. Geri çağırım, tüm eksik gliflerin önbelleğe eklendiğini ve metni güvenle gösterebileceğinizi bildirir. Bu işlev Static yazı tipleriyle kullanılamaz.
Dynamic yazı tiplerinde, bir yazı tipi koleksiyonuna kaynak yazı tipi (.ttf veya .otf) eklemek veya koleksiyondan kaldırmak mümkündür.
Bu, büyük bir yazı tipi farklı karakter kümeleri (ör. CJK) için birden fazla dosyaya bölündüğünde kullanışlıdır.
Bir yazı tipi koleksiyonuna yazı tipi eklemek, tüm glifleri otomatik olarak yüklemez veya işlemez.
function init(self)
-- Get the target font collection.
self.font_collection = go.get("#label", "font")
-- Get the first font assigned to the selected language collection.
local language_collection = go.get("localization_japanese#label", "font")
local font_info = font.get_info(language_collection)
self.language_ttf_hash = font_info.fonts[1].path_hash
-- Associate it with the target collection and increase its reference count.
font.add_font(self.font_collection, self.language_ttf_hash)
end
function final(self)
-- Remove the association and release the font reference.
font.remove_font(self.font_collection, self.language_ttf_hash)
end
Çalışma zamanı yazı tipiyle bir metni düzgün gösterebilmek için gliflerin çözümlenmesi gerekir. font.prewarm_text() işlevi bunu sizin için yapar.
Bu işlem eşzamansızdır. İşlem tamamlanıp geri çağırım alındığında, söz konusu glifleri içeren herhangi bir iletiyi güvenle gösterebilirsiniz.
Glif önbelleği dolarsa önbellekteki en eski glif çıkarılır.
font.prewarm_text(self.font_collection, info.text, function (self, request_id, result, err)
if result then
print("PREWARMING OK!")
go.set(self.label, "text", info.text)
else
print("Error prewarming text:", err)
end
end)