| Index: third_party/freetype2/src/src/gxvalid/gxvfgen.c
|
| diff --git a/third_party/freetype2/src/src/gxvalid/gxvfgen.c b/third_party/freetype2/src/src/gxvalid/gxvfgen.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..75c5e20d22e966cb76bcd68f9a790f17fd0fa8e3
|
| --- /dev/null
|
| +++ b/third_party/freetype2/src/src/gxvalid/gxvfgen.c
|
| @@ -0,0 +1,483 @@
|
| +/***************************************************************************/
|
| +/* */
|
| +/* gxfgen.c */
|
| +/* */
|
| +/* Generate feature registry data for gxv `feat' validator. */
|
| +/* This program is derived from gxfeatreg.c in gxlayout. */
|
| +/* */
|
| +/* Copyright 2004-2015 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 */
|
|
|