INFO: Metrik Font dan penggunaan negatif lfHeight

Sanggahan Konten KB yang Dihentikan

Artikel ini ditulis untuk produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disediakan "sebagaimana adanya" dan tidak akan diperbarui lagi.

Ringkasan

Ilustrasi berikut menunjukkan yang paling umum digunakan font metrik, termasuk karakter tinggi, yang dipilih dengan nilai-nilai negatif ilustrasi setiap diikuti dengan catatan menggambarkan metrik.
 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

O O
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

/\
/ \
/ \
_ _ _ _ _ _ _ _ _ /______\ _ _ _ ___ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/ \ / \|
/ \ | |
_ _ _ _ _ _ _ _ /_ _ _ _ _ _ \ _ \___/| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\___/_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|- External Leading
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _
|
O O |- Internal Leading
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _
| /\
| / \
| / \
| /______\ _ _ _ ___ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Char Height -| / \ / \|
| / \ | |
| /_ _ _ _ _ _ \ _ \___/| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
| |
| |
_ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _\___/_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

| |
| O O |
| |
| /\ |
| / \ |
| / \ |- Ascent
Cell Height -| /______\ ___ |
| / \ / \| |
| / \ | | |
| /_ _ _ _ _ _ \ _ \___/| _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _
| | |
| | |- Descent
_ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _\___/_ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _

Sel tinggi

Ini adalah tinggi yang dipilih di positif lfHeight di LOGFONT. Cukup tinggi bitmap font untuk raster font. Kembali sebagai tmHeight dalam struktur TEXTMETRIC dari GetTextMetrics().

Karakter tinggi (juga dikenal sebagai dua)

Ini adalah tinggi yang dipilih di negatif lfHeight di LOGFONT. (Yaitu, pemetaan akan mencoba untuk mencocokkan font height karakter yang cocok dengan nilai absolut tinggi diminta.)


Catatan: dengan definisi, dua sama dengan sel Height minus terkemuka Internal. Dua menetapkan titik ukuran fon. Modus MM_TEXT pemetaan dua berkaitan dengan ukuran titik sebagai berikut:

   Em=dpiY*point_size/72;  // where dpiY is dots per inch in Y direction
DpiY font sama dengan tmDigitizedAspectY dalam struktur TEXTMETRICS .

Terkemuka internal

Ini akan ditampilkan sebagai tmInternalLeading dalam struktur TEXTMETRIC dari GetTextMetrics() dan sering, tetapi tidak selalu, menjelaskan berapa banyak ruang telah ditinggalkan dalam bitmap font untuk tanda diakritik (aksen).

Terkemuka eksternal

Ini akan ditampilkan sebagai tmExternalLeading dalam struktur TEXTMETRIC dari GetTextMetrics() dan menjelaskan berapa banyak ruang tambahan desain font mengharapkan aplikasi untuk membiarkan antara baris fon. Tidak termasuk dalam bitmap dan tidak diubah oleh TextOut()/ExtTextOut(), bahkan dalam mode buram. Ketika Keluaran beberapa baris teks, baris harus dipisahkan oleh (tmHeight + tmExternalLeading).

 Character Width                       Character Width
| |
|-------------| |-------------|
| | / / |
| | / / |
| | / / |
| | / / |
|----------| /----------/ |
| | / / |
| | / / |
| | / / |
| | / / |
|________|
|_____________| |_____________| |
| | Overhang
Character width Character width
(including white space) (including white space)
Overhang = 0 Overhang > 0

Menonjol

tmOverhang menentukan per untai lebar tambahan yang dapat ditambahkan ke beberapa fon disintesis. Ketika sintesis beberapa atribut seperti tebal atau miring, GDI atau peranti harus menambah panjang string pada kedua per karakter dan dasar per untai. Sebagai contoh, GDI mensintesis embolding dengan memperluas spasi intercharacter dan overstriking dengan offset dan italicizes font dengan membuat untai.


Dalam kasus lain, ada overhang melewati string dasar. Untuk string tebal, ini adalah jarak yang overstrike offset. Untuk string miring, ini adalah jumlah atas fon miring melewati bawah fon. tmOverhang memungkinkan aplikasi untuk menentukan berapa banyak lebar karakter yang dikembalikan oleh panggilan GetTextExtent() pada satu karakter aktual karakter lebar dan berapa banyak per untai lebar tambahan. Lebar sebenarnya adalah batas kurang overhang. Dengan kata lain, tmOverhang adalah perbedaan antara lebar karakter yang saat ini adalah output sendiri-sendiri versus lebar ketika dalam interior untai.


Untuk informasi selengkapnya, lihat topik berikut di referensi Kit pengembangan perangkat lunak Windows:


  • CreateFont() (pada Volume 1 referensi versi 3.0)
  • TEXTMETRIC (pada Volume 2 dari versi 3.0 referensi)
Properti

ID Artikel: 32667 - Tinjauan Terakhir: 29 Jan 2017 - Revisi: 1

Tanggapan