Teks dan tipografi

Podcast CSS - 036: Teks & Tipografi

Teks merupakan salah satu elemen penyusun inti web.

Saat membuat situs web, Anda tidak perlu memberi gaya teks; HTML sebenarnya memiliki beberapa gaya default yang cukup wajar.

Namun, teks kemungkinan akan mengisi sebagian besar situs Anda, jadi sebaiknya tambahkan beberapa gaya untuk merapikannya. Dengan mengubah beberapa properti dasar, Anda dapat meningkatkan pengalaman membaca secara signifikan bagi pengguna!

Dalam modul ini, kita akan memulai dengan aturan @font-face, yang memungkinkan Anda mengimpor font kustom ke halaman web. Hal ini memastikan bahwa Anda memiliki tipografi yang tepat yang dibutuhkan, terlepas dari font yang diinstal pengguna.

Setelah itu, kita akan membahas properti font CSS yang penting, termasuk font-family, font-style, font-weight, dan font-size. Dasar-dasar ini memungkinkan manipulasi teks untuk gaya dan keterbacaan.

Kita juga akan membahas properti khusus paragraf seperti text-indent dan word-spacing, sebelum menutup dengan topik lanjutan seperti font variabel dan elemen pseudo, yang makin menyempurnakan kontrol tipografi Anda.

Contoh dan tips praktis akan diberikan secara keseluruhan untuk memperkuat pemahaman dan penerapan teknik CSS ini.

Aturan @font-face

CSS @font-face yang berlaku sangat penting dalam desain web, yang memungkinkan Anda menentukan dan menggunakan font kustom untuk menampilkan teks. Keindahan @font-face terletak pada keserbagunaannya: memungkinkan Anda mendapatkan font dari server jarak jauh, atau dari font yang diinstal di perangkat pengguna.

Sintaksis

@font-face {
  font-family: "Trickster";
  src:
    local("Trickster"),
    url("trickster-COLRv1.otf") format("opentype") tech(color-COLRv1),
    url("trickster-outline.otf") format("opentype"),
    url("trickster-outline.woff") format("woff")
}

Penanda (Descriptors)

ascent-override
Menyesuaikan metrik pendakian, yang memengaruhi ruang di atas dasar pengukuran.
descent-override
Menyesuaikan metrik penurunan, yang memengaruhi ruang di bawah dasar pengukuran.
font-display
Mengontrol perilaku tampilan font bergantung pada status downloadnya.
font-family
Menamai font untuk digunakan dalam properti terkait font.
font-stretch
Menetapkan penskalaan horizontal yang dapat diterima, yang ditetapkan sebagai nilai atau rentang tunggal.
font-style
Menentukan gaya font, yang mendukung rentang sudut untuk gaya miring.
font-weight
Menentukan bobot font atau rentang bobot yang tersedia.
font-feature-settings
Mengaktifkan akses ke fitur font OpenType.
font-variation-settings
Memberikan kontrol yang lebih baik atas setelan font variabel.
line-gap-override
Mengganti jarak baris default font.
size-adjust
Menerapkan faktor penskalaan ke metrik dan struktur font.
src
Menentukan sumber font, baik lokal maupun jarak jauh. Tindakan ini diperlukan untuk aturan @font-face. Menggabungkan url() dan local() dalam src adalah strategi umum yang menggunakan font lokal jika tersedia, dengan mengembalikan ke file font jarak jauh sebagai penggantian. Browser memprioritaskan resource berdasarkan urutan deklarasi, sehingga local() biasanya harus mendahului url().
unicode-range
Membatasi karakter yang harus digunakan dengan font ini.

Deskripsi

@font-face membebaskan desainer dari batasan font "aman bagi web" dengan memungkinkan mereka menggunakan tipografi kustom. Kemampuan fungsi local() untuk menelusuri font di perangkat pengguna menawarkan pengalaman yang lancar yang tidak selalu bergantung pada koneksi internet.

Jenis MIME font

Format Jenis MIME
TrueType font/ttf
OpenType font/otf
Format Font Web Open font/woff
Format Font Web Open 2 font/woff2

Perbedaan antara @font-face dan font-family

Dalam CSS, @font-face dan font-family sering kali bingung, tetapi memiliki tujuan yang berbeda.

Seperti yang telah kita bahas, @font-face adalah aturan yang digunakan untuk menentukan font kustom apa pun yang ingin Anda gunakan di aplikasi web. Atribut ini memberi tahu browser tempat mendownload font, cara menampilkannya selama pemuatan (dengan properti font-display), dan menentukan subset karakter mana yang akan didownload (dengan unicode-range).

Sebaliknya, font-family adalah properti CSS yang digunakan dalam aturan CSS untuk menetapkan font tertentu atau daftar font ke elemen. Font yang tercantum dalam font-family dapat berupa font yang aman bagi web, font sistem, atau font kustom yang ditentukan dengan @font-face.

Singkatnya, @font-face mendeklarasikan font dan memberinya nama, serta font-family menerapkan font yang dideklarasikan ini ke elemen HTML.

Berikut ini contoh penggunaan keduanya:

<table>
  <thead>
    <tr>
      <th><p><pre>
@font-face {
  font-family: "CustomFont";
  src: url("customfont.woff2") format("woff2");
}

body {
  font-family: "CustomFont", Arial, sans-serif;
}

Dalam contoh ini, @font-face menentukan "CustomFont" dan memberi tahu browser tempat menemukannya. Kemudian, properti font-family menerapkannya ke elemen isi, dengan Arial sebagai penggantian jika "CustomFont" tidak tersedia.

Mengubah jenis huruf

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Gunakan font-family untuk mengubah typeface teks Anda.

Properti font-family menerima daftar string yang dipisahkan koma, baik yang merujuk ke jenis font spesifik atau generik. Jenis font tertentu merupakan string dengan tanda kutip, seperti "Helvetica", "EB Garamond", atau "Times New Roman". Jenis font generik adalah kata kunci seperti serif, sans-serif, dan monospace (temukan daftar lengkap opsi di MDN). Browser akan menampilkan jenis huruf pertama yang tersedia dari daftar yang disediakan.

Saat menggunakan font-family, Anda harus menentukan setidaknya satu jenis font generik jika browser pengguna tidak memiliki font pilihan Anda. Umumnya, jenis font generik penggantian harus mirip dengan font pilihan Anda: jika menggunakan font-family: "Helvetica" (jenis font sans-serif), penggantian Anda harus sans-serif agar cocok.

Menggunakan font miring dan miring

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Gunakan font-style untuk menyetel apakah teks harus dicetak miring atau tidak. font-style menerima salah satu kata kunci berikut: normal, italic, dan oblique.

Menebalkan teks

Dukungan Browser

  • 2
  • 12
  • 1
  • 1

Sumber

Gunakan font-weight untuk menetapkan "ketebalan" teks. Properti ini menerima nilai kata kunci (normal, bold), nilai kata kunci relatif (lighter, bolder), dan nilai numerik (100 hingga 900).

Kata kunci normal dan bold masing-masing setara dengan nilai numerik 400 dan 700.

Kata kunci lighter dan bolder dihitung secara relatif terhadap elemen induk. Lihat Arti Bobot Relatif MDN untuk melihat diagram praktis yang menunjukkan cara menentukan nilai ini.

Mengubah ukuran teks

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Gunakan font-size untuk mengontrol ukuran elemen teks. Properti ini menerima nilai panjang, persentase, dan beberapa nilai kata kunci.

Selain nilai panjang dan persentase, font-size menerima beberapa nilai kata kunci absolut (xx-small, x-small, small, medium, large, x-large, xx-large) dan beberapa nilai kata kunci relatif (smaller, larger). Nilai relatif bersifat relatif terhadap font-size elemen induk.

Mengubah spasi antarbaris

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Gunakan line-height untuk menentukan tinggi setiap baris dalam elemen. Properti ini menerima angka, panjang, persentase, atau kata kunci normal. Umumnya, lebih disarankan untuk menggunakan angka, bukan panjang atau persentase untuk menghindari masalah dengan pewarisan.

Mengubah spasi antar-karakter

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Gunakan letter-spacing untuk mengontrol jumlah spasi horizontal antar-karakter dalam teks. Properti ini menerima nilai panjang seperti em, px, dan rem.

Perhatikan bahwa nilai yang ditentukan meningkatkan jumlah ruang alami di antara karakter. Dalam demo berikut, coba pilih setiap huruf untuk melihat ukuran tampilan lebarnya dan bagaimana perubahannya dengan letter-spacing.

Mengubah spasi antarkata

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Gunakan word-spacing untuk menambah atau mengurangi panjang spasi antar-kata dalam teks. Properti ini menerima nilai panjang seperti em, px, dan rem. Perhatikan bahwa panjang yang Anda tentukan adalah untuk ruang tambahan selain spasi normal. Ini berarti word-spacing: 0 setara dengan word-spacing: normal.

Singkatan font

Anda dapat menggunakan properti singkat font untuk menetapkan banyak properti terkait font sekaligus. Daftar properti yang memungkinkan adalah font-family, font-size, font-stretch, font-style, font-variant, font-weight, dan line-height.

Lihat artikel font MMD untuk informasi selengkapnya tentang cara mengurutkan properti ini.

Mengubah kapitalisasi teks

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Gunakan text-transform untuk mengubah kapitalisasi teks tanpa perlu mengubah HTML yang mendasarinya. Properti ini menerima nilai kata kunci berikut: uppercase, lowercase, dan capitalize.

Menambahkan garis bawah, garis atas, dan garis batas ke teks

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Gunakan text-decoration untuk menambahkan baris ke teks Anda. Garis bawah paling umum digunakan, tetapi Anda dapat menambahkan baris di atas teks atau menembusnya.

Properti text-decoration adalah singkatan untuk properti yang lebih spesifik yang dijelaskan di bawah.

Properti text-decoration-line menerima kata kunci underline, overline, dan line-through. Anda juga dapat menentukan beberapa kata kunci untuk beberapa baris.

Properti text-decoration-color menetapkan warna semua dekorasi dari text-decoration-line.

Properti text-decoration-style menerima kata kunci solid, double, dotted, dashed, dan wavy.

Properti text-decoration-thickness menerima nilai panjang apa pun dan menetapkan lebar goresan semua dekorasi dari text-decoration-line.

Properti text-decoration adalah singkatan untuk semua properti di atas.

Menambahkan indentasi ke teks

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Gunakan text-indent untuk menambahkan indentasi ke blok teks Anda. Properti ini menggunakan panjang (misalnya, 10px, 2em) atau persentase lebar blok yang memuatnya.

Menangani konten yang berlebih atau tersembunyi

Dukungan Browser

  • 1
  • 12
  • 7
  • 1,3

Sumber

Gunakan text-overflow untuk menentukan cara konten tersembunyi ditampilkan. Ada dua opsi: clip (default), yang memotong teks di titik tambahan; dan ellipsis, yang menampilkan elipsis (...) di titik tambahan.

Mengontrol ruang kosong

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Properti white-space digunakan untuk menentukan cara penanganan spasi kosong dalam elemen. Untuk mengetahui detail selengkapnya, lihat artikel white-space tentang MDN.

white-space: pre dapat berguna untuk merender seni ASCII atau blok kode yang diindentasi secara hati-hati.

Mengontrol bagaimana kata-kata dipisahkan

Dukungan Browser

  • 1
  • 12
  • 15
  • 3

Sumber

Gunakan word-break untuk mengubah cara kata "dirusak" saat kata akan melampaui batas. Secara default, browser tidak akan memisahkan kata. Menggunakan nilai kata kunci break-all untuk word-break akan memerintahkan browser untuk memisahkan kata pada setiap karakter jika perlu.

Ubah perataan teks

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Gunakan text-align untuk menentukan perataan teks secara horizontal dalam elemen blok atau sel tabel. Properti ini menerima nilai kata kunci left, right, start, end, center, justify, dan match-parent.

Nilai left dan right meratakan teks ke sisi kiri dan kanan blok.

Gunakan start dan end untuk mewakili lokasi awal dan akhir baris teks dalam mode penulisan saat ini. Oleh karena itu, start memetakan ke left dalam bahasa Inggris, dan ke right dalam skrip Arab yang ditulis dari kanan ke kiri (RTL). Keduanya adalah penyelarasan logis. Pelajari lebih lanjut di modul properti logis kami.

Gunakan center untuk meratakan teks ke bagian tengah blok.

Nilai justify mengatur teks dan mengubah spasi kata secara otomatis sehingga teks sejajar dengan tepi kiri dan kanan blok.

Mengubah arah teks

Dukungan Browser

  • 2
  • 12
  • 1
  • 1

Sumber

Gunakan direction untuk menetapkan arah teks, baik ltr (kiri ke kanan, default) atau rtl (kanan ke kiri). Beberapa bahasa seperti bahasa Arab, Ibrani, atau Persia ditulis dari kanan ke kiri, sehingga direction: rtl harus digunakan. Untuk bahasa Inggris dan semua bahasa yang ditulis dari kiri ke kanan lainnya, gunakan direction: ltr.

Mengubah alur teks

Dukungan Browser

  • 48
  • 12
  • 41
  • 10.1

Sumber

Gunakan writing-mode untuk mengubah cara teks mengalir dan diatur. Defaultnya adalah horizontal-tb, tetapi Anda juga dapat menetapkan writing-mode ke vertical-lr atau vertical-rl untuk teks yang ingin mengalir secara horizontal.

Mengubah orientasi teks

Dukungan Browser

  • 48
  • 79
  • 41
  • 14

Sumber

Gunakan text-orientation untuk menentukan orientasi karakter dalam teks. Nilai yang valid untuk properti ini adalah mixed dan upright. Properti ini hanya relevan jika writing-mode ditetapkan ke sesuatu selain horizontal-tb.

Menambahkan bayangan ke teks

Dukungan Browser

  • 2
  • 12
  • 3,5
  • 1.1

Sumber

Gunakan text-shadow untuk menambahkan bayangan ke teks. Properti ini mengharapkan tiga panjang (x-offset, y-offset, dan blur-radius) dan satu warna.

Lihat bagian text-shadow dalam modul kami tentang Bayangan untuk mempelajari lebih lanjut.

Font variabel

Biasanya, {i>font<i} "normal" mengharuskan Anda mengimpor file yang berbeda untuk berbagai versi jenis huruf, seperti huruf tebal, miring, atau dipadatkan. {i>Font<i} variabel adalah {i>font<i} yang dapat berisi banyak varian jenis huruf yang berbeda dalam satu file.

Roboto Flex dalam kombinasi acak Lebar dan Berat

Lihat artikel kami tentang Font Variabel untuk informasi selengkapnya.

Elemen semu

Elemen pseudo ::first-letter dan ::first-line

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Elemen pseudo ::first-letter dan ::first-line masing-masing menargetkan huruf pertama dan baris pertama elemen teks.

Elemen semu ::selection

Dukungan Browser

  • 1
  • 12
  • 62
  • 1.1

Sumber

Gunakan elemen semu ::selection untuk mengubah tampilan teks yang dipilih pengguna.

Saat menggunakan elemen semu ini, hanya properti CSS tertentu yang dapat digunakan: color, background-color, text-decoration, text-shadow, stroke-color, fill-color, stroke-width.

font-variant

Dukungan Browser

  • 1
  • 12
  • 1
  • 1

Sumber

Properti font-variant adalah singkatan untuk sejumlah properti CSS yang memungkinkan Anda memilih varian font seperti small-caps dan slashed-zero. Properti CSS yang disertakan oleh singkatan ini adalah font-variant-alternates, font-variant-caps, font-variant-east-asian, font-variant-ligatures, dan font-variant-numeric. Lihat link di setiap properti untuk mengetahui detail lebih lanjut tentang penggunaannya.

Menguji pemahaman Anda

Uji pengetahuan Anda tentang tipografi di web

Manakah dari kata kunci berikut yang dapat digunakan sebagai penggantian umum font-family?

serif
Benar.
monospace
Benar.
italic
Coba lagi. italic adalah kata kunci yang valid untuk font-style, bukan font-family.
sci-fi
Coba lagi. Namun, fantasy adalah penggantian generik yang valid untuk font-family.
sans-serif
Benar.
helvetica
Coba lagi. "Helvetica" bukan kata kunci umum, tetapi merujuk pada jenis font tertentu.

Pernyataan mana yang digunakan untuk mengonversi huruf pertama setiap kata menjadi huruf besar? misalnya This is a sentence.This Is A Sentence.

text-capitalize: true;
Coba lagi.
text-case: capitalize;
Coba lagi.
text-transform: capitalize;
Benar.
font-style: capitals;
Coba lagi.
font-variant: capitalize;
Coba lagi.

Benar atau Salah: Gunakan text-orientation untuk meratakan teks ke kiri, kanan, atau tengah.

Benar
Coba lagi. text-orientation mengubah rotasi huruf dalam satu baris.
Salah
Benar. text-orientation mengubah rotasi huruf dalam satu baris. Gunakan text-align untuk meratakan teks ke kiri, kanan, atau tengah (dan lainnya!).

Properti CSS manakah yang dapat digunakan untuk mengubah spasi antar baris teks?

line-spacing
Coba lagi.
leading
Coba lagi. Awal adalah istilah yang tepat untuk ruang antar baris dalam tipografi, tetapi bukan properti CSS yang valid.
baseline-distance
Coba lagi.
line-height
Benar.

Referensi