Bagikan melalui


Pembuatan dan Pilihan Font

Kotak dialog Umum Font menyederhanakan proses pembuatan dan pemilihan font. Dengan menginisialisasi struktur CHOOSEFONT dan memanggil fungsi CHOOSEFONT , aplikasi dapat mendukung antarmuka pemilihan font yang sama yang sebelumnya memerlukan banyak baris kode kustom. (Untuk informasi selengkapnya tentang kotak dialog Umum Font , lihat Pustaka Kotak Dialog Umum.)

Pilihan oleh Pengguna

Sebagian besar operasi pembuatan dan pemilihan font melibatkan pengguna. Misalnya, aplikasi pemrosesan kata memungkinkan pengguna memilih font unik untuk judul, catatan kaki, dan teks isi. Setelah pengguna memilih font dengan menggunakan kotak dialog Font dan menekan tombol OK , fungsi SELECTFONT menginisialisasi anggota struktur LOGFONT dengan atribut font yang diminta. Untuk menggunakan font ini untuk operasi output teks, aplikasi harus terlebih dahulu membuat font logis lalu memilih font tersebut ke dalam konteks perangkatnya. Font logis adalah deskripsi font ideal yang disediakan aplikasi. Pengembang dapat membuat font logis dengan memanggil fungsi CreateFont atau CreateFontIndirect . Dalam hal ini, aplikasi akan memanggil CreateFontIndirect dan menyediakan pointer ke struktur LOGFONT yang diinisialisasi oleh CHOOSEFONT. Secara umum, lebih efisien untuk memanggil CreateFontIndirect karena CreateFont memerlukan beberapa parameter sementara CreateFontIndirect hanya memerlukan satu pointer ke LOGFONT.

Sebelum aplikasi benar-benar dapat mulai menggambar teks dengan font logis, aplikasi harus menemukan kecocokan terdekat dari font yang disimpan secara internal pada perangkat dan font yang sumber dayanya telah dimuat ke dalam sistem operasi. Font yang disimpan pada perangkat atau dalam sistem operasi disebut font fisik. Proses menemukan font fisik yang paling cocok dengan font logis tertentu disebut pemetaan font. Proses ini terjadi ketika aplikasi memanggil fungsi SelectObject dan menyediakan handel yang mengidentifikasi font logis. Pemetaan font dilakukan dengan menggunakan algoritma internal yang membandingkan atribut font logis yang diminta dengan atribut font fisik yang tersedia. Ketika algoritma pemeta font menyelesaikan pencariannya dan menentukan kecocokan terdekat, fungsi SelectObject mengembalikan dan aplikasi dapat mulai menggambar teks dengan font baru.

Fungsi SetMapperFlags menentukan apakah algoritma pemeta font hanya mencari font fisik dengan rasio aspek yang cocok dengan perangkat fisik. Rasio aspek untuk perangkat adalah rasio yang dibentuk oleh lebar dan tinggi piksel pada perangkat tersebut.

Font sistem (juga dikenal sebagai shell atau font default) adalah font yang digunakan untuk teks dalam bilah judul, menu, dan kotak dialog.

Pertimbangan Pemilihan Font Khusus

Meskipun sebagian besar operasi pemilihan font melibatkan pengguna, ada beberapa contoh di mana ini tidak benar. Misalnya, pengembang mungkin ingin menggunakan font unik dalam aplikasi untuk menggambar teks di jendela kontrol. Untuk memilih font yang sesuai, aplikasi harus dapat menentukan font apa yang tersedia, membuat font logis yang menjelaskan salah satu font yang tersedia ini, lalu memilih font tersebut ke dalam konteks perangkat yang sesuai.

Aplikasi dapat menghitung font yang tersedia dengan menggunakan fungsi EnumFonts atau EnumFontFamilies . EnumFontFamilies direkomendasikan karena menghitung semua gaya yang terkait dengan nama keluarga. Ini dapat berguna untuk font dengan banyak atau gaya yang tidak biasa dan untuk font yang melintasi batas internasional.

Setelah aplikasi menghitung font yang tersedia dan menemukan kecocokan yang sesuai, aplikasi harus menggunakan nilai yang dikembalikan oleh fungsi enumerasi font untuk menginisialisasi anggota struktur LOGFONT . Kemudian dapat memanggil fungsi CreateFontIndirect , meneruskannya penunjuk ke struktur LOGFONT yang diinisialisasi. Jika fungsi CreateFontIndirect berhasil, aplikasi kemudian dapat memilih font logis dengan memanggil fungsi SelectObject . Saat menginisialisasi anggota struktur LOGFONT , pastikan untuk menentukan karakter tertentu yang diatur dalam anggota lfCharSet . Anggota ini penting dalam proses pemetaan font dan hasilnya tidak akan konsisten jika anggota ini tidak diinisialisasi dengan benar. Jika Anda menentukan nama typeface di anggota lfFaceName dari struktur LOGFONT , pastikan nilai lfCharSet cocok dengan kumpulan karakter typeface yang ditentukan dalam lfFaceName. Misalnya, jika Anda ingin memilih font seperti MS Mincho, lfCharSet harus diatur ke nilai yang telah ditentukan sebelumnya SHIFTJIS_CHARSET.

Font untuk banyak bahasa Asia Timur memiliki dua nama typeface: nama bahasa Inggris dan nama yang dilokalkan. CreateFont, CreateFontIndirect, dan CreateFontIndirectEx mengambil nama typeface yang dilokalkan untuk lokal sistem yang cocok dengan bahasa, tetapi mereka mengambil nama typeface bahasa Inggris untuk semua lokal sistem lainnya. Metode terbaik adalah mencoba satu nama dan, pada kegagalan, coba yang lain. Perhatikan bahwa EnumFonts, EnumFontFamilies, dan EnumFontFamiliesEx mengembalikan nama typeface bahasa Inggris jika lokal sistem tidak cocok dengan bahasa font. Dimulai dengan Windows 2000, ini tidak lagi menjadi masalah karena pemeta font untuk CreateFont, CreateFontIndirect, dan CreateFontIndirectEx mengenali salah satu nama typeface, terlepas dari lokal.