| Index: third_party/ots/test/README
|
| diff --git a/third_party/ots/test/README b/third_party/ots/test/README
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f634e069592de9239bd84ed04c06c3926be1ad5d
|
| --- /dev/null
|
| +++ b/third_party/ots/test/README
|
| @@ -0,0 +1,243 @@
|
| +------------------------------------------------------------------------------
|
| +ot-sanitise - TTF/OTF font validator/transcoder
|
| +
|
| +Description:
|
| + ot-sanitise is a program which validates and/or transcodes a truetype or
|
| + opentype font file using the OTS library:
|
| +
|
| + transcoded_font = ValidateAndTranscode(original_font);
|
| + if (validation_error)
|
| + PrintErrorAndExit;
|
| + OutputToStdout(transcoded_font);
|
| +
|
| +Usage:
|
| + $ ./ot-sanitise ttf_or_otf_file [transcoded_file]
|
| +
|
| +Example:
|
| + $ ./ot-sanitise sample.otf transcoded_sample.otf
|
| + $ ./ot-sanitise malformed.ttf
|
| + WARNING at ots/src/ots.cc:158: bad range shift
|
| + ERROR at ots/src/ots.cc:199 (bool<unnamed>::do_ots_process(ots::OpenTypeFile*, ots::OTSStream*, const uint8_t*, size_t))
|
| + Failed to sanitise file!
|
| + $
|
| +
|
| +------------------------------------------------------------------------------
|
| +idempotent - TTF/OTF font transcoder (for OTS debugging)
|
| +
|
| +Description:
|
| + idempotent is a program which validates and transcodes a truetype or opentype
|
| + font file using OTS. This tool transcodes the original font twice and then
|
| + verifies that the two transcoded fonts are identical:
|
| +
|
| + t1 = ValidateAndTranscode(original_font);
|
| + if (validation_error)
|
| + PrintErrorAndExit;
|
| + t2 = ValidateAndTranscode(t1);
|
| + if (validation_error)
|
| + PrintErrorAndExit;
|
| + if (t1 != t2)
|
| + PrintErrorAndExit;
|
| +
|
| + This tool is basically for OTS developers.
|
| +
|
| +Usage:
|
| + $ ./idempotent ttf_or_otf_file
|
| +
|
| +Example:
|
| + $ ./idempotent sample.otf
|
| + $ ./idempotent malformed.ttf
|
| + WARNING at ots/src/ots.cc:158: bad range shift
|
| + ERROR at ots/src/ots.cc:199 (bool<unnamed>::do_ots_process(ots::OpenTypeFile*, ots::OTSStream*, const uint8_t*, size_t))
|
| + Failed to sanitise file!
|
| + $
|
| +
|
| +------------------------------------------------------------------------------
|
| +validator_checker - font validation checker
|
| +
|
| +Description:
|
| + validator_checker is a program which is intended to validate malformed fonts.
|
| + If the program detects that the font is invalid, it prints "OK" and returns
|
| + with 0 (success). If it coulndn't detect any errors, the program then opens
|
| + the transcoded font and renders some characters using FreeType2:
|
| +
|
| + transcoded_font = ValidateAndTranscode(malicious_font);
|
| + if (validation_error)
|
| + Print("OK");
|
| + OpenAndRenderSomeCharacters(transcoded_font); # may cause SIGSEGV
|
| + Print("OK");
|
| +
|
| + If SEGV doesn't raise inside FreeType2 library, the program prints "OK" and
|
| + returns with 0 as well. You should run this tool under the catchsegv or
|
| + valgrind command so that you can easily verify that all transformed fonts
|
| + don't crash the library (see the example below).
|
| +
|
| +Usage:
|
| + $ catchsegv ./validator_checker malicous_ttf_or_otf_file
|
| +
|
| +Example:
|
| + $ for f in malformed/*.ttf ; do catchsegv ./validator-checker "$f" ; done
|
| + OK: the malicious font was filtered: malformed/1.ttf
|
| + OK: the malicious font was filtered: malformed/2.ttf
|
| + OK: FreeType2 didn't crash: malformed/3.ttf
|
| + OK: the malicious font was filtered: malformed/4.ttf
|
| + $
|
| +
|
| +------------------------------------------------------------------------------
|
| +perf - performance checker
|
| +
|
| +Description:
|
| + perf is a program which validates and transcodes a truetype or opentype font
|
| + file N times using OTS, then prints the elapsed time:
|
| +
|
| + for (N times)
|
| + ValidateAndTranscode(original_font);
|
| + Print(elapsed_time_in_us / N);
|
| +
|
| +Usage:
|
| + $ ./perf ttf_or_otf_file
|
| +
|
| +Example:
|
| + $ ./perf sample.ttf
|
| + 903 [us] sample.ttf (139332 bytes, 154 [byte/us])
|
| + $ ./perf sample-bold.otf
|
| + 291 [us] sample-bold.otf (150652 bytes, 517 [byte/us])
|
| +
|
| +------------------------------------------------------------------------------
|
| +side-by-side - font quality checker
|
| +
|
| +Description:
|
| + side-by-side is a program which renders some characters (ASCII, Latin-1, CJK)
|
| + using both original font and transcoded font and checks that the two rendering
|
| + results are exactly equal.
|
| +
|
| + The following Unicode characters are used during the test:
|
| + 0x0020 - 0x007E // Basic Latin
|
| + 0x00A1 - 0x017F // Latin-1
|
| + 0x1100 - 0x11FF // Hangul
|
| + 0x3040 - 0x309F // Japanese HIRAGANA letters
|
| + 0x3130 - 0x318F // Hangul
|
| + 0x4E00 - 0x4F00 // CJK Kanji/Hanja
|
| + 0xAC00 - 0xAD00 // Hangul
|
| +
|
| + This tool uses FreeType2 library.
|
| + Note: This tool doesn't check kerning (GPOS/kern) nor font substitution
|
| + (GSUB). These should be tested in Layout tests if necessary.
|
| +
|
| +Usage:
|
| + $ ./side-by-side ttf_or_otf_file
|
| +
|
| +Example:
|
| + $ ./side-by-side linux/kochi-gothic.ttf # no problem
|
| + $ ./side-by-side free/kredit1.ttf # this is known issue of OTS.
|
| + bitmap metrics doesn't match! (14, 57), (37, 45)
|
| + EXPECTED:
|
| +
|
| + +#######*.
|
| + +##########+
|
| + .###+.#. .#.
|
| + *#* # #*
|
| + ##. # ##
|
| + ## # ##
|
| + ## # ##
|
| + ## #. ##
|
| + ##. #. .##
|
| + ##. #. .##
|
| + *#+ *+ +#*
|
| + *#+ *+ +#*
|
| + *#+ *+ +#*
|
| + *#+ *+ +#*
|
| + *#+ *+ *#*
|
| + *#+ ++ *#+
|
| + +#* +* *#+
|
| + +#* +* *#+
|
| + +#* +* *#+
|
| + +#* +* ##.
|
| + +#* +* ##.
|
| + .## .# ##
|
| + .## .# ##
|
| + .## .# ##
|
| + ## # ##
|
| + ## # ##
|
| + ## # .##
|
| + ## # .##
|
| + ## .#+ +#*
|
| + ## +######*
|
| + ##.+#######*
|
| + *##########*
|
| + +##########+
|
| + #########*
|
| + .########
|
| + +####+
|
| +
|
| +
|
| +
|
| +
|
| +
|
| +
|
| + .*######*
|
| + +##*.*#####
|
| + .##+.#+ +#
|
| + *#* ## #+
|
| + ##*### ##
|
| + ###### ##
|
| + ##+.##+ +##
|
| + ## ##########
|
| + ## +#########
|
| + ## +########
|
| + *#. .########*
|
| + .#* #########.
|
| + +##########+
|
| + +*######*
|
| +
|
| + ACTUAL:
|
| +
|
| + .*##*+
|
| + +##+.##*.
|
| + .#* .##.+#*
|
| + *# ### *#+
|
| + #*######+ .*#+
|
| + #########*. +#*.
|
| + ###########* +#*
|
| + *############+ *#+
|
| + +##############. .##.
|
| + *##############* +#*
|
| + +###############+ *#+
|
| + *###############+ .*#+
|
| + .###############*. +#*.
|
| + +###############* +#*
|
| + *###############+ *#+
|
| + .*###############+ .*#+
|
| + +###############*. +#*
|
| + +###############* **
|
| + *###############+ #+
|
| + .###############* ##
|
| + +############+ ##
|
| + +########* .##
|
| + .######. +###
|
| + +#####+ .*#..#
|
| + +#####* *###..#
|
| + *#####. +#######*
|
| + +#####+ .*########.
|
| + +#####* +#########*
|
| + *#####. +##########+
|
| + +#####+ *#########*.
|
| + .#####* +##########+
|
| + *#####. +##########*
|
| + +#####+ *#########*.
|
| + .#####* +##########+
|
| + *#####+ +##########*
|
| + .#*++#+ *#########*.
|
| + .#+ ## +##########+
|
| + ****###+.##########*
|
| + ##################.
|
| + ###+ *#########+
|
| + ## +########*
|
| + *#+ *########.
|
| + ##.#######+
|
| + +#######*
|
| + *###*.
|
| +
|
| +
|
| + Glyph mismatch! (file: free/kredit1.ttf, U+0021, 100pt)!
|
| + $
|
| +------------------------------------------------------------------------------
|
|
|