freetype-commit
[Top][All Lists]
Advanced

[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()),



reply via email to

[Prev in Thread] Current Thread [Next in Thread]