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 */ |