Font Tersemat

Menyematkan font adalah teknik menggabungkan dokumen dan font yang dikandungnya ke dalam file untuk transmisi ke komputer lain. Menyematkan font menjamin bahwa font yang ditentukan dalam file yang dikirimkan akan ada di komputer yang menerima file. Tidak semua font dapat dipindahkan dari komputer ke komputer, namun, karena sebagian besar font hanya dilisensikan ke satu komputer pada satu waktu. Hanya font TrueType dan OpenType yang dapat disematkan.

Aplikasi harus menyematkan font dalam dokumen hanya ketika diminta oleh pengguna. Aplikasi tidak dapat didistribusikan bersama dengan dokumen yang berisi font yang disematkan, juga tidak dapat aplikasi itu sendiri berisi font yang disematkan. Setiap kali aplikasi mendistribusikan font, dalam format apa pun, hak milik pemilik font harus diakui.

Ini mungkin pelanggaran hak milik vendor font atau perjanjian lisensi pengguna untuk menyematkan font apa pun di mana penyematan tidak diizinkan atau gagal mengamati panduan berikut tentang menyematkan font. Lisensi font mungkin hanya memberikan izin baca/tulis agar font diinstal dan digunakan pada komputer tujuan. Atau lisensi dapat memberikan izin baca-saja. Izin baca-saja memungkinkan dokumen ditampilkan dan dicetak (tetapi tidak dimodifikasi) oleh komputer tujuan; dokumen dengan font yang disematkan baca-saja sendiri bersifat baca-saja. Font yang disematkan baca-saja mungkin tidak dibundel dari dokumen dan diinstal pada komputer tujuan.

Aplikasi dapat menentukan status lisensi dengan memanggil fungsi GetOutlineTextMetrics dan memeriksa anggota otmfsType dari struktur OUTLINETEXTMETRIC . Jika bit 1 dari otmfsType diatur, penyematan tidak diizinkan untuk font. Jika bit 1 jelas, font dapat disematkan. Jika bit 2 diatur, penyematan bersifat baca-saja.

Untuk menyematkan font TrueType, aplikasi dapat menggunakan fungsi GetFontData untuk membaca file font. Mengatur parameter dwTable dan dwOffsetGetFontData ke 0L dan parameter cbData ke 1L memastikan bahwa aplikasi membaca seluruh file font dari awal.

Beberapa fungsi tersedia untuk menyematkan font OpenType tergantung pada lebar karakter dan tempat data font berada. Untuk menyematkan font OpenType Unicode yang berada dalam konteks perangkat, aplikasi dapat menggunakan TTEmbedFont. Untuk menyematkan font OpenType UCS-4 yang berada dalam konteks perangkat, aplikasi dapat menggunakan TTEmbedFontEx. Untuk menyematkan font OpenType Unicode yang berada dalam file font, aplikasi dapat menggunakan TTEmbedFontFromFile. Untuk informasi tambahan tentang penyematan font OpenType, lihat Referensi Penyematan Font.

Setelah aplikasi mengambil data font, aplikasi dapat menyimpan data dengan dokumen dengan menggunakan format yang berlaku. Sebagian besar aplikasi membangun direktori font dalam dokumen, mencantumkan font yang disematkan dan apakah penyematan bersifat baca/tulis atau baca-saja. Aplikasi dapat menggunakan anggota otmpStyleName dan otmFamilyName dari struktur OUTLINETEXTMETRIC untuk mengidentifikasi font.

Jika bit baca-saja diatur untuk font yang disematkan, aplikasi harus mengenkripsi data font sebelum menyimpannya dengan dokumen. Metode enkripsi tidak perlu rumit; misalnya, menggunakan operator XOR untuk menggabungkan data font dengan konstanta yang ditentukan aplikasi memadai dan cepat.