티스토리 뷰
☁️환경☁️
- Next.js(app router)
- tailwind css
현재 진행하고 있는 프로젝트에서
- 한글은 Pretendard
- 영문, 숫자는 Roboto font
두가지 폰트를 사용한다. 굵기와 사이즈도 다양하게 사용된다.
이때 어떻게 최적화된 폰트를 사용할 수 있는지 정리해보려고 한다.
무엇이 정답인지 확신할 수 없기 때문에 최대한 공식문서에 맞게 진행해보자..
Pretendard 다운받기
1. 아래 링크로 들어가 글꼴 다운받기 클릭
https://cactus.tistory.com/306
2. 사용해야하는 파일 찾기
Next.js 공식문서에
` 최상의 성능과 유연성을 위해 가변 글꼴을 사용하는것이 좋습니다 ` 라고 작성되어 있다.
때문에 나는 가변글꼴을 사용할 수 있는 파일을 선택했다.
zip파일 압축 해제 후 아래경로로 따라가 ` PretendardVariable.woff2 `를 찾으면 된다.
web / variable / woff2 / PretendardVariable.woff2
web
용도: 웹에서 사용하기 위해 최적화된 파일
권장사용: 웹 환경에서는 주로 .woff2 파일을 사용하면 최신 브라우저에서 효율적으로 압축되고 빠르게 로드됨
public
용도: 웹 뿐만 아니라 다양한 호나경에서 사용될 수 있는 폰트 파일 (오프라인 인쇄, 데스트톱 환경에서 주로 사용)
권장 사용: 데스크톱이나 애플리케이션, 인쇄용으로 사용 웹에서는 사용하지 않는것이 좋다.
프로젝트에 폰트 설정하기
1. 프로젝트 폴더에 저장하기
공식문서에서 ` localFont `를 가져올 때 경로를 보면 `next/font/local` 로 되어있다.
` src / fonts / PretendardVariable.woff2 ` 경로에 저장해 주면 import 되는 것을 알 수 있다.
2. layout.ts에 코드 작성하기
import localFont from "next/font/local";
const pretendard = localFont({
src: "../fonts/PretendardVariable.woff2",
variable: "--font-pretendard",
display: "swap",
});
`src`
PretendardVariable.woff2 가 존재하는 파일의 경로
` variable `
css 변수로 정의하기
` display `
웹 폰트가 로드되기 전 까지 시스템 폰트로 먼저 표시
그리고 return문 안에서 아래와같이 작성해주면 기본 폰트는 전부 pretendard로 적용될 것이다.
return (
<html lang="ko" className={`${pretendard.variable}`}>
<body className="font-pretendard">
<QueryProvider>{children}</QueryProvider>
</body>
</html>
3. tailwind.config.ts에 fontfamily 추가하기
import type { Config } from "tailwindcss";
const config: Config = {
content: [
"./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
"./src/components/**/*.{js,ts,jsx,tsx,mdx}",
"./src/app/**/*.{js,ts,jsx,tsx,mdx}",
],
theme: {
extend: {
fontFamily: {
pretendard: ["var(--font-pretendard)", "sans-serif"],
roboto: ["var(--font-roboto)", "sans-serif"],
},
},
},
plugins: [],
};
export default config;
GoolgFont 사용하기
공식문서에서 쉽게 설명해주기 때문에 따라하면 된다.
나의 경우 roboto는 숫자와 영문이 들어가는 경우에만 적용되기 때문에
import { Roboto } from "next/font/google";
const roboto = Roboto({
subsets: ["latin"],
weight: ["700"],
display: "swap",
variable: "--font-roboto",
});
return (
<html lang="ko" className={`${pretendard.variable} ${roboto.variable}`}>
<body className="font-pretendard">
<QueryProvider>{children}</QueryProvider>
</body>
</html>
);
}
variable 옵션을 주고
roboto font 적용이 필요한 곳 에만 불러서 사용하고 있다.
<p className="font-roboto">
{subTitle}
</p>
참고로 폰트는 필요한 곳 에서만 불러서 사용하는 것이 성능에 더 좋다!!!
참고 문서
1. https://nextjs.org/docs/app/building-your-application/optimizing/fonts#google-fonts
2. https://nextjs.org/docs/app/building-your-application/optimizing/fonts#local-fonts
- Total
- Today
- Yesterday
- styled component 조건부 사용방법
- git cache
- 에러모음집
- axios instance 작성하기
- Warning: Each child in a list should have a unique "key" prop.
- styled component 설치방법
- readme 역할
- axiosinstance 사용 시 토큰 사용 법
- 별점만들기
- Warning: A component is changing an uncontrolled input to be controlled.
- styled component GlobalStyle 사용방법
- axios 사용하기
- simple Icon 사용방법
- axios 설치하기
- readme 이미지 추가 방법
- 영화 별점
- Fetch와 Axios 의 장단점
- styled component 사용방법
- 별점 색채우기
- 유효성검사
- readme작성해보기
- axios CRUD
- 유효성검사 css
- 영화별점만들기
- nextjs 토큰 만료처리하기
- readme 작성해야 하는 이유
- Warning: validateDOMNesting(...): <li> cannot appear as a descendant of <li>
- readme 작성 방법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |