Apa perbedaan praktis antara 'mesin terbang' dan 'karakter'?

26

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 ( mesin pengikat ligatur akan menjadi fdan i)
    • 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)

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 dari Illustrator ke kotak input ini: pasta sebagai fi(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 ). 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 ?

user56reinstatemonica8
sumber
2
Itu menjadi jauh lebih rumit ketika Anda memiliki skrip seperti bahasa Arab di mana Anda menggabungkan karakter.
Reinstate Monica - M. Schröder
1
@ MartinSchröder +1 Kedengarannya seperti kalimat pembuka dari jawaban yang sangat baik ... :)
user56reinstatemonica8

Jawaban:

4

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.

pengguna322483
sumber
Hai user322483, selamat datang di GDSE dan terima kasih atas jawaban Anda. Jika Anda memiliki pertanyaan, silakan lihat pusat bantuan atau ping salah satu dari kami di Obrolan Desain Grafis setelah reputasi Anda mencukupi (20). Tetap berkontribusi dan nikmati situsnya!
Vincent
1
Anda menulis "Dalam bahasa Arab setiap karakter memiliki mesin terbang yang berbeda tergantung pada posisinya dalam sebuah kata: awal, tengah, akhir atau terisolasi." <--- Bukankah mereka karakter yang berbeda. Bahasa Inggris memiliki A dan a, tetapi dalam komputasi bicara, A dan a adalah karakter yang berbeda. setiap mesin terbang dipetakan ke kode yang berbeda. Bahasa Ibrani memiliki chaf dan chaf terakhir (huruf chaf di akhir kata, terlihat berbeda) dan saya yakin itu disebut sebagai karakter yang berbeda dalam komputasi.
barlop
14

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.

Baju biasa
sumber
Dalam komputasi, A dan a adalah karakter yang berbeda. ASCII memiliki 128 karakter dan karakter term di sana termasuk A dan sebagai karakter yang berbeda.
barlop
Insinyur menggunakan banyak kata yang tidak selaras dengan preseden di industri lain. Anda adalah salah satu contoh yang baik.
Pakaian biasa
siapa yang datang dengan istilah "karakter" dan "mesin terbang" pertama? desainer grafis atau insinyur komputer? saya akan mengira komputer datang sebelum desain grafis. Tetapi mungkin ada industri percetakan yang mendahului desain grafis dan mendahului komputer dalam beberapa hal atau mendahului komputer modern. Saya kira orang-orang yang bisa menjawab yang terbaik untuk apa yang sekarang desain grafis, adalah industri percetakan, tetapi tidak ada industri stackexchange. Tetapi akan menarik untuk mengetahui siapa yang meminjam dari siapa dan dengan cara apa istilah Karakter.
barlop
1
Tipografi datang jauh sebelum rekayasa perangkat lunak. Silakan posting di sini jika Anda melakukan penelitian dan menemukan asal-usulnya. Dugaan saya adalah bahwa hal itu akan terjadi pada abad ke-17. Mungkin sedini tipografi pertama di pertengahan 16.
pakaian biasa
6

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:

Karakter didefinisikan oleh maknanya dalam bahasa, mesin terbang, oleh penampilan mereka . Jadi, ligatur untuk menggabungkan estetika adalah satu mesin terbang, tetapi dua karakter.

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+FB01adalah karakter untuk fi ligature: http://unicode.org/charts/PDF/UFB00.pdf

Memiliki 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:

Ligatur yang ada pada dasarnya ada untuk kompatibilitas dan tersandung dengan set karakter non-Unicode. Penggunaannya tidak disarankan.

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 fdan imasuk ke Illustrator, yang menghasilkan mesin terbang ligatur tunggal . Ketika Anda memilih dan menyalin mesin terbang yang diberikan itu, Illustrator dengan benar menyalin karakter f( U+0066) dan i( U+0069) ke clipboard Anda.

2) Dalam contoh kedua, Anda mengetik kode HTML untuk karakter ligatur ( &#64257) 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 karakter U+FB01.

3) Pada contoh ketiga, Anda menyalin karakter pengikat U+FB01yang 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 &#64257;adalah string 8 karakter berbeda. Perender HTML browser web Anda menggantikan 8 karakter tersebut U+0026 U+0023 U+0036 U+0032 U+0035 U+0037 U+0023dengan 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+FB01karakter tunggal disalin ke clipboard Anda.

Saat Anda menempelkan U+FB01karakter 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 .

senapan angin
sumber
1

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):

  • Aplikasi pertama membaca string teks, bahwa string karakter yang tersimpan di disk atau di memori.
  • Kemudian akan mengirimkannya ke mesin tata letak teks, di antara beberapa properti lain seperti font yang diinginkan, bahasa teks dan sebagainya:
    • Mesin tata letak teks pada dasarnya membuka file font, meminta mesin terbang yang sesuai dengan masing-masing karakter dan melakukan beberapa penggantian mesin terbang (seperti mengganti mesin terbang untuk fdan idengan mesin terbang ligatur fi) dan posisi (seperti kerning).
    • Pada akhirnya mesin tata letak memiliki urutan mesin terbang, posisi mereka relatif satu sama lain, dan pemetaan antara karakter input dan mesin terbang output. Karakter untuk pemetaan mesin terbang sedemikian sehingga ia tahu bahwa dua karakter pertama dalam kata tersebut filesesuai dengan dua mesin terbang pertama ( filigatur), karakter ke-3 untuk mesin terbang ke-2 dan karakter ke-4 ke mesin ke-3.
  • Pustaka rendering grafik kemudian digunakan untuk "menggambar" mesin terbang itu di layar menggunakan bentuk dari font.
  • Ketika pengguna memilih "mesin terbang" di layar, aplikasi kemudian akan berkonsultasi dengan mesin terbang untuk pemetaan teks yang disediakan oleh mesin tata letak untuk menemukan bagian mana dari teks input yang sesuai dengan apa yang pengguna pilih dan mengirim teks itu ke clipboard ketika pengguna menyalinnya.
  • Hal yang sama terjadi ketika pengguna memasukkan kursor di tengah teks dan mulai mengetik, pemetaan menentukan di mana dalam teks input untuk memasukkan karakter baru, dan teks yang diperbarui dikirim ke mesin tata letak untuk diproses dan digambar ulang dan seterusnya.
Khaled Hosny
sumber