Отдельно храним набор видоизменений для этих сущностей. Например если в первой строке есть где-то жирные куски, их храним как указание подинтервалов жирноты, типа 0,B,0,6 - это будет 0 строка, жирнота начиная с 0 символа длиной 6 символов - т.е. жирным будет слово "собака".