Mengapa menambahkan poin ekstrem saat mendesain font?

9

Tampaknya impor untuk menambahkan titik jangkar pada ekstrem horizontal dan vertikal jalur Anda saat mendesain mesin terbang font. Sebagian besar editor font memiliki fungsi untuk menambahkan ini untuk Anda dan akan memberi Anda kesalahan jika Anda menghilangkannya.

Namun terkadang lebih mudah dan lebih alami untuk menggambar jalur seperti ini:

masukkan deskripsi gambar di sini

Perhatikan sudut yang bervariasi dan kurangnya poin pada sebagian besar ekstrema.

Berikut ini adalah jalur yang lebih baik, tetapi jika Anda memulai dengan sesuatu seperti gambar pertama maka menuju ke ini berarti langkah tambahan dalam proses (kadang-kadang harus menelusuri kembali yang asli):

masukkan deskripsi gambar di sini

Jadi mengapa kita bahkan perlu menambahkan poin ekstra dan masalah praktis apa yang akan saya hadapi jika tidak?

Cai
sumber

Jawaban:

7

Seperti yang telah disebutkan, ekstrema diperlukan untuk rendering font dan secara khusus mengisyaratkan.

Untuk memahami hal ini, mari pertama-tama kita lihat apa yang kira-kira terjadi ketika autohinting mesin terbang dengan ekstrem sebagai jangkar (hijau) dalam kisi-kisi piksel biasa¹: Untuk membuat font terlihat bagus dan segar, goresan vertikal dan horizontal harus tepat jatuh ke dalam kisi piksel. Mesin glyph² yang ditempatkan secara sewenang-wenang biasanya tidak akan memenuhi kriteria ini, dan oleh karena itu penyaji akan sedikit menyimpangkannya ke tujuan itu, yaitu dengan menggerakkan ekstrema, karena mereka menentukan goresan vertikal dan horizontal:

ilustrasi bagian penting dari proses mengisyaratkan

Proses ini membutuhkan dugaan oleh pemberi render yang mengapa perancang dapat mendefinisikan banyak hal (batang ditandai, nilai biru) yang membantu renderer dalam proses ini. Perhatikan bahwa ini hanya salah satu langkah pertama dan ada banyak hal yang terjadi setelah itu, yang tidak perlu kita pedulikan untuk pertanyaan ini.

Sekarang, mari kita anggap kita tidak hanya menggunakan ekstrema untuk mendefinisikan mesin terbang tetapi juga beberapa jangkar diagonal di antaranya. Maka jangkar-jangkar ini harus dipindahkan secara bertahap ketika ekstremanya dipindahkan, yang lagi-lagi membutuhkan tebakan, tetapi tidak seperti memindahkan ekstrem, perancang font tidak dapat berbuat banyak untuk membantu karena kompleksitas situasi ini. Oleh karena itu memindahkan kelebihan jangkar ini merupakan sumber kesalahan, khususnya jika jangkar dekat dengan ekstrema.

Akhirnya kita dapat kembali ke pertanyaan dan mempertimbangkan apa yang terjadi jika kita tidak mendefinisikan jangkar apa pun di ekstrema. Dalam hal ini, renderer harus secara otomatis menentukan ekstrem (yang dapat dilakukan dengan mudah) sebelum memindahkannya dan semua jangkar lainnya bersamaan dengannya. Karena apa yang Anda pilih secara alami sebagai jangkar dekat dengan ekstrem untuk banyak jenis tipografi, ini disertai dengan risiko dugaan buruk karena alasan yang diuraikan di atas.

Untuk meringkas hal-hal di atas: Ekstrem memainkan peran penting ketika melakukan render dan karena itu lebih baik jika mesin terbang Anda dibangun di atas mereka sehingga renderer tidak perlu menebak.

Tanda kutip

From the paten US 7068276 B2 - Metode dan sistem untuk mengisyaratkan font :

Pendekatan algoritmik yang diuraikan di bawah ini berupaya untuk mencocokkan simpul on-curve eksplisit menggunakan fitur-fitur seperti arah kontur dan keberadaan ekstrema.

Dari FontForge's Wiki pada petunjuk :

Kontur harus memiliki arah yang benar, jika tidak gertakan ke zona biru terganggu. Semakin sedikit poin membentuk bentuk (akurat), semakin baik. Tetapi kurva yang mengisyaratkan batang H / V harus memiliki poin di ekstrema, jika tidak, mereka tidak akan patah. Tidak penting jika hal seperti itu 'implisit'.


¹ tidak jauh berbeda untuk mengisyaratkan subpiksel
² yang merupakan penyederhanaan luas karena penempatan mesin terbang dengan isyarat lebih rumit; tetapi cukup untuk contoh ini

Wrzlprmft
sumber
3

Berikut adalah tiga alasan mengapa "poin dalam ekstrema" adalah metode yang lebih disukai ketika bekerja dengan kurva bezier. Bahkan ketika bekerja pada huruf khususnya saya telah melihatnya digambarkan sebagai penting :

  1. Ini meningkatkan (sangat) autohinting dan interpretasi PostScript . Memang mengatur poin ke ekstrem adalah salah satu langkah pertama ketika mengatur petunjuk manual.
  2. Jauh lebih mudah untuk mengedit bentuk nanti . Mengedit kurva nanti jauh lebih mudah dengan poin dalam ekstrema. Pindah poin dalam ekstrem cenderung menjaga kurva cantik dengan upaya tambahan minimum.
  3. Poin keseluruhan kurang . Poin Extremum juga cenderung mencapai bentuk yang sama dengan poin tambahan lebih sedikit ... yang juga menghasilkan ukuran file yang lebih kecil.

Untuk alasan ini banyak program desain perangkat lunak font memiliki alat untuk menyorot dan memperbaiki titik tidak pada maxima dan minima (ekstrema).

Mengatakan semua itu, aku sudah lama bekerja keras untuk mengatur semua poinku dalam ekstrema, dan tidak pernah cukup berhasil, tapi aku tidak menganggap diriku Bezier Ninja!

mayersdesign
sumber
Saya mendapatkan isyarat, meskipun membaca spesifikasi membuat saya percaya itu adalah masalah pembulatan simetris. Dalam berita yang tidak terkait, seseorang harus menghindari titik belok. Namun saya tidak mendapatkan 2 alasan lain. Mereka sering dikutip tetapi tetap. Jika ini benar maka item yang diputar memiliki pegangan bezier optimal berbeda yang tampaknya tidak benar mengingat bagaimana objek konstan pada semua orientasi. Jadi poin-poin ini benar-benar cacat dalam alat penulisan, dan atau kesalahan pada otak manusia.
joojaa
Jika Anda memilih 2 dan 3, Anda lebih suka menggunakan titik belok dan mungkin titik kelengkungan tertinggi (lihat jawaban saya ini ). (CC @ joojaa)
Wrzlprmft
@Wrzlprmft ya saya setuju dengan itu, karena titik belok global dengan bentuk. Juga mesin font benar-benar tidak menyukai kurva yang terbalik sehingga membunuh 2 burung sekaligus.
joojaa