#include "lyxfont.h"
#include "FontLoader.h"
#include "font.h"
+#include "math_cursor.h"
#include "math_defs.h"
#include "math_inset.h"
#include "math_parser.h"
FONT_SYMBOL,
FONT_SYMBOLI,
FONT_BF,
- FONT_BB,
- FONT_CAL,
FONT_TT,
FONT_RM,
FONT_SF,
FONT_CMEX,
FONT_MSA,
FONT_MSB,
+ FONT_EUFRAK,
+ FONT_FAKEBB,
+ FONT_FAKECAL,
+ FONT_FAKEFRAK,
FONT_NUM
};
void mathed_init_fonts()
{
- MathFonts = new LyXFont[FONT_NUM]; //DEC cxx cannot initialize all fonts
- //at once (JMarc) rc
-
- for (int i = 0 ; i < FONT_NUM ; ++i) {
- MathFonts[i] = LyXFont(LyXFont::ALL_SANE);
- }
+ MathFonts = new LyXFont[FONT_NUM];
MathFonts[FONT_IT].setShape(LyXFont::ITALIC_SHAPE);
MathFonts[FONT_BF].setSeries(LyXFont::BOLD_SERIES);
- MathFonts[FONT_BB].setSeries(LyXFont::BOLD_SERIES);
- MathFonts[FONT_BB].setFamily(LyXFont::TYPEWRITER_FAMILY);
-
- MathFonts[FONT_CAL].setFamily(LyXFont::SANS_FAMILY);
- MathFonts[FONT_CAL].setShape(LyXFont::ITALIC_SHAPE);
-
MathFonts[FONT_TT].setFamily(LyXFont::TYPEWRITER_FAMILY);
-
MathFonts[FONT_RM].setFamily(LyXFont::ROMAN_FAMILY);
-
MathFonts[FONT_SF].setFamily(LyXFont::SANS_FAMILY);
MathFonts[FONT_CMR].setFamily(LyXFont::CMR_FAMILY);
MathFonts[FONT_CMEX].setFamily(LyXFont::CMEX_FAMILY);
MathFonts[FONT_MSA].setFamily(LyXFont::MSA_FAMILY);
MathFonts[FONT_MSB].setFamily(LyXFont::MSB_FAMILY);
+ MathFonts[FONT_EUFRAK].setFamily(LyXFont::EUFRAK_FAMILY);
+
+ MathFonts[FONT_FAKEBB].setFamily(LyXFont::TYPEWRITER_FAMILY);
+ MathFonts[FONT_FAKEBB].setSeries(LyXFont::BOLD_SERIES);
+
+ MathFonts[FONT_FAKECAL].setFamily(LyXFont::SANS_FAMILY);
+ MathFonts[FONT_FAKECAL].setShape(LyXFont::ITALIC_SHAPE);
+
+ MathFonts[FONT_FAKEFRAK].setFamily(LyXFont::SANS_FAMILY);
+ MathFonts[FONT_FAKEFRAK].setSeries(LyXFont::BOLD_SERIES);
for (int i = 0; i < LM_FONT_END; ++i)
font_available_initialized[i] = false;
}
-LyXFont const & whichFontBase(MathTextCodes type)
+LyXFont const & whichFontBaseIntern(MathTextCodes type)
{
if (!MathFonts)
mathed_init_fonts();
return MathFonts[FONT_BF];
case LM_TC_BB:
- if (math_font_available(LM_TC_MSB))
- return MathFonts[FONT_MSB];
- else
- return MathFonts[FONT_BB];
+ return MathFonts[FONT_MSB];
case LM_TC_CAL:
- if (math_font_available(LM_TC_CMSY))
- return MathFonts[FONT_CMSY];
- else
- return MathFonts[FONT_CAL];
+ return MathFonts[FONT_CMSY];
case LM_TC_TT:
return MathFonts[FONT_TT];
+ case LM_TC_BOX:
case LM_TC_TEXTRM:
case LM_TC_CONST:
case LM_TC_TEX:
case LM_TC_MSB:
return MathFonts[FONT_MSB];
+ case LM_TC_EUFRAK:
+ return MathFonts[FONT_EUFRAK];
+
default:
break;
}
}
+LyXFont const & whichFontBase(MathTextCodes type)
+{
+ if (!MathFonts)
+ mathed_init_fonts();
+
+ switch (type) {
+ case LM_TC_BB:
+ if (math_font_available(LM_TC_MSB))
+ return MathFonts[FONT_MSB];
+ else
+ return MathFonts[FONT_FAKEBB];
+
+ case LM_TC_CAL:
+ if (math_font_available(LM_TC_CMSY))
+ return MathFonts[FONT_CMSY];
+ else
+ return MathFonts[FONT_FAKECAL];
+
+ case LM_TC_EUFRAK:
+ if (math_font_available(LM_TC_EUFRAK))
+ return MathFonts[FONT_EUFRAK];
+ else
+ return MathFonts[FONT_FAKEFRAK];
+
+ default:
+ break;
+ }
+ return whichFontBaseIntern(type);
+}
+
+
LyXFont whichFont(MathTextCodes type, MathMetricsInfo const & size)
{
LyXFont f = whichFontBase(type);
break;
}
- if (type != LM_TC_TEXTRM)
+ if (type != LM_TC_TEXTRM && type != LM_TC_BOX)
f.setColor(LColor::math);
if (type == LM_TC_TEX)
{
if (!font_available_initialized[type]) {
font_available_initialized[type] = true;
- font_available[type] = fontloader.available(whichFontBase(type));
+ font_available[type] = fontloader.available(whichFontBaseIntern(type));
}
return font_available[type];
}
// Decorations
{"widehat", angle, 3 },
{"widetilde", tilde, 0 },
+ {"underbar", hline, 0 },
{"underline", hline, 0 },
{"overline", hline, 0 },
{"underbrace", brace, 1 },
}
+void mathed_draw_framebox(Painter & pain, int x, int y, MathInset const * p)
+{
+ if (mathcursor && mathcursor->isInside(p))
+ pain.rectangle(x, y - p->ascent(), p->width(), p->height(),
+ LColor::mathframe);
+}
+
+
// In the future maybe we use a better fonts renderer
void drawStr(Painter & pain, MathTextCodes type, MathMetricsInfo const & siz,
int x, int y, string const & s)
};
+char const * latex_mathstyle[] = {
+ "textstyle", "displaystyle", "scriptstyle", "scriptscriptstyle"
+};
+
+char const * latex_mathfontcmds[] = {
+ "font-bold", "font-emph", "font-roman", "font-code", "font-sans",
+ "font-ital", "font-noun", "font-frak", "font-free", "font-default"
+};
+
+
char const * math_font_name(MathTextCodes code)
{
static char const * theFontNames[] = {
"mathrm",
"mathcal",
+ "mathfrak",
"mathbf",
"mathbb",
"mathsf",