Home | History | Annotate | only in /external/chromium_org/third_party/ots/test
Up to higher level directory
NameDateSize
BLACKLIST.txt05-Aug-20152.5K
cff_type2_charstring_test.cc05-Aug-201544.1K
file-stream.h05-Aug-20151.1K
idempotent.cc05-Aug-20155.4K
layout_common_table_test.cc05-Aug-201521.3K
ot-sanitise.cc05-Aug-20151.5K
perf.cc05-Aug-20152.1K
README05-Aug-20157.4K
SConstruct05-Aug-20152.2K
side-by-side.cc05-Aug-20157.7K
table_dependencies_test.cc05-Aug-20152.2K
test_malicious_fonts.sh05-Aug-2015968
test_unmalicious_fonts.sh05-Aug-20151.3K
validator-checker.cc05-Aug-20154.6K

README

      1 ------------------------------------------------------------------------------
      2 ot-sanitise - TTF/OTF font transcoder
      3 
      4 Description:
      5   ot-sanitise is a program which validates and 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 > transcoded_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 ------------------------------------------------------------------------------
    244