Adding Local Fonts to SvelteKit with Tailwind
To add WOFF2 fonts to a SvelteKit project using TailwindCSS, you can follow these steps:
1. Download and Place the Font Files
First, download your WOFF2 font files and place them in a directory within your project. A common practice is to place them in the lib
or src
directory.
For this example, let's place them in the src/lib/fonts
directory:
src/lib/fonts/YourFont.woff2
2. Define the Font in CSS
Create a CSS file or use an existing one to define the @font-face
rule. This will tell the browser where to find the font files and how to use them.
For example, create a file named global.css
in the src
directory and add the following code:
@layer base {
@font-face {
font-family: 'YourFont';
font-style: normal;
font-weight: 400;
src: url('$lib/fonts/YourFont.woff2') format('woff2');
}
}
3. Import the CSS in Svelte
Ensure that your CSS file is imported in your Svelte components. Typically, you would import it in the +layout.svelte
file to make the font available globally:
<script>
import '../global.css';
</script>
<slot />
4. Configure TailwindCSS
Update your tailwind.config.js
file to include your custom font. You can either replace the default font family or extend the existing configuration.
Option 1: Replace the Default Font
// tailwind.config.js
/** @type {import('tailwindcss').Config} */
export default {
content: ['./src/**/*.{html,js,svelte,ts}'],
theme: {
fontFamily: {
sans: ["YourFont", 'sans-serif'],
},
extend: {},
},
plugins: [],
};
Option 2: Add as an Extended Font
// tailwind.config.js
/** @type {import('tailwindcss').Config} */
export default {
content: ['./src/**/*.{html,js,svelte,ts}'],
theme: {
extend: {
fontFamily: {
custom: ["YourFont", 'sans-serif'],
},
},
},
plugins: [],
};
5. Use the Custom Font in Your Components
Now, you can use the custom font in your Svelte components by applying the corresponding TailwindCSS class.
For example, in a Svelte component:
<div class="font-custom">
<h1 class="text-5xl">Hello, World!</h1>
</div>
Or, if you replaced the default font:
<div class="font-sans">
<h1 class="text-5xl">Hello, World!</h1>
</div>
Last updated