Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
DirectWrite menyediakan akses ke koleksi font sistem dengan menggunakan metodeIDWriteFactory::GetSystemFontCollection. Ini adalah koleksi font yang paling sering digunakan. Namun beberapa aplikasi harus menggunakan font yang tidak diinstal pada sistem, seperti dari file font yang disertakan atau file font yang disematkan dalam aplikasi.
Jika font yang Anda inginkan tidak ada dalam koleksi font sistem, Anda dapat membuat koleksi font kustom yang berasal dari IDWriteFontCollection.
Gambaran umum ini terdiri dari bagian-bagian berikut:
- Mendaftarkan dan membatalkan pendaftaran Pemuat Koleksi Font
- IDWriteFontCollectionLoader
- IDWriteFontFileEnumerator
- CreateCustomFontFileReference
- IDWriteFontFileLoader
- IDWriteFontFileStream
Mendaftarkan dan membatalkan pendaftaran Pemuat Koleksi Font
Anda mendaftarkan pemuat koleksi font dengan menggunakan metode IDWriteFactory::RegisterFontCollectionLoader dan meneruskannya antarmuka IDWriteFontCollectionLoader yang diterapkan oleh aplikasi sebagai objek singleton. Objek ini akan memuat font ketika koleksi kustom diminta. Koleksi font sistem dan koleksi font kustom di-cache, sehingga font hanya dimuat satu kali.
Pemuat koleksi font harus dibongkar pada akhirnya dengan menggunakan IDWriteFactory::UnregisterFontCollectionLoader.
Nota
Mendaftarkan pemuat koleksi font ditambahkan ke jumlah referensi; jangan memanggil UnregisterFontCollectionLoader dari dalam destructor atau objek pemuat koleksi tidak akan pernah dibatalkan pendaftarannya.
IDWriteFontCollectionLoader
Anda membuat objekIDWriteFontFileEnumerator dengan menggunakan IDWriteFactory::CreateCustomFontCollection dan meneruskannya kunci yang ditentukan aplikasi. Kuncinya adalah penunjuk kekosongan dan jenis data, format, dan makna didefinisikan oleh aplikasi dan buram ke sistem font.
Sedangkan kuncinya bisa apa saja, DirectWrite mengharuskan setiap kunci adalah:
- Unik untuk koleksi font tunggal dalam cakupan loader.
- Valid hingga loader tidak terdaftar menggunakan pabrik.
Ketika metodeCreateCustomFontCollection dipanggil, DirectWrite memanggil kembali ke antarmukaIDWriteFontCollectionLoaderyang diimplementasikan sebagai objek singleton oleh aplikasi. Metode panggilan balik IDWriteFontCollectionLoader::CreateEnumeratorFromKey digunakan oleh DirectWrite untuk mengambil objekIDWriteFontFileEnumeratoryang diterapkan oleh aplikasi. Objek IDWriteFactory yang digunakan untuk membuat koleksi diteruskan ke metode ini dan harus digunakan oleh enumerator file font untuk membuat objekIDWriteFontFileuntuk disertakan dalam koleksi.
Kunci yang diteruskan ke metode ini mengidentifikasi koleksi font dan merupakan kunci yang sama yang diteruskan ke CreateCustomFontCollection.
IDWriteFontFileEnumerator
ObjekIDWriteFontFileEnumerator yang ditentukan aplikasi yang dibuat oleh metodeCreateEnumeratorFromKey digunakan untuk menghitung file font dalam koleksi, membuat objekIDWriteFontFileuntuk setiap file. Metode IDWriteFontFileEnumerator::MoveNext mengubah posisi ke file font berikutnya. Jika ada file pada posisi tersebut, file akan mengatur hasCurrentFile ke TRUE. Jika tidak, ini akan diatur ke FALSE dan metode akan mengembalikan S_OK.
Nota
Enumerator file font harus mulai diposisikan sebelum elemen pertama dan tingkat lanjut pada panggilan pertama ke MoveNext.
ObjekIDWriteFontFiledihasilkan oleh metode IDWriteFontFileEnumerator::GetCurrentFontFile. Jika tidak ada file font pada posisi saat ini, karena MoveNext belum dipanggil atau hasCurrentFile diatur ke FALSE, maka GetCurrentFontFile akan mengembalikan E_FAIL.
CreateCustomFontFileReference
Output objekIDWriteFontFile olehGetCurrentFontFile dapat dibuat dengan memanggil IDWriteFactory::CreateCustomFontFileReference. Kunci referensi file font mengidentifikasi referensi file font tertentu dan harus unik dalam pemuat file font yang akan memuat file.
IDWriteFontFileLoader
Metode CreateCustomFontFileReference mengambil objekIDWriteFontFileLoaderyang diimplementasikan oleh aplikasi yang digunakan untuk memuat font. Metode panggilan balik IDWriteFontFileLoader::CreateStreamFromKey diteruskan kunci dan menghasilkan objek IDWriteFontFileStream.
IDWriteFontFileStream
Objek IDWriteFontFileStream yang diimplementasikan aplikasi menyediakan data file font untuk referensi file font dari pemuat file font kustom. Bersama dengan ukuran file dan waktu tulis terakhir, ia menyediakan metode (ReadFileFragment) untuk mengambil fragmen file yang akan dikompilasi ke dalam objekIDWriteFontFile.
Nota
implementasi ReadFileFragment harus mengembalikan kesalahan jika fragmen yang diminta berada di luar batas file.
IDWriteFontFileStream bisa mendapatkan konten file font dari mana saja, seperti hard disk drive lokal, atau sumber daya yang disematkan.