Perkenalan Dropflow
- Dropflow adalah mesin layout CSS yang dibuat untuk mengeksplorasi cakupan standar CSS dasar (inline, block, float, positioning, table, dan lain-lain).
- Mendukung implementasi layout teks berkualitas tinggi dan dapat menampilkan berbagai bahasa di dunia.
- Dapat digunakan di backend dengan Node dan node-canvas untuk menghasilkan PDF atau gambar, atau di browser untuk merender teks kaya dan terbungkus ke canvas.
Fitur utama
- Mendukung lebih dari 30 properti kompleks seperti
float
- Mendukung teks bidirectional dan RTL
- Selain menerima HTML dan CSS, juga mendukung API Hyperscript (
h()) untuk memberi gaya dengan objek
- Harus mendaftarkan semua buffer OpenType/TrueType
- Fallback font pada tingkat grapheme
- Mendukung tanda diakritik berwarna
- Pemenggalan baris yang diinginkan (misalnya memindahkan padding awal ke baris berikutnya)
- Shaping yang dioptimalkan
- Gaya yang diwariskan dan cascade tidak dihitung dua kali
- Menangani sebanyak mungkin edge case layout CSS
- Typing lengkap
- Banyak pengujian
- Cepat
Aturan CSS yang didukung
- Pemformatan inline: properti seperti
color, direction, font-family, font-size, font-stretch, font-style, font-weight, line-height, text-align, vertical-align, white-space, dan lainnya berfungsi.
- Pemformatan block: properti
clear, float berfungsi.
- Box dan positioning: properti seperti
background-clip, background-color, border-color, border-style, border-width, top, right, bottom, left, box-sizing, display, height, margin, padding, position, width, z-index, dan lainnya berfungsi.
Cara penggunaan
- Dropflow bekerja pada DOM yang memiliki gaya turunan dan gaya hasil komputasi.
- Gunakan fungsi
h() untuk membuat DOM, dan tentukan gaya sebagai objek biasa.
- Mendaftarkan font sebelum layout adalah langkah wajib.
- Dapat melakukan layout dan menggambar pada ukuran penuh canvas.
Karakteristik performa
- Performa adalah tujuan penting kedua setelah akurasi.
- Performa dapat diperiksa melalui berbagai contoh.
- Pada MacBook Pro 2019, mengonversi HTML menjadi gambar memerlukan 9ms, dan pada MacBook Pro 2012 memerlukan 13ms.
- Mengonversi 'The Little Prince' dari HTML menjadi gambar memerlukan kurang dari 160ms pada MacBook Pro 2019, dan kurang dari 250ms pada MacBook Pro 2012.
- Membuat dan me-layout kata 10 huruf (tanpa menggambar) memerlukan kurang dari 25µs pada MacBook Pro 2019, dan kurang dari 50µs pada MacBook Pro 2012.
- Dengan menggunakan API Hyperscript, Anda dapat melewati tahap parsing HTML dan CSS dan langsung membuat DOM untuk mencapai performa tercepat.
API
- Pendaftaran font dan pembuatan DOM adalah dua langkah pertama.
- Anda dapat merender DOM ke canvas, atau menggunakan fungsi level rendah jika ingin mempertahankan layout.
HarfBuzz
- Layout glyph dilakukan oleh HarfBuzz yang dikompilasi ke WebAssembly.
- Ini memungkinkan tercapainya tingkat akurasi yang tidak mungkin diperoleh saat menggunakan API
measureText.
Ucapan terima kasih
- dropflow tidak memiliki dependensi
package.json, tetapi proyek ini dimungkinkan berkat banyak proyek lain.
- Dependensi Javascript telah dimodifikasi agar sesuai dengan proyek dan sudah di-check-in.
Pendapat GN⁺
- Dropflow adalah alat baru bagi pengembang web untuk mengatasi kompleksitas layout CSS dan menyediakan layout teks yang konsisten baik di browser maupun backend.
- Alat seperti ini dapat sangat berguna terutama untuk pengembangan aplikasi web yang terinternasionalisasi dan harus mendukung berbagai bahasa serta font.
- Penggunaan HarfBuzz dapat sangat meningkatkan akurasi perenderan teks, tetapi bisa menjadi hambatan awal bagi pengembang yang belum akrab dengan teknologi WebAssembly.
- Proyek lain dengan fungsi serupa mencakup pustaka layout yang menggunakan CSS Grid dan Flexbox, tetapi Dropflow berfokus pada pendekatan layout CSS yang lebih tradisional.
- Sebelum mengadopsi Dropflow, perlu dievaluasi apakah alat ini sesuai dengan kebutuhan proyek dengan mempertimbangkan performa dan kompatibilitas.
3 komentar
Judul aslinya ternyata adalah "Show HN: Dropflow, mesin layout CSS untuk node atau <canvas>". Sekarang judulnya masuk sebagai "GN⁺: Perkenalan HN: Dropflow, mesin layout CSS untuk node atau <canvas></canvas>".
Karena ada tag di judul, bagian judul di halaman detail jadi rusak ya.. haha, perlu di-escape..
Komentar Hacker News