freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2-demos] master 08f5b85: [ttdebug] Add support for third TrueTy


From: Werner LEMBERG
Subject: [freetype2-demos] master 08f5b85: [ttdebug] Add support for third TrueType interpreter version.
Date: Thu, 26 May 2016 05:21:40 +0000 (UTC)

branch: master
commit 08f5b859ec794a15e9633d92c043869a6211972c
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [ttdebug] Add support for third TrueType interpreter version.
    
    Option `-H' now takes an argument.
    
    * src/ttdebug.c (default_version, alternative_version): Replaced
    with...
    (tt_interpreter_versions, num_tt_interpreter_versions,
    dflt_tt_interpreter_version): ... these new global variables.
    (main): Expand check for alternative TrueType interpreter versions.
    Add argument to option `-H'.
    (Usage): Updated.
    
    * src/ttdebug.1: Updated.
---
 ChangeLog     |   16 +++++++++++
 src/ttdebug.1 |    9 ++++---
 src/ttdebug.c |   84 +++++++++++++++++++++++++++++++++++++++++++--------------
 3 files changed, 86 insertions(+), 23 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index be0cdca..79fedb1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2016-05-26  Werner Lemberg  <address@hidden>
+
+       [ttdebug] Add support for third TrueType interpreter version.
+
+       Option `-H' now takes an argument.
+
+       * src/ttdebug.c (default_version, alternative_version): Replaced
+       with...
+       (tt_interpreter_versions, num_tt_interpreter_versions,
+       dflt_tt_interpreter_version): ... these new global variables.
+       (main): Expand check for alternative TrueType interpreter versions.
+       Add argument to option `-H'.
+       (Usage): Updated.
+
+       * src/ttdebug.1: Updated.
+
 2016-05-21  Werner Lemberg  <address@hidden>
 
        [ftgrid] Add support for third TrueType interpreter version.
diff --git a/src/ttdebug.1 b/src/ttdebug.1
index 62a8e47..7d19eb1 100644
--- a/src/ttdebug.1
+++ b/src/ttdebug.1
@@ -36,9 +36,12 @@ This program is part of the FreeType demos package.
 .SH OPTIONS
 .
 .TP
-.BI \-H
-Using hinting engine version 35 (default is version 38).
-It essentially means to deactivate subpixel hinting similar to ClearType.
+.BI "\-H " ver
+Using hinting engine version VER.
+Available versions are depending on compilation options of FreeType;
+call
+.B ttdebug
+without an argument to get the actual list.
 .
 .TP
 .B \-v
diff --git a/src/ttdebug.c b/src/ttdebug.c
index ac78514..cf52aeb 100644
--- a/src/ttdebug.c
+++ b/src/ttdebug.c
@@ -73,8 +73,9 @@
   static TT_Size       size;       /* truetype size       */
   static TT_GlyphSlot  glyph;      /* truetype glyph slot */
 
-  static int  default_version;     /* default TrueType engine version     */
-  static int  alternative_version; /* alternative TrueType engine version */
+  static unsigned int  tt_interpreter_versions[3];
+  static int           num_tt_interpreter_versions;
+  static unsigned int  dflt_tt_interpreter_version;
 
   static FT_Bool  use_float = 0;     /* number format */
 
@@ -1851,6 +1852,20 @@
   static void
   Usage( char*  execname )
   {
+    char  versions[32];
+
+
+    /* we expect that at least one interpreter version is available */
+    if ( num_tt_interpreter_versions == 2 )
+      sprintf(versions, "%d and %d",
+                        tt_interpreter_versions[0],
+                        tt_interpreter_versions[1] );
+    else
+      sprintf(versions, "%d, %d, and %d",
+                        tt_interpreter_versions[0],
+                        tt_interpreter_versions[1],
+                        tt_interpreter_versions[2] );
+
     fprintf( stderr,
       "\n"
       "ttdebug: simple TTF debugger -- part of the FreeType project\n"
@@ -1864,12 +1879,14 @@
       "  size      The size of the glyph in pixels (ppem).\n"
       "  font      The TrueType font file to debug.\n"
       "\n"
-      "  -H        Use hinting engine version %d (default is version %d).\n"
+      "  -H ver    Use hinting engine version VER.\n"
+      "            Available versions are %s; default is version %d.\n"
       "  -v        Show version.\n"
       "\n"
       "While running, press the `?' key for help.\n"
       "\n",
-      alternative_version, default_version );
+      versions,
+      dflt_tt_interpreter_version );
 
     exit( 1 );
   }
@@ -1888,7 +1905,11 @@
     int    option;
     char   version_string[64];
 
-    int  change_interpreter_version = 0;
+    int           i;
+    unsigned int  versions[3] = { TT_INTERPRETER_VERSION_35,
+                                  TT_INTERPRETER_VERSION_38,
+                                  TT_INTERPRETER_VERSION_40 };
+    int           version;
 
     int  tmp;
 
@@ -1919,18 +1940,27 @@
                            patch );
     }
 
+    /* collect all available versions, then set again the default */
     FT_Property_Get( library,
                      "truetype",
-                     "interpreter-version", &default_version );
-    alternative_version = default_version == TT_INTERPRETER_VERSION_35
-                          ? TT_INTERPRETER_VERSION_38
-                          : TT_INTERPRETER_VERSION_35;
+                     "interpreter-version", &dflt_tt_interpreter_version );
+    for ( i = 0; i < 3; i++ )
+    {
+      error = FT_Property_Set( library,
+                               "truetype",
+                               "interpreter-version", &versions[i] );
+      if ( !error )
+        tt_interpreter_versions[num_tt_interpreter_versions++] = versions[i];
+    }
+    FT_Property_Set( library,
+                     "truetype",
+                     "interpreter-version", &dflt_tt_interpreter_version );
 
     execname = ft_basename( argv[0] );
 
     while ( 1 )
     {
-      option = getopt( argc, argv, "Hv" );
+      option = getopt( argc, argv, "H:v" );
 
       if ( option == -1 )
         break;
@@ -1938,7 +1968,30 @@
       switch ( option )
       {
       case 'H':
-        change_interpreter_version = 1;
+        version = atoi( optarg );
+
+        if ( version < 0 )
+        {
+          printf( "invalid TrueType version = %d\n", version );
+          Usage( execname );
+        }
+
+        for ( i = 0; i < num_tt_interpreter_versions; i++ )
+        {
+          if ( (unsigned int)version == tt_interpreter_versions[i] )
+          {
+            FT_Property_Set( library,
+                             "truetype",
+                             "interpreter-version", &version );
+            break;
+          }
+        }
+
+        if ( i == num_tt_interpreter_versions )
+        {
+          printf( "invalid TrueType version = %d\n", version );
+          Usage( execname );
+        }
         break;
 
       case 'v':
@@ -1978,15 +2031,6 @@
 
     Init_Keyboard();
 
-    if ( change_interpreter_version )
-    {
-      error = FT_Property_Set( library,
-                               "truetype",
-                               "interpreter-version", &alternative_version );
-      if ( error )
-        Abort( "could not select alternative TrueType engine version" );
-    }
-
     FT_Set_Debug_Hook( library,
                        FT_DEBUG_HOOK_TRUETYPE,
                        (FT_DebugHook_Func)RunIns );



reply via email to

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