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 |