- size_ = st;
- MathStyles tt = smallerStyleScript(st);
-
- xcell(0).Metrics(tt);
- xcell(1).Metrics(tt);
-
- width_ = std::max(xcell(0).width(), xcell(1).width());
-
- if (hasLimits()) {
- symbol_->Metrics(st);
- int wid = symbol_->width();
- ascent_ = symbol_->ascent();
- descent_ = symbol_->descent();
- width_ = std::max(width_, wid);
- if (up()) {
- ascent_ += xcell(0).height() + 2;
- dy0_ = - (ascent_ - xcell(0).ascent());
- }
- if (down()) {
- descent_ += xcell(1).height() + 2;
- dy1_ = descent_ - xcell(1).descent();
- }
- dxx_ = (width_ - wid) / 2;
- dx0_ = (width_ - xcell(0).width()) / 2;
- dx1_ = (width_ - xcell(1).width()) / 2;
- } else {
- int asc;
- int des;
- int wid = 0;
- mathed_char_height(LM_TC_VAR, st, 'I', asc, des);
- if (symbol_) {
- symbol_->Metrics(st);
- wid = symbol_->width();
- asc = symbol_->ascent();
- des = symbol_->descent();
- }
- ascent_ = up() ? xcell(0).height() + asc : 0;
- descent_ = down() ? xcell(1).height() + des : 0;
- width_ += wid;
- dy0_ = - asc - xcell(0).descent();
- dy1_ = des + xcell(1).ascent();
- dx0_ = wid;
- dx1_ = wid;
- dxx_ = 0;
- }