Struktur FONTOBJ (winddi.h)
Struktur FONTOBJ digunakan untuk memberikan akses driver ke informasi tentang instans font tertentu.
Sintaks
typedef struct _FONTOBJ {
ULONG iUniq;
ULONG iFace;
ULONG cxMax;
FLONG flFontType;
ULONG_PTR iTTUniq;
ULONG_PTR iFile;
SIZE sizLogResPpi;
ULONG ulStyleSize;
PVOID pvConsumer;
PVOID pvProducer;
} FONTOBJ;
Anggota
iUniq
Menentukan realisasi font yang berbeda. Nilai ini dapat digunakan oleh driver untuk mengidentifikasi font GDI yang mungkin telah di-cache atau untuk mengidentifikasi realisasi driver dari font-nya sendiri. Jika anggota ini nol untuk font GDI, font tidak boleh di-cache.
iFace
Menentukan indeks perangkat untuk font perangkat, yang didaftarkan oleh panggilan ke DrvQueryFont. Jika font adalah font GDI, anggota ini hanya memiliki arti untuk GDI, dan driver harus mengabaikannya.
cxMax
Menentukan lebar, dalam piksel, dari glyph terbesar dalam font yang ditentukan.
flFontType
Adalah nilai yang menentukan jenis font. Anggota ini bisa menjadi kombinasi dari bendera yang tercantum dalam tabel berikut. (Namun, perhatikan bahwa FO_GRAY16 dan FO_NOGRAY16 saling eksklusif.)
Bendera | Makna |
---|---|
FO_CFF | Font OpenType Postscript. |
FO_DBCS_FONT | Font mendukung halaman kode DBCS. |
FO_EM_HEIGHT | Bendera internal driver TrueType. |
FO_GRAY16 | Bitmap font adalah nilai campuran (alfa) empat bit per piksel. |
FO_MULTIPLEMASTER | Font Multi Master (Type1 atau OpenType). |
FO_NOGRAY16 | Menunjukkan bahwa driver font tidak dapat (atau tidak akan) skala abu-abu realisasi font tertentu. |
FO_POSTSCRIPT | Font postscript (Type1 atau OpenType). |
FO_SIM_BOLD | Font tebal yang disimulasikan driver. |
FO_SIM_ITALIC | Font miring yang disimulasikan driver. |
FO_TYPE_DEVICE | Font khusus perangkat. |
FO_TYPE_OPENTYPE | Font OpenType. |
FO_TYPE_RASTER | Font bitmap. |
FO_TYPE_TRUETYPE | Font TrueType. |
FO_VERT_FACE | Font vertikal. |
Jika bendera FO_RASTER diatur, glyph yang ditulis ke struktur STROBJ yang ditentukan adalah bitmap, jika tidak, mereka adalah penunjuk ke struktur PATHOBJ. Jika gambar glyph dikembalikan dalam bentuk struktur PATHOBJ, driver harus memeriksa bendera FM_INFO_TECH_STROKE anggota flInfo dari struktur IFIMETRICS terkait. Jika bendera tersebut diatur, jalur harus dibelai, jika tidak, jalur harus diisi menggunakan konvensi mode alternatif.
Jika bendera FO_GRAY16 diatur, maka bitmap font adalah empat nilai perpaduan bit per piksel (alfa). Nilai nol berarti bahwa piksel yang dihasilkan harus memiliki warna yang sama dengan latar belakang. Jika nilai alfa adalah k, maka tabel berikut menjelaskan atribut piksel yang dihasilkan, menggunakan pencamuran alfa linier, atau perpaduan alfa yang dikoreksi gamma. Dalam kedua metode, warna latar depan dan latar belakang masing-masing, cf dan cb.
Atribut Pixel | Deskripsi |
---|---|
|
Perpaduan alfa linier menghasilkan warna campuran yang merupakan kombinasi linier dari warna latar depan dan latar belakang.
c = b * cf + (1 - b) * cb Pecahan campuran, b, diperoleh sebagai berikut: b = k / 15, untuk k = 0, 1, 2, ..., 15 Catatan: warna latar depan dan latar belakang mencakup ketiga saluran warna (R, G, B). |
|
Perpaduan alfa yang dikoreksi Gamma menghasilkan warna campuran dengan menaikkan variabel yang bergantung pada nilai alfa ke daya tetap.
Dua rumus disediakan: satu harus digunakan ketika warna latar depan secara numerik lebih besar dari warna latar belakang; yang lain harus digunakan dalam kasus yang berlawanan. (Ketika warna latar depan dan latar belakang sama, kedua rumus menyederhanakan ke c = cb.)
Dalam rumus ini, gamma = 2,33, dan b[k] adalah pecahan penpaduan kth , diperoleh sebagai berikut:
Catatan: tidak seperti perpaduan alfa linier, rumus ini harus diterapkan ke masing-masing dari tiga saluran warna (R, G, B). |
GDI mengatur bendera FO_GRAY16 pada entri ke fungsi DrvQueryFontData saat meminta agar font diskalakan ke salah satu dari 16 nilai. Jika driver font tidak dapat menskalakan realisasi font tertentu, maka penyedia font menghapus bendera FO_GRAY16 dan mengatur bendera FO_NOGRAY16 untuk memberi tahu GDI bahwa permintaan penskalaan abu-abu tidak akan terpenuhi.
iTTUniq
Menentukan file TrueType terkait. Dua realisasi ukuran titik terpisah dari wajah font TrueType akan memiliki struktur FONTOBJ yang memiliki nilai iTTUniq yang sama, tetapi akan memiliki nilai iUniq yang berbeda. Hanya jenis font TrueType yang dapat memiliki anggota iTTUniq bukan nol. Untuk informasi selengkapnya, lihat flFontType.
iFile
Penunjuk ke nilai yang ditentukan driver untuk font perangkat yang sudah dimuat. Jika font adalah font GDI, maka anggota ini digunakan secara internal untuk mengidentifikasi font dan harus diabaikan.
sizLogResPpi
Menentukan resolusi perangkat yang fontanya direalisasikan.
ulStyleSize
Menentukan ukuran gaya instans font, dalam poin.
pvConsumer
Arahkan ke data yang dialokasikan konsumen yang terkait dengan instans font ini. Konsumen adalah driver yang menerima informasi glyph sebagai input untuk menghasilkan output teks. Hanya konsumen font yang dapat mengubah anggota ini. Konsumen font ini dapat menyimpan informasi apa pun di lokasi yang ditujukan oleh anggota ini. Mesin tidak akan memodifikasi anggota ini. Anggota pvConsumer dijamin null saat pertama kali struktur FONTOBJ diteruskan ke konsumen.
pvProducer
Penunjuk ke data yang dialokasikan produsen yang terkait dengan instans font ini. Produsen adalah driver yang dapat menghasilkan informasi glyph sebagai output; ini termasuk metrik glyph, bitmap, dan kerangka. Hanya produsen font yang dapat mengubah anggota ini. Produsen font ini dapat menyimpan informasi apa pun di lokasi yang ditujukan oleh anggota ini. Mesin tidak akan memodifikasi anggota ini. Anggota pvProducer dijamin null saat pertama kali struktur FONTOBJ diteruskan ke produsen.
Keterangan
Sebagai akselerator, driver diizinkan untuk mengakses anggota publik struktur FONTOBJ.
Pengemudi dapat menjadi produsen dan konsumen. Misalnya, driver printer dapat bertindak sebagai produsen saat memproses panggilan ke fungsi DrvQueryFontData yang disediakan driver untuk menyediakan metrik glyph, dan kemudian bertindak sebagai konsumen saat memproses panggilan ke fungsi DrvTextOut yang disediakan driver.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | winddi.h (termasuk Winddi.h) |