Özel Yazı Tipi Koleksiyonları (Windows 7/8)
DirectWrite, IDWriteFactory::GetSystemFontCollection yöntemini kullanarak sistem yazı tipi koleksiyonuna erişim sağlar. Bu, en sık kullanılan yazı tipi koleksiyonudur. Ancak bazı uygulamaların, dahil edilen yazı tipi dosyaları veya uygulamaya eklenmiş yazı tipi dosyaları gibi sistemde yüklü olmayan yazı tiplerini kullanması gerekir.
İstediğiniz yazı tipleri sistem yazı tipi koleksiyonunda değilse, idwriteFontCollectiontüretilmiş özel bir yazı tipi koleksiyonu oluşturabilirsiniz.
Bu genel bakış aşağıdaki bölümlerden oluşur:
- Yazı Tipi Koleksiyonu Yükleyicisi kaydetme ve kaydını kaldırma
- IDWriteFontCollectionLoader
- IDWriteFontFileEnumerator
- CreateCustomFontFileReference
- IDWriteFontFileLoader
- IDWriteFontFileStream
Yazı Tipi Koleksiyonu Yükleyicisini kaydetme ve kaydını kaldırma
IDWriteFactory::RegisterFontCollectionLoader yöntemini kullanarak ve uygulama tarafından tek bir nesne olarak uygulanan IDWriteFontCollectionLoader arabirimi geçirerek bir yazı tipi koleksiyonu yükleyicisi kaydedersiniz. Özel koleksiyon istendiğinde bu nesne yazı tiplerini yükler. Hem sistem yazı tipi koleksiyonu hem de özel yazı tipi koleksiyonları önbelleğe alınır, bu nedenle yazı tipleri yalnızca bir kez yüklenir.
Yazı tipi koleksiyonu yükleyicisi, IDWriteFactory::UnregisterFontCollectionLoaderkullanılarak sonunda kaldırılmalıdır.
Not
Yazı tipi koleksiyonu yükleyicisinin kaydedilmesi başvuru sayısına eklenir; unregisterFontCollectionLoaderyıkıcının içinden çağırmayın; aksi takdirde koleksiyon yükleyici nesnesi hiçbir zaman kaydedilmez.
IDWriteFontCollectionLoader
IDWriteFactory::CreateCustomFontCollection kullanarak ve bunu uygulama tanımlı bir anahtar geçirerek bir IDWriteFontFileEnumerator nesnesi oluşturursunuz. Anahtar, geçersiz bir işaretçidir ve veri türü, biçimi ve anlamı uygulama tarafından tanımlanır ve yazı tipi sistemine göre opaktır.
Anahtar herhangi bir şey olabilir ancak DirectWrite her anahtarın her ikisi de olmasını gerektirir:
- Yükleyici kapsamındaki tek bir yazı tipi koleksiyonuna özgü.
- Yükleyicinin kaydı fabrika kullanılarak kaldırılana kadar geçerlidir.
CreateCustomFontCollection yöntemi çağrıldığında, DirectWrite uygulama tarafından tek bir nesne olarak uygulanan IDWriteFontCollectionLoader arabirimine geri çağrır. IDWriteFontCollectionLoader::CreateEnumeratorFromKey geri çağırma yöntemi, Uygulama tarafından uygulanan IDWriteFontFileEnumerator nesnesini almak için DirectWrite tarafından kullanılır. Koleksiyonu oluşturmak için kullanılan IDWriteFactory nesnesi bu yönteme geçirilir ve koleksiyona eklenecek IDWriteFontFile nesnelerini oluşturmak için yazı tipi dosyası numaralandırıcısı tarafından kullanılmalıdır.
Bu yönteme geçirilen anahtar yazı tipi koleksiyonunu tanımlar ve CreateCustomFontCollectiongeçirilen anahtarla aynıdır.
IDWriteFontFileEnumerator
Uygulama tanımlı IDWriteFontFileEnumerator nesnesi, CreateEnumeratorFromKey yöntemi tarafından oluşturulan bir koleksiyondaki yazı tipi dosyalarını listelemek ve her dosya için bir IDWriteFontFile nesnesi oluşturmak için kullanılır. IDWriteFontFileEnumerator::MoveNext yöntemi konumu bir sonraki yazı tipi dosyasına değiştirir. Konumunda bir dosya varsa, hasCurrentFile true olarak ayarlar. Aksi takdirde FALSE olarak ayarlanır ve yöntemi S_OKdöndürür.
Not
Yazı tipi dosyası numaralandırıcısının ilk öğeden önce konumlandırılmış olarak başlaması ve moveNextilk çağrıda gelişmiş olması gerekir.
IDWriteFontFilenesnesi, idwriteFontFileEnumerator::GetCurrentFontFileyöntemi tarafındançıktısını alır. MoveNext henüz çağrılmadığından veya HasCurrentFile false olarak ayarlandığından geçerli konumda yazı tipi dosyası yoksa, GetCurrentFontFile E_FAILdöndürür.
CreateCustomFontFileReference
getCurrentFontFiletarafından IDWriteFontFile nesne çıkışı, IDWriteFactory::CreateCustomFontFileReferenceçağrılarak oluşturulabilir. Yazı tipi dosyası başvuru anahtarı belirli bir yazı tipi dosyası başvuruyu tanımlar ve dosyayı yükleyecek yazı tipi dosya yükleyicisinde benzersiz olmalıdır.
IDWriteFontFileLoader
CreateCustomFontFileReference yöntemi, yazı tipini yüklemek için kullanılan uygulama tarafından uygulanan IDWriteFontFileLoader nesnesini alır. IDWriteFontFileLoader::CreateStreamFromKey geri çağırma yöntemine anahtar geçirilir ve bir IDWriteFontFileStream nesnesi çıkarılır.
IDWriteFontFileStream
Uygulama tarafından uygulanan IDWriteFontFileStream nesnesi, özel bir yazı tipi dosya yükleyicisinden yazı tipi dosyası başvurusu için yazı tipi dosyası verilerini sağlar. Dosya boyutu ve son yazma zamanıyla birlikte, IDWriteFontFile nesnesine derlenecek dosya parçalarını almak için bir yöntem (ReadFileFragment) sağlar.
Not
ReadFileFragment uygulamaları, istenen parça dosya sınırlarının dışındaysa bir hata döndürmelidir.
IDWriteFontFileStream, yerel sabit disk sürücüsü veya ekli kaynaklar gibi her yerden yazı tipi dosyası içeriğini alabilir.