Пример #1
0
void InsetMathSymbol::metrics(MetricsInfo & mi, Dimension & dim) const
{
	//lyxerr << "metrics: symbol: '" << sym_->name
	//	<< "' in font: '" << sym_->inset
	//	<< "' drawn as: '" << sym_->draw
	//	<< "'" << endl;

	int const em = mathed_char_width(mi.base.font, 'M');
	FontSetChanger dummy(mi.base, sym_->inset);
	mathed_string_dim(mi.base.font, sym_->draw, dim);
	docstring::const_reverse_iterator rit = sym_->draw.rbegin();
	kerning_ = mathed_char_kerning(mi.base.font, *rit);
	// correct height for broken cmex and wasy font
	if (sym_->inset == "cmex" || sym_->inset == "wasy") {
		h_ = 4 * dim.des / 5;
		dim.asc += h_;
		dim.des -= h_;
	}
	// seperate things a bit
	if (isRelOp())
		dim.wid += static_cast<int>(0.5 * em + 0.5);
	else
		dim.wid += static_cast<int>(0.1667 * em + 0.5);

	scriptable_ = false;
	if (mi.base.style == LM_ST_DISPLAY)
		if (sym_->inset == "cmex" || sym_->inset == "esint" ||
		    sym_->extra == "funclim")
			scriptable_ = true;
}
Пример #2
0
void InsetMathSymbol::metrics(MetricsInfo & mi, Dimension & dim) const
{
	// set dim
	mathedSymbolDim(mi.base, dim, sym_);
	// set kerning_
	kerning_ = mathed_char_kerning(mi.base.font, *sym_->draw.rbegin());
	// correct height for broken cmex and wasy font
	if (sym_->inset == "cmex" || sym_->inset == "wasy") {
		h_ = 4 * dim.des / 5;
		dim.asc += h_;
		dim.des -= h_;
	}
	// set scriptable_
	scriptable_ = false;
	if (mi.base.font.style() == LM_ST_DISPLAY)
		if (sym_->inset == "cmex" || sym_->inset == "esint" ||
		    sym_->extra == "funclim" ||
		    (sym_->inset == "stmry" && sym_->extra == "mathop"))
			scriptable_ = true;
}