Hola, ya encontré como hacer lo que quería. Lo dejo aquí por si a alguien le sirve.
Cada estilo de fuente (negrita, cursiva, etc) tiene asociado un numero, por ejemplo negrita es 1, cursiva es 2, subrayado es 4. La propiedad "SelectionFont.Style" del RichTextBox devuelve la suma de los estilos que hay en ese momento. Restando el numero del estilo que estoy quitando a los que ya hay consigo mantener los otros, que es lo que queria.
Código (vbnet) [Seleccionar]
Public Sub negrita()
If rtb_hoja.SelectionFont.Bold = False Then
rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, rtb_hoja.SelectionFont.Style Or FontStyle.Bold)
Else
rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, rtb_hoja.SelectionFont.Style - 1)
End If
End Sub
Cada estilo de fuente (negrita, cursiva, etc) tiene asociado un numero, por ejemplo negrita es 1, cursiva es 2, subrayado es 4. La propiedad "SelectionFont.Style" del RichTextBox devuelve la suma de los estilos que hay en ese momento. Restando el numero del estilo que estoy quitando a los que ya hay consigo mantener los otros, que es lo que queria.