Deskripsi dan interpretasi poin dan kurva font TrueType

8

Sebuah pertanyaan baru-baru ini diajukan di forum lain yang membuat saya memikirkan kembali pemahaman saya tentang format vektor. Font TrueType berada dalam format vektor dan - saya sebelumnya berpikir - bahwa jika editor vektor mempresentasikannya untuk diedit, itu hanya akan menunjukkan titik-titik yang dijelaskan dalam bentuk font asli dan, jika ada kurva, tunjukkan pegangan yang sesuai hanya pada titik-titik itu.

Saya tidak melihat bagaimana satu paket software ( Glyphs ) dapat menafsirkan suatu di Arial 20 poin dan lain (Illustrator) mengartikannya sebagai 37 poin ketika dikonversi ke garis atau diperluas. Saya tidak punya Glyphs untuk diberikan tetapi dapat mengkonfirmasi bahwa Illustrator memang memberikan 37 poin ketika mencoba sendiri. Poster asli memberikan ilustrasi kedua hasil sebagai berikut:

The seorang dari Arial di Glyphs :

Kata arial dalam font yang sama di Illustrator (fokus pada titik-titik dalam huruf a vs yang sama dalam Glyphs ):

Saya mengerti konsep dasar file gambar vektor; bahwa data adalah serangkaian koordinat untuk titik dan informasi lainnya secara matematis yang merinci jumlah kurva (atau kurangnya) antara titik. Yang tidak saya mengerti adalah dua hal:

  1. Apakah data dalam font TrueType tidak dijelaskan sedemikian rupa sehingga dapat diterjemahkan secara harfiah ke bentuk yang dapat diedit di Illustrator saat diuraikan? Mengapa Illustrator menambahkan poin tambahan? Atau apakah format TrueType sama sekali tidak dijelaskan menggunakan poin (saya tidak mengerti caranya)?

  2. Mesin terbang tampaknya menunjukkan bahwa mungkin untuk menggambarkan kurva tertentu dalam jumlah terbatas. Mengapa perangkat lunak yang sangat terkenal seperti Illustrator perlu lebih banyak poin untuk menggambarkan kurva yang sama? Saya akan melihat ini sebagai terjemahan yang buruk dan saya membayangkan sebagian besar pengguna akan mengharapkan ini juga. Ini tumpang tindih dengan satu pertanyaan sedikit jadi mungkin satu jawaban mencakup keduanya.

biskuitstack
sumber
Bisakah Anda menyertakan tautan ke diskusi sebelumnya (dan sumber gambar, IIUC)?
Wrzlprmft
Saya khawatir posting asli adalah kekacauan yang tidak suci dan diutarakan sekitar pertanyaan malware / virus yang menyebabkan masalah poin ini (dan bukan forum desain grafis, jadi orang-orang menghibur ide ini tanpa banyak manfaat dalam diskusi). Saya tidak berani, tetapi itu membuat saya merenungkan pertanyaan yang saya ajukan di sini.
biscuitstack
Satu catatan: gambar arial Anda di Illustrator menunjukkan 37 titik jangkar untuk huruf a, bukan 36. Juga, saya mendapatkan apa yang tampak persis sama (37) node di CorelDRAW seperti yang ditunjukkan pada contoh Illustrator, jadi apa pun konversi Illustrator melakukan mungkin sama di Corel (dan dengan demikian tidak sepenuhnya sewenang-wenang).
1006a
@ 1006a Saya terkesan Anda meluangkan waktu untuk memverifikasi! Menarik bahwa CorelDRAW cocok dengan Illustrator . Saya tidak akan mengharapkan salah satu dari mereka untuk menambahkan poin secara sewenang-wenang (dan saya pikir saya dapat melihat pola di mana itu menambahkan jangkar titik tengah jika garis membungkuk di luar sudut tertentu) tetapi saya masih tidak yakin mengapa itu terjadi.
biscuitstack
1
Heh, well, saya tidak benar-benar menghitung pada awalnya, hanya mencoba konversi di CorelDraw dan memperhatikan bahwa ia mengatakan 37 node; maka saya tidak bisa melihat di mana itu berbeda dari gambar, jadi tentu saja saya harus menghitung ;-). Saya pikir T&J ini pada SO "Mesin terbang TrueType Font terbuat dari Bezier kuadrat. Mengapa lebih dari satu titik kurva keluar berturut-turut muncul dalam garis besar mesin terbang?" terlihat membantu untuk pertanyaan dari mana "ekstra" poin mungkin berasal (juga sumber daya yang ditautkan dalam jawaban).
1006a

Jawaban:

4

Meskipun saya tidak dapat mengonfirmasi hal ini (saya memeriksa Manual Glyphs dan Bantuan / Tutorial Online), tampaknya Aplikasi Glyphs secara otomatis mengonversi garis besar TrueType ke Garis Besar PostScript (ingatlah bahwa Garis Besar TT adalah Urutan Kedua, Garis Besar PS urutan ketiga. Juga, OTF dapat berisi Garis Besar TT atau PS, sementara TTF dapat berisi Garis Besar TT).

Jika Anda mengimpor jenis huruf Arial (yang saya hampir pasti adalah file TTF) itu berarti Anda mengimpor TT Outlines, kemudian Glyphs mengonversi ke PS Outlines. Karena itu, poinnya lebih sedikit. Berikut adalah Arial.ttf dikonversi ke PS Outlines di FontLab VI (29 node):

Arial PS Garis Besar

Jika Anda membuka font yang sama dengan TT Outlines (dalam contoh ini, dibuka di FontLab Studio 5), Anda mendapatkan 37 node (ingat, ada simpul yang tersirat di antara titik kontrol yang berurutan):

Garis Besar TT Arial

Dalam ilustrator, tipe kemungkinan ditangani oleh mesin tipe yang mempertahankan format outline, dan titik kuadrat hanya diterjemahkan pada perintah Create Outline (coba buat garis besar peluru, lingkaran: lingkaran: ia akan membuat 8 node, koheren dengan format subjratic kuadratik ...) Oleh karena itu, lebih banyak poin dibuat. Di sini, di ilustrator CS6:

masukkan deskripsi gambar di sini

37 node yang sama.

Sunting : BTW, menjawab pertanyaan: Mesin terbang "menyederhanakan" kurva TT menggunakan Bezier Degree Elevation , yaitu, mengubah garis TT ke PS.

Pepe Ochoa
sumber
1
Tidak, pada kenyataannya, dimungkinkan untuk mengurangi garis kuadrat menjadi garis kubik tanpa kehilangan presisi. Ini berarti bahwa Glyphs mempertahankan presisi, tetapi memodifikasi format. Illustrator, di sisi lain, terlalu berlebihan karena, untuk setiap simpul kuadratik, menciptakan simpul kubik (periksa garis besar yang dibuat, setiap simpul memiliki dua titik kontrol, karenanya, adalah kubik). Ini memperkenalkan presisi yang tidak perlu, tetapi setidaknya komputasi cepat dan tepat. BTW, sebaliknya (mengkonversi kubik ke kuadrat, atau PS Outlines ke TT Outlines) kehilangan presisi.
Pepe Ochoa
1
Saya mungkin menilai terlalu tinggi pernyataan tentang Illustrator : that preserves the outlines formatmenyarankan Glyphs tidak mempertahankan garis besar dan menarik kesimpulan bahwa konversi Glyphs sedikit kurang setia. Saya akan kembali ke asumsi awal saya sekarang (yang lebih masuk akal sih). Terima kasih.
biscuitstack
1
Jika Illustrator berlebihan dan menambahkan detail yang tidak perlu, dan mesin terbang menyederhanakan kurva asli - keduanya akan menyarankan bahwa tidak ada hasil yang merupakan representasi yang setia. Jika saya adalah artis asli yang harus dengan sengaja menempatkan titik jangkar untuk menggambar setiap bentuk karakter dan menyeret pegangan untuk mengontrol kurva - terjemahan mana yang akan saya kenali sebagai memiliki sifat asli dari desain saya? Saya akan berpikir Glyphs, dari diskusi kami di atas, tetapi istilah yang disederhanakan telah melemparkan saya lagi. Atau apakah Anda menyarankan algoritma bezier disederhanakan dan bukan kepadatan titik jangkar?
biscuitstack
1
Itu sebabnya saya menggunakan kutipan di simplify . Saya mengutip wiki (yang mengutip buku dalam ref. 15): "Kurva Bézier derajat n dapat dikonversi menjadi kurva Bézier derajat n +1 dengan bentuk yang sama ." Dengan mengubah TT outline (derajat 2) ke outline PS (derajat 3), Anda tidak kehilangan desain aslinya - secara matematis. Jika Anda mencoba mengembalikan dari PS ke TT, maka Anda dapat kehilangan beberapa informasi. Sekarang, ada juga banyak faktor yang dapat menyebabkan distorsi: representasi internal dari bentuk, kesalahan pembulatan, dll.
Pepe Ochoa
1
Lanjutan: beberapa editor menggunakan koordinat desimal untuk node / titik, dan kemudian mengekspor koordinat integer bulat, yang memengaruhi bentuk kurva yang tepat. Saya sarankan menggunakan alat untuk mengedit font dalam format aslinya, jika Anda ingin mempertahankan kesetiaan. Kalau tidak, preferensi saya adalah selalu menggunakan outline PS. (Meskipun TT menguraikan memungkinkan Anda menggunakan beberapa prosedur mengisyaratkan jahat!: PI kira mereka akan berguna ketika bekerja dengan perangkat resolusi sangat rendah ...)
Pepe Ochoa
11

TrueType menggunakan kurva Bézier kuadrat, sedangkan sebagian besar program vektor lainnya (termasuk Mesin terbang dan Illustrator) menggunakan kurva Bézier kubik. Anda dapat melihat bahwa contoh Glyph Anda tidak menggunakan kurva Bézier kuadrat karena gagang jangkar yang berdekatan tidak terhubung.

Sekarang, kurva Bézier kuadrat adalah kasus khusus dari kurva Bézier kubik¹ dan dengan demikian konversi dari yang pertama ke yang terakhir adalah mudah dan dugaan saya yang terpelajar dari contoh Anda adalah bahwa Glyphs menggunakan konversi yang langsung seperti itu. Untuk alasan yang berada di luar saya, Illustrator mengubah kurva Bézier kuadrat menjadi kurva kubik dengan cara berbeda yang menggunakan lebih banyak jangkar².


¹ sama seperti setiap kotak juga persegi panjang, setiap lingkaran adalah elips, dan seterusnya
² di sini adalah pengamatan yang lebih rinci tentang fenomena yang sama di forum Jerman

Wrzlprmft
sumber
Saya tidak menyadari perbedaan antara berbagai kurva bezier, terima kasih untuk itu. Jika Anda menyarankan bahwa kurva bezier kuadrat (kurang lebih) adalah subset dari kurva bezier kubik, itu masih menimbulkan pertanyaan mengapa ilustrator menyisipkan poin yang tidak perlu (dalam arti yang ditunjukkan oleh mesin terbang) menunjuk daripada memberikan konversi literal yang bisa. Penjelasan Anda tentang kurva bezier kuadratik ke kubik akan menyarankan bahwa mesin terbang akan sangat tidak mungkin untuk mengurangi jumlah poin yang, pada gilirannya, akan menyarankan ilustrator memang menambahkan yang tambahan. Tidak terbukti, tentu saja.
biscuitstack
3
itu masih menimbulkan pertanyaan mengapa ilustrator menyisipkan poin yang tidak perlu (dalam arti yang ditunjukkan oleh mesin terbang) alih-alih memberikan konversi sesering mungkin. - Seperti yang saya katakan, alasan untuk ini adalah di luar saya. Yang bisa saya katakan adalah bahwa fenomena ini (Illustrator menambahkan jangkar tambahan) telah diamati sebelumnya.
Wrzlprmft
Pertanyaan tindak lanjut khusus itu secara luas ditujukan untuk siapa saja yang membaca meskipun saya mengerti mengapa Anda menafsirkannya sebagai ditujukan kepada Anda @Wrzlprmft. Mohon maaf atas kebingungan dan terima kasih atas masukan sejauh ini.
biscuitstack
1
@ joojaa: mungkin lebih kuat untuk membagi kurva pada titik belok. - Kurva Bézier Quadratic tidak dapat memiliki titik belok di luar jangkar. Oleh karena itu mereka dan ekuivalen kubiknya secara otomatis dibagi pada titik belok. - Juga, jika Anda mengharapkan kemunduran atau serupa dalam kasus-kasus tertentu ketika melakukan konversi, Anda biasanya juga dapat memperkirakan kapan ini akan terjadi, jadi Anda tidak perlu mengubahnya sepanjang waktu. Akhirnya, banyak perangkat lunak lain yang tampaknya baik dengan konversi langsung dari kuadrat ke kubik.
Wrzlprmft
-2

Mungkinkah mengubah jumlah titik kontrol menjadi karena pelanggaran hak cipta? Jika tepat jumlah poin yang cocok maka itu ilegal?

saya copy ilustrator ke 758 terdaftar di usa v1.0, yang tidak bisa melakukan outline font kemudian. Hari pertama rilis Adobe itu terjual kurang dari 1.000 eksemplar, hari kedua itu terjual sekitar 16.000 eksemplar.

Hanya input saya, Anda selalu dapat menyederhanakan jalur untuk menambah atau menghapus poin.

Saya juga menggunakan ahli huruf waktu itu dan membuat jenis huruf yang sempurna dengan semua karakter tidak mudah. butuh waktu lebih dari 45 hari untuk menyelesaikannya tetapi tidak pernah sempurna.

steve
sumber
Thats sebenarnya alasan yang cukup masuk akal tetapi jika kita berspekulasi maka saya akan menebak itu semacam residu dari pemrosesan integer
joojaa
3
Mengapa itu merupakan pelanggaran hak cipta ketika formatnya jelas (kurva Bezier kuadratik) dan harus dimungkinkan untuk direproduksi dengan mudah? Selain itu, saya tidak yakin sisa cerita tentang rilis Illustrator dan Fontographer terkait dengan TrueType sama sekali.
Andrew T.
Juga, jika mengubah jumlah titik kontrol sudah cukup untuk menghindari masalah hak cipta, maka menggandakan itu akan melakukan hal yang sama. Saya sungguh meragukan itu. (CC @ joojaa)
Wrzlprmft
@Wrzlprmft Tidak ada hak cipta bukan alasannya, membuat menyalin kurva lebih sulit. Adobe dulu memonopoli mesin font. Jadi dengan tidak membiarkan orang memiliki akses untuk mengarahkan data yang mendasarinya membuat hidup lebih sulit untuk penyalin font. Poin ini diperdebatkan hari ini tetapi ilustrator sekali lagi sangat tua
joojaa
1
@AndrewT. ya mungkin hak cipta adalah ide yang salah arah tetapi penyalinannya sedikit terhambat, menggandakan kurva membuatnya lebih sulit untuk memanipulasi font.
joojaa