Bagikan melalui


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
Warna Campuran
(Penpaduan alfa linier)
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).

Warna Campuran
(Perpaduan alfa yang dikoreksi gamma)
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.)

Jika cf> cb,
c = cb + pow(b[k], (1 / gamma)) * (cf - cb)
Jika cf< cb,
c = cb + (1 - pow(1 - b[k], 1 / gamma)) * (cf - cb)

Dalam rumus ini, gamma = 2,33, dan b[k] adalah pecahan penpaduan kth , diperoleh sebagai berikut:

b[k] = 0, untuk k = 0, dan
b[k] = (k + 1) / 16, untuk k = 1, 2, ..., 15

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)

Lihat juga

DrvDestroyFont

DrvGetGlyphMode

DrvQueryFont

DrvQueryTrueTypeOutline

FONTOBJ_cGetAllGlyphHandles

FONTOBJ_cGetGlyphs

FONTOBJ_pifi

FONTOBJ_pxoGetXform

FONTOBJ_vGetInfo

IFIMETRICS