diff --git a/resources/styles/default.mdhl b/resources/styles/default.mdhl index b321aeb4..9315de1d 100644 --- a/resources/styles/default.mdhl +++ b/resources/styles/default.mdhl @@ -1,6 +1,9 @@ # This is the default markdown styles used for Peg-Markdown-Highlight # Created by Le Tan (tamlokveer@gmail.com) +editor +font-family: Georgia, Palatino, Arial, serif + H1 foreground: 111111 font-style: bold @@ -59,6 +62,7 @@ foreground: b58900 CODE foreground: af5f00 +font-family: Consolas, Monaco, Andale Mono, monospace EMPH font-style: italic diff --git a/vstyleparser.cpp b/vstyleparser.cpp index bda8eabd..a18440da 100644 --- a/vstyleparser.cpp +++ b/vstyleparser.cpp @@ -1,12 +1,14 @@ #include "vstyleparser.h" #include +#include #include #include #include #include #include #include +#include VStyleParser::VStyleParser() { @@ -69,7 +71,13 @@ QTextCharFormat VStyleParser::QTextCharFormatFromAttrs(pmh_style_attribute *attr } case pmh_attr_type_font_family: - // TODO + { + QString familyList(attrs->value->font_family); + QString finalFamily = filterAvailableFontFamily(familyList); + if (!finalFamily.isEmpty()) { + format.setFontFamily(finalFamily); + } + } break; case pmh_attr_type_font_style: @@ -172,3 +180,25 @@ QPalette VStyleParser::fetchMarkdownEditorStyles(const QPalette &basePalette) co return palette; } + +// @familyList is a comma separated string +QString VStyleParser::filterAvailableFontFamily(const QString &familyList) const +{ + QStringList families = familyList.split(',', QString::SkipEmptyParts); + QStringList availFamilies = QFontDatabase().families(); + + qDebug() << "family:" << familyList; + for (int i = 0; i < families.size(); ++i) { + QString family = families[i].trimmed().toLower(); + for (int j = 0; j < availFamilies.size(); ++j) { + QString availFamily = availFamilies[j]; + availFamily.remove(QRegExp("\\[.*\\]")); + if (family == availFamily.trimmed().toLower()) { + qDebug() << "matched family:" << availFamilies[j]; + return availFamilies[j]; + } + } + } + + return QString(); +} diff --git a/vstyleparser.h b/vstyleparser.h index 8e717c7b..deff8829 100644 --- a/vstyleparser.h +++ b/vstyleparser.h @@ -3,6 +3,7 @@ #include #include +#include #include "hgmarkdownhighlighter.h" extern "C" { @@ -28,6 +29,7 @@ private: QBrush QBrushFromPmhAttr(pmh_attr_argb_color *attr) const; QTextCharFormat QTextCharFormatFromAttrs(pmh_style_attribute *attrs, const QFont &baseFont) const; + QString filterAvailableFontFamily(const QString &familyList) const; pmh_style_collection *markdownStyles; };