Struktur LOGFONTA (wingdi.h)

Struktur LOGFONT mendefinisikan 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[LF_FACESIZE];
} LOGFONTA, *PLOGFONTA, *NPLOGFONTA, *LPLOGFONTA;

Anggota

lfHeight

Tinggi, dalam unit logis, dari sel karakter atau karakter font. 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 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 satuan 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 sepuluh 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 sepuluh derajat, antara garis dasar setiap karakter dan sumbu x perangkat.

lfWeight

Berat 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 coretan 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
Windows edisi bahasa Korea:
  • JOHAB_CHARSET
Windows edisi bahasa Timur Tengah:
  • ARABIC_CHARSET
  • HEBREW_CHARSET
Windows edisi bahasa Thailand:
  • 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), itu ditetapkan sebagai 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.

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
Bit 4 hingga 7 dari anggota menentukan keluarga font dan dapat menjadi salah satu nilai berikut.
  • 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 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 Kursif 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 yang disematkan, untuk ukuran font apa pun yang berisi bitmap yang disematkan. Misalnya, ini umumnya terjadi dalam 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)

Lihat juga

CreateFont

CreateFontIndirect

EnumFontFamiliesEx

Struktur Font dan Teks

Gambaran Umum Font dan Teks