Index: third_party/ots/docs/DesignDoc.md |
diff --git a/third_party/ots/docs/DesignDoc.md b/third_party/ots/docs/DesignDoc.md |
deleted file mode 100644 |
index ffcc03522f86949eb0ec16ed2c0caf46e99fbe4f..0000000000000000000000000000000000000000 |
--- a/third_party/ots/docs/DesignDoc.md |
+++ /dev/null |
@@ -1,136 +0,0 @@ |
-What's OTS? |
-=========== |
- |
-Sanitiser for OpenType (OTS) is a small library which parses OpenType files |
-(usually from `@font-face`) and attempts to validate and sanitise them. This |
-library is primarily intended to be used with Chromium. We hope this reduces |
-the attack surface of the system font libraries. |
- |
-What the sanitiser does is as follows: |
- |
-1. Parses an original font. If the parsing fails, OTS rejects the original |
- font. |
-2. Validates the parsed data structure. If the validation fails, it rejects the |
- original font as well. |
-3. Creates a new font on memory by serializing the data structure, and we call |
- this "transcoding". |
- |
-By transcoding fonts in this way, it is ensured that: |
- |
-1. All information in an original font that OTS doesn't know or can't parse is |
- dropped from the transcoded font. |
-2. All information in the transcoded font is valid (standard compliant). |
- Particularly 'length' and 'offset' values, that are often used as attack |
- vectors, are ensured to be correct. |
- |
-Supported OpenType tables |
-========================= |
- |
-| Name | Mandatory table? | Supported by OTS? | Note | |
-|--------|-----------------------------|-------------------|--------| |
-| `sfnt` | Yes | Yes | Overlapped tables are not allowed; it is treated as a fatal parser error.| |
-| `maxp` | Yes | Yes | | |
-| `head` | Yes | Yes | | |
-| `hhea` | Yes | Yes | | |
-| `hmtx` | Yes | Yes | | |
-| `name` | Yes | Yes | | |
-| `OS/2` | Yes | Yes | | |
-| `post` | Yes | Yes | | |
-| `cmap` | Yes | Partialy | see below | |
-| `glyf` | Yes, for TrueType fonts | Yes | TrueType bytecode is supported, but OTS does **not** validate it.| |
-| `loca` | Yes, when glyf table exists | Yes | | |
-| `CFF ` | Yes, for OpenType fonts | Yes | OpenType bytecode is also supported, and OTS **does** validate it.| |
-| `cvt ` | No | Yes | Though this table is not mandatory, OTS can't drop the table from a transcoded font since it might be referred from other hinting-related tables. Errors on this table should be treated as fatal.| |
-| `fpgm` | No | Yes | Ditto. | |
-| `prep` | No | Yes | Ditto. | |
-| `VDMX` | No | Yes | This table is important for calculating the correct line spacing, at least on Chromium Windows and Chromium Linux.| |
-| `hdmx` | No | Yes | | |
-| `gasp` | No | Yes | | |
-| `VORG` | No | Yes | | |
-| `LTSH` | No | Yes | | |
-| `kern` | No | Yes | | |
-| `GDEF` | No | Yes | | |
-| `GSUB` | No | Yes | | |
-| `GPOS` | No | Yes | | |
-| `morx` | No | No | | |
-| `jstf` | No | No | | |
-| `vmtx` | No | Yes | | |
-| `vhea` | No | Yes | | |
-| `EBDT` | No | No | We don't support embedded bitmap strikes.| |
-| `EBLC` | No | No | Ditto. | |
-| `EBSC` | No | No | Ditto. | |
-| `bdat` | No | No | Ditto. | |
-| `bhed` | No | No | Ditto. | |
-| `bloc` | No | No | Ditto. | |
-| `DSIG` | No | No | | |
-| All other tables | - | No | | |
- |
-Please note that OTS library does not parse "unsupported" tables. These |
-unsupported tables never appear in a transcoded font. |
- |
-Supported cmap formats |
----------------------- |
- |
-The following 9 formats are supported: |
- |
-* "MS Unicode" (platform 3 encoding 1 format 4) |
- * BMP |
-* "MS UCS-4" (platform 3 encoding 10 format 12) |
-* "MS UCS-4 fallback" (platform 3 encoding 10 format 13) |
-* "MS Symbol" (platform 3 encoding 0 format 4) |
-* "Mac Roman" (platform 1 encoding 0 format 0) |
- * 1-0-0 format is supported while 1-0-6 is not. |
-* "Unicode default" format (platform 0 encoding 0 format 4) |
- * treated as 3-1-4 format |
-* "Unicode 1.1" format (platform 0 encoding 1 format 4) |
- * ditto |
-* "Unicode 2.0+" format (platform 0 encoding 3 format 4) |
-* "Unicode UCS-4" format (platform 0 encoding 4 format 12) |
- * treated as 3-10-12 format |
-* Unicode Variation Sequences (platform 0 encoding 5 format 14) |
- |
-All other types of subtables are not supported and do not appear in transcoded fonts. |
- |
-Validation strategies |
-===================== |
- |
-With regards to 8 mandatory tables, glyph-related tables (`glyf`, `loca` and `CFF`), |
-and hinting-related tables (`cvt`, `prep`, and `fpgm`): |
- |
-* If OTS finds table-length, table-offset, or table-alignment errors, in other |
- words it cannot continue parsing, OTS treats the error as fatal. |
-* If OTS finds simple value error which could be automatically fixed (e.g., |
- font weight is greater than 900 - that's undefined), and if the error is |
- considered common among non-malicious fonts, OTS rewrites the value and |
- continues transcoding. |
-* If OTS finds a value error which is hard to fix (e.g., values which should be |
- sorted are left unsorted), OTS treats the error as fatal. |
- |
-With regards to optional tables (`VORG`, `gasp`, `hdmx`, `LTSH`, and `VDMX`): |
- |
-* If OTS finds table-length, table-offset, or table-alignment errors, OTS |
- treats the error as fatal. |
-* If OTS finds other errors, it simply drops the table from a transcoded font. |
- |
-Files |
-===== |
- |
-* include/opentype-sanitiser.h |
- * Declaration for the public API, `ots::Process()`. |
- * Definition of the `OTSStream` interface, a write-only memory stream. |
-* include/ots-memory-stream.h |
- * Definition of the `MemoryStream` class which implements the `OTSStream` |
- interface above. |
-* src/ots.h |
- * Debug macros. |
- * Definition of a `Buffer` class which is a read-only memory stream. |
-* src/ots.cc |
- * Definition of the `ots::Process()` function. |
- * `sfnt` table parser. |
-* test/\*.cc |
- * test tools. see test/README for details. |
- |
-Known issues |
-============ |
- |
-Please check the [issues](https://github.com/khaledhosny/ots/issues) page. |