Ingin (jarang) pembaruan pada font baru dari tipe panah?
? Daftar untuk buletin Tipe Panah! ?
Ikuti @ArrowType di Instagram!
Pelajari lebih lanjut tentang spesimen web rekursif →

Sans & Mono Recursive adalah jenis keluarga jenis yang dibangun untuk kode & UI yang lebih baik. Ini terinspirasi oleh tanda tangan skrip kasual, tetapi dirancang terutama untuk memenuhi kebutuhan lingkungan pemrograman dan antarmuka aplikasi.
Dalam pemrograman, "rekursi" adalah ketika fungsi memanggil dirinya sendiri, menggunakan outputnya sendiri sebagai input untuk menghasilkan hasil yang kuat. Mono rekursif digunakan sebagai alat untuk membantu membangun dirinya sendiri: digunakan untuk menulis skrip python untuk mengotomatiskan pekerjaan produksi jenis dan untuk menghasilkan gambar spesimen, dan digunakan dalam HTML, CSS, dan JS untuk membuat bukti & prototipe berbasis web. Melalui penggunaan aktif ini, mono rekursif dibuat untuk menjadi menyenangkan untuk dilihat serta sangat berguna untuk pekerjaan sepanjang hari.
Sans rekursif meminjam mesin terbang dari induknya mono tetapi menyesuaikan lebar banyak mesin terbang utama untuk keterbacaan yang nyaman. Metriknya superplexed - setiap gaya memakan ruang horizontal yang sama persis, di semua gaya. Dalam font variabel 3-sumbu ini, ini memungkinkan transisi cairan antara berat, miring, dan "ekspresi" (bentuk huruf kasual hingga ketat), semua tanpa pergeseran teks atau reflow tata letak. Ini tidak hanya memungkinkan untuk kemungkinan interaktif baru di UI, tetapi juga membuat pengalaman pengaturan huruf yang unik.
Recursive dirancang dengan set karakter ahli latin Google Font yang dimodifikasi, termasuk banyak simbol yang berguna untuk mata uang & matematika (lihat Catatan Set Karakter untuk detail lebih lanjut), ditambah dukungan untuk bahasa berikut:
Abenaki, Afaan Oromo, Afar, Afrikaans, Albanian, Alsatian, Amis, Anuta, Aragonese, Aranese, Aromanian, Arrernte, Arvanitic (Latin), Asturian, Atayal, Aymara, Azerbaijani, Bashkir (Latin), Basque, Belarusian (Latin), Bemba, Bikol, Bislama, Bosnian, Breton, Cape Verdean Creole, Catalan, Cebuano, Chamorro, Chavacano, Chichewa, Chickasaw, Cimbrian, Cofán, Cornish, Corsican, Creek, Crimean Tatar (Latin), Croatian, Czech, Danish, Dawan, Delaware, Dholuo, Drehu, Dutch, English, Esperanto, Estonian, Faroese, Fijian, Filipino, Finnish, Folkspraak, French, Frisian, Friulian, Gagauz (Latin), Galician, Ganda, Genoese, German, Gikuyu, Gooniyandi, Greenlandic (Kalaallisut), Guadeloupean Creole, Gwich’in, Haitian Creole, Hän, Hawaiian, Hiligaynon, Hopi, Hotcąk (Latin), Hungarian, Icelandic, Ido, Igbo, Ilocano, Indonesian, Interglossa, Interlingua, Irish, Istro-Romanian, Italian, Jamaican, Javanese (Latin), Jèrriais, Kaingang, Kala Lagaw Ya, Kapampangan (Latin), Kaqchikel, Karakalpak (Latin), Karelian (Latin), Kashubian, Kikongo, Kinyarwanda, Kiribati, Kirundi, Klingon, Kurdish (Latin), Ladin, Latin, Latino sine Flexione, Latvian, Lithuanian, Lojban, Lombard, Low Saxon, Luxembourgish, Maasai, Makhuwa, Malay, Maltese, Manx, Māori, Marquesan, Megleno-Romanian, Meriam Mir, Mirandese, Mohawk, Moldovan, Montagnais, Montenegrin, Murrinh-Patha, Nagamese Creole, Nahuatl, Ndebele, Neapolitan, Ngiyambaa, Niuean, Noongar, Norwegian, Novial, Occidental, Occitan, Old Icelandic, Old Norse, Onĕipŏt, Oshiwambo, Ossetian (Latin), Palauan, Papiamento, Piedmontese, Polish, Portuguese, Potawatomi, Q’eqchi’, Quechua, Rarotongan, Romanian, Romansh, Rotokas, Sami (Inari Sami), Sami (Lule Sami), Sami (Northern Sami), Sami (Southern Sami), Samoan, Sango, Saramaccan, Sardinian, Scottish Gaelic, Serbian (Latin), Seri, Seychellois Creole, Shawnee, Shona, Sicilian, Silesian, Slovak, Slovenian, Slovio (Latin), Somali, Sorbian (Lower Sorbian), Sorbian (Upper Sorbian), Sotho (Northern), Sotho (Southern), Spanish, Sranan, Sundanese (Latin), Swahili, Swazi, Swedish, Tagalog, Tahitian, Tetum, Tok Pisin, Tokelauan, Tongan, Tshiluba, Tsonga, Tswana, Tumbuka, Turkish, Turkmen (Latin), Tuvaluan, Tzotzil, Uzbek (Latin), Venetian, Vepsian, Vietnamese, Volapük, Võro, Wallisian, Walloon, Waray-Waray, Warlpiri, Wayuu, Welsh, Wik-Mungkan, Wiradjuri, Wolof, Xavante, Xhosa, Yapese, Yindjibarndi, Zapotec, Zarma, Zazaki, Zulu, Zuni
Saat Anda mempertimbangkan untuk menggunakan font, lisensi font adalah salah satu hal pertama yang harus Anda cari dan baca. Ini menguraikan bagaimana Anda setuju untuk menggunakan font, dan lisensi font berbeda antara berbagai jenis proyek & jenis pengecoran.
Proyek rekursif dilisensikan di bawah lisensi font terbuka SIL v1.1. Ini adalah lisensi perangkat lunak gratis yang memungkinkan Anda menggunakan perangkat lunak font di bawah satu set kondisi. Silakan merujuk ke teks lengkap lisensi untuk perincian tentang izin, ketentuan, dan penafian.
The Easy Way: Buka file font di buku font, dan klik "Instal Font".
Cara yang bagus:
<yourusername>/Library/FontsKlik dua kali file TTF, lalu pilih "Instal."
Untuk menginstal banyak file font statis (ini mungkin berfungsi lebih baik di aplikasi seperti Microsoft Word dan PowerPoint):
static_fonts , lalu ke folder Mono atau Sans static_otf .Ini adalah topik besar, tetapi beberapa pemandu yang baik berasal dari MDN dan dari CSS-Tricks.
Secara umum, Anda harus menautkan di font dengan @font-face , pastikan untuk menggunakan font-weight: 300 1000; Untuk menentukan kisaran berat font:
@font-face {
font-family: 'Recursive';
src: url('path/to/font/<UPDATE_SPECIFIC_FONT_PATH>.woff2') format('woff2-variations');
font-weight: 300 1000;
}
Kemudian, Anda dapat menggunakan font dengan font-weight dan font-variation-settings !
Catatan:
MONO dan CASL adalah sumbu "tidak terdaftar" (saat ini tidak ada dalam daftar resmi microsoft tentang sumbu dan spesifikasi variasi), sehingga tag ini harus digunakan dalam semua topi dan dikendalikan melalui font-variation-settings .font-style properti untuk mengontrol sumbu slnt dan CRSV , tetapi ini memiliki beberapa masalah dukungan browser (pada Oktober 2019, tetapi alat dengan cepat berkembang untuk mendukung font font-variation-settings yang lebih baik, jadi ini akan membaik dari waktufont-variation-settings -Baca lebih lanjut tentang teknik ini dalam tutorial fantastis Pixel Ambacht di atasnya. Ada dua cara utama untuk menggunakan rekursif dalam editor kode:
Instal Font Rec Mono (ditemukan di folder "Recursive_Code" dari unduhan rilis). Ini memiliki ligatur kode & beberapa set gaya yang telah diterapkan sebelumnya sehingga mereka akan bekerja secara default di sebagian besar lingkungan & aplikasi kode. Ini juga dinamai & dikonfigurasi dengan cara yang memungkinkan penggunaannya dalam tema kode yang memanfaatkan gaya miring & tebal. Jika Anda ingin mengonfigurasi fitur spesifik di Rec Mono font (seperti 0 hundukan atau satu lantai g ), lihat konfigurasi kode rekursif.
Font ini dibangun dengan cara yang lebih tradisional daripada font "kode" di atas, sehingga mereka dapat membuat sedikit lebih baik dalam beberapa konteks. Namun, ada pro dan kontra: ligatur kode bekerja lebih baik dalam font "kode", di banyak aplikasi khusus monospace. Di Mac sebelum MacOS 11, ini tidak berfungsi dalam tema dengan gaya miring - lihat di atas untuk font "kode" yang dilakukan. Dan, font "kode" memungkinkan Anda sedikit lebih banyak kustomisasi, jika Anda menginginkannya!
Untuk menggunakan font decktop standar, pasang font Recursive Mono desktop (ditemukan di folder “Recursive_Desktop” dari unduhan rilis). Kemudian, aktifkan & atur fitur OpenType jika editor kode Anda memungkinkan ini. Instruksi untuk tiga editor mengikuti.
Singkatnya, buka pengaturan editor dan atur keluarga font. Nama -nama keluarga ini dipersingkat karena nama font panjang dapat menyebabkan kesalahan di beberapa lingkungan. Singkatan utama adalah sebagai berikut:
Mn berarti mono (monospace/fixed-width)Sn berarti sans (proporsional/lebar alam)Csl berarti santaiLnr berarti linierSt berarti statis (berbeda dengan variabel, seperti font variabel rekursif penuh) Jadi, Anda akan cukup banyak mengatur editor Anda untuk menggunakan Recursive Mn Csl St atau Recursive Mn Lnr St .
Dalam pengaturan, cari Font Family , lalu tentukan keluarga yang ingin Anda gunakan.
Untuk mono kasual rekursif reguler:
"Recursive Mn Csl St", Menlo, "Apple Color Emoji", monospace
Untuk mono linear recursive reguler:
"Recursive Mn Lnr St", Menlo, "Apple Color Emoji", monospace
Kemudian, jika Anda mau, Anda dapat mengaktifkan fitur OpenType dengan mencari di pengaturan untuk fontLigatures , lalu mengedit ini di settings.json seperti ini:
"editor.fontLigatures" : " 'ss01','ss05','dlig' " (Di atas akan memberi Anda 6 & 9 yang disederhanakan, satu lantai a , dan mengaktifkan ligatur kode.)
Di bilah menu, buka Atom -> Stylesheet dan tambahkan yang berikut:
atom-text-editor {
font-family : 'Recursive Mn Csl St' ; /* This sets the font family*/
font-feature-settings : "ss01" , "ss05" , "dlig" ; /* This sets OpenType features, if you want to set them. */
} Gunakan font-family: 'Recursive Mn Lnr St'; untuk mendapatkan keluarga linier.
Buka Sublime Text -> Preferences -> Settings dan atur font_face ke nama postscript spesifik dari gaya yang ingin Anda gunakan.
Untuk mono kasual rekursif reguler:
"font_face" : " Recursive Mn Csl St " ,Untuk mono linear recursive reguler:
"font_face" : " Recursive Mn Lnr St " , Untuk mengontrol ligatur kode atau fitur openType lainnya, buka font_options , seperti:
"font_options" : [ " ss01 " , " ss05 " , " dlig " ],Jadi, pengaturan lengkap mungkin terlihat seperti ini:
{
"font_face" : " Recursive Mn Lnr St " ,
"font_size" : 24 ,
"theme" : " Adaptive.sublime-theme "
}Rekursif memiliki sumbu berikut:
| Sumbu | Menandai | Jangkauan | Bawaan | Keterangan |
|---|---|---|---|---|
| Monospace | MONO | 0 hingga 1 | 0 | Sans (lebar alam) ke mono (lebar tetap) |
| Kasual | CASL | 0 hingga 1 | 0 | Linier untuk santai |
| Berat | wght | 300 hingga 1000 | 300 | Cahaya ke extrablack. Dapat didefinisikan dengan properti font-weight biasa. |
| Miring | slnt | 0 hingga -15 | 0 | Tegak (0 °) miring (sekitar 15 °) |
| Kursif | CRSV | 0, 0,5, atau 1 | 0,5 | Selalu Romawi (0), otomatis (0,5), atau selalu kursif (1) |
Definisi sumbu, rekursif
Monospace MONO - 0 hingga 1. Menyesuaikan lebar mesin terbang dari proporsional atau "sans" (0) dengan lebar tetap atau "mono" (1).
Penggunaan yang Disarankan: Secara umum, desain proporsional lebih mudah dibaca dalam teks dan UI, sedangkan desain monospace lebih tepat untuk kode dan teks di mana disambiguasi huruf sangat kritis (mis. Kata sandi, nomor ID, data tabel, dll).
CASL Casual - 0 hingga 1. Menyesuaikan gaya ekspresif atau "genre" mesin terbang. Dalam rekursif, ini berubah dari linier (0) ke santai (1).
Penggunaan yang Disarankan: Gaya linier berbagi struktur yang serupa dengan font yang diklasifikasikan sebagai aspek lineal , penggabungan SAN humanis dengan bentuk huruf sisi datar yang dirasionalisasi, kompak, datar. Struktur reguler dan akrab ini membuatnya sesuai untuk teks bentuk panjang yang membutuhkan fokus (misalnya paragraf, dokumen kode lengkap, dan berita utama). Gaya kasual terinspirasi oleh tanda tangan kasual tunggal, tetapi ditarik untuk ukuran kecil. Ini paling berguna dalam teks bentuk yang lebih pendek di mana nada yang hangat dan mengundang diinginkan (misalnya headlines posting blog, tanda toko, dan terminal komputer).
Berat wght - 300 hingga 1000. Ketebalan keseluruhan huruf dan kegelapan teks yang disusun dengan mereka. Khususnya, dalam rekursif, sumbu berat tidak mempengaruhi lebar mesin terbang. Bobot tebal membutuhkan jumlah ruang yang sama dengan bobot yang ringan, bahkan pada gaya proporsional sumbu MONO .
Penggunaan yang Disarankan: Perbedaan berat dapat memberikan penekanan dalam teks, menunjukkan interaksi pengguna, atau menyesuaikan nada komunikasi. Untuk teks terang pada latar belakang gelap, 400 ("biasa") cenderung sesuai untuk teks dan kode. Untuk teks gelap pada latar belakang terang, dapat bermanfaat untuk menyesuaikan berat hingga 500 ("sedang").
Mengapa tidak merupakan poros grade? Lihat masalah #365
Slant slnt -0 hingga -15. "Lean" dari depan "dari huruf. Catatan: -15 (negatif 15) sesuai dengan kemiringan searah jarum jam 15 °, karena akar desain tipe dalam geometri. Jika sumbu miring berada pada nilai defaultnya, melewati miring -13.99 akan mengaktifkan huruf "Kursif", mengubahnya menjadi bentuk yang lebih ditulis seperti yang disederhanakan, "Single Story" a dan g
Penggunaan yang Disarankan: Gunakan Slant sebagai cara sekunder untuk menekankan teks atau bervariasi nada tipografi. Dalam teks, dapat berguna untuk menggunakan miring parsial sekitar -9, sementara pada ukuran tampilan, Anda dapat mengharapkan garis besar yang paling tepat di 0 atau -15. Anda juga dapat menghidupkan dari 0 hingga -13 tanpa bentuk surat atau lebar mesin terbang, yang sangat bagus untuk hal -hal seperti tautan atau tombol yang melayang.
Kursif CRSV - 0, 0,5, atau 1. Mengontrol substitusi bentuk kursif di sepanjang sumbu miring. "Off" (0) mempertahankan bentuk huruf Romawi seperti "cerita ganda" a dan g , "Auto" (0,5) memungkinkan substitusi kursif, dan "on" (1) menegaskan bentuk -bentuk kursif bahkan dalam teks tegak dengan miring 0.
Penggunaan yang Disarankan: Gunakan Kursive sebagai cara tersier untuk menekankan teks, atau sebagai cara untuk memiliki lebih banyak kontrol atas teks animasi (misalnya hyperlink yang miring pada interaksi pengguna dengan ditata dengan kursif 0 atau 1 untuk mencegah perubahan mendadak dari substitusi glyph).
Secara umum, rekursif dimaksudkan untuk penggunaan berukuran kecil hingga menengah, terutama di layar. Namun, sangat berguna untuk memahami rentang gaya mana yang paling cocok dalam konteks apa. Beberapa pedoman yang patut diketahui:
| Rentang gaya | Ukuran yang disarankan | Kasus Penggunaan yang Disarankan |
|---|---|---|
| Santai 0 (linier) , berat 300–800 (Light -Extrabold) | 8px ke 72px | Penggunaan umum (terutama untuk teks yang lebih panjang) |
| Casual 1 (santai) , berat 300–800 (Light -Extrabold) | 14px ke 72px | Penggunaan umum (lebih banyak kepribadian) |
| Berat 801–900 (Black -Extrablack) | 32px ke 144px | Berita utama, tampilan tipografi |
| Nilai menengah kasual dan miring | 10px ke 40px | Bagus dalam teks, tetapi mungkin tidak terlihat bagus dalam ukuran tampilan |
Hal -hal yang harus diperhatikan:
CASL dan slnt menengah. Jika Anda tetap menggunakan contoh yang disebutkan dalam aplikasi desain (misalnya Mono Casual Bold Italic , dll), ini ditangani untuk Anda secara otomatis.Rekursif dibangun dengan sejumlah fitur openType yang membuatnya mudah untuk mengontrol beberapa fitur tipografi yang berguna.

Untuk membangun, atur lingkungan virtual
virtualenv -p python3 venv
Kemudian aktifkan:
source venv/bin/activate
Kemudian pasang persyaratan:
pip install -U -r requirements.txt
Juga:
pip install git+https://github.com/LettError/DesignspaceProblems
Font dibangun dengan skrip mastering/build.py . Script ini dapat membangun semuanya ( python build.py --all ), atau subset dari font. Untuk melihat semua opsi, ketik python build.py -h untuk melihat semua opsi. Proses pembuatan yang disarankan dirinci di bawah ini.
CATATAN: Ada sub-skrip untuk hanya menyiapkan file sumber ( mastering/prep_fonts.py ), membangun file sumber ( mastering/build_files.py ), menghasilkan font variabel ( mastering/build_variable.py ), dan menghasilkan font statis ( build_static.py ). Skrip ini bisa berguna jika Anda hanya ingin melakukan satu hal pada file build. Masing -masing mengambil satu set argumen baris perintah, semua didokumentasikan (ketik python <script_name> -h ) untuk melihat dokumentasi.
Pertama, persiapan font
Sebelum memulai, ubah direktori kerja Anda menjadi mastering .
cd mastering
python build.py --files adalah langkah pertama. Ini akan menghasilkan semua file yang diperlukan untuk membangun font variabel dan statis. Anda mungkin ingin memberikan font nomor versi dengan perintah ini ( python build.py --version 1.085 --files ). Untuk menyiapkan hanya file untuk font variabel, gunakan python build.py --varfiles , atau untuk menyiapkan hanya file untuk font statis, gunakan python build.py --statfiles .
Setelah file telah dihasilkan (perhatikan bahwa instance statis membutuhkan sedikit waktu untuk menghasilkan), Anda akan ingin melihat file mastering/build/static/CFF/checkoutlines.txt . Ini adalah laporan (diedit untuk menghapus masalah yang tidak perlu diperhatikan) dari checkoutlinesufo. Masalah yang ditemukan dalam laporan ini harus dibersihkan di UFO statis. Banyak masalah karena penghapusan tumpang tindih. Tidak ada yang sempurna, termasuk algoritma penghapusan tumpang tindih.
Untuk membangun font variabel
Untuk membangun font variabel, jalankan:
# activate venv, install dependencies, cd mastering
version=1.085 # (replace version number)
python build.py --varfiles --version $version
python build.py --variable --version $versionUntuk membangun font statis
Untuk membangun semua font statis, jalankan:
# activate venv, install dependencies, cd mastering
version=1.085 # (replace version number)
python build.py --statfiles --version $version
python build.py --static --version $versionUntuk membangun semua font
Jika Anda ingin membangun semua sumber, font, dan versi Woff2 dari semua font berjalan:
# activate venv, install dependencies, cd mastering
python build.py --all --version 1.085 # (replace version number)Dapatkan pemberitahuan (hanya Mac)
Tambahkan opsi --pync ( -p singkatnya) ke panggilan skrip untuk mendapatkan pemberitahuan Mac, yang mungkin bermanfaat jika Anda sedang mengerjakan tugas lain saat pembuatan berjalan.
# activate venv, install dependencies, cd mastering
python build.py --all --pync --version 1.085 # (replace version number)Pertama, bangun font dengan aliran mastering di atas. Kemudian:
# navigate to the root directory of the project, then...
# update to latest font build directory
fontDir= " fonts_1.085 "
src/build-scripts/make-release/00-prep-release.sh $fontDir Kemudian, salin font variabel terbaru ke repo konfigurasi kode rekursif lokal Anda untuk membangun font kode yang diperbarui. Salin ini ke direktori fonts/ArrowType-Recursive-1.XXX/Recursive_Code yang baru dibuat.
Akhirnya, buka halaman Rilis Repo untuk membuat yang baru.
Proyek ini telah memasukkan sejumlah besar penelitian (terkandung dalam docs/ ), dan berisi banyak alat kecil (terkandung dalam src/00-recursive-scripts-for-robofont yang dapat membantu Anda jika Anda merancang font variabel dengan UFO di Robofont.
Arahkan ke folder Robofont Script Anda di terminal.
cd , lalu salin-paste atau drag-n-drop folder skrip untuk mendapatkan filepath lengkapnya. Tekan Return/Enter. Buat tautan simbolik atau "symlink" ke folder skrip proyek rekursif, src/00-recursive-scripts-for-robofont
ln -ssrc/00-recursive-scripts-for-robofont dari Finder untuk mendapatkan jalur lengkapnya. Tekan Return/Enter.ls untuk mendaftar file. Anda akan melihat src/00-recursive-scripts-for-robofont sebagai salah satu item yang terdaftar.Jadi, ini akan terlihat seperti:
ln -s ~/FOLDER_PATH/robofont-scripts ~/FOLDER_PATH/recursive/src/00-recursive-scripts-for-robofont
Sekarang, Anda dapat menjalankan skrip proyek rekursif langsung dari menu skrip, atau dengan membukanya di jendela skrip.
Lihat Kontribusi.MD untuk kebijakan seputar berkontribusi pada proyek.