rsnext/test/e2e/next-font
Hannes Bornö 5f2c9d0b30
Update subset validation in @next/font/google and fix CJK bug (#44594)
Currently there's a bug when selecting Chinese, Japanese or Korean (CJK)
as subsets.
```js
const notoSans = Noto_Sans_JP({
  subsets: ['japanese'],
})
```
It actually doesn't work, nothing preloads. This PR solves this by
removing CJK languages as candidates for preloading. The reason is that
they contain so many glyphs that each font-family is split up in 100+
font files. It doesn't make sense to preload all of them.

So CJK users will have to disable preloading.
```js
const notoSansJapanese = Noto_Sans_JP({
  weight: '400',
  preload: false,
})
```
In case you do manually disable preloading like above, the default
`font-display` is changed to `swap`.

This PR also improves the validation errors of subsets.
1. Providing unknown subset
```
`@next/font` error:
Unknown subset `japanese` for font `Inter`.
Available subsets: `cyrillic`, `cyrillic-ext`, `greek`, `greek-ext`, `latin`, `latin-ext`, `vietnamese`
```
2. Missing specified subset. The error has a link with further
instructions.
```
`@next/font` error:
Missing selected subsets for font `Inter`. Please specify subsets in the function call or in your `next.config.js`. Read more: https://nextjs.org/docs/messages/google-fonts-missing-subsets
```

fixes NEXT-336

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see
[`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ]
[e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs)
tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see
[`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
2023-01-05 15:51:38 -08:00
..
app @next/font fallback fonts order fix (#43633) 2022-12-02 22:09:38 -08:00
basepath Default font config fix (#42235) 2022-10-31 08:56:37 -07:00
fonts Update font avg (#41734) 2022-10-24 13:47:19 -07:00
google-fetch-error @next/font/google fetch error dev (#42637) 2022-11-08 11:05:54 -08:00
with-font-declarations-file Default font config fix (#42235) 2022-10-31 08:56:37 -07:00
without-preloaded-fonts Font loader types (#41591) 2022-10-20 17:42:19 +00:00
basepath.test.ts Update font loader output path (#40868) 2022-09-26 12:59:38 -07:00
google-fetch-error.test.ts @next/font/google fetch error dev (#42637) 2022-11-08 11:05:54 -08:00
google-font-mocked-responses.js Update subset validation in @next/font/google and fix CJK bug (#44594) 2023-01-05 15:51:38 -08:00
index.test.ts @next/font fallback fonts order fix (#43633) 2022-12-02 22:09:38 -08:00
with-font-declarations-file.test.ts Update font loader output path (#40868) 2022-09-26 12:59:38 -07:00
without-preloaded-fonts.test.ts Add support for font loaders (#40746) 2022-09-21 22:12:59 -07:00