misc/libfreetype/src/gxvalid/gxvfgen.c
changeset 5172 88f2e05288ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/misc/libfreetype/src/gxvalid/gxvfgen.c	Mon Apr 25 01:46:54 2011 +0200
@@ -0,0 +1,482 @@
+/***************************************************************************/
+/*                                                                         */
+/*  gxfgen.c                                                               */
+/*                                                                         */
+/*    Generate feature registry data for gxv `feat' validator.             */
+/*    This program is derived from gxfeatreg.c in gxlayout.                */
+/*                                                                         */
+/*  Copyright 2004, 2005, 2006 by Masatake YAMATO and Redhat K.K.          */
+/*                                                                         */
+/*  This file may only be used,                                            */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+/***************************************************************************/
+/*                                                                         */
+/*  gxfeatreg.c                                                            */
+/*                                                                         */
+/*    Database of font features pre-defined by Apple Computer, Inc.        */
+/*    http://developer.apple.com/fonts/Registry/                           */
+/*    (body).                                                              */
+/*                                                                         */
+/*  Copyright 2003 by                                                      */
+/*  Masatake YAMATO and Redhat K.K.                                        */
+/*                                                                         */
+/*  This file may only be used,                                            */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+/***************************************************************************/
+/*                                                                         */
+/* Development of gxfeatreg.c is supported by                              */
+/* Information-technology Promotion Agency, Japan.                         */
+/*                                                                         */
+/***************************************************************************/
+
+
+/***************************************************************************/
+/*                                                                         */
+/* This file is compiled as a stand-alone executable.                      */
+/* This file is never compiled into `libfreetype2'.                        */
+/* The output of this file is used in `gxvfeat.c'.                         */
+/* ----------------------------------------------------------------------- */
+/* Compile: gcc `pkg-config --cflags freetype2` gxvfgen.c -o gxvfgen       */
+/* Run: ./gxvfgen > tmp.c                                                  */
+/*                                                                         */
+/***************************************************************************/
+
+  /*******************************************************************/
+  /* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING */
+  /*******************************************************************/
+
+  /*
+   * If you add a new setting to a feature, check the number of settings
+   * in the feature.  If the number is greater than the value defined as
+   * FEATREG_MAX_SETTING, update the value.
+   */
+#define FEATREG_MAX_SETTING  12
+
+  /*******************************************************************/
+  /* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING */
+  /*******************************************************************/
+
+
+#include <stdio.h>
+#include <string.h>
+
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                      Data and Types                           *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+#define APPLE_RESERVED         "Apple Reserved"
+#define APPLE_RESERVED_LENGTH  14
+
+  typedef struct  GX_Feature_RegistryRec_
+  {
+    const char*  feat_name;
+    char         exclusive;
+    char*        setting_name[FEATREG_MAX_SETTING];
+
+  } GX_Feature_RegistryRec;
+
+
+#define EMPTYFEAT {0, 0, {NULL}}
+
+
+  static GX_Feature_RegistryRec featreg_table[] = {
+    {                                       /* 0 */
+      "All Typographic Features",
+      0,
+      {
+        "All Type Features",
+        NULL
+      }
+    }, {                                    /* 1 */
+      "Ligatures",
+      0,
+      {
+        "Required Ligatures",
+        "Common Ligatures",
+        "Rare Ligatures",
+        "Logos",
+        "Rebus Pictures",
+        "Diphthong Ligatures",
+        "Squared Ligatures",
+        "Squared Ligatures, Abbreviated",
+        NULL
+      }
+    }, {                                    /* 2 */
+      "Cursive Connection",
+      1,
+      {
+        "Unconnected",
+        "Partially Connected",
+        "Cursive",
+        NULL
+      }
+    }, {                                    /* 3 */
+      "Letter Case",
+      1,
+      {
+        "Upper & Lower Case",
+        "All Caps",
+        "All Lower Case",
+        "Small Caps",
+        "Initial Caps",
+        "Initial Caps & Small Caps",
+        NULL
+      }
+    }, {                                    /* 4 */
+      "Vertical Substitution",
+      0,
+      {
+        /* "Substitute Vertical Forms", */
+        "Turns on the feature",
+        NULL
+      }
+    }, {                                    /* 5 */
+      "Linguistic Rearrangement",
+      0,
+      {
+        /* "Linguistic Rearrangement", */
+        "Turns on the feature",
+        NULL
+      }
+    }, {                                    /* 6 */
+      "Number Spacing",
+      1,
+      {
+        "Monospaced Numbers",
+        "Proportional Numbers",
+        NULL
+      }
+    }, {                                    /* 7 */
+      APPLE_RESERVED " 1",
+      0,
+      {NULL}
+    }, {                                    /* 8 */
+      "Smart Swashes",
+      0,
+      {
+        "Word Initial Swashes",
+        "Word Final Swashes",
+        "Line Initial Swashes",
+        "Line Final Swashes",
+        "Non-Final Swashes",
+        NULL
+      }
+    }, {                                    /* 9 */
+      "Diacritics",
+      1,
+      {
+        "Show Diacritics",
+        "Hide Diacritics",
+        "Decompose Diacritics",
+        NULL
+      }
+    }, {                                    /* 10 */
+      "Vertical Position",
+      1,
+      {
+        /* "Normal Position", */
+        "No Vertical Position",
+        "Superiors",
+        "Inferiors",
+        "Ordinals",
+        NULL
+      }
+    }, {                                    /* 11 */
+      "Fractions",
+      1,
+      {
+        "No Fractions",
+        "Vertical Fractions",
+        "Diagonal Fractions",
+        NULL
+      }
+    }, {                                    /* 12 */
+      APPLE_RESERVED " 2",
+      0,
+      {NULL}
+    }, {                                    /* 13 */
+      "Overlapping Characters",
+      0,
+      {
+        /* "Prevent Overlap", */
+        "Turns on the feature",
+        NULL
+      }
+    }, {                                    /* 14 */
+      "Typographic Extras",
+      0,
+      {
+        "Hyphens to Em Dash",
+        "Hyphens to En Dash",
+        "Unslashed Zero",
+        "Form Interrobang",
+        "Smart Quotes",
+        "Periods to Ellipsis",
+        NULL
+      }
+    }, {                                    /* 15 */
+      "Mathematical Extras",
+      0,
+      {
+        "Hyphens to Minus",
+        "Asterisk to Multiply",
+        "Slash to Divide",
+        "Inequality Ligatures",
+        "Exponents",
+        NULL
+      }
+    }, {                                    /* 16 */
+      "Ornament Sets",
+      1,
+      {
+        "No Ornaments",
+        "Dingbats",
+        "Pi Characters",
+        "Fleurons",
+        "Decorative Borders",
+        "International Symbols",
+        "Math Symbols",
+        NULL
+      }
+    }, {                                    /* 17 */
+      "Character Alternatives",
+      1,
+      {
+        "No Alternates",
+        /* TODO */
+        NULL
+      }
+    }, {                                    /* 18 */
+      "Design Complexity",
+      1,
+      {
+        "Design Level 1",
+        "Design Level 2",
+        "Design Level 3",
+        "Design Level 4",
+        "Design Level 5",
+        /* TODO */
+        NULL
+      }
+    }, {                                    /* 19 */
+      "Style Options",
+      1,
+      {
+        "No Style Options",
+        "Display Text",
+        "Engraved Text",
+        "Illuminated Caps",
+        "Tilling Caps",
+        "Tall Caps",
+        NULL
+      }
+    }, {                                    /* 20 */
+      "Character Shape",
+      1,
+      {
+        "Traditional Characters",
+        "Simplified Characters",
+        "JIS 1978 Characters",
+        "JIS 1983 Characters",
+        "JIS 1990 Characters",
+        "Traditional Characters, Alternative Set 1",
+        "Traditional Characters, Alternative Set 2",
+        "Traditional Characters, Alternative Set 3",
+        "Traditional Characters, Alternative Set 4",
+        "Traditional Characters, Alternative Set 5",
+        "Expert Characters",
+        NULL                           /* count => 12 */
+      }
+    }, {                                    /* 21 */
+      "Number Case",
+      1,
+      {
+        "Lower Case Numbers",
+        "Upper Case Numbers",
+        NULL
+      }
+    }, {                                    /* 22 */
+      "Text Spacing",
+      1,
+      {
+        "Proportional",
+        "Monospaced",
+        "Half-width",
+        "Normal",
+        NULL
+      }
+    }, /* Here after Newer */  { /* 23 */
+      "Transliteration",
+      1,
+      {
+        "No Transliteration",
+        "Hanja To Hangul",
+        "Hiragana to Katakana",
+        "Katakana to Hiragana",
+        "Kana to Romanization",
+        "Romanization to Hiragana",
+        "Romanization to Katakana",
+        "Hanja to Hangul, Alternative Set 1",
+        "Hanja to Hangul, Alternative Set 2",
+        "Hanja to Hangul, Alternative Set 3",
+        NULL
+      }
+    }, {                                    /* 24 */
+      "Annotation",
+      1,
+      {
+        "No Annotation",
+        "Box Annotation",
+        "Rounded Box Annotation",
+        "Circle Annotation",
+        "Inverted Circle Annotation",
+        "Parenthesis Annotation",
+        "Period Annotation",
+        "Roman Numeral Annotation",
+        "Diamond Annotation",
+        NULL
+      }
+    }, {                                    /* 25 */
+      "Kana Spacing",
+      1,
+      {
+        "Full Width",
+        "Proportional",
+        NULL
+      }
+    }, {                                    /* 26 */
+      "Ideographic Spacing",
+      1,
+      {
+        "Full Width",
+        "Proportional",
+        NULL
+      }
+    }, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT,         /* 27-30 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 31-35 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 36-40 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 40-45 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 46-50 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 51-55 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 56-60 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 61-65 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 66-70 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 71-75 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 76-80 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 81-85 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 86-90 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 91-95 */
+    EMPTYFEAT, EMPTYFEAT, EMPTYFEAT,                       /* 96-98 */
+    EMPTYFEAT, /* 99 */ {                   /* 100 => 22 */
+      "Text Spacing",
+      1,
+      {
+        "Proportional",
+        "Monospaced",
+        "Half-width",
+        "Normal",
+        NULL
+      }
+    }, {                                    /* 101 => 25 */
+      "Kana Spacing",
+      1,
+      {
+        "Full Width",
+        "Proportional",
+        NULL
+      }
+    }, {                                    /* 102 => 26 */
+      "Ideographic Spacing",
+      1,
+      {
+        "Full Width",
+        "Proportional",
+        NULL
+      }
+    }, {                                    /* 103 */
+      "CJK Roman Spacing",
+      1,
+      {
+        "Half-width",
+        "Proportional",
+        "Default Roman",
+        "Full-width Roman",
+        NULL
+      }
+    }, {                                    /* 104 => 1 */
+      "All Typographic Features",
+      0,
+      {
+        "All Type Features",
+        NULL
+      }
+    }
+  };
+
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                         Generator                             *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+  int
+  main( void )
+  {
+    int  i;
+
+
+    printf( "  {\n" );
+    printf( "   /* Generated from %s */\n", __FILE__ );
+
+    for ( i = 0;
+          i < sizeof ( featreg_table ) / sizeof ( GX_Feature_RegistryRec );
+          i++ )
+    {
+      const char*  feat_name;
+      int          nSettings;
+
+
+      feat_name = featreg_table[i].feat_name;
+      for ( nSettings = 0;
+            featreg_table[i].setting_name[nSettings];
+            nSettings++)
+        ;                                   /* Do nothing */
+
+      printf( "    {%1d, %1d, %1d, %2d},   /* %s */\n",
+              feat_name ? 1 : 0,
+              ( feat_name                                                  &&
+                ( ft_strncmp( feat_name,
+                              APPLE_RESERVED, APPLE_RESERVED_LENGTH ) == 0 )
+              ) ? 1 : 0,
+              featreg_table[i].exclusive ? 1 : 0,
+              nSettings,
+              feat_name ? feat_name : "__EMPTY__" );
+    }
+
+    printf( "  };\n" );
+
+    return 0;
+  }
+
+
+/* END */