Fix font hinting

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

@ -27,24 +27,14 @@ Fonts::Fonts(QObject *parent)
, m_antiAliasing(false)
, m_hintingModel(new QStandardItemModel(this))
{
KXftConfig xft;
const auto aaState = xft.getAntiAliasing();
m_antiAliasing = (aaState != KXftConfig::AntiAliasing::Disabled);
m_antiAliasing = m_settings.value("XftAntialias", true).toBool();
m_hinting = KXftConfig::toHintStyle(m_settings.value("XftHintStyle", "hintslight").toString());
// Hinting options
for (KXftConfig::Hint::Style s : {KXftConfig::Hint::None, KXftConfig::Hint::Slight, KXftConfig::Hint::Medium, KXftConfig::Hint::Full}) {
auto item = new QStandardItem(KXftConfig::description(s));
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
@ -91,14 +81,14 @@ QStandardItemModel *Fonts::hintingModel()
void Fonts::save()
{
KXftConfig xft;
KXftConfig::AntiAliasing::State aaState = KXftConfig::AntiAliasing::NotSet;
if (xft.antiAliasingHasLocalConfig()) {
aaState = m_antiAliasing ? KXftConfig::AntiAliasing::Enabled : KXftConfig::AntiAliasing::Disabled;
}
xft.setAntiAliasing(aaState);
xft.setHintStyle(m_hinting);
xft.apply();
// KXftConfig xft;
// KXftConfig::AntiAliasing::State aaState = KXftConfig::AntiAliasing::NotSet;
// if (xft.antiAliasingHasLocalConfig()) {
// aaState = m_antiAliasing ? KXftConfig::AntiAliasing::Enabled : KXftConfig::AntiAliasing::Disabled;
// }
// xft.setAntiAliasing(aaState);
// xft.setHintStyle(m_hinting);
// xft.apply();
m_settings.setValue("XftAntialias", m_antiAliasing);
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 ok = false;

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

Loading…
Cancel
Save