Jim'in TrueType QR Code Yazı Tipi
Canlı Demo: https://qr.jim.sh/
qrfont-1L.ttf (21x21 modül, en fazla 17 karakter)
Gelecekte Ne Bekleniyor?
qrfont-2L.ttf (25x25 modül, en fazla 32 karakter)
Sistem Güvenliği
qrfont-3L.ttf (29x29 modül, en fazla 53 karakter)
Bu depo, parantezle ayrılmış metni bir QR Kodu sembolüne dönüştürürken etrafındaki metni okunabilir halde bırakan deneysel bir OpenType yazı tipi oluşturur.
Tüm yazı tipleri şunları kullanır:
Nasıl Önlem Alınmalı?
Yazdırılabilir ASCII girişi
[ ve ] sınırlayıcı olarak
Yazı tipleri elle yazmak yerine oluşturulur. Derleme betiği, glif ana hatlarını ve GSUB özellik mantığını yayar ve ardından bunları dist/qrfont-*.ttf olarak derler. Varsayılan yapı sınırlayıcı ayrıştırıcıyı, bayt genişletmeyi, Reed-Solomon eşlik devresini, QR modülü yerleştirmeyi ve sabit maske oluşturmayı derler.
Sonuç ve Değerlendirme
Yazdırılabilir ASCII glifleri Liberation Sans Regular'dan kopyalanır, QR Yazı Tipi em karesine ölçeklendirilir, böylece köşeli parantez içindeki QR bloklarının dışındaki metin aynı yazı tipinde sıradan metin olarak işlenir. Liberation, kaynak yazı tipi lisansı kapsamında ayrılmış bir yazı tipi adıdır, dolayısıyla oluşturulan aileler QR Font 1-L, QR Font 2-L ve QR Font 3-L olarak adlandırılır.
Proje, Python bağımlılık yönetimi için uv'yi kullanıyor. Jeneratörü doğrudan şununla da çalıştırabilirsiniz:
uv çalıştırma araçları/build_font.py
Uzmanların Görüşleri
Varsayılan olarak jeneratör Liberation Sans Regular'ı şu kaynaktan okur:
/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf
Önemli Gelişmeler
Aşağıdakilerle uyumlu, farklı bir TrueType kaynağı kullanın:
Detaylar ve Etkileri
uv çalıştırma araçları/build_font.py --base-font /path/to/BaseFont-Regular.ttf
Teknik Analiz
Oluşturulan Reed-Solomon devresinin tamamını denemek için:
Bu aynı zamanda varsayılan yapım yoludur. Binlerce bağlamsal arama gerçekleştirir ve genellikle yalnızca düzenden oluşan bir yapıdan belirgin şekilde daha uzun sürer.
Yer tutucu sıfır eşlikli, yalnızca düzene yönelik daha hızlı bir yapı için:
Şekillendirilmiş glif akışını incelemek için:
uv çalıştırma araçları/shape_debug.py ' [a] ' ' [b] '
dist/qrfont-*.ttf (1-L, 2-L ve 3-L yazı tipi dosyaları)
(1-L, 2-L ve 3-L yazı tipi dosyaları) dist/index.html (etkileşimli web demosu)
(etkileşimli web demosu) build/qrfont-*.fea (oluşturulan OpenType özellik dosyaları)
Dist/index.html'yi bir tarayıcıda açın ve [merhaba] gibi parantezli metin yazın. abc[def]ghi gibi karışık metinler normal metin olarak işlenmeli, ardından def için bir QR kodu ve ardından normal metin olarak oluşturulmalıdır.
Oluşturulan yazı tipi, Liberation Sans Regular'ın Değiştirilmiş Sürümüdür ve SIL Açık Yazı Tipi Lisansı Sürüm 1.1 kapsamında lisanslanmıştır. LICENSE-OFL.txt ve NOTICE.md'ye bakın.
Bu bir kavram kanıtı yazı tipidir. OpenType şekillendirmeye dayanır, dolayısıyla yazı tipine GSUB özelliklerini uygulayan bir ortama ihtiyaç duyar. Bir QR bloğu içindeki girişler, seçilen yazı tipi sürümüne bağlı olarak 17, 32 veya 53 karaktere kadar yazdırılabilir ASCII ile sınırlandırılmıştır.