I get the sense (though I'm not positive) that it's per-language, but I'm not quite sure how it's implemented. I say that because even if a page sets the lang
attribute, when viewing multiple languages alongside each other, it doesn't render all of the text using whatever font is mapped to that particular language, it mixes the fonts based on the glyph being rendered.
I'd imagine WebKit has some kind of definition somewhere that says, "if we're rendering a Japanese glyph on a page, use [default Japanese font], but if the next glyph is Latin-based, use [default Latin font]", because SF Pro Text doesn't support Japanese characters, but I'm able to render them side-by-side with having only specified that my preferred display font is SF Pro Text.