Saya melihat pertanyaan ini pada proposal situs Tipografi dan saya tersinggung bahwa saya tidak tahu jawabannya. Saya selalu memperlakukan 'mesin terbang' dan 'karakter' sebagai hal yang dapat dipertukarkan.
Setelah membaca penjelasan pada halaman Unicode Character Encoding Model , pemahaman saya kira-kira seperti ini:
- Karakter didefinisikan oleh maknanya dalam bahasa, mesin terbang, oleh penampilan mereka . Jadi, ligatur untuk menggabungkan estetika
fi
adalah satu mesin terbang, tetapi dua karakter.
Jadi, kepercayaan saya adalah (tolong perbaiki saya jika saya salah) bahwa perbedaan praktisnya adalah:
- Pengurai teks yang tidak tertarik pada estetika teks akan membaca mesin terbang sebagai karakter masing-masing. Begitu:
- Jika Anda menyalin dan menempelkan teks yang mengandung mesin terbang ke editor teks biasa, mesin terbang akan dikonversi ke karakter masing-masing (
fi
mesin pengikat ligatur akan menjadif
dani
) - Setiap sistem otomatis yang dibuat dengan baik berdasarkan penguraian teks (misalnya crawler mesin pencari, pembaca layar, pemeriksa ejaan) akan menafsirkan mesin terbang sebagai karakter masing-masing.
- Satu karakter dapat memiliki banyak mesin terbang atau mesin terbang. Saya ingin mengatakan satu mesin terbang hanya dapat memiliki satu karakter, tetapi ini jelas tidak benar karena ada contoh pada artikel terkait 3 mesin terbang dan mesin terbang yang tampaknya masing-masing sesuai dengan karakter dan serangkaian karakter. Saya tidak begitu mengerti bagaimana ini bisa bekerja: pasti itu berarti akan ada ketidakkonsistenan atau ambiguitas dalam bagaimana mesin terbang itu ditafsirkan, berbeda menurut penafsir? (atau apakah itu berbeda menurut bahasa, atau menurut font?)
- Sementara peramban mesin terbang (misalnya yang ada di Illustrator) berisi kumpulan mesin terbang penuh font, peta karakter (misalnya peta karakter Windows) hanya berisi karakter, bukan mesin terbang yang banyak karakter seperti ligatur (sesuatu yang saya tidak perhatikan sebelumnya)
- Jika Anda menyalin dan menempelkan teks yang mengandung mesin terbang ke editor teks biasa, mesin terbang akan dikonversi ke karakter masing-masing (
Saya merasa seperti hampir sampai di sana, tetapi saya telah salah memahami sesuatu di suatu tempat di sepanjang garis: bukan hanya hal "Satu karakter ganda", tetapi juga, perilaku menyalin dan menempel dengan pengikat tidak cukup seperti yang saya harapkan:
- Salin ligatur
fi
dari Illustrator ke kotak input ini: pasta sebagaifi
(dua karakter) seperti yang diharapkan. - Tempel di kode HTML untuk itu (
fi
) - ditampilkan sebagai ligatur ketika tidak ada dalam blok kode (fi - yang dalam font ini tidak terlihat seperti ligatur, tetapi Anda akan melihat salah satunya jika Anda mencoba memilih hanya setengah itu), dan kode ketika dalam blok kode (fi
), seperti yang diharapkan. - Salin dan tempel ligatur non-kode-blok yang diberikan kembali ke kotak input: paste sebagai karakter ligatur, dan render sebagai ligatur terlepas dari apakah itu dalam blok kode atau tidak (fi dan
fi
). Demikian juga kata-kata yang berisi itu: pas mis ( tsfit misfits
) paste sebagai pas mis ( tsfit misfits
). Mungkin itu tergantung pada apakah tempat itu disisipkan memahami pengkodean yang digunakan?
Seberapa jauh pemahaman saya tentang ini? Adakah yang bisa membuat saya benar: menyatakan definisi yang jelas tentang perbedaan antara mesin terbang dan karakter (jika milik saya salah atau dapat ditingkatkan), dan memberikan contoh yang lebih jelas / lebih akurat daripada milik saya tentang apa artinya itu dalam praktik ?
sumber
Jawaban:
Mesin terbang berhubungan dengan bagaimana teks diterjemahkan, karakter dengan bagaimana itu ditafsirkan. Saat Anda menyalin & menempel, aplikasi sumber biasanya memberikan beberapa pilihan format. Teks biasa akan menguraikan fi ligature menjadi f dan i, format HTML dapat menerjemahkannya ke entitas char yang Anda kutip atau juga menguraikannya di f dan i.
Secara umum hubungan antara karakter dan mesin terbang adalah n: m. Dalam bahasa Indic beberapa karakter dibagi menjadi dua mesin terbang yang ditempatkan di tempat kata yang berbeda. Dalam bahasa Latin yang paling dekat dengan situasi itu adalah rendering é sebagai dua mesin terbang (e dan ´). Dalam bahasa Arab setiap karakter memiliki mesin terbang yang berbeda tergantung pada posisinya dalam sebuah kata: awal, tengah, akhir atau terisolasi.
Terjemahan dari karakter ke mesin terbang adalah khusus untuk setiap aplikasi dan fitur tipografi yang didukungnya. Untuk teks Latin terjemahan ini digunakan secara langsung, tetapi font OpenType memperkenalkan fitur-fitur tambahan seperti ligatures, swash, bentuk alternatif, huruf kecil, dll.
Untuk alasan praktis, Anda hanya memikirkan mesin terbang ketika menerapkan bagaimana aplikasi membuat teks, atau ketika Anda mendesain font, atau ketika Anda ingin menerapkan fitur OpenType yang menggantikan beberapa mesin terbang dengan yang lain (misalnya ligatur). Jika tidak, poin kode Unicode adalah teman Anda.
sumber
Saya rasa pemahaman Anda tidak benar. Anda hanya melihat sistem yang mencoba membantu pengguna dengan menempelkan apa yang menurut mereka inginkan. Karena beberapa ligatur ('fi', 'fl') cukup umum di luar sistem pengaturan huruf, perangkat lunak mengakui bahwa pengguna mungkin tidak memasukkan mesin terbang itu, melainkan aplikasi lain mengubah karakter yang diketikkan.
Singkatnya: Karakter mengacu pada unit linguistik. Glyph mengacu pada contoh yang dirancang unit itu, apakah itu huruf besar, huruf kecil, topi kecil, varian sejarah, atau gaya.
sumber
Ada beberapa jawaban di sini yang memberikan informasi yang baik tentang mesin terbang vs karakter, tetapi mereka tidak benar-benar mengatasi sumber kebingungan Anda sehubungan dengan menyalin dan menempel.
Pertama-tama, pemahaman Anda secara fundamental benar:
Perlu ditekankan bahwa daftar karakter didefinisikan oleh standar Unicode, yang diterbitkan oleh Konsorsium Unicode, karena fakta bahwa mereka adalah otoritas pada pengodean teks dalam format yang dapat dibaca mesin. Definisi di atas pada dasarnya adalah pedoman utama yang digunakan anggota Konsorsium Unicode untuk menentukan apakah beberapa tambahan yang diusulkan untuk Unicode adalah karakter dan karenanya layak untuk dimasukkan, atau mesin terbang dan harus ditangani oleh penyaji font.
Saya menyebutkan ini karena kebingungan yang Anda alami di atas disebabkan oleh kenyataan bahwa ada beberapa karakter pengikat (bukan mesin terbang ) di Unicode. Misalnya,
U+FB01
adalah karakter untuk fi ligature: http://unicode.org/charts/PDF/UFB00.pdfMemiliki karakter pengikat dalam Unicode tidak benar-benar sesuai dengan definisi di atas untuk hal-hal seperti apa yang harus dimasukkan dalam standar Unicode sebagai karakter, karena pengikat tidak benar-benar memiliki makna terlepas dari komposisi dua karakter lain. Orang-orang Unicode secara alami menyadari hal ini, dan FAQ Unicode tentang ligatures juga mengakui:
Keberadaan karakter ini pada akhirnya menjadi sumber kebingungan Anda.
Dalam perangkat lunak yang diterapkan dengan benar, menyalin teks harus selalu menyalin karakter yang ditentukan, bukan mesin terbang , dan itulah yang sebenarnya terjadi dalam tiga contoh Anda.
1) Pada contoh pertama, Anda mengetik
f
dani
masuk ke Illustrator, yang menghasilkan mesin terbang ligatur tunggal . Ketika Anda memilih dan menyalin mesin terbang yang diberikan itu, Illustrator dengan benar menyalin karakterf
(U+0066
) dani
(U+0069
) ke clipboard Anda.2) Dalam contoh kedua, Anda mengetik kode HTML untuk karakter ligatur (
fi
) ke dalam kotak input, dan dengan benar mendapat mesin terbang ligatur yang mewakili karakter ligatur (. Karena karakter yang mendasarinya sebenarnya karakter ligatur yang tidak jelas dan relatif tidak berarti yang saya sebutkan) di atas, memilih mesin terbang itu akan menyalin satu karakterU+FB01
.3) Pada contoh ketiga, Anda menyalin karakter pengikat
U+FB01
yang diberikan yang diberikan di bagian 2, yang akan selalu menempel sebagai karakter itu. Kebingungan utama Anda tampaknya berkaitan dengan perbedaan antara kode entitas HTML dan karakter, terutama yang berkaitan dengan bagaimana mereka dibuat di dalam dan di luar blok kode.Kode entitas HTML
fi
adalah string 8 karakter berbeda. Perender HTML browser web Anda menggantikan 8 karakter tersebutU+0026 U+0023 U+0036 U+0032 U+0035 U+0037 U+0023
dengan karakter Unicode tunggalU+FB01
, yang kemudian dirender dengan tepat. Namun,<code>
tag dalam HTML menonaktifkan perilaku ini, membiarkan 8 karakter tersebut apa adanya.Ketika Anda menyalin dari HTML yang diberikan, Anda menyalin karakter yang diberikan (yang berbeda dari mesin terbang yang diberikan ). Jadi, ketika Anda menyalin entitas HTML yang Anda buat,
U+FB01
karakter tunggal disalin ke clipboard Anda.Saat Anda menempelkan
fi
U+FB01
karakter kembali ke HTML, tidak ada substitusi yang perlu dilakukan, artinya karakter tersebut diberikan sebagai pengikat terlepas dari apakah itu termasuk dalam<code>
blok atau tidak .sumber
Karakter adalah apa yang disimpan dalam file teks, diproses oleh aplikasi, dan dipindahkan, sementara mesin terbang adalah representasi visual mereka.
Untuk memiliki gambar yang jelas, mari kita lihat apa yang terjadi ketika sebuah aplikasi mencoba membuat render teks di layar (dengan cara yang sedikit disederhanakan):
f
dani
dengan mesin terbang ligaturfi
) dan posisi (seperti kerning).file
sesuai dengan dua mesin terbang pertama (fi
ligatur), karakter ke-3 untuk mesin terbang ke-2 dan karakter ke-4 ke mesin ke-3.sumber