В коде, который ты написал, ты присваиваешь шрифт FontDialog'а к RichEdit'у. То есть шрифт FontDialog'а присвоится всему RichEdit'у, а нужно чтобы присвоился только выделенному знаку или куску от текста, за это отвечает параметр SelAttributes, а у него есть подпараметр Assign, вот здесть то мы и преписываем выделенному куску текста шрифт FontDialog'а - (FontDialog1.Font). Вот и всё!
