The subset question
A full Latin font is often larger than the page needs. Subsetting to the characters the page uses is a build step that cuts bytes without changing what renders.
A web font arrives after the HTML, so the browser paints with a fallback and repaints when the font loads. That repaint is a layout shift and, on a slow connection, a flash of the wrong face. The fix is to make the fallback close and to load the font late but early enough.
About 1 min of reading
Make one font load without a shift
Find the font files
Before you run it, say out loud what it will print. Then open the answer.
Declare the fallback
Before you run it, say out loud what it will print. Then open the answer.
Add the display rule
Before you run it, say out loud what it will print. Then open the answer.
Adjust the metrics
Before you run it, say out loud what it will print. Then open the answer.
A full Latin font is often larger than the page needs. Subsetting to the characters the page uses is a build step that cuts bytes without changing what renders.
If the design does not depend on the face, a system stack costs zero requests and zero shifts. That is the cheapest accessible win and it is a real design choice.
Pick a system fallback with a similar x-height and set size-adjust so the two faces occupy nearly the same box. The repaint then moves almost nothing.
swap shows the fallback then swaps, which is usually right. none hides the text for a short window, which is right only for a font that is already cached.
Preloading a weight the page never uses costs a request and blocks nothing but still competes for the connection. Preload the one file the first paragraph needs.
Each one is defined here on this site. Open the entry for the full definition and the other words it points at.