ReactOS 0.4.15-dev-7842-g558ab78
gxvfgen.c
Go to the documentation of this file.
1/***************************************************************************/
2/* */
3/* gxfgen.c */
4/* */
5/* Generate feature registry data for gxv `feat' validator. */
6/* This program is derived from gxfeatreg.c in gxlayout. */
7/* */
8/* Copyright 2004-2018 by */
9/* Masatake YAMATO and Redhat K.K. */
10/* */
11/* This file may only be used, */
12/* modified, and distributed under the terms of the FreeType project */
13/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
14/* this file you indicate that you have read the license and */
15/* understand and accept it fully. */
16/* */
17/***************************************************************************/
18
19/***************************************************************************/
20/* */
21/* gxfeatreg.c */
22/* */
23/* Database of font features pre-defined by Apple Computer, Inc. */
24/* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html */
25/* (body). */
26/* */
27/* Copyright 2003 by */
28/* Masatake YAMATO and Redhat K.K. */
29/* */
30/* This file may only be used, */
31/* modified, and distributed under the terms of the FreeType project */
32/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
33/* this file you indicate that you have read the license and */
34/* understand and accept it fully. */
35/* */
36/***************************************************************************/
37
38/***************************************************************************/
39/* */
40/* Development of gxfeatreg.c is supported by */
41/* Information-technology Promotion Agency, Japan. */
42/* */
43/***************************************************************************/
44
45
46/***************************************************************************/
47/* */
48/* This file is compiled as a stand-alone executable. */
49/* This file is never compiled into `libfreetype2'. */
50/* The output of this file is used in `gxvfeat.c'. */
51/* ----------------------------------------------------------------------- */
52/* Compile: gcc `pkg-config --cflags freetype2` gxvfgen.c -o gxvfgen */
53/* Run: ./gxvfgen > tmp.c */
54/* */
55/***************************************************************************/
56
57 /*******************************************************************/
58 /* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING */
59 /*******************************************************************/
60
61 /*
62 * If you add a new setting to a feature, check the number of settings
63 * in the feature. If the number is greater than the value defined as
64 * FEATREG_MAX_SETTING, update the value.
65 */
66#define FEATREG_MAX_SETTING 12
67
68 /*******************************************************************/
69 /* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING */
70 /*******************************************************************/
71
72
73#include <stdio.h>
74#include <string.h>
75
76
77 /*************************************************************************/
78 /*************************************************************************/
79 /***** *****/
80 /***** Data and Types *****/
81 /***** *****/
82 /*************************************************************************/
83 /*************************************************************************/
84
85#define APPLE_RESERVED "Apple Reserved"
86#define APPLE_RESERVED_LENGTH 14
87
89 {
90 const char* feat_name;
93
95
96
97#define EMPTYFEAT {0, 0, {NULL}}
98
99
101 { /* 0 */
102 "All Typographic Features",
103 0,
104 {
105 "All Type Features",
106 NULL
107 }
108 }, { /* 1 */
109 "Ligatures",
110 0,
111 {
112 "Required Ligatures",
113 "Common Ligatures",
114 "Rare Ligatures",
115 "Logos",
116 "Rebus Pictures",
117 "Diphthong Ligatures",
118 "Squared Ligatures",
119 "Squared Ligatures, Abbreviated",
120 NULL
121 }
122 }, { /* 2 */
123 "Cursive Connection",
124 1,
125 {
126 "Unconnected",
127 "Partially Connected",
128 "Cursive",
129 NULL
130 }
131 }, { /* 3 */
132 "Letter Case",
133 1,
134 {
135 "Upper & Lower Case",
136 "All Caps",
137 "All Lower Case",
138 "Small Caps",
139 "Initial Caps",
140 "Initial Caps & Small Caps",
141 NULL
142 }
143 }, { /* 4 */
144 "Vertical Substitution",
145 0,
146 {
147 /* "Substitute Vertical Forms", */
148 "Turns on the feature",
149 NULL
150 }
151 }, { /* 5 */
152 "Linguistic Rearrangement",
153 0,
154 {
155 /* "Linguistic Rearrangement", */
156 "Turns on the feature",
157 NULL
158 }
159 }, { /* 6 */
160 "Number Spacing",
161 1,
162 {
163 "Monospaced Numbers",
164 "Proportional Numbers",
165 NULL
166 }
167 }, { /* 7 */
168 APPLE_RESERVED " 1",
169 0,
170 {NULL}
171 }, { /* 8 */
172 "Smart Swashes",
173 0,
174 {
175 "Word Initial Swashes",
176 "Word Final Swashes",
177 "Line Initial Swashes",
178 "Line Final Swashes",
179 "Non-Final Swashes",
180 NULL
181 }
182 }, { /* 9 */
183 "Diacritics",
184 1,
185 {
186 "Show Diacritics",
187 "Hide Diacritics",
188 "Decompose Diacritics",
189 NULL
190 }
191 }, { /* 10 */
192 "Vertical Position",
193 1,
194 {
195 /* "Normal Position", */
196 "No Vertical Position",
197 "Superiors",
198 "Inferiors",
199 "Ordinals",
200 NULL
201 }
202 }, { /* 11 */
203 "Fractions",
204 1,
205 {
206 "No Fractions",
207 "Vertical Fractions",
208 "Diagonal Fractions",
209 NULL
210 }
211 }, { /* 12 */
212 APPLE_RESERVED " 2",
213 0,
214 {NULL}
215 }, { /* 13 */
216 "Overlapping Characters",
217 0,
218 {
219 /* "Prevent Overlap", */
220 "Turns on the feature",
221 NULL
222 }
223 }, { /* 14 */
224 "Typographic Extras",
225 0,
226 {
227 "Hyphens to Em Dash",
228 "Hyphens to En Dash",
229 "Unslashed Zero",
230 "Form Interrobang",
231 "Smart Quotes",
232 "Periods to Ellipsis",
233 NULL
234 }
235 }, { /* 15 */
236 "Mathematical Extras",
237 0,
238 {
239 "Hyphens to Minus",
240 "Asterisk to Multiply",
241 "Slash to Divide",
242 "Inequality Ligatures",
243 "Exponents",
244 NULL
245 }
246 }, { /* 16 */
247 "Ornament Sets",
248 1,
249 {
250 "No Ornaments",
251 "Dingbats",
252 "Pi Characters",
253 "Fleurons",
254 "Decorative Borders",
255 "International Symbols",
256 "Math Symbols",
257 NULL
258 }
259 }, { /* 17 */
260 "Character Alternatives",
261 1,
262 {
263 "No Alternates",
264 /* TODO */
265 NULL
266 }
267 }, { /* 18 */
268 "Design Complexity",
269 1,
270 {
271 "Design Level 1",
272 "Design Level 2",
273 "Design Level 3",
274 "Design Level 4",
275 "Design Level 5",
276 /* TODO */
277 NULL
278 }
279 }, { /* 19 */
280 "Style Options",
281 1,
282 {
283 "No Style Options",
284 "Display Text",
285 "Engraved Text",
286 "Illuminated Caps",
287 "Tilling Caps",
288 "Tall Caps",
289 NULL
290 }
291 }, { /* 20 */
292 "Character Shape",
293 1,
294 {
295 "Traditional Characters",
296 "Simplified Characters",
297 "JIS 1978 Characters",
298 "JIS 1983 Characters",
299 "JIS 1990 Characters",
300 "Traditional Characters, Alternative Set 1",
301 "Traditional Characters, Alternative Set 2",
302 "Traditional Characters, Alternative Set 3",
303 "Traditional Characters, Alternative Set 4",
304 "Traditional Characters, Alternative Set 5",
305 "Expert Characters",
306 NULL /* count => 12 */
307 }
308 }, { /* 21 */
309 "Number Case",
310 1,
311 {
312 "Lower Case Numbers",
313 "Upper Case Numbers",
314 NULL
315 }
316 }, { /* 22 */
317 "Text Spacing",
318 1,
319 {
320 "Proportional",
321 "Monospaced",
322 "Half-width",
323 "Normal",
324 NULL
325 }
326 }, /* Here after Newer */ { /* 23 */
327 "Transliteration",
328 1,
329 {
330 "No Transliteration",
331 "Hanja To Hangul",
332 "Hiragana to Katakana",
333 "Katakana to Hiragana",
334 "Kana to Romanization",
335 "Romanization to Hiragana",
336 "Romanization to Katakana",
337 "Hanja to Hangul, Alternative Set 1",
338 "Hanja to Hangul, Alternative Set 2",
339 "Hanja to Hangul, Alternative Set 3",
340 NULL
341 }
342 }, { /* 24 */
343 "Annotation",
344 1,
345 {
346 "No Annotation",
347 "Box Annotation",
348 "Rounded Box Annotation",
349 "Circle Annotation",
350 "Inverted Circle Annotation",
351 "Parenthesis Annotation",
352 "Period Annotation",
353 "Roman Numeral Annotation",
354 "Diamond Annotation",
355 NULL
356 }
357 }, { /* 25 */
358 "Kana Spacing",
359 1,
360 {
361 "Full Width",
362 "Proportional",
363 NULL
364 }
365 }, { /* 26 */
366 "Ideographic Spacing",
367 1,
368 {
369 "Full Width",
370 "Proportional",
371 NULL
372 }
373 }, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 27-30 */
387 EMPTYFEAT, EMPTYFEAT, EMPTYFEAT, /* 96-98 */
388 EMPTYFEAT, /* 99 */ { /* 100 => 22 */
389 "Text Spacing",
390 1,
391 {
392 "Proportional",
393 "Monospaced",
394 "Half-width",
395 "Normal",
396 NULL
397 }
398 }, { /* 101 => 25 */
399 "Kana Spacing",
400 1,
401 {
402 "Full Width",
403 "Proportional",
404 NULL
405 }
406 }, { /* 102 => 26 */
407 "Ideographic Spacing",
408 1,
409 {
410 "Full Width",
411 "Proportional",
412 NULL
413 }
414 }, { /* 103 */
415 "CJK Roman Spacing",
416 1,
417 {
418 "Half-width",
419 "Proportional",
420 "Default Roman",
421 "Full-width Roman",
422 NULL
423 }
424 }, { /* 104 => 1 */
425 "All Typographic Features",
426 0,
427 {
428 "All Type Features",
429 NULL
430 }
431 }
432 };
433
434
435 /*************************************************************************/
436 /*************************************************************************/
437 /***** *****/
438 /***** Generator *****/
439 /***** *****/
440 /*************************************************************************/
441 /*************************************************************************/
442
443 int
444 main( void )
445 {
446 int i;
447
448
449 printf( " {\n" );
450 printf( " /* Generated from %s */\n", __FILE__ );
451
452 for ( i = 0;
453 i < sizeof ( featreg_table ) / sizeof ( GX_Feature_RegistryRec );
454 i++ )
455 {
456 const char* feat_name;
457 int nSettings;
458
459
460 feat_name = featreg_table[i].feat_name;
461 for ( nSettings = 0;
462 featreg_table[i].setting_name[nSettings];
463 nSettings++)
464 ; /* Do nothing */
465
466 printf( " {%1d, %1d, %1d, %2d}, /* %s */\n",
467 feat_name ? 1 : 0,
468 ( feat_name &&
469 ( ft_strncmp( feat_name,
471 ) ? 1 : 0,
472 featreg_table[i].exclusive ? 1 : 0,
473 nSettings,
474 feat_name ? feat_name : "__EMPTY__" );
475 }
476
477 printf( " };\n" );
478
479 return 0;
480 }
481
482
483/* END */
#define NULL
Definition: types.h:112
#define printf
Definition: freeldr.h:93
#define ft_strncmp
Definition: ftstdlib.h:89
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define FEATREG_MAX_SETTING
Definition: gxvfgen.c:66
#define APPLE_RESERVED_LENGTH
Definition: gxvfgen.c:86
static GX_Feature_RegistryRec featreg_table[]
Definition: gxvfgen.c:100
int main(void)
Definition: gxvfgen.c:444
#define APPLE_RESERVED
Definition: gxvfgen.c:85
#define EMPTYFEAT
Definition: gxvfgen.c:97
struct GX_Feature_RegistryRec_ GX_Feature_RegistryRec
const char * feat_name
Definition: gxvfgen.c:90
char * setting_name[FEATREG_MAX_SETTING]
Definition: gxvfgen.c:92