{"id":6934,"date":"2026-07-30T14:01:32","date_gmt":"2026-07-30T05:01:32","guid":{"rendered":"https:\/\/www.freelifemakers.org\/wordpress\/?p=6934"},"modified":"2026-07-31T09:34:36","modified_gmt":"2026-07-31T00:34:36","slug":"nextjs-fonts-title-route","status":"publish","type":"post","link":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/2026\/07\/30\/nextjs-fonts-title-route\/","title":{"rendered":"[nextjs]\ud3f0\ud2b8,\ud0c0\uc774\ud2c0,\ub77c\uc6b0\ud305 \/ Fonts, Titles, Routing"},"content":{"rendered":"\n<p>\ud83d\udc49\ud83c\udffb nextjs\uc5d0\uc11c \ud3f0\ud2b8,\ud0c0\uc774\ud2c0,\ub77c\uc6b0\ud305\uc5d0 \ub300\ud574\uc11c \uc124\uba85\ud569\ub2c8\ub2e4.<br>This section explains fonts, titles, and routing in Next.js.<\/p>\n\n\n\n<p>\u2705 github\ud504\ub85c\uc81d\ud2b8\ub294 myapp2\uc785\ub2c8\ub2e4.<br>The GitHub project is myapp2.<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/gideonslife01\/flm-nextjs\">https:\/\/github.com\/gideonslife01\/flm-nextjs<\/a><\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb Nextjs\uc5d0\ub294 tailwind4 css\uac00 \uc801\uc6a9\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<br>Tailwind CSS v4 is applied to the Next.js project.<\/p>\n\n\n\n<p>\u2714\ufe0f globals.css<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@import \"tailwindcss\";<\/code><\/pre>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb tailwind css \uacf5\uc2dd \ubb38\uc11c\ub294 \uc544\ub798\uc758 \ub9c1\ud06c\ub97c \ucc38\uc870\ud558\uc138\uc694<br>Please refer to the link below for the official Tailwind CSS documentation.<\/p>\n\n\n\n<p><a href=\"https:\/\/tailwindcss.com\">https:\/\/tailwindcss.com<\/a><\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb \ud398\uc774\uc9c0 \ud0c0\uc774\ud2c0 \uc88c\uce21\uc758 \uac00\uc6b4\ub370 \uc0bc\uac01\ud615 \ubaa8\uc591\uc758 \uc544\uc774\ucf58\uc740 \ucef4\ud30c\uc77c \ud45c\uc2dc\uae30\ub85c \uac1c\ubc1c\uc790\uc6a9\uc785\ub2c8\ub2e4.<br>The triangular icon to the left of the page title is a compilation indicator intended for developers.<\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb \ud398\uc774\uc9c0 \uc88c\uce21 \ud558\ub2e8\uc758 \uac00\uc6b4\ub370 N \ubaa8\uc591\uc758 \uba54\ub274\ub294  \uac1c\ubc1c\ud45c\uc2dc\uae30(Next.js Dev Indicator)\ub85c \uac1c\ubc1c\uc790\uc6a9\uc785\ub2c8\ub2e4.<br>The N-shaped menu located at the bottom-left of the page is the Next.js Dev Indicator, intended for developers.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udcc1 \uc124\uba85 \/ Description<\/p>\n\n\n\n<p>\u2714\ufe0f \uae30\ubcf8 \ud0c0\uc774\ud2c0 \ubcc0\uacbd<br>Change default title<\/p>\n\n\n\n<p>&#8212; Layout.tsx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ 3. \ud398\uc774\uc9c0 \ud0c0\uc774\ud2c0 \ubc0f \uc124\uba85\uc744 \uc124\uc815\ud569\ub2c8\ub2e4. \/ Set the page title and description.\nexport const metadata: Metadata = {\n  title: \"\ub450 \ubc88\uc9f8 Next.js \uc571 \/ Second Next.js App \",\n  description: \"Generated by create next app\",\n};<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \ud55c\uae00 \ud3f0\ud2b8 \uc801\uc6a9  \/ Apply Korean font<\/p>\n\n\n\n<p>&#8212; Layout.tsx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { Geist, Geist_Mono,<strong>Noto_Sans_KR<\/strong> } from \"next\/font\/google\";\n\n... \uc911\ub7b5 \/ omitted ...\n\nconst notoSansKr = Noto_Sans_KR({\n  variable: \"<strong>--font-noto-sans-kr<\/strong>\",\n  subsets: &#91;\"latin\"], \n  \/\/ \uc0ac\uc6a9\ud560 \uad75\uae30 \uc9c0\uc815 (\uc77c\ubc18, \ubbf8\ub514\uc6c0, \uad75\uac8c)\n  \/\/ Specify the weights to use (normal, medium, bold)\n  weight: &#91;\"400\", \"500\", \"700\"],\n});\n\n... \uc911\ub7b5 \/ omitted ...\n\nexport default function RootLayout({\n  children,\n}: Readonly&lt;{\n  children: React.ReactNode;\n}>) {\n  return (\n    &lt;html\n      lang=\"ko\"\n      className={`${geistSans.variable} ${geistMono.variable} <strong>${notoSansKr.variable}<\/strong> h-full antialiased`}\n    >\n      &lt;body className=\"min-h-full flex flex-col\">{children}&lt;\/body>\n    &lt;\/html>\n  );\n}<\/code><\/pre>\n\n\n\n<p>&#8212; global.css<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@theme inline {\n  --color-background: var(--background);\n  --color-foreground: var(--foreground);\n  \/* --font-noto-sans-kr \ubcc0\uc218\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4 \/ Add --font-noto-sans-kr variable *\/\n  --font-sans: <strong>var(--font-noto-sans-kr),<\/strong> var(--font-geist-sans), <strong>sans-serif<\/strong>;\n  --font-mono: var(--font-geist-mono);\n}\n\n... \uc911\ub7b5 \/ Omitted ...\n\nbody {\n  background: var(--background);\n  color: var(--foreground);\n  \/*font-family: Arial, Helvetica, sans-serif;*\/\n\n    \/* \uae30\uc874 Arial \ub300\uc2e0 Tailwind\uc758 \uae30\ubcf8 sans \ud3f0\ud2b8 \uaddc\uce59\uc744 \ub530\ub974\ub3c4\ub85d \uc218\uc815\ud569\ub2c8\ub2e4 \/ \n      Modify to follow Tailwind's default sans font rules *\/\n  font-family: var(--font-sans);\n}<\/code><\/pre>\n\n\n\n<p>1)\uad75\uc740 \uae00\uc528\ub85c \ud45c\uc2dc\ub41c \ubd80\ubd84\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.<br>Add the parts marked in bold.<\/p>\n\n\n\n<p>2)sans-serif\ub294 \ud3f0\ud2b8 \ub2e4\uc6b4\ub85c\ub4dc \uc2e4\ud328\uc2dc \uc801\uc6a9\ud560 \ud3f0\ud2b8\uc785\ub2c8\ub2e4.<br><code>sans-serif<\/code> is the font to be applied if the font download fails.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2714\ufe0f \ud30c\uc77c\uae30\ubc18 \ub77c\uc6b0\ud305 \/ File-based Routing<\/p>\n\n\n\n<p>&#8212; project\/app\ub514\ub809\ud1a0\ub9ac \ub0b4\uc5d0\uc11c about \ub514\ub809\ud1a0\ub9ac\ub97c \ub9cc\ub4e4\uace0 \ub514\ub809\ud1a0\ub9ac \uc548\uc5d0 page.tsx\ud30c\uc77c\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.<br>Create an <code>about<\/code> directory within the <code>project\/app<\/code> directory, and create a <code>page.tsx<\/code> file inside it.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>myapp2\/\n\u2514\u2500\u2500 app\/\n    \u251c\u2500\u2500 about\/\n    \u2502   \u2514\u2500\u2500 <strong>page.tsx<\/strong>\n    \u251c\u2500\u2500 favicon.ico\n    \u251c\u2500\u2500 globals.css\n    \u251c\u2500\u2500 layout.tsx\n    \u2514\u2500\u2500 page.tsx\n<\/code><\/pre>\n\n\n\n<p>&#8212; page.tsx\ud30c\uc77c\uc5d0 \uc544\ub798\uc758 \ucf54\ub4dc\ub97c \uc791\uc131\ud569\ub2c8\ub2e4.<br>Write the code below in the <code>page.tsx<\/code> file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ app\/about\/page.tsx\nexport default function AboutPage() {\n  return (\n    &lt;div className=\"p-8\"&gt;\n      &lt;h1 className=\"text-3xl font-bold text-blue-600 mb-4\"&gt;\uc18c\uac1c \ud398\uc774\uc9c0 \/ About Page&lt;\/h1&gt;\n      &lt;p className=\"text-gray-600\"&gt;\uc548\ub155\ud558\uc138\uc694! Next.js\ub85c \ub9cc\ub4e0 \ud398\uc774\uc9c0\uc785\ub2c8\ub2e4.&lt;\/p&gt;\n      &lt;p className=\"text-gray-600\"&gt;Hello! This is a page built with Next.js.&lt;\/p&gt;\n    &lt;\/div&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<p>&#8212; npm run dev\ub85c \uc11c\ubc84\ub97c \uc2e4\ud589\ud558\uace0 \ube0c\ub77c\uc6b0\uc800\uc5d0 http:\/\/localhost:3000\/about\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>&#8212; \uadf8\ub7ec\uba74 \uc544\ub798\ucc98\ub7fc \ube0c\ub77c\uc6b0\uc800 \ud654\uba74\uc5d0 about\/page.tsx \ud30c\uc77c\uc774 \uc2e4\ud589\ub429\ub2c8\ub2e4.<br>Then, the <code>about\/page.tsx<\/code> file will execute and appear on the browser screen as shown below.<\/p>\n\n\n\n<p>&#8212; \uc774\uac83\uc744 \ud30c\uc77c\uae30\ubc18 \ub77c\uc6b0\ud305\uc774\ub77c\uace0 \ud569\ub2c8\ub2e4.<br>This is called file-based routing.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"615\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/07\/about-page-jpg.jpg\" alt=\"\" class=\"wp-image-6979\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/07\/about-page-jpg.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/07\/about-page-jpg-300x231.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/07\/about-page-jpg-768x590.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/07\/about-page-jpg-400x308.jpg 400w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption class=\"wp-element-caption\">about page<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2714\ufe0f \ud398\uc774\uc9c0 \ub9c1\ud06c \/ page link<\/p>\n\n\n\n<p>&#8212; project\/page.tsx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Next.js\uc758 Link \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc0c1\ub2e8\uc5d0\uc11c \uac00\uc838\uc635\ub2c8\ub2e4.\nimport Link from \"next\/link\";\n\n... \uc911\ub7b5 \/ Omitted ...\n\n      {\/* 2. Link \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774\ub3d9 \ubc84\ud2bc\uc744 \ub9cc\ub4ed\ub2c8\ub2e4. \/ \n          Create a navigation button using the Link component. *\/}\n      &lt;div className=\"pt-4\"&gt;\n<strong>        &lt;Link \n          href=\"\/about\" \n          className=\"inline-block bg-purple-600 hover:bg-purple-700 text-white font-medium px-6 py-3 rounded-xl shadow-md transition-colors duration-200\"\n        &gt;\n          About page\u2192\n        &lt;\/Link&gt;<\/strong>\n      &lt;\/div&gt;<\/code><\/pre>\n\n\n\n<p>1)page.tsx\ud30c\uc77c\uc5d0 about\ub514\ub809\ud1a0\ub9ac \ub0b4\uc758 page.tsx\ud30c\uc77c\uc758 \ub9c1\ud06c\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.<br>Create a link to the <code>page.tsx<\/code> file located in the <code>about<\/code> directory within the <code>page.tsx<\/code> file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"391\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/07\/root-page-jpg.jpg\" alt=\"\" class=\"wp-image-6974\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/07\/root-page-jpg.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/07\/root-page-jpg-300x147.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/07\/root-page-jpg-768x375.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/07\/root-page-jpg-400x196.jpg 400w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption class=\"wp-element-caption\">main <\/figcaption><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udc49\ud83c\udffb nextjs\uc5d0\uc11c \ud3f0\ud2b8,\ud0c0\uc774\ud2c0,\ub77c\uc6b0\ud305\uc5d0 \ub300\ud574\uc11c \uc124\uba85\ud569\ub2c8\ub2e4.This section explains fonts, titles, and routing in Next.js. \u2705 github\ud504\ub85c\uc81d\ud2b8\ub294 myapp2\uc785\ub2c8\ub2e4.The GitHub project is myapp2. https:\/\/github.com\/gideonslife01\/flm-nextjs \ud83d\udc49\ud83c\udffb Nextjs\uc5d0\ub294 tailwind4 css\uac00 \uc801\uc6a9\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.Tailwind CSS v4 is applied to the Next.js project. \u2714\ufe0f globals.css \ud83d\udc49\ud83c\udffb tailwind css \uacf5\uc2dd \ubb38\uc11c\ub294 \uc544\ub798\uc758 \ub9c1\ud06c\ub97c \ucc38\uc870\ud558\uc138\uc694Please refer to the link below for the official Tailwind CSS [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27,1,7],"tags":[],"class_list":["post-6934","post","type-post","status-publish","format-standard","hentry","category-nextjs","category-uncategorized","category-website","missing-thumbnail"],"_links":{"self":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/6934","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=6934"}],"version-history":[{"count":45,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/6934\/revisions"}],"predecessor-version":[{"id":6983,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/6934\/revisions\/6983"}],"wp:attachment":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=6934"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=6934"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=6934"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}