+Paragraph::Private::Private(Private const & p, Paragraph * owner,
+ pos_type beg, pos_type end)
+ : owner_(owner), inset_owner_(p.inset_owner_),
+ params_(p.params_), changes_(p.changes_),
+ insetlist_(p.insetlist_, beg, end),
+ begin_of_body_(p.begin_of_body_), words_(p.words_),
+ layout_(p.layout_)
+{
+ id_ = paragraph_id++;
+ if (beg >= pos_type(p.text_.size()))
+ return;
+ text_ = p.text_.substr(beg, end - beg);
+
+ FontList::const_iterator fcit = fontlist_.begin();
+ FontList::const_iterator fend = fontlist_.end();
+ for (; fcit != fend; ++fcit) {
+ if (fcit->pos() < beg)
+ continue;
+ if (fcit->pos() >= end) {
+ // Add last entry in the fontlist_.
+ fontlist_.set(text_.size() - 1, fcit->font());
+ break;
+ }
+ // Add a new entry in the fontlist_.
+ fontlist_.set(fcit->pos() - beg, fcit->font());
+ }
+}
+
+