OLD | NEW |
| (Empty) |
1 ------------------------------------------------------------------------------ | |
2 ot-sanitise - TTF/OTF font validator/transcoder | |
3 | |
4 Description: | |
5 ot-sanitise is a program which validates and/or transcodes a truetype or | |
6 opentype font file using the OTS library: | |
7 | |
8 transcoded_font = ValidateAndTranscode(original_font); | |
9 if (validation_error) | |
10 PrintErrorAndExit; | |
11 OutputToStdout(transcoded_font); | |
12 | |
13 Usage: | |
14 $ ./ot-sanitise ttf_or_otf_file [transcoded_file] | |
15 | |
16 Example: | |
17 $ ./ot-sanitise sample.otf transcoded_sample.otf | |
18 $ ./ot-sanitise malformed.ttf | |
19 WARNING at ots/src/ots.cc:158: bad range shift | |
20 ERROR at ots/src/ots.cc:199 (bool<unnamed>::do_ots_process(ots::OpenTypeFile*,
ots::OTSStream*, const uint8_t*, size_t)) | |
21 Failed to sanitise file! | |
22 $ | |
23 | |
24 ------------------------------------------------------------------------------ | |
25 idempotent - TTF/OTF font transcoder (for OTS debugging) | |
26 | |
27 Description: | |
28 idempotent is a program which validates and transcodes a truetype or opentype | |
29 font file using OTS. This tool transcodes the original font twice and then | |
30 verifies that the two transcoded fonts are identical: | |
31 | |
32 t1 = ValidateAndTranscode(original_font); | |
33 if (validation_error) | |
34 PrintErrorAndExit; | |
35 t2 = ValidateAndTranscode(t1); | |
36 if (validation_error) | |
37 PrintErrorAndExit; | |
38 if (t1 != t2) | |
39 PrintErrorAndExit; | |
40 | |
41 This tool is basically for OTS developers. | |
42 | |
43 Usage: | |
44 $ ./idempotent ttf_or_otf_file | |
45 | |
46 Example: | |
47 $ ./idempotent sample.otf | |
48 $ ./idempotent malformed.ttf | |
49 WARNING at ots/src/ots.cc:158: bad range shift | |
50 ERROR at ots/src/ots.cc:199 (bool<unnamed>::do_ots_process(ots::OpenTypeFile*,
ots::OTSStream*, const uint8_t*, size_t)) | |
51 Failed to sanitise file! | |
52 $ | |
53 | |
54 ------------------------------------------------------------------------------ | |
55 validator_checker - font validation checker | |
56 | |
57 Description: | |
58 validator_checker is a program which is intended to validate malformed fonts. | |
59 If the program detects that the font is invalid, it prints "OK" and returns | |
60 with 0 (success). If it coulndn't detect any errors, the program then opens | |
61 the transcoded font and renders some characters using FreeType2: | |
62 | |
63 transcoded_font = ValidateAndTranscode(malicious_font); | |
64 if (validation_error) | |
65 Print("OK"); | |
66 OpenAndRenderSomeCharacters(transcoded_font); # may cause SIGSEGV | |
67 Print("OK"); | |
68 | |
69 If SEGV doesn't raise inside FreeType2 library, the program prints "OK" and | |
70 returns with 0 as well. You should run this tool under the catchsegv or | |
71 valgrind command so that you can easily verify that all transformed fonts | |
72 don't crash the library (see the example below). | |
73 | |
74 Usage: | |
75 $ catchsegv ./validator_checker malicous_ttf_or_otf_file | |
76 | |
77 Example: | |
78 $ for f in malformed/*.ttf ; do catchsegv ./validator-checker "$f" ; done | |
79 OK: the malicious font was filtered: malformed/1.ttf | |
80 OK: the malicious font was filtered: malformed/2.ttf | |
81 OK: FreeType2 didn't crash: malformed/3.ttf | |
82 OK: the malicious font was filtered: malformed/4.ttf | |
83 $ | |
84 | |
85 ------------------------------------------------------------------------------ | |
86 perf - performance checker | |
87 | |
88 Description: | |
89 perf is a program which validates and transcodes a truetype or opentype font | |
90 file N times using OTS, then prints the elapsed time: | |
91 | |
92 for (N times) | |
93 ValidateAndTranscode(original_font); | |
94 Print(elapsed_time_in_us / N); | |
95 | |
96 Usage: | |
97 $ ./perf ttf_or_otf_file | |
98 | |
99 Example: | |
100 $ ./perf sample.ttf | |
101 903 [us] sample.ttf (139332 bytes, 154 [byte/us]) | |
102 $ ./perf sample-bold.otf | |
103 291 [us] sample-bold.otf (150652 bytes, 517 [byte/us]) | |
104 | |
105 ------------------------------------------------------------------------------ | |
106 side-by-side - font quality checker | |
107 | |
108 Description: | |
109 side-by-side is a program which renders some characters (ASCII, Latin-1, CJK) | |
110 using both original font and transcoded font and checks that the two rendering | |
111 results are exactly equal. | |
112 | |
113 The following Unicode characters are used during the test: | |
114 0x0020 - 0x007E // Basic Latin | |
115 0x00A1 - 0x017F // Latin-1 | |
116 0x1100 - 0x11FF // Hangul | |
117 0x3040 - 0x309F // Japanese HIRAGANA letters | |
118 0x3130 - 0x318F // Hangul | |
119 0x4E00 - 0x4F00 // CJK Kanji/Hanja | |
120 0xAC00 - 0xAD00 // Hangul | |
121 | |
122 This tool uses FreeType2 library. | |
123 Note: This tool doesn't check kerning (GPOS/kern) nor font substitution | |
124 (GSUB). These should be tested in Layout tests if necessary. | |
125 | |
126 Usage: | |
127 $ ./side-by-side ttf_or_otf_file | |
128 | |
129 Example: | |
130 $ ./side-by-side linux/kochi-gothic.ttf # no problem | |
131 $ ./side-by-side free/kredit1.ttf # this is known issue of OTS. | |
132 bitmap metrics doesn't match! (14, 57), (37, 45) | |
133 EXPECTED: | |
134 | |
135 +#######*. | |
136 +##########+ | |
137 .###+.#. .#. | |
138 *#* # #* | |
139 ##. # ## | |
140 ## # ## | |
141 ## # ## | |
142 ## #. ## | |
143 ##. #. .## | |
144 ##. #. .## | |
145 *#+ *+ +#* | |
146 *#+ *+ +#* | |
147 *#+ *+ +#* | |
148 *#+ *+ +#* | |
149 *#+ *+ *#* | |
150 *#+ ++ *#+ | |
151 +#* +* *#+ | |
152 +#* +* *#+ | |
153 +#* +* *#+ | |
154 +#* +* ##. | |
155 +#* +* ##. | |
156 .## .# ## | |
157 .## .# ## | |
158 .## .# ## | |
159 ## # ## | |
160 ## # ## | |
161 ## # .## | |
162 ## # .## | |
163 ## .#+ +#* | |
164 ## +######* | |
165 ##.+#######* | |
166 *##########* | |
167 +##########+ | |
168 #########* | |
169 .######## | |
170 +####+ | |
171 | |
172 | |
173 | |
174 | |
175 | |
176 | |
177 .*######* | |
178 +##*.*##### | |
179 .##+.#+ +# | |
180 *#* ## #+ | |
181 ##*### ## | |
182 ###### ## | |
183 ##+.##+ +## | |
184 ## ########## | |
185 ## +######### | |
186 ## +######## | |
187 *#. .########* | |
188 .#* #########. | |
189 +##########+ | |
190 +*######* | |
191 | |
192 ACTUAL: | |
193 | |
194 .*##*+ | |
195 +##+.##*. | |
196 .#* .##.+#* | |
197 *# ### *#+ | |
198 #*######+ .*#+ | |
199 #########*. +#*. | |
200 ###########* +#* | |
201 *############+ *#+ | |
202 +##############. .##. | |
203 *##############* +#* | |
204 +###############+ *#+ | |
205 *###############+ .*#+ | |
206 .###############*. +#*. | |
207 +###############* +#* | |
208 *###############+ *#+ | |
209 .*###############+ .*#+ | |
210 +###############*. +#* | |
211 +###############* ** | |
212 *###############+ #+ | |
213 .###############* ## | |
214 +############+ ## | |
215 +########* .## | |
216 .######. +### | |
217 +#####+ .*#..# | |
218 +#####* *###..# | |
219 *#####. +#######* | |
220 +#####+ .*########. | |
221 +#####* +#########* | |
222 *#####. +##########+ | |
223 +#####+ *#########*. | |
224 .#####* +##########+ | |
225 *#####. +##########* | |
226 +#####+ *#########*. | |
227 .#####* +##########+ | |
228 *#####+ +##########* | |
229 .#*++#+ *#########*. | |
230 .#+ ## +##########+ | |
231 ****###+.##########* | |
232 ##################. | |
233 ###+ *#########+ | |
234 ## +########* | |
235 *#+ *########. | |
236 ##.#######+ | |
237 +#######* | |
238 *###*. | |
239 | |
240 | |
241 Glyph mismatch! (file: free/kredit1.ttf, U+0021, 100pt)! | |
242 $ | |
243 ------------------------------------------------------------------------------ | |
OLD | NEW |