[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] gsoc-2019-veeki e61137f 1/3: Added (horizontal, vertic
From: |
Veeki Yadav |
Subject: |
[freetype2-demos] gsoc-2019-veeki e61137f 1/3: Added (horizontal, vertical, blue zone) hinting and warping |
Date: |
Tue, 18 Jun 2019 21:39:59 -0400 (EDT) |
branch: gsoc-2019-veeki
commit e61137faa88c3944a3e8832a95eb0ab618db5aa6
Author: gevic <address@hidden>
Commit: gevic <address@hidden>
Added (horizontal, vertical, blue zone) hinting and warping
---
src/ftinspect/engine/engine.cpp | 59 +++++++++++++++++++++++++++++++++++++++++
src/ftinspect/engine/engine.hpp | 1 +
src/ftinspect/maingui.cpp | 8 ++++++
3 files changed, 68 insertions(+)
diff --git a/src/ftinspect/engine/engine.cpp b/src/ftinspect/engine/engine.cpp
index 2034087..d1f6a5f 100644
--- a/src/ftinspect/engine/engine.cpp
+++ b/src/ftinspect/engine/engine.cpp
@@ -16,6 +16,13 @@
#include FT_INTERNAL_DRIVER_H
#include FT_INTERNAL_OBJECTS_H
+/* these variables, structures, and declarations are for */
+/* communication with the debugger in the autofit module; */
+/* normal programs don't need this */
+extern int _af_debug_disable_horz_hints;
+extern int _af_debug_disable_vert_hints;
+extern int _af_debug_disable_blue_hints;
+
/////////////////////////////////////////////////////////////////////////////
//
@@ -517,6 +524,21 @@ Engine::loadOutline(int glyphIndex)
void
+Engine::setWarping()
+{
+ FT_Error error = FT_Property_Set(library,
+ "autofitter",
+ "warping",
+ &doWarping);
+ if (!error)
+ {
+ // reset the cache
+ FTC_Manager_Reset(cacheManager);
+ }
+}
+
+
+void
Engine::setCFFHintingMode(int mode)
{
int index = gui->hintingModesCFFHash.key(mode);
@@ -583,8 +605,45 @@ Engine::update()
loadFlags |= FT_LOAD_FORCE_AUTOHINT;
loadFlags |= FT_LOAD_NO_BITMAP; // XXX handle bitmap fonts also
+ _af_debug_disable_horz_hints = doHorizontalHinting;
+ _af_debug_disable_vert_hints = doVerticalHinting;
+ _af_debug_disable_blue_hints = doBlueZoneHinting;
+
+ if (doHorizontalHinting)
+ {
+ if (!doAutoHinting)
+ {
+ _af_debug_disable_horz_hints = !doHorizontalHinting;
+ }
+ }
+
+ if (doVerticalHinting)
+ {
+ if (!doAutoHinting)
+ {
+ _af_debug_disable_vert_hints = !doVerticalHinting;
+ }
+ }
+
+ if (doBlueZoneHinting)
+ {
+ if (!doAutoHinting)
+ {
+ _af_debug_disable_blue_hints = !doBlueZoneHinting;
+ }
+ }
+
int index = gui->antiAliasingComboBoxx->currentIndex();
+ if (doWarping)
+ {
+ if (!(index == MainGUI::AntiAliasing_Normal && doAutoHinting))
+ {
+ doWarping = !doWarping;
+ }
+ }
+ setWarping();
+
if (doHinting)
{
unsigned long target;
diff --git a/src/ftinspect/engine/engine.hpp b/src/ftinspect/engine/engine.hpp
index dc48757..37d2593 100644
--- a/src/ftinspect/engine/engine.hpp
+++ b/src/ftinspect/engine/engine.hpp
@@ -56,6 +56,7 @@ public:
FT_Outline* loadOutline(int glyphIndex);
void removeFont(int fontIndex);
void setCFFHintingMode(int mode);
+ void setWarping();
void setTTInterpreterVersion(int version);
void update();
diff --git a/src/ftinspect/maingui.cpp b/src/ftinspect/maingui.cpp
index 9aa44cc..21c02bf 100644
--- a/src/ftinspect/maingui.cpp
+++ b/src/ftinspect/maingui.cpp
@@ -1044,6 +1044,14 @@ MainGUI::createConnections()
connect(autoHintingCheckBox, SIGNAL(clicked()),
SLOT(checkAutoHinting()));
+ connect(horizontalHintingCheckBox, SIGNAL(clicked()),
+ SLOT(drawGlyph()));
+ connect(verticalHintingCheckBox, SIGNAL(clicked()),
+ SLOT(drawGlyph()));
+ connect(blueZoneHintingCheckBox, SIGNAL(clicked()),
+ SLOT(drawGlyph()));
+ connect(warpingCheckBox, SIGNAL(clicked()),
+ SLOT(drawGlyph()));
connect(showBitmapCheckBox, SIGNAL(clicked()),
SLOT(drawGlyph()));
connect(showPointsCheckBox, SIGNAL(clicked()),
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] gsoc-2019-veeki e61137f 1/3: Added (horizontal, vertical, blue zone) hinting and warping,
Veeki Yadav <=