You can't save a font Object into a Database directly. You can make a function that will convert Font to String and back, so that the string value can then be saved into the database.
In the appearance settings dialog of your application, you can have all the settings you need, as long as you call your fontToString() function as it saves. Then (I'm assuming you have a database to save to, otherwise you could either use AppData or the Properties.Settings.Default feature of .NET) save the string you got from your function to the database.
You should also implement a function in a public static class or something easily accessible called updateFontInAllWindows(), where you look up the settings from the database and apply them to every form. Here's some sample code (Font usefont is the final result of your database query).
Font usefont = DatabaseHandler.GetFont();
List<Form> formList = new List<Form>();
formList.Add(Form1);
formList.Add(Form2);
foreach (Form frm in formList) {
foreach (Control ctl in frm.Controls) {
ctl.Font = usefont;
}
}
This code loops through each control in each form and applies the font to it. You can expand it to use other settings such as BackgroundColor as well. Note that you must add each form to be customised by the user's settings to the formList List. Good luck!