In general, yes. In my case having the scope be per-buffer not per window makes the most sense in terms of
the functionality.
Given the feature of redisplay I just mentioned, you will actually get
a per-window functionality, at least as far as the position of point
is concerned.
Not in my case, since I am discriminating between point in the selected window and other windows showing the same buffer, such that switching windows = changing point. Since much of the work in my mode is
not position-dependent but depends on text content, updating face is the natural thing.
Thinking more about what makes font-lock “special” as a jit-lock backend, it is exactly this: font-lock claims exclusive ownership of `face'. Solutions I can see: