diff --git a/components/MaterialIcon.qml b/components/MaterialIcon.qml index 0fbac7b9..513244ad 100644 --- a/components/MaterialIcon.qml +++ b/components/MaterialIcon.qml @@ -7,5 +7,5 @@ StyledText { property int grade: Colours.light ? 0 : -25 property font fontStyle: Tokens.font.icon.small - font: Tokens.font.icon.size(fontStyle.pointSize).weight(fontStyle.weight).fill(fill.toFixed(1)).grade(grade).build() + font: Tokens.font.icon.size(fontStyle.pointSize).weight(fontStyle.weight).vaxes(fontStyle.variableAxes).fill(fill.toFixed(1)).grade(grade).build() } diff --git a/plugin/src/Caelestia/Config/fontbuilder.cpp b/plugin/src/Caelestia/Config/fontbuilder.cpp index dba3604a..2d2e3fd9 100644 --- a/plugin/src/Caelestia/Config/fontbuilder.cpp +++ b/plugin/src/Caelestia/Config/fontbuilder.cpp @@ -1,7 +1,10 @@ #include "fontbuilder.hpp" +#include namespace caelestia::config { +Q_LOGGING_CATEGORY(lcFontBuilder, "caelestia.fontbuilder", QtInfoMsg) + FontBuilder::FontBuilder(QFont font) : m_font(std::move(font)) {} @@ -44,15 +47,24 @@ FontBuilder FontBuilder::capitalisation(QFont::Capitalization cap) { return *this; } -FontBuilder FontBuilder::vaxis(QFont::Tag tag, float value) { - m_font.setVariableAxis(tag, value); +FontBuilder FontBuilder::vaxis(const QString& tag, float value) { + if (auto t = QFont::Tag::fromString(tag)) + m_font.setVariableAxis(*t, value); + else + qCWarning(lcFontBuilder) << "Unable to convert tag" << tag << "to QFont::Tag"; return *this; } FontBuilder FontBuilder::vaxes(QVariantMap axes) { for (auto it = axes.constBegin(); it != axes.constEnd(); ++it) { - if (auto tag = QFont::Tag::fromString(it.key())) - m_font.setVariableAxis(*tag, it.value().toFloat()); + if (it.value().canConvert()) { + if (auto tag = QFont::Tag::fromString(it.key())) + m_font.setVariableAxis(*tag, it.value().toFloat()); + else + qCWarning(lcFontBuilder) << "Unable to convert tag" << it.key() << "to QFont::Tag"; + } else { + qCWarning(lcFontBuilder) << "Unable to convert value" << it.value() << "to float"; + } } return *this; } diff --git a/plugin/src/Caelestia/Config/fontbuilder.hpp b/plugin/src/Caelestia/Config/fontbuilder.hpp index 7613d784..b159d08b 100644 --- a/plugin/src/Caelestia/Config/fontbuilder.hpp +++ b/plugin/src/Caelestia/Config/fontbuilder.hpp @@ -20,7 +20,7 @@ public: [[nodiscard]] Q_INVOKABLE FontBuilder stretch(int stretch); [[nodiscard]] Q_INVOKABLE FontBuilder letterSpacing(qreal spacing, bool absolute = true); [[nodiscard]] Q_INVOKABLE FontBuilder capitalisation(QFont::Capitalization cap); - [[nodiscard]] Q_INVOKABLE FontBuilder vaxis(QFont::Tag tag, float value); + [[nodiscard]] Q_INVOKABLE FontBuilder vaxis(const QString& tag, float value); [[nodiscard]] Q_INVOKABLE FontBuilder vaxes(QVariantMap axes); [[nodiscard]] Q_INVOKABLE QFont build() const;