On Sat, 08 Jun 2019 04:40:45 +0900, Eli Zaretskii wrote: > > The question is how to implement this preference. In the code that is > currently on master, you will see one way of implementing it in > w32fns.c, where the Windows code creates GUI frames (look in > x-create-frame). Basically, after determining whether Uniscribe was > explicitly requested, this implementation registers or doesn't > register Uniscribe for each new frame. This means the backends to be > available to a frame must be specified at frame creation time, or be > known by that time. > > Yamamoto-san suggested a slightly different way of implementing the > same idea; I will let him explain his proposal in more detail. Attached is my proposal. The idea is to register all the drivers in x-create-frame as before, but tweak the function font_update_drivers (in font.c) so it only chooses "unsuperseded" drivers if the user did not explicitly specify font backends (i.e., if NEW_DRIVERS is t). Unlike Eli's current code in w32fns.c, this leaves the room to change the font backend from uniscribe to harfbuzz (and vice versa) for the same frame. (You can't change xft/frcr to xfthb/ftcrhb on X regardless of this patch because Bug#23386). YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp