[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master d5ce379 13/41: [ftinspect] Support tricky fonts
From: |
Werner Lemberg |
Subject: |
[freetype2-demos] master d5ce379 13/41: [ftinspect] Support tricky fonts. |
Date: |
Mon, 3 Oct 2022 11:27:01 -0400 (EDT) |
branch: master
commit d5ce3790c301915619759d79e876b273fd3498f2
Author: Charlie Jiang <w@chariri.moe>
Commit: Werner Lemberg <wl@gnu.org>
[ftinspect] Support tricky fonts.
For tricky fonts, we disable auto-hinter and limit the TT interpreter
version.
* src/ftinspect/engine/engine.cpp, src/ftinspect/engine/engine.hpp:
Add `currentFontTricky` function and turn off hinting forcibly when the
user turns it off in the GUI for tricky fonts.
* src/ftinspect/panels/settingpanel.cpp: As described.
---
src/ftinspect/engine/engine.cpp | 13 +++++++++++++
src/ftinspect/engine/engine.hpp | 1 +
src/ftinspect/panels/settingpanel.cpp | 17 +++++++++++++----
3 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/src/ftinspect/engine/engine.cpp b/src/ftinspect/engine/engine.cpp
index 349f930..55114a5 100644
--- a/src/ftinspect/engine/engine.cpp
+++ b/src/ftinspect/engine/engine.cpp
@@ -252,6 +252,15 @@ Engine::namedInstanceName(int fontIndex, long faceIndex,
int index)
}
+bool
+Engine::currentFontTricky()
+{
+ if (!ftFallbackFace_)
+ return false;
+ return FT_IS_TRICKY(ftFallbackFace_);
+}
+
+
int
Engine::loadFont(int fontIndex,
long faceIndex,
@@ -602,6 +611,10 @@ Engine::update()
else
{
loadFlags_ |= FT_LOAD_NO_HINTING;
+ // When the user disables hinting for tricky fonts,
+ // we assume that they *really* want to disable it.
+ if (currentFontTricky())
+ loadFlags_ |= FT_LOAD_NO_AUTOHINT;
if (!antiAliasingEnabled_)
loadFlags_ |= FT_LOAD_MONOCHROME;
diff --git a/src/ftinspect/engine/engine.hpp b/src/ftinspect/engine/engine.hpp
index efcc847..70a8193 100644
--- a/src/ftinspect/engine/engine.hpp
+++ b/src/ftinspect/engine/engine.hpp
@@ -115,6 +115,7 @@ public:
long faceIndex);
QString namedInstanceName(int fontIndex, long faceIndex, int index);
+ bool currentFontTricky();
bool currentFontBitmapOnly();
bool currentFontHasEmbeddedBitmap();
std::vector<int> currentFontFixedSizes();
diff --git a/src/ftinspect/panels/settingpanel.cpp
b/src/ftinspect/panels/settingpanel.cpp
index ecf0f14..9ec8a3a 100644
--- a/src/ftinspect/panels/settingpanel.cpp
+++ b/src/ftinspect/panels/settingpanel.cpp
@@ -69,7 +69,14 @@ SettingPanel::checkHinting()
{
if (hintingCheckBox_->isChecked())
{
- // TODO: tricky: disable auto-hinting
+ engine_->reloadFont();
+ auto tricky = engine_->currentFontTricky();
+ {
+ QSignalBlocker blocker(autoHintingCheckBox_);
+ autoHintingCheckBox_->setEnabled(!tricky);
+ if (tricky)
+ autoHintingCheckBox_->setChecked(false);
+ }
checkAutoHinting(); // this will emit repaint
}
else
@@ -273,10 +280,12 @@ SettingPanel::onFontChanged()
}
else if (engine_->currentFontType() == Engine::FontType_TrueType)
{
- // TODO: tricky
+ auto tricky = engine_->currentFontTricky();
hintingModeComboBoxModel_->setCurrentEngineType(
- HintingModeComboBoxModel::HintingEngineType_TrueType, false);
- hintingModeComboBox_->setCurrentIndex(currentTTInterpreterVersion_);
+ HintingModeComboBoxModel::HintingEngineType_TrueType, tricky);
+ hintingModeComboBox_->setCurrentIndex(
+ tricky ? HintingModeComboBoxModel::HintingMode::HintingMode_TrueType_v35
+ : currentTTInterpreterVersion_);
}
else
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master d5ce379 13/41: [ftinspect] Support tricky fonts.,
Werner Lemberg <=