Использование современного шрифта при веб-разработке значительно улучшает пользовательский опыт.
В этой статье мы рассмотрим, как использовать популярный веб-шрифт Poppins в проекте Django,
а также как надежно применять системный шрифт sans-serif в контейнерной среде.
1. Что такое Poppins?
Poppins — это современный и стильный шрифт без засечек (Sans-serif), предоставляемый Google Fonts.
Однако он не поддерживает корейский, японский и китайский языки, поэтому вам нужно будет настроить запасной шрифт.
2. Использование Google Fonts напрямую (CDN метод)
Самый простой способ — вставить ссылку на Google Fonts в <head>
.
<!-- base.html -->
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&family=Noto+Sans+KR&family=Noto+Sans+JP&display=swap" rel="stylesheet">
body {
font-family: 'Poppins', 'Noto Sans KR', 'Noto Sans JP', sans-serif;
}
❗ Внимание: в некоторых странах, таких как Китай, доступ к Google Fonts может быть заблокирован
В этом случае шрифт не будет загружен, и текст может отображаться неправильно или заменяться системным шрифтом.
Чтобы решить эту проблему, лучше использовать локальный метод установки.
3. Как установить и использовать локальные шрифты
📁 Пример структуры каталога проекта
your_project/
├── static/
│ ├── fonts/
│ │ ├── poppins/
│ │ │ ├── Poppins-Regular.woff2
│ │ │ └── Poppins-Bold.woff2
│ │ └── noto/
│ │ ├── NotoSansKR-Regular.woff2
│ │ └── NotoSansJP-Regular.woff2
│ └── css/
│ └── fonts.css
🎨 Пример fonts.css
/* Poppins */
@font-face {
font-family: 'Poppins';
src: url('/static/fonts/poppins/Poppins-Regular.woff2') format('woff2');
font-weight: 400;
}
@font-face {
font-family: 'Poppins';
src: url('/static/fonts/poppins/Poppins-Bold.woff2') format('woff2');
font-weight: 700;
}
/* Noto Sans KR */
@font-face {
font-family: 'Noto Sans KR';
src: url('/static/fonts/noto/NotoSansKR-Regular.woff2') format('woff2');
}
/* Noto Sans JP */
@font-face {
font-family: 'Noto Sans JP';
src: url('/static/fonts/noto/NotoSansJP-Regular.woff2') format('woff2');
}
📌 Пример применения CSS
:root {
--font-default: 'Poppins', 'Noto Sans KR', 'Noto Sans JP', sans-serif;
}
body {
font-family: var(--font-default);
}
4. Нужно ли отдельно устанавливать sans-serif
?
✅ Обычная среда Ubuntu
sans-serif
скорее является названием шрифта, чем семейством шрифтов (generic font family), и на самом деле будет автоматически заменено на основной шрифт без засечек, доступный в системе. (Например: Arial, Helvetica, Noto Sans, DejaVu Sans и т.д. — в зависимости от системы.)- Таким образом, при использовании
font-family: sans-serif;
браузер найдет основной шрифт без засечек для данной ОС и отобразит его. - В большинстве случаев установлены
DejaVu Sans
,Liberation Sans
,Noto Sans
и т.д. - Поэтому, установив только
sans-serif
, можно получить автоматическую замену и корректное отображение.
❌ Среда контейнера Docker
Во многих контейнерах (особенно python:3.x-slim
, debian-slim
) нет основных шрифтов
→ В результате корейские, японские, а также английские символы могут отображаться в виде квадратиков (□).
5. Установка шрифтов в среде Docker
🐳 Пример Dockerfile
FROM python:3.12-slim
RUN apt update && apt install -y \
fonts-dejavu \
fonts-noto \
fonts-noto-cjk \
&& rm -rf /var/lib/apt/lists/*
fonts-dejavu
: для основной замены шрифта sans-seriffonts-noto
: поддержка языков по всему мируfonts-noto-cjk
: поддержка корейских, китайских и японских символов
6. Заключение
Элемент | Содержание |
---|---|
Poppins |
Только для латинских символов, не поддерживает корейский и японский |
Google Fonts | Удобно, но в Китае может быть заблокировано |
Локальная установка | Самый надежный метод |
sans-serif |
Основной шрифт системы, высокая вероятность, что не установлен в Docker |
Поддержка Docker | Необходима установка fonts-dejavu , fonts-noto , fonts-noto-cjk |
📦 Бонус: Рекомендуемое обеспечение резервного шрифта
font-family: 'Poppins', 'Noto Sans KR', 'Noto Sans JP', 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif;
Apple SD Gothic Neo
: macOSMalgun Gothic
: Windows- Резервный шрифт для красивых корейских символов в зависимости от системы
🙋 Вам помогло?
- Пожалуйста, дайте обратную связь через комментарии или по электронной почте.
- Этот блог развивается благодаря вашему интересу.
댓글이 없습니다.