Struktur LOGFONTW (wingdi.h)
Struktur LOGFONT mendefinisikan atribut font.
Sintaks
typedef struct tagLOGFONTW {
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;
WCHAR lfFaceName[LF_FACESIZE];
} LOGFONTW, *PLOGFONTW, *NPLOGFONTW, *LPLOGFONTW;
Anggota
lfHeight
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 terkemuka. Pemeta font menginterpretasikan nilai yang ditentukan dalam lfHeight dengan cara berikut.
Nilai | Makna |
---|---|
> 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 bisa menggunakan rumus berikut untuk menentukan tinggi font dengan ukuran titik tertentu:
lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
lfWidth
Lebar rata-rata, dalam unit logis, karakter dalam font. Jika lfWidth adalah nol, rasio aspek perangkat dicocokkan dengan rasio aspek digitalisasi font yang tersedia untuk menemukan kecocokan terdekat, ditentukan oleh nilai absolut perbedaan.
lfEscapement
Sudut, dalam persepuluh derajat, antara vektor pelarian dan sumbu x perangkat. Vektor escapement sejajar dengan garis dasar baris teks.
Saat mode grafik diatur ke GM_ADVANCED, Anda dapat menentukan sudut escapement string secara independen dari sudut orientasi karakter string.
Saat mode grafik diatur ke GM_COMPATIBLE, lfEscapement menentukan escapement dan orientasi. Anda harus mengatur lfEscapement dan lfOrientation ke nilai yang sama.
lfOrientation
Sudut, dalam persepuluh derajat, antara garis dasar setiap karakter dan sumbu x perangkat.
lfWeight
Bobot font dalam rentang 0 hingga 1000. Misalnya, 400 normal dan 700 tebal. Jika nilai ini nol, bobot default akan digunakan.
Nilai berikut didefinisikan 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
Font miring jika diatur ke TRUE.
lfUnderline
Font bergaris bawah jika diatur ke TRUE.
lfStrikeOut
Font strikeout jika diatur ke TRUE.
lfCharSet
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
- VIETNAMESE_CHARSET
- JOHAB_CHARSET
- ARABIC_CHARSET
- HEBREW_CHARSET
- THAI_CHARSET
DEFAULT_CHARSET diatur ke nilai berdasarkan lokal sistem saat ini. Misalnya, ketika lokal sistem adalah bahasa Inggris (Amerika Serikat), itu ditetapkan sebagai ANSI_CHARSET.
Font dengan set karakter lain mungkin ada di sistem operasi. Jika aplikasi menggunakan font dengan kumpulan karakter yang tidak dikenal, aplikasi tidak boleh mencoba menerjemahkan atau menginterpretasikan string yang dirender dengan font tersebut.
Parameter ini penting dalam proses pemetaan font. Untuk memastikan hasil yang konsisten saat membuat font, jangan tentukan OEM_CHARSET atau DEFAULT_CHARSET. Jika Anda menentukan nama typeface di anggota lfFaceName , pastikan nilai lfCharSet cocok dengan kumpulan karakter typeface yang ditentukan dalam lfFaceName.
lfOutPrecision
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.
Nilai | Makna |
---|---|
OUT_CHARACTER_PRECIS | Tidak digunakan. |
OUT_DEFAULT_PRECIS | Menentukan perilaku pemeta font default. |
OUT_DEVICE_PRECIS | Menginstruksikan pemeta font untuk memilih font Perangkat ketika sistem berisi beberapa font dengan nama yang sama. |
OUT_OUTLINE_PRECIS | Nilai ini menginstruksikan pemeta font untuk memilih dari TrueType dan font berbasis kerangka lainnya. |
OUT_PS_ONLY_PRECIS | Menginstruksikan pemeta font untuk memilih dari font PostScript saja. Jika tidak ada font PostScript yang diinstal dalam sistem, pemeta font kembali ke perilaku 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. |
OUT_STROKE_PRECIS | Nilai ini tidak digunakan oleh pemeta font, tetapi dikembalikan ketika TrueType, font berbasis kerangka lainnya, dan font vektor dijumlahkan. |
OUT_TT_ONLY_PRECIS | Menginstruksikan pemeta font untuk memilih hanya dari font TrueType. Jika tidak ada font TrueType yang diinstal dalam sistem, pemeta font kembali ke perilaku default. |
OUT_TT_PRECIS | Menginstruksikan pemeta font untuk memilih font TrueType ketika sistem berisi beberapa font dengan nama yang sama. |
Aplikasi dapat menggunakan nilai OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS, OUT_TT_PRECIS, dan OUT_PS_ONLY_PRECIS untuk mengontrol bagaimana pemeta font memilih font ketika sistem operasi berisi lebih dari satu font dengan nama yang ditentukan. Misalnya, jika sistem operasi berisi font bernama Simbol dalam bentuk raster dan TrueType, menentukan OUT_TT_PRECIS memaksa pemeta font untuk memilih versi TrueType. Menentukan OUT_TT_ONLY_PRECIS memaksa pemeta font untuk memilih font TrueType, meskipun harus mengganti font TrueType dengan nama lain.
lfClipPrecision
Presisi kliping. Presisi kliping menentukan cara mengklip karakter yang sebagian berada di luar wilayah kliping. Ini bisa berupa satu atau beberapa nilai berikut.
Untuk informasi selengkapnya tentang orientasi sistem koordinat, lihat deskripsi parameter nOrientasi .
Nilai | Makna |
---|---|
CLIP_CHARACTER_PRECIS | Tidak digunakan. |
CLIP_DEFAULT_PRECIS | Menentukan perilaku kliping default. |
CLIP_DFA_DISABLE | Windows XP SP1: Matikan asosiasi font untuk font. Perhatikan bahwa bendera ini tidak dijamin akan berpengaruh pada platform apa pun setelah Windows Server 2003. |
CLIP_EMBEDDED | Anda harus menentukan bendera ini untuk menggunakan font baca-saja yang disematkan. |
CLIP_LH_ANGLES | Ketika nilai ini digunakan, rotasi untuk semua font tergantung pada apakah orientasi sistem koordinat adalah tangan kiri atau tangan kanan. Jika tidak digunakan, font perangkat selalu memutar berlawanan arah jakal, tetapi rotasi font lain tergantung pada orientasi sistem koordinat. |
CLIP_MASK | Tidak digunakan. |
CLIP_DFA_OVERRIDE | Matikan asosiasi font untuk font. Ini identik dengan CLIP_DFA_DISABLE, tetapi dapat memiliki masalah dalam beberapa situasi; bendera yang disarankan untuk digunakan adalah CLIP_DFA_DISABLE. |
CLIP_STROKE_PRECIS | Tidak digunakan oleh pemeta font, tetapi dikembalikan ketika font raster, vektor, atau TrueType dijumlahkan. Untuk kompatibilitas, nilai ini selalu dikembalikan saat menghitung font. |
CLIP_TT_ALWAYS | Tidak digunakan. |
lfQuality
Kualitas output. Kualitas output menentukan seberapa hati-hati antarmuka perangkat grafis (GDI) harus mencoba mencocokkan atribut font logis dengan atribut font fisik aktual. Ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
ANTIALIASED_QUALITY | Font selalu antialisis jika font mendukungnya dan ukuran font tidak terlalu kecil atau terlalu besar. |
CLEARTYPE_QUALITY | Jika diatur, teks dirender (jika memungkinkan) menggunakan metode antialias ClearType. Lihat Keterangan untuk informasi selengkapnya. |
DEFAULT_QUALITY | Tampilan font tidak masalah. |
DRAFT_QUALITY | Tampilan font kurang penting daripada ketika PROOF_QUALITY digunakan. 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. |
NONANTIALIASED_QUALITY | Font tidak pernah diantisipasi. |
PROOF_QUALITY | Kualitas karakter font lebih penting daripada pencocokan yang tepat dari atribut logical-font. Untuk font raster GDI, penskalaan dinonaktifkan dan font terdekat dalam ukuran dipilih. Meskipun ukuran font yang dipilih mungkin tidak dipetakan persis ketika PROOF_QUALITY digunakan, kualitas font tinggi dan tidak ada distorsi penampilan. Font tebal, miring, garis bawah, dan coretan disintesis jika perlu. |
Jika tidak ANTIALIASED_QUALITY atau NONANTIALIASED_QUALITY dipilih, font hanya diantisipasi jika pengguna memilih font layar halus di Panel Kontrol.
lfPitchAndFamily
Pitch dan keluarga font. Dua bit berurutan rendah menentukan nada font dan bisa menjadi salah satu nilai berikut.
- DEFAULT_PITCH
- FIXED_PITCH
- VARIABLE_PITCH
- FF_DECORATIVE
- FF_DONTCARE
- FF_MODERN
- FF_ROMAN
- FF_SCRIPT
- FF_SWISS
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 | Makna |
---|---|
FF_DECORATIVE | Font baru. Bahasa Inggris lama adalah contohnya. |
FF_DONTCARE | Gunakan font default. |
FF_MODERN | Font dengan lebar goresan konstan (monospace), dengan atau tanpa serif. Font monospace biasanya modern. Pica, Elite, dan CourierNew adalah contohnya. |
FF_ROMAN | Font dengan lebar goresan variabel (proporsional) dan dengan serif. MS Serif adalah contohnya. |
FF_SCRIPT | Font yang dirancang agar terlihat seperti tulisan tangan. Skrip dan Cursive adalah contoh. |
FF_SWISS | Font dengan lebar goresan variabel (proporsional) dan tanpa serif. MS Sans Serif adalah contohnya. |
lfFaceName[LF_FACESIZE]
String null-terminated yang menentukan nama typeface font. Panjang string ini tidak boleh melebihi 32 nilai TCHAR , termasuk NULL yang mengakhiri. Fungsi EnumFontFamiliesEx 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 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 tersemat yang disematkan, untuk ukuran font apa pun yang berisi bitmap yang disematkan. Misalnya, ini umumnya terjadi di font Asia Timur.
Catatan
Header wingdi.h mendefinisikan LOGFONT sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Klien minimum yang didukung | Windows 2000 Professional [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows 2000 Server [aplikasi desktop | Aplikasi UWP] |
Header | wingdi.h (sertakan Windows.h) |