Bagikan melalui


Struktur LOGFONTA (shtypes.h)

Menentukan atribut font.

Sintaks

typedef struct tagLOGFONTA {
  LONG lfHeight;
  LONG lfWidth;
  LONG lfEscapement;
  LONG lfOrientation;
  LONG lfWeight;
  BYTE lfItalic;
  BYTE lfUnderline;
  BYTE lfStrikeOut;
  BYTE lfCharSet;
  BYTE lfOutPrecision;
  BYTE lfClipPrecision;
  BYTE lfQuality;
  BYTE lfPitchAndFamily;
  CHAR lfFaceName[32];
} LOGFONTA;

Anggota

lfHeight

Jenis: LONG

Menentukan tinggi, dalam unit logis, dari sel karakter font atau karakter. Nilai tinggi karakter (juga dikenal sebagai tinggi em) adalah nilai tinggi sel karakter dikurangi nilai internal di depannya. Pemeta font menginterpretasikan nilai yang ditentukan dalam lfHeight dengan cara berikut.

Nilai Deskripsi
> 0 Pemeta font mengubah nilai ini menjadi unit perangkat dan mencocokkannya dengan tinggi sel font yang tersedia.
0 Pemeta font menggunakan nilai tinggi default saat mencari kecocokan.
< 0 Pemeta font mengubah nilai ini menjadi unit perangkat dan mencocokkan nilai absolutnya dengan tinggi karakter font yang tersedia.
 

Untuk semua perbandingan tinggi, pemeta font mencari font terbesar yang tidak melebihi ukuran yang diminta.

Pemetaan ini terjadi ketika font digunakan untuk pertama kalinya.

Untuk mode pemetaan MM_TEXT, Anda dapat menggunakan rumus berikut untuk menentukan tinggi font dengan ukuran titik tertentu.

lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

di mana MulDiv didefinisikan sebagai berikut:

#define MulDiv(a,b,c)    (((a)*(b))/(c))

lfWidth

Jenis: LONG

Menentukan lebar rata-rata, dalam satuan logis, karakter dalam font. Jika lfWidth bukan nol, rasio aspek perangkat dicocokkan dengan rasio aspek digitalisasi font yang tersedia untuk menemukan kecocokan terdekat, ditentukan oleh nilai absolut perbedaan.

lfEscapement

Jenis: LONG

Menentukan sudut, dalam sepuluh derajat, antara vektor pelarian dan sumbu x perangkat. Vektor escapement sejajar dengan garis dasar baris teks.

Anggota lfEscapement menentukan pelarian dan orientasi. Anda harus mengatur lfEscapement dan lfOrientation ke nilai yang sama.

lfOrientation

Jenis: LONG

Menentukan sudut, dalam sepuluh derajat, antara garis dasar setiap karakter dan sumbu x perangkat.

lfWeight

Jenis: LONG

Menentukan bobot font dalam rentang 0 hingga 1000. Misalnya, 400 normal dan 700 tebal. Jika nilai ini nol, bobot default akan digunakan.

Nilai berikut didefinisikan dalam Wingdi.h untuk kenyamanan.

Nilai Beban
FW_DONTCARE 0
FW_THIN 100
FW_EXTRALIGHT 200
FW_ULTRALIGHT 200
FW_LIGHT 300
FW_NORMAL 400
FW_REGULAR 400
FW_MEDIUM 500
FW_SEMIBOLD 600
FW_DEMIBOLD 600
FW_BOLD 700
FW_EXTRABOLD 800
FW_ULTRABOLD 800
FW_HEAVY 900
FW_BLACK 900

lfItalic

Jenis: BYTE

TRUE untuk menentukan font miring.

lfUnderline

Jenis: BYTE

TRUE untuk menentukan font bergaris bawah.

lfStrikeOut

Jenis: BYTE

TRUE untuk menentukan font coretan.

lfCharSet

Jenis: BYTE

Menentukan set karakter. Nilai berikut telah ditentukan sebelumnya:

ANSI_CHARSET BALTIC_CHARSET
CHINESEBIG5_CHARSET DEFAULT_CHARSET
EASTEUROPE_CHARSET GB2312_CHARSET
GREEK_CHARSET HANGUL_CHARSET
MAC_CHARSET OEM_CHARSET
RUSSIAN_CHARSET SHIFTJIS_CHARSET
SYMBOL_CHARSET TURKISH_CHARSET
 
Windows Korea
JOHAB_CHARSET
 
Middle-Eastern Windows
HEBREW_CHARSET
ARABIC_CHARSET
 
Thai Windows
THAI_CHARSET
 

Nilai OEM_CHARSET menentukan kumpulan karakter yang bergantung pada sistem operasi.

DEFAULT_CHARSET diatur ke nilai berdasarkan lokal sistem saat ini. Misalnya, ketika lokal sistem adalah bahasa Inggris (Amerika Serikat), nilainya ANSI_CHARSET.

Font dengan set karakter lain mungkin ada di sistem operasi. Jika aplikasi menggunakan font dengan kumpulan karakter yang tidak diketahui, aplikasi tidak boleh mencoba menerjemahkan atau menginterpretasikan string yang dirender dengan font tersebut.

Anggota ini penting dalam proses pemetaan font. Untuk memastikan hasil yang konsisten, tentukan kumpulan karakter tertentu. Jika Anda menentukan nama typeface di anggota lfFaceName , pastikan nilai lfCharSet cocok dengan kumpulan karakter typeface yang ditentukan dalam lfFaceName.

lfOutPrecision

Jenis: BYTE

Menentukan presisi output. Presisi output menentukan seberapa dekat output harus cocok dengan tinggi, lebar, orientasi karakter, escapement, pitch, dan jenis font font yang diminta. Ini bisa menjadi salah satu nilai berikut yang didefinisikan dalam Wingdi.h:

Nilai Deskripsi
OUT_DEFAULT_PRECIS Menentukan perilaku pemeta font default.
OUT_RASTER_PRECIS Menginstruksikan pemeta font untuk memilih font raster ketika sistem berisi beberapa font dengan nama yang sama.
OUT_STRING_PRECIS Nilai ini tidak digunakan oleh pemeta font, tetapi dikembalikan ketika font raster dijumlahkan.

lfClipPrecision

Jenis: BYTE

Menentukan presisi kliping. Presisi kliping menentukan cara mengklip karakter yang sebagian berada di luar wilayah kliping. Ini bisa berupa satu atau beberapa nilai berikut yang ditentukan dalam Wingdi.h:

Nilai Deskripsi
CLIP_DEFAULT_PRECIS Menentukan perilaku kliping default.
CLIP_CHARACTER_PRECIS Tidak digunakan.
CLIP_STROKE_PRECIS Tidak digunakan oleh pemeta font, tetapi dikembalikan ketika font raster, vektor, atau TrueType dijumlahkan.

lfQuality

Jenis: BYTE

Menentukan kualitas output. Kualitas output menentukan seberapa hati-hati GDI harus mencoba mencocokkan atribut logical-font dengan font fisik aktual. Ini bisa menjadi salah satu nilai berikut yang didefinisikan dalam Wingdi.h:

Nilai Deskripsi
ANTIALIASED_QUALITY Mengaktifkan antialias untuk font. Pengandar tampilan harus mendukung teks yang diantisipasi agar setelan ini berfungsi.
NONANTIALIASED_QUALITY Memaksa penggunaan kualitas draf ketika subkuntang registri HKEY_LOCAL_MACHINE\System\GDI\Fontsmoothing ada.
CLEARTYPE_COMPAT_QUALITY Mengaktifkan teks ClearType untuk font menggunakan lebar yang kompatibel. Lebar yang kompatibel menghasilkan teks yang memiliki spasi yang sama dengan teks non-ClearType.
CLEARTYPE_QUALITY Mengaktifkan teks ClearType untuk font. Pengandar tampilan harus mendukung teks ClearType agar pengaturan ini berfungsi.
DEFAULT_QUALITY Tampilan font tidak masalah.
DRAFT_QUALITY Untuk font raster GDI, penskalaan diaktifkan, yang berarti bahwa lebih banyak ukuran font tersedia, tetapi kualitasnya mungkin lebih rendah. Font tebal, miring, garis bawah, dan coretan disintesis jika perlu.

lfPitchAndFamily

Jenis: BYTE

Menentukan pitch dan grup font. Dua bit berurutan rendah menentukan nada font dan dapat menjadi salah satu nilai berikut yang ditentukan dalam Wingdi.h:

  • DEFAULT_PITCH
  • FIXED_PITCH
  • MONO_FONT
  • VARIABLE_PITCH
Bit 4 hingga 7 dari anggota menentukan grup font dan dapat menjadi salah satu nilai berikut yang ditentukan dalam Wingdi.h:
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
Nilai yang tepat dapat diperoleh dengan menggunakan operator Boolean OR untuk bergabung dengan satu konstanta pitch dengan satu konstanta keluarga.

Keluarga font menjelaskan tampilan font secara umum. Mereka dimaksudkan untuk menentukan font ketika typeface yang tepat yang diinginkan tidak tersedia. Nilai untuk keluarga font adalah sebagai berikut:

Nilai Deskripsi
FF_DECORATIVE Font baru, misalnya, Bahasa Inggris Lama.
FF_DONTCARE Tidak peduli atau tidak tahu.
FF_MODERN Font dengan lebar goresan konstan (monospace), dengan atau tanpa serif. Font monospace biasanya modern, misalnya, Pica, Elite, dan Courier New.
FF_ROMAN Font dengan lebar goresan variabel (proporsional) dan dengan serif, misalnya, Serif.
FF_SCRIPT Font yang dirancang agar terlihat seperti tulisan tangan, misalnya, Skrip dan Cursive.
FF_SWISS Font dengan lebar goresan variabel (proporsional) dan tanpa serif, misalnya, Sans Serif.

lfFaceName[32]

Jenis: TCHAR[LF_FACESIZE]

Menentukan string null-terminated yang menentukan nama typeface font. Panjang string ini tidak boleh melebihi 32 karakter, termasuk karakter null yang mengakhiri. Fungsi EnumFontFamilies dapat digunakan untuk menghitung nama typeface dari semua font yang saat ini tersedia. Jika lfFaceName adalah string kosong, GDI menggunakan font pertama yang cocok dengan atribut lain yang ditentukan.

Keterangan

Situasi berikut tidak mendukung antialias ClearType:

  • Teks dirender pada printer.
  • Tampilan diatur untuk 256 warna atau kurang.
  • Teks dirender ke klien server terminal.
  • Font bukan font TrueType atau font Microsoft OpenType dengan kerangka TrueType. Misalnya, berikut ini tidak mendukung antialias ClearType: Font tipe 1, font Postscript OpenType tanpa kerangka TrueType, font bitmap, font vektor, dan font perangkat.
  • Font memiliki bitmap yang disematkan, untuk ukuran font apa pun yang berisi bitmap yang disematkan. Misalnya, ini umumnya terjadi dalam font Asia Timur.
Struktur ini pertama kali muncul di Shtypes.idl dan Shtypes.h di Windows Vista, untuk kemudahan penggunaan dengan anggota antarmuka IVisualProperties . Namun, struktur identik didefinisikan dalam Wingdi.h dan Windows.h di versi Windows yang lebih lama.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Header shtypes.h (termasuk Shtypes.h, Dimm.h)

Lihat juga

IVisualProperties::GetFont

IVisualProperties::SetFont