Sorunlar
- HTML ve CSS ile elle kodlanmış bir web sitesi oluştururken söz dizimi vurgusu yapmak zor
- Kod parçacıklarının kolay okunup anlaşılması için renklerle vurgulanması isteniyor
- Genellikle Prism veya highlight.js gibi karmaşık söz dizimi vurgulama kütüphaneleri kullanmak gerekiyor
- Harici script kullanmadan elle kod yazmak isteniyor
OpenType özelliklerini kullanarak söz dizimi vurgusunu doğrudan fontun içine yerleştirmek
- Monaspace Krypton adlı açık kaynaklı font değiştirilerek her karakterin renkli sürümleri eklendi
- OpenType'ın COLR tablosu ve bağlamsal değiştirme özellikleri kullanılarak belirli dizgeler bulunup değiştiriliyor
- Sonuç olarak, fontun içine gömülü basit bir söz dizimi vurgulayıcı ortaya çıkıyor
Avantajlar ve dezavantajlar
Avantajlar
- Kurulum basit: fontu içe aktarıp OpenType COLR (renk) ve CALT (bağlamsal değiştirme) özelliklerini etkinleştirmek yeterli
- JavaScript gerekmiyor
- CSS teması gerekmiyor
- Düz metin kadar hızlı
- Kod parçacıkları
<pre> ve <code> etiketlerine eklenebiliyor
- Temiz HTML kaynak kodu
- InDesign gibi OpenType özelliklerini destekleyen her yerde çalışıyor
- Bakım ya da güncelleme gerekmiyor
<textarea> ve <input> içinde de çalışıyor
Dezavantajlar
- Renk paletini değiştirmek veya dil desteği eklemek gibi düzenlemeler gerektiğinde font dosyasını değiştirmek gerekiyor
- Yalnızca OpenType'ı destekleyen ortamlarda çalışıyor
- OpenType bağlamsal değiştirme ile yapılan desen bulma temel düzeyde; regular expression kullanan script'lerle kıyaslanamaz
Gerçekte nasıl çalışıyor
- OpenType COLR tablosu ve bağlamsal değiştirme özellikleri kullanılıyor
- COLR tablosu çok renkli fontları mümkün kılıyor
- Bağlamsal değiştirme, bitişik karakterleri algılayıp değiştiriyor
- Örnek: JavaScript anahtar sözcüğü
if bulunup renkli bir varyantla değiştiriliyor
GN⁺ özeti
- Bu yazı, web sitelerini elle kodlarken söz dizimi vurgusu uygulamak için yeni bir yöntem sunuyor
- OpenType özelliklerinden yararlanarak söz dizimi vurgusunu doğrudan fontun içine gömüyor; böylece JavaScript veya CSS temaları olmadan da söz dizimi vurgusu mümkün oluyor
- Bu yöntem basit söz dizimi vurgusu için uygun olsa da, karmaşık söz dizimi vurgulama kütüphanelerine kıyasla sınırlamaları var
- Benzer işlev sunan projeler arasında Prism ve highlight.js bulunuyor
1 yorum
Hacker News görüşü
İlginç bir hack
font-feature-settings: "colr", "calt";ayarının bir anlamı yokcolrözellik etiketi OpenType düzen tablolarında yokcaltözelliği zaten varsayılan olarak etkinOrijinal metin olduğu gibi korunuyor
userContent.cssile çalışıyorOpenType uzmanı değilim, bu yüzden yedek mantık geliştirilebilir
Bu hack korkunç ama hayranlık uyandırıcı
Harika bir hack
highlight.jsile benzer boyuttaSayfanın altında güzel bir mesaj var
Bunun kodla otomatikleştirilebileceği gibi görünüyor
Chromium tabanlı tarayıcılarda bir hata var
color: blueyazınca yalnızcarvurgulanıyorGerçekten çok havalı bir özellik
Bir parser generator gibi çalışan bir şeye ihtiyaç var gibi görünüyor
Gerçekten şaşırtıcı bir özellik