Ответ 1
Существует класс System.Drawing.Text.PrivateFontCollection в System.Drawing.dll, который может управлять шрифтами на основе каждого приложения.
Все, что вы делаете, это то, что вы поддерживаете эту коллекцию в своем приложении и добавляете шрифты через AddFontFile или AddMemoryFont, и тогда вы сможете использовать этот шрифт, как если бы он был установлен в вашей системе.
Это похоже на установку шрифта только для приложения. Шрифт будет удален после завершения процесса.