问题描述
我将Material UI与Create React App配合使用,并尝试包含以ttf格式下载的“ Open Sans”字体。遵循Material UI上自托管字体的文档之后,我当前的theme.js文件如下所示:
import OpenSansRegular from "./fonts/OpenSans-Regular.ttf";
import OpenSansBold from "./fonts/OpenSans-Bold.ttf";
import OpenSansSemiBold from "./fonts/OpenSans-SemiBold.ttf";
import { createMuiTheme } from "@material-ui/core/styles";
const openSansRegular = {
fontFamily: "Open Sans",fontStyle: "normal",fontdisplay: "swap",src: `
local("Open Sans"),local("OpenSans-Regular")
url(${OpenSansRegular}) format("ttf")
`,};
const openSansSemibold = {
fontFamily: "Open Sans",local("OpenSans-SemiBold")
url(${OpenSansSemiBold}) format("ttf")
`,};
const openSansBold = {
fontFamily: "Open Sans",local("OpenSans-Bold")
url(${OpenSansBold}) format("ttf")
`,};
const theme = createMuiTheme({
typography: {
fontFamily: "Open Sans",fontSize: 14,h1: {
fontSize: 20,fontWeight: "bold",},h2: {
fontSize: 18,h3: {
fontSize: 16,overrides: {
MuiCssBaseline: {
"@global": {
"@font-face": [openSansRegular]
}
}
},});
export default theme;
我无法弄清楚如何实际使用其变体,例如openSansSemiBold和openSansBold。我在主题中到底指定了什么位置以便被识别?并说我希望文本在应用程序的某些部分中以半粗体显示,我将如何精确地引用它? 到目前为止,我还没有找到明确的答案。
解决方法
您可以将所有字体放入数组中。
var customFontFamily = [openSansRegular,openSansSemibold,openSansBold];
var customTypo = {
...
body1 :{
fontFamily: 'OpenSans-Regular',},h1:{
fontFamily: 'OpenSans-SemiBold',h2:{
fontFamily: 'OpenSans-Bold',...
};
const theme = createMuiTheme({
typography: customTypo
overrides: {
MuiCssBaseline: {
"@global": {
"@font-face": [customFontFamily]
}
}
},});