import { Geist, Geist_Mono } from "next/font/google";
import localFont from "next/font/local";

/**
 * 全局字体配置（仅供服务端组件使用，例如 `src/app/layout.tsx`）。
 *
 * - `next/font/google` 与 `next/font/local` 在构建期完成 self-host、preload、
 *   subset、inline，浏览器不会向 Google 发送请求，也不会产生 layout shift。
 * - 产出的 CSS 变量由 `globals.css` 桥接到 Tailwind（如 `font-sans`、`font-athelas`）。
 *
 * 注意：本文件不通过 `src/lib/index.ts` 桶导出，避免被误打进客户端 bundle。
 *       引用方式：`import { geistSans, geistMono, athelas } from "@/core/fonts";`
 */

const geistSans = Geist({
  variable: "--font-geist-sans",
  subsets: ["latin"],
});

const geistMono = Geist_Mono({
  variable: "--font-geist-mono",
  subsets: ["latin"],
});

/**
 * Athelas 本地字体。
 *
 * 原始资源：/Users/chase/Documents/cozsweet/fonts/Athelas-*.woff2
 * 放置位置：/public/fonts/Athelas-*.woff2
 *
 * 路径计算（`next/font/local` 要求相对路径从调用文件出发）：
 *   src/core/fonts.ts → ../../public/fonts/...
 */
const athelas = localFont({
  src: [
    {
      path: "../../public/fonts/Athelas-Regular.woff2",
      weight: "400",
      style: "normal",
    },
    {
      path: "../../public/fonts/Athelas-Bold.woff2",
      weight: "700",
      style: "normal",
    },
    {
      path: "../../public/fonts/Athelas-BoldItalic.woff2",
      weight: "700",
      style: "italic",
    },
  ],
  variable: "--font-athelas",
  display: "swap",
});

export { geistSans, geistMono, athelas };
