This PR fixes an issue where some characters are incorrectly rendered on Windows with the Japanese locale. This is arguably a bug in the font that's loaded by Windows when it encounters `system-ui`. But waiting for fixes there might ... take a while. Another option is to not change the defaults in Tailwind CSS and instead let the users that support different locales implement a fallback by overriding the `--font-sans` variable. The biggest reason for me to _not_ change it in Tailwind CSS is that it requires us to know what the (proper) fallback fonts need to be on a per OS basis. But the main reason why I did want to make the change is that MDN says this about the `system-ui` font: > Glyphs are taken from the default user interface font on a given platform. Because typographic traditions vary widely across the world, this generic is provided for typefaces that don't map cleanly into the other generics. > > **Note:** As the name implies, `system-ui` is intended to make UI elements look like native apps, and not for typesetting large paragraphs of text. It may cause the displayed typeface to be undesirable for some users—for example, the default Windows CJK font may render Latin scripts poorly, and the `lang` attribute may not affect the displayed font. Some operating systems do not allow customizing `system-ui`, while browsers generally allow customizing the `sans-serif` font family. For large paragraphs, use `sans-serif` or some other non-UI font family instead. > > — https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/font-family#system-ui There are PRs in other big projects that made this kind of change as well. E.g.: - https://github.com/withastro/starlight/pull/3729 - https://github.com/vuejs/vitepress/pull/4988 The reasoning for getting rid of `ui-sans-serif` is twofold: 1. Because the starlight PR seems very well tested, and they got rid of it 2. In the event that the browser decided to load the broken font when it encounters `ui-sans-serif`, then we will run into the same issue again. Fixes: #19767 Fixes: #19768 ## Test plan 1. `system-ui` is not used anymore, so the bug doesn't happen 3. Everything still looks the same for the places I checked, but it's hard to know if this created _other_ issues on other OS + Locale combinations... |
||
|---|---|---|
| .. | ||
| src | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tsup.config.ts | ||
A utility-first CSS framework for rapidly building custom user interfaces.
Documentation
For full documentation, visit tailwindcss.com.
Community
For help, discussion about best practices, or feature ideas:
Discuss Tailwind CSS on GitHub
Contributing
If you're interested in contributing to Tailwind CSS, please read our contributing docs before submitting a pull request.
@tailwindcss/postcss plugin API
Changing where the plugin searches for source files
You can use the base option (defaults to the current working directory) to change the directory in which the plugin searches for source files:
import tailwindcss from '@tailwindcss/postcss'
export default {
plugins: [
tailwindcss({
base: path.resolve(__dirname, './path'),
}),
],
}
Enabling or disabling Lightning CSS
By default, this plugin detects whether or not the CSS is being built for production by checking the NODE_ENV environment variable. When building for production Lightning CSS will be enabled otherwise it is disabled.
If you want to always enable or disable Lightning CSS the optimize option may be used:
import tailwindcss from '@tailwindcss/postcss'
export default {
plugins: [
tailwindcss({
// Enable or disable Lightning CSS
optimize: false,
}),
],
}
It's also possible to keep Lightning CSS enabled but disable minification:
import tailwindcss from '@tailwindcss/postcss'
export default {
plugins: [
tailwindcss({
optimize: { minify: false },
}),
],
}
Enabling or disabling url(…) rewriting
Our PostCSS plugin can rewrite url(…)s for you since it also handles @import (no postcss-import is needed). This feature is enabled by default.
In some situations the bundler or framework you're using may provide this feature itself. In this case you can set transformAssetUrls to false to disable this feature:
import tailwindcss from '@tailwindcss/postcss'
export default {
plugins: [
tailwindcss({
// Disable `url(…)` rewriting
transformAssetUrls: false,
// Enable `url(…)` rewriting (the default)
transformAssetUrls: true,
}),
],
}