When processing text, Typst tries all specified font families in order until it finds a font that has the necessary glyphs. In the example below, the font Inria Serif is preferred, but since it does not contain Arabic glyphs, the arabic text uses Noto Sans Arabic instead.
https://typst.app/docs/reference/text/text/#parameters-font
Does this mean that it doesn't split the string on unicode ranges at the start, but just goes down the fallback list once it finds some unsupported characters?
The disadvantage in a web context is that we would need to keep loading the fonts in the fallback list until we find one that supports the characters. Knowing “this range is covered by Noto Emoji” would make that process faster.
Interested in the code that does fallback font search.