Я работал над редактором на основе mshtml в c ++ некоторое время назад и сделал что-то вроде следующего кода, чтобы получить стиль текста текущего выделения.
CComQIPtr<IOleCommandTarget> spCmdTarg(pDispDoc);
if (pStyle && spCmdTarg)
{
const ULONG uNumCmnds = 4;
OLECMD arrCmnds[uNumCmnds];
arrCmnds[0].cmdID = IDM_BOLD;
arrCmnds[1].cmdID = IDM_ITALIC;
arrCmnds[2].cmdID = IDM_UNDERLINE;
arrCmnds[3].cmdID = IDM_STRIKETHROUGH;
if ( SUCCEEDED(spCmdTarg->QueryStatus(&CGID_MSHTML, uNumCmnds, arrCmnds, NULL)) )
{
pStyle->SetBold(arrCmnds[0].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
pStyle->SetItalic(arrCmnds[1].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
pStyle->SetUnderline(arrCmnds[2].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
pStyle->SetStrikeThrough(arrCmnds[3].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
}
}
Я не совсем уверен, как этот код можно перевести на c # и что доступно на уровне взаимосвязи mshtml, но, надеюсь, это поможет вам начать где-то.