When query replace is called in a buffer with multiple fonts it puts the substituted text in font A regardless of the font of the substituted-for text. It clearly should use the same font as the substituted-for text.