70 Matching Annotations
  1. Jul 2020
    1. The segment values are specified in four parallel arrays. Each segment is described by a startCode and endCode, along with an idDelta and an idRangeOffset, which are used for mapping the character codes in the segment.

      Remove this.

    1. Both formats of CommonType require a maxp table because a number of applications call the Windows GetFontData( ) API on the maxp table to determine the number of glyphs in the font.

      Let's just say it's required by the standard, not because of some implementation detail.

    1. SubRule

      Everything else is Subst - ContextSubstFormat1, SubstLookupRecord, SubstCount, etc. This is Sub. It should be SubstRule, SubstRuleSet and likewise ChainSubstRule etc.

  2. Jun 2020
    1. Table 6.1. 

      In general, having these tables with half a sentence of "description" for each field just isn't enough for a formal specification. Spell everything out.

    1. is the glyph to use for that sequence

      How do we know what glyph to use for a sequence of Unicode codepoints? We look them up in the cmap table. Surely this is a circular argument.

    2. If a font contains characters from the Unicode Surrogates Area (U+D800-U+DFFF), which are UCS-4 characters; it's likely that it will also include other, regular 16-bit Unicodes as well. We therefore need a format to map a mixture of 16-bit and 32-bit character codes,

      Wait a moment, this is all wrong. Unicode codepoints don't have an inherit bit length.

    3. Supporting 4-byte character codesSpecificationWhile the four existing cmap subtable formats which currently exist have served us well, the introduction of the Surrogates Area in Unicode 2.0 has stressed them past the point of utility. This section specifies three formats, format 8, 10 and 12; which directly support 4-byte character codes. A major change introduced with these three formats is a more pure 32-bit orientation. The cmap table version number will continue to be 0x0000, for those fonts that make use of these formats.

      Drop this whole section as non-spec-like language.

    4. This format is very similar to format 0, in that there is an explicit list of glyph indices for a contiguous range of character code.

      If this is genuinely a superset of format 0, then let's deprecate format 0.

    5. The offset of the byte within this subrange is then used as index into a corresponding subarray of glyphIndexArray. This subarray is also of length entryCount. The value of the idRangeOffset is the number of bytes past the actual location of the idRangeOffset word where the glyphIndexArray element corresponding to firstCode appears.

      I'm lost. I'm completely lost. I'm sure there must be a better way of wording this.

    6. Non-Windows ANSI Type 1 fonts, such as Cyrillic and Central European fonts, that Adobe shipped in the past had "0" (Windows ANSI) recorded in the CharSet field of the .PFM file; ATM for Windows 9x ignores the CharSet altogether. Adobe provides this compatibility cmap encoding in every OTF converted from a Type1 font in which the Encoding is not StandardEncoding.

      Historical garbage should be removed.

    7. The descriptions of the fields of this table do not include names for them, as most other tables do. The recommendation is to include them: version, numTables, platformID, encodingID, offset.

      This has been done.

    8. In the fifth paragraph, "UCS-4 (surrogate) characters" should be replaced by "Unicode supplemental characters" or "Unicode supplemental (non-BMP) characters". BMP characters are also UCS-4 characters. And anyways, UCS-4 is an encoding, not a character collection.

      This appears to have been done

    9. The platform ID and platform-specific encoding ID in the header entry

      Deprecate this completely in CT1.9. Consumers should accept it but producers should only produce Unicode encoded fonts.

    10. This field must be set to zero for all cmap subtables whose platform IDs are other than Macintosh (platform ID 1). For cmap subtables whose platform IDs are Macintosh, set this field to the Macintosh language ID of the cmap subtable plus one, or to zero if the cmap subtable is not language-specific. For example, a Mac OS Turkish cmap subtable must set this field to 18, since the Macintosh language ID for Turkish is 17. A Mac OS Roman cmap subtable must set this field to 0, since Mac OS Roman is not a language-specific encoding.

      This whole thing would be greatly simplified just by writing out the valid combinations. Macintosh font? These are the values you need. Windows font? Choose from one of these.

    1. Related documentation

      Need a "Definitions" section in here, which covers things like "font file", "client" (which should be split into "font producer" and "font consumer"/"shaper"/"layout application"/something like that)

    1. Multiple Master support in CommonType, has been discontinued as of version 1.3 of the specification. The 'fvar', 'MMSD', 'MMFX' tables have hence been removed.

      Remove, replace with variation font tables.