reactjs - 带有 Next.js 和样式化组件的本地字体
问题描述
我想在项目中添加本地字体。
我正在使用next.js
和globalStyles
来自styled-components
.
这是我到目前为止所做的
import regularFont from "../public/fonts/IRANYekanRegular.ttf";
const GlobalStyle = createGlobalStyle<{ lang?: Languages_type | string }>`
@font-face {
font-family: "ir";
src: local("ir"), url(${regularFont}) format("truetype");
}
body,
html {
margin: 0;
font-family:"ir ";
}
`;
但是使用上面的代码,它会抛出错误并说
./public/fonts/IRANYekanRegular.ttf 模块解析失败:意外字符'' (1:0) 您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理此文件。请参阅https://webpack.js.org/concepts#loaders(此二进制文件省略了源代码)
我错过了什么?
解决方案
在 Next.js 和 React 应用程序中,您可以使用public
绝对路由访问文件。
因此,在您的 CSS 中,您可以执行以下操作:
const GlobalStyle = createGlobalStyle<{ lang?: Languages_type | string }>`
@font-face {
font-family: "ir";
src: local("ir"), url('/fonts/IRANYekanRegular.ttf') format("truetype");
}
body,
html {
margin: 0;
font-family:"ir";
}
`;
注意2点:
- 我没有导入文件
- 我在公开后使用该路线
不确定我们是否可以使用codesanbox进行下一步,所以,
- 我在 Repo 上创建(您可以检查提交):https ://github.com/joseglego/font-test - 定义是:https ://github.com/joseglego/font-test/blob/main/pages/ index.js
- 在 netlify 上部署:https ://eager-ardinghelli-b3d680.netlify.app/
推荐阅读
- javascript - 按标签过滤 react(context api)
- java - Java 循环未运行
- excel - Excel VBA - 如何在检查输入是否已经在组合框中时将名称添加到组合框中
- javascript - 如何通过 chrome 扩展显示由键绑定触发的对话框?
- python - 使用 Python Flask 从文件创建 pdf
- sql - 如何将一个 select 语句与另外两个 select 语句的并集连接起来
- wordpress - 如何从 Laravel Forge (Wordpress) 下载文件到本地机器?
- python - Tensorflow Keras MNIST 获得预测概率
- node.js - 使用来自数据嵌套对象的 Joi 验证
- c++ - 使用 Windows 辅助功能设置自定义光标缩放