Masalah
- Sulit melakukan penyorotan sintaks saat membuat situs web yang dikodekan manual dengan HTML dan CSS
- Ingin menyorot dengan warna agar snippet kode lebih mudah dibaca dan dipahami
- Biasanya harus menggunakan library penyorotan sintaks yang kompleks seperti Prism atau highlight.js
- Ingin menulis kode secara manual tanpa menggunakan skrip eksternal
Menanamkan fitur penyorotan sintaks ke dalam font itu sendiri dengan menggunakan fitur OpenType
- Memodifikasi font open source bernama Monaspace Krypton agar menyertakan versi berwarna dari tiap karakter
- Menggunakan tabel COLR milik OpenType dan fitur substitusi kontekstual untuk mencari dan mengganti string tertentu
- Hasilnya adalah penyorot sintaks sederhana yang tertanam langsung di dalam font
Kelebihan dan kekurangan
Kelebihan
- Instalasi sederhana: cukup impor font lalu aktifkan fitur OpenType COLR (warna) dan CALT (substitusi kontekstual)
- Tidak memerlukan JavaScript
- Tidak memerlukan tema CSS
- Secepat teks biasa
- Bisa menambahkan snippet kode ke tag
<pre> dan <code>
- Kode sumber HTML yang bersih
- Berfungsi di mana pun yang mendukung fitur OpenType, seperti InDesign
- Tidak memerlukan pemeliharaan atau pembaruan
- Juga berfungsi di
<textarea> dan <input>
Kekurangan
- Jika perlu mengubah palet warna atau menambahkan dukungan bahasa, file font harus dimodifikasi
- Hanya berfungsi di tempat yang mendukung OpenType
- Pencarian pola dengan substitusi kontekstual OpenType bersifat dasar dan tidak sebanding dengan skrip yang menggunakan regular expression
Cara kerjanya secara nyata
- Menggunakan tabel COLR OpenType dan fitur substitusi kontekstual
- Tabel COLR memungkinkan font berwarna
- Substitusi kontekstual mengenali karakter yang berdekatan lalu menggantinya
- Contoh: menemukan keyword JavaScript
if lalu menggantinya dengan varian berwarna
Ringkasan GN⁺
- Artikel ini mengajukan cara baru untuk menerapkan penyorotan sintaks saat menulis situs web secara manual
- Dengan memanfaatkan fitur OpenType untuk menanamkan penyorotan sintaks langsung ke dalam font, penyorotan sintaks menjadi mungkin tanpa JavaScript atau tema CSS
- Metode ini cocok untuk penyorotan sintaks sederhana, tetapi memiliki keterbatasan jika dibandingkan dengan library penyorotan sintaks yang lebih kompleks
- Proyek dengan fungsi serupa antara lain Prism dan highlight.js
1 komentar
Komentar Hacker News
Peretasan yang menarik
font-feature-settings: "colr", "calt";tidak memiliki articolrtidak ada di tabel layout OpenTypecaltaktif secara defaultTeks asli tetap dipertahankan
userContent.csstanpa pembungkusan tag atau JSSaya bukan ahli OpenType, jadi logika substitusinya mungkin bisa diperbaiki
Peretasan ini mengerikan tetapi juga mengagumkan
Peretasan yang luar biasa
Ada pesan yang bagus di bagian bawah halaman
Sepertinya ini bisa diotomatisasi dengan kode
Ada bug di browser berbasis Chromium
color: blue, hanyaryang disorotIni benar-benar fitur yang keren
Sepertinya dibutuhkan sesuatu yang bekerja seperti parser generator
Benar-benar fitur yang menakjubkan