- From: Bert Bos <bert@w3.org>
- Date: Sat, 26 Mar 2011 13:15:00 +0100
- To: www-font@w3.org
On Feb 9, 2011, at 15:59, Chris Lilley wrote:
> On Wednesday, January 12, 2011, 4:16:26 PM, Bert wrote:
>
> BB> 6) A context-free grammar for WOFF in the spec would have been nice,
> BB> even if there are long-distance dependencies a CFG cannot express
> BB> (such as that some number must correspond to the number of bytes
> BB> somewhere else). A grammar gives a concise view of the structure of a
> BB> file, better than the English text can, and thus helps programmers.
>
> Do you have specific suggestions for a formal language which
>
> a) could express this, with more precision than the prose, and
> b) developers have indicated a desire to see and use
ABNF, the standard grammar notation for RFCs (see RFC 2234) would be a good choice. The beginning of a WOFF grammar could be something like this:
WOFF-file = WOFF-header TableDirectory FontTables
ExtendedMetadata PrivateData
WOFF-header = signature flavor length numTables reserved
totalSfntSize majorVersion minorVersion
metaOffset metaLength metaOrigLength
privOffset privLength
signature = "wOFF"
flavor = UInt32 ; "sfnt version"
length = UInt32
...
TableDirectory = 1*TableDirectoryEntry
TableDirectoryEntry = tag offset compLength origLength origChecksum
tag = Unit32 ; 4-byte sfnt table identifier
offset = UInt32
compLength = UInt32
...
FontTables = 1*FontDataTable
FontDataTable = 1*UInt32 ; (compLength + 3)/4 UInt32's
...
UInt32 = 4OCTET ; unsigned big endian number
UInt16 = 2OCTET
...
etc.
(The "..." just indicate that I skipped things, they are not part of the grammar.) As a Context-Free Grammar, this indeed doesn't express that the length of a table must be equal to a <compLength> elsewhere or that the <offset> must be the offset in bytes of some later table, but that can be added in comments, possibly referring to section numbers for more detail. Together that would give a programmer a good starting point to organize his code, as well as a compact reference of all fields in a WOFF file.
Bert
--
Bert Bos ( W 3 C ) http://www.w3.org/
http://www.w3.org/people/bos W3C/ERCIM
bert@w3.org 2004 Rt des Lucioles / BP 93
+33 (0)4 92 38 76 92 06902 Sophia Antipolis Cedex, France
Received on Saturday, 26 March 2011 12:15:28 UTC