Fix font hinting

pull/55/head
kateleet 4 years ago
parent fea60b8437
commit 0954892d20

@ -26,25 +26,15 @@ Fonts::Fonts(QObject *parent)
, m_settings("cutefishos", "theme") , m_settings("cutefishos", "theme")
, m_antiAliasing(false) , m_antiAliasing(false)
, m_hintingModel(new QStandardItemModel(this)) , m_hintingModel(new QStandardItemModel(this))
{ {
KXftConfig xft; m_antiAliasing = m_settings.value("XftAntialias", true).toBool();
const auto aaState = xft.getAntiAliasing(); m_hinting = KXftConfig::toHintStyle(m_settings.value("XftHintStyle", "hintslight").toString());
m_antiAliasing = (aaState != KXftConfig::AntiAliasing::Disabled);
// Hinting options // Hinting options
for (KXftConfig::Hint::Style s : {KXftConfig::Hint::None, KXftConfig::Hint::Slight, KXftConfig::Hint::Medium, KXftConfig::Hint::Full}) { for (KXftConfig::Hint::Style s : {KXftConfig::Hint::None, KXftConfig::Hint::Slight, KXftConfig::Hint::Medium, KXftConfig::Hint::Full}) {
auto item = new QStandardItem(KXftConfig::description(s)); auto item = new QStandardItem(KXftConfig::description(s));
m_hintingModel->appendRow(item); m_hintingModel->appendRow(item);
} }
// hinting
KXftConfig::Hint::Style hStyle = KXftConfig::Hint::NotSet;
xft.getHintStyle(hStyle);
// if it is not set, we set it to slight hinting
if (hStyle == KXftConfig::Hint::NotSet) {
hStyle = KXftConfig::Hint::Slight;
}
m_hinting = hStyle;
} }
bool Fonts::antiAliasing() const bool Fonts::antiAliasing() const
@ -91,14 +81,14 @@ QStandardItemModel *Fonts::hintingModel()
void Fonts::save() void Fonts::save()
{ {
KXftConfig xft; // KXftConfig xft;
KXftConfig::AntiAliasing::State aaState = KXftConfig::AntiAliasing::NotSet; // KXftConfig::AntiAliasing::State aaState = KXftConfig::AntiAliasing::NotSet;
if (xft.antiAliasingHasLocalConfig()) { // if (xft.antiAliasingHasLocalConfig()) {
aaState = m_antiAliasing ? KXftConfig::AntiAliasing::Enabled : KXftConfig::AntiAliasing::Disabled; // aaState = m_antiAliasing ? KXftConfig::AntiAliasing::Enabled : KXftConfig::AntiAliasing::Disabled;
} // }
xft.setAntiAliasing(aaState); // xft.setAntiAliasing(aaState);
xft.setHintStyle(m_hinting); // xft.setHintStyle(m_hinting);
xft.apply(); // xft.apply();
m_settings.setValue("XftAntialias", m_antiAliasing); m_settings.setValue("XftAntialias", m_antiAliasing);
m_settings.setValue("XftHintStyle", KXftConfig::toStr(m_hinting)); m_settings.setValue("XftHintStyle", KXftConfig::toStr(m_hinting));

@ -529,6 +529,21 @@ const char *KXftConfig::toStr(Hint::Style s)
} }
} }
KXftConfig::Hint::Style KXftConfig::toHintStyle(const QString &str)
{
if (str == "hintmedium") {
return Hint::Medium;
} else if (str == "hintnone") {
return Hint::None;
} else if (str == "hintslight") {
return Hint::Slight;
} else if (str == "hintfull") {
return Hint::Full;
}
return Hint::NotSet;
}
bool KXftConfig::parseConfigFile(const QString &filename) bool KXftConfig::parseConfigFile(const QString &filename)
{ {
bool ok = false; bool ok = false;

@ -207,6 +207,9 @@ public:
static const char *toStr(SubPixel::Type t); static const char *toStr(SubPixel::Type t);
static QString description(Hint::Style s); static QString description(Hint::Style s);
static const char *toStr(Hint::Style s); static const char *toStr(Hint::Style s);
static Hint::Style toHintStyle(const QString &str);
bool aliasingEnabled(); bool aliasingEnabled();
private: private:

Loading…
Cancel
Save