For high-performance needs (like landing pages), use "Minimalist Optimization". This mode scans your source files to collect only the characters actually used in your code, resulting in much smaller font files (approx. 10% of full size).
- Configure scanning: Add
scanFiles to the plugin options in your bundler config. - Import with query: Append
?subsets to your font import statement.
Scoped Subsets (using key)
You can define multiple subsets by providing an object to scanFiles. Use the key query parameter in your import to specify which subset to load.
Example: import { css } from 'font.ttf?subsets&key=subset-1'
// vite.config.js configuration for subsets
import Font from 'vite-plugin-font';
// Single scan scope
Font.vite({
scanFiles: ['src/**/*.{vue,ts,tsx,js,jsx}'],
});
// Multiple scoped subsets
Font.vite({
scanFiles: {
default: ['src/**/*.{json,js,jsx,ts,tsx,vue}'],
'subset-1': ['example/**/*.{json,js,jsx,ts,tsx,vue}'],
},
});
// Usage in component
import { css } from '../../demo/public/SmileySans-Oblique.ttf?subsets&key=subset-1';