mirror of
https://github.com/HolgerHatGarKeineNode/einundzwanzig-nostr.git
synced 2026-01-29 08:53:18 +00:00
153 lines
3.4 KiB
Markdown
153 lines
3.4 KiB
Markdown
---
|
|
name: fonts
|
|
description: Loading Google Fonts and local fonts in Remotion
|
|
metadata:
|
|
tags: fonts, google-fonts, typography, text
|
|
---
|
|
|
|
# Using fonts in Remotion
|
|
|
|
## Google Fonts with @remotion/google-fonts
|
|
|
|
The recommended way to use Google Fonts. It's type-safe and automatically blocks rendering until the font is ready.
|
|
|
|
### Prerequisites
|
|
|
|
First, the @remotion/google-fonts package needs to be installed.
|
|
If it is not installed, use the following command:
|
|
|
|
```bash
|
|
npx remotion add @remotion/google-fonts # If project uses npm
|
|
bunx remotion add @remotion/google-fonts # If project uses bun
|
|
yarn remotion add @remotion/google-fonts # If project uses yarn
|
|
pnpm exec remotion add @remotion/google-fonts # If project uses pnpm
|
|
```
|
|
|
|
```tsx
|
|
import { loadFont } from "@remotion/google-fonts/Lobster";
|
|
|
|
const { fontFamily } = loadFont();
|
|
|
|
export const MyComposition = () => {
|
|
return <div style={{ fontFamily }}>Hello World</div>;
|
|
};
|
|
```
|
|
|
|
Preferrably, specify only needed weights and subsets to reduce file size:
|
|
|
|
```tsx
|
|
import { loadFont } from "@remotion/google-fonts/Roboto";
|
|
|
|
const { fontFamily } = loadFont("normal", {
|
|
weights: ["400", "700"],
|
|
subsets: ["latin"],
|
|
});
|
|
```
|
|
|
|
### Waiting for font to load
|
|
|
|
Use `waitUntilDone()` if you need to know when the font is ready:
|
|
|
|
```tsx
|
|
import { loadFont } from "@remotion/google-fonts/Lobster";
|
|
|
|
const { fontFamily, waitUntilDone } = loadFont();
|
|
|
|
await waitUntilDone();
|
|
```
|
|
|
|
## Local fonts with @remotion/fonts
|
|
|
|
For local font files, use the `@remotion/fonts` package.
|
|
|
|
### Prerequisites
|
|
|
|
First, install @remotion/fonts:
|
|
|
|
```bash
|
|
npx remotion add @remotion/fonts # If project uses npm
|
|
bunx remotion add @remotion/fonts # If project uses bun
|
|
yarn remotion add @remotion/fonts # If project uses yarn
|
|
pnpm exec remotion add @remotion/fonts # If project uses pnpm
|
|
```
|
|
|
|
### Loading a local font
|
|
|
|
Place your font file in the `public/` folder and use `loadFont()`:
|
|
|
|
```tsx
|
|
import { loadFont } from "@remotion/fonts";
|
|
import { staticFile } from "remotion";
|
|
|
|
await loadFont({
|
|
family: "MyFont",
|
|
url: staticFile("MyFont-Regular.woff2"),
|
|
});
|
|
|
|
export const MyComposition = () => {
|
|
return <div style={{ fontFamily: "MyFont" }}>Hello World</div>;
|
|
};
|
|
```
|
|
|
|
### Loading multiple weights
|
|
|
|
Load each weight separately with the same family name:
|
|
|
|
```tsx
|
|
import { loadFont } from "@remotion/fonts";
|
|
import { staticFile } from "remotion";
|
|
|
|
await Promise.all([
|
|
loadFont({
|
|
family: "Inter",
|
|
url: staticFile("Inter-Regular.woff2"),
|
|
weight: "400",
|
|
}),
|
|
loadFont({
|
|
family: "Inter",
|
|
url: staticFile("Inter-Bold.woff2"),
|
|
weight: "700",
|
|
}),
|
|
]);
|
|
```
|
|
|
|
### Available options
|
|
|
|
```tsx
|
|
loadFont({
|
|
family: "MyFont", // Required: name to use in CSS
|
|
url: staticFile("font.woff2"), // Required: font file URL
|
|
format: "woff2", // Optional: auto-detected from extension
|
|
weight: "400", // Optional: font weight
|
|
style: "normal", // Optional: normal or italic
|
|
display: "block", // Optional: font-display behavior
|
|
});
|
|
```
|
|
|
|
## Using in components
|
|
|
|
Call `loadFont()` at the top level of your component or in a separate file that's imported early:
|
|
|
|
```tsx
|
|
import { loadFont } from "@remotion/google-fonts/Montserrat";
|
|
|
|
const { fontFamily } = loadFont("normal", {
|
|
weights: ["400", "700"],
|
|
subsets: ["latin"],
|
|
});
|
|
|
|
export const Title: React.FC<{ text: string }> = ({ text }) => {
|
|
return (
|
|
<h1
|
|
style={{
|
|
fontFamily,
|
|
fontSize: 80,
|
|
fontWeight: "bold",
|
|
}}
|
|
>
|
|
{text}
|
|
</h1>
|
|
);
|
|
};
|
|
```
|