Synchronize with FreeType.
[ttfautohint.git] / lib / tablue.dat
blob9866e249b8b003e96c4462ca85e1195600fc165e
1 // tablue.dat
2 //
3 // Auto-fitter data for blue strings.
4 //
5 // Copyright (C) 2011-2013 by Werner Lemberg.
6 //
7 // This file is part of the ttfautohint library, and may only be used,
8 // modified, and distributed under the terms given in `COPYING'. By
9 // continuing to use, modify, or distribute this file you indicate that you
10 // have read `COPYING' and understand and accept it fully.
12 // The file `COPYING' mentioned in the previous paragraph is distributed
13 // with the ttfautohint library.
15 // originally file `afblue.dat' (2013-Sep-22) from FreeType */
18 // This file contains data specific to blue zones. It gets processed by
19 // a script to simulate `jagged arrays', with enumeration values holding
20 // offsets into the arrays.
22 // The format of the file is rather simple: A section starts with three
23 // labels separated by whitespace and followed by a colon (everything in a
24 // single line); the first label gives the name of the enumeration template,
25 // the second the name of the array template, and the third the name of the
26 // `maximum' template, holding the size of the largest array element. The
27 // script then fills the corresponding templates (indicated by `@'
28 // characters around the name).
30 // A section contains one or more data records. Each data record consists
31 // of two or more lines. The first line holds the enumeration name, and the
32 // remaining lines the corresponding array data.
34 // There are two possible representations for array data.
36 // - A string of characters in UTF-8 encoding enclosed in double quotes,
37 // using C syntax. There can be only one string per line, thus the
38 // starting and ending double quote must be the first and last character
39 // in the line, respectively, ignoring whitespace before and after the
40 // string. If there are multiple strings (in multiple lines), they are
41 // concatenated to a single string. In the output, a string gets
42 // represented as a series of singles bytes, followed by a zero byte. The
43 // enumeration values simply hold byte offsets to the start of the
44 // corresponding strings.
46 // - Data blocks enclosed in balanced braces, which get copied verbatim and
47 // which can span multiple lines. The opening brace of a block must be
48 // the first character of a line (ignoring whitespace), and the closing
49 // brace the last (ignoring whitespace also). The script appends a comma
50 // character after each block and counts the number of blocks to set the
51 // enumeration values.
53 // A section can contain either strings only or data blocks only.
55 // A comment line starts with `//'; it gets removed. A preprocessor
56 // directive line (using the standard syntax of `cpp') starts with `#' and
57 // gets copied verbatim to both the enumeration and the array. Whitespace
58 // outside of a string is insignificant.
60 // Preprocessor directives are ignored while the script computes maximum
61 // values; this essentially means that the maximum values can easily be too
62 // large. Given that the purpose of those values is to create local
63 // fixed-size arrays at compile time for further processing of the blue zone
64 // data, this isn't a problem. Note the the final zero byte of a string is
65 // not counted. Note also that the count holds the number of UTF-8 encoded
66 // characters, not bytes.
69 TA_BLUE_STRING_ENUM TA_BLUE_STRINGS_ARRAY TA_BLUE_STRING_MAX_LEN:
71 TA_BLUE_STRING_LATIN_CAPITAL_TOP
72 "THEZOCQS"
73 TA_BLUE_STRING_LATIN_CAPITAL_BOTTOM
74 "HEZLOCUS"
75 TA_BLUE_STRING_LATIN_SMALL_F_TOP
76 "fijkdbh"
77 TA_BLUE_STRING_LATIN_SMALL
78 "xzroesc"
79 TA_BLUE_STRING_LATIN_SMALL_DESCENDER
80 "pqgjy"
82 TA_BLUE_STRING_GREEK_CAPITAL_TOP
83 "ΓΒΕΖΘΟΩ"
84 TA_BLUE_STRING_GREEK_CAPITAL_BOTTOM
85 "ΒΔΖΞΘΟ"
86 TA_BLUE_STRING_GREEK_SMALL_BETA_TOP
87 "βθδζλξ"
88 TA_BLUE_STRING_GREEK_SMALL
89 "αειοπστω"
90 TA_BLUE_STRING_GREEK_SMALL_DESCENDER
91 "βγημρφχψ"
93 TA_BLUE_STRING_CYRILLIC_CAPITAL_TOP
94 "БВЕПЗОСЭ"
95 TA_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM
96 "БВЕШЗОСЭ"
97 TA_BLUE_STRING_CYRILLIC_SMALL
98 "хпншезос"
99 TA_BLUE_STRING_CYRILLIC_SMALL_DESCENDER
100 "руф"
102 TA_BLUE_STRING_HEBREW_TOP
103 "בדהחךכםס"
104 TA_BLUE_STRING_HEBREW_BOTTOM
105 "בטכםסצ"
106 TA_BLUE_STRING_HEBREW_DESCENDER
107 "קךןףץ"
110 TA_BLUE_STRINGSET_ENUM TA_BLUE_STRINGSETS_ARRAY TA_BLUE_STRINGSET_MAX_LEN:
112 TA_BLUE_STRINGSET_LATN
113 { TA_BLUE_STRING_LATIN_CAPITAL_TOP, TA_BLUE_PROPERTY_LATIN_TOP }
114 { TA_BLUE_STRING_LATIN_CAPITAL_BOTTOM, 0 }
115 { TA_BLUE_STRING_LATIN_SMALL_F_TOP, TA_BLUE_PROPERTY_LATIN_TOP }
116 { TA_BLUE_STRING_LATIN_SMALL, TA_BLUE_PROPERTY_LATIN_TOP |
117 TA_BLUE_PROPERTY_LATIN_X_HEIGHT }
118 { TA_BLUE_STRING_LATIN_SMALL, 0 }
119 { TA_BLUE_STRING_LATIN_SMALL_DESCENDER, 0 }
120 { TA_BLUE_STRING_MAX, 0 }
122 TA_BLUE_STRINGSET_GREK
123 { TA_BLUE_STRING_GREEK_CAPITAL_TOP, TA_BLUE_PROPERTY_LATIN_TOP }
124 { TA_BLUE_STRING_GREEK_CAPITAL_BOTTOM, 0 }
125 { TA_BLUE_STRING_GREEK_SMALL_BETA_TOP, TA_BLUE_PROPERTY_LATIN_TOP }
126 { TA_BLUE_STRING_GREEK_SMALL, TA_BLUE_PROPERTY_LATIN_TOP |
127 TA_BLUE_PROPERTY_LATIN_X_HEIGHT }
128 { TA_BLUE_STRING_GREEK_SMALL, 0 }
129 { TA_BLUE_STRING_GREEK_SMALL_DESCENDER, 0 }
130 { TA_BLUE_STRING_MAX, 0 }
132 TA_BLUE_STRINGSET_CYRL
133 { TA_BLUE_STRING_CYRILLIC_CAPITAL_TOP, TA_BLUE_PROPERTY_LATIN_TOP }
134 { TA_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM, 0 }
135 { TA_BLUE_STRING_CYRILLIC_SMALL, TA_BLUE_PROPERTY_LATIN_TOP |
136 TA_BLUE_PROPERTY_LATIN_X_HEIGHT }
137 { TA_BLUE_STRING_CYRILLIC_SMALL, 0 }
138 { TA_BLUE_STRING_CYRILLIC_SMALL_DESCENDER, 0 }
139 { TA_BLUE_STRING_MAX, 0 }
141 TA_BLUE_STRINGSET_HEBR
142 { TA_BLUE_STRING_HEBREW_TOP, TA_BLUE_PROPERTY_LATIN_TOP |
143 TA_BLUE_PROPERTY_LATIN_LONG }
144 { TA_BLUE_STRING_HEBREW_BOTTOM, 0 }
145 { TA_BLUE_STRING_HEBREW_DESCENDER, 0 }
146 { TA_BLUE_STRING_MAX, 0 }
149 // END