Revert of Chromecast: Play audio streams not supported by CMA via default renderer...
[chromium-blink-merge.git] / third_party / ots / test / README
blobf634e069592de9239bd84ed04c06c3926be1ad5d
1 ------------------------------------------------------------------------------
2 ot-sanitise - TTF/OTF font validator/transcoder
4 Description:
5   ot-sanitise is a program which validates and/or transcodes a truetype or
6   opentype font file using the OTS library:
8       transcoded_font = ValidateAndTranscode(original_font);
9       if (validation_error)
10         PrintErrorAndExit;
11       OutputToStdout(transcoded_font);
13 Usage:
14   $ ./ot-sanitise ttf_or_otf_file [transcoded_file]
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   $
24 ------------------------------------------------------------------------------
25 idempotent - TTF/OTF font transcoder (for OTS debugging)
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:
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;
41   This tool is basically for OTS developers.
43 Usage:
44   $ ./idempotent ttf_or_otf_file
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   $
54 ------------------------------------------------------------------------------
55 validator_checker - font validation checker
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:
63       transcoded_font = ValidateAndTranscode(malicious_font);
64       if (validation_error)
65         Print("OK");
66       OpenAndRenderSomeCharacters(transcoded_font);  # may cause SIGSEGV
67       Print("OK");
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).
74 Usage:
75   $ catchsegv ./validator_checker malicous_ttf_or_otf_file
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   $
85 ------------------------------------------------------------------------------
86 perf - performance checker
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:
92       for (N times)
93         ValidateAndTranscode(original_font);
94       Print(elapsed_time_in_us / N);
96 Usage:
97   $ ./perf ttf_or_otf_file
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])
105 ------------------------------------------------------------------------------
106 side-by-side - font quality checker
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.
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
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.
126 Usage:
127   $ ./side-by-side ttf_or_otf_file
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:
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 ------------------------------------------------------------------------------