Home | Sitemap | Contact  
 
Home Wiki Stakeholders

EEULAA Inclusion by adding an OpenType Table

One suggestion about how to add the Electronic EULA Abstract (EEULAA) to fonts is to create a new OpenType table with standard fields. Emil Yakupov has created a (Windows) demo application which creates such a table and inserts it into a font and reads such tables from fonts. Here is the table description:

The table contains the principal positions of the EEULA abstract in simplified (machine readable) form. Each position of the EEULA abstract is represented by an identifier, bit value, numeric value and optional text (Unicode).

This table specification is in "alpha" version and is given here only for reference.

The EEULA table  (table tag is "EULA") is organized as follows:

Type Name Description
DWORD version Version number (current is 1.0 which is encoded as 0x00010000).
USHORT count Number of data records.
USHORT stringsOffset Offset to start of string storage (from start of table).
DataRecord dataRecord[count] The data records where count is the number of records.
StringRecord stringRecord[variable] Storage for the string data. Strings are stored in UTF-8 encoding, without trailing zero.

Each DataRecord looks like this:

Type Name Description
USHORT fieldID Section identifier, low byte – section id, high byte – subsection id.
USHORT bitValue One of binary-field values associated with this DataRecord.
USHORT numValue Numeric value (e.g. number of CPUs). Value FFFF means “unlimited”.
USHORT stringCount Number of string data records (StringRecord) associated with this DataRecord. More than one string may be associated with single DataRecord, all must have same meaning but in different languages.
USHORT stringOffset Offset to the first StringRecord for this DataRecord.

If a DataRecord has some text content, it makes a reference to one of StringRecord entries which follow the DataRecord array:

Type Name Description
USHORT langId Language ID for this string. Language ID has the same meaning as Microsoft Language ID defined for name table.
USHORT stringLangth Length of the string
USHORT stringOffset Offset to text string from beginning of text data in table (Variable). Absolute address can be calculated as stringsOffset (table header) + stringOffset (StringRecord).

Possible values for the bitValue field:

Name Value Description
bvalNotdef 0000 Value is undefined
bvalNo 0001 No
bvalYes 0002 Yes
bvalCondition 0004 According to a condition (numerical or text-based)
bvalConsentReq 0008
bvalLicenseReg 0010 Check EULA (text-based) for details
bvalPrintPreview 0020 Print and preview embedding allowed
bvalInstallable 0040 Installable embedding allowed
bvalEditable 0080 Editable embedding allowed

Data records:

Description Section ID Subsection ID bitValue Meaning
Number of users 1 1 0…32000 as numValue, FFFF means "unlimited", 0 means "not allowed to use"
Number of workstations 1 2 Same as above
Number of CPUs 1 3 Same as above
Number of devices 1 4 Same as above
Number of output devices 1 5 Same as above
Number of printers 1 6 Same as above
Number of computers 1 7 Same as above
Number of servers 1 8 Same as above
Location: site 2 1 numValue defines number of locations, in 0…32000 range, FFFF means "unlimited". By default site is not allowed if not explicitly specified.
Location: company 3 Same as above
Location: third party 4 Same as above
Sharing with service bureaus 3 0 bvalYes Sharing allowed
bvalNo Sharing not allowed
bvalCondition Charing allowed according to a condition specified as string entry
Embedding: all 4 1 bvalYes Font can be embedded in any document
bvalNo Font cannot be embedded
Embedding: user only 4 2 bvalNo Embedding is not allowed
bvalPrintPreview Only print and preview embedding is allowed
bvalInstallable Installable embeding is allowed
bvalEditable Editable embedding is allowed. Bit field may be a combination of 3 binary values descrbed above
Embedding: in house 4 3 same as above See above description for bitValue
Embedding: service bureau 4 4 same as above
Embedding: intranet 4 5 same as above
Embedding: eBook; eNewsletter 4 6 same as above
Embedding: OEM software 4 7 same as above
Embedding: Web 4 8 same as above
Embedding: external non-commercial 4 9 same as above
Embedding: external commercial 4 10 same as above
Font modification: format/platform conversion 5 1 bvalYes Conversion is allowed
bvalNo Conversion is not allowed
bvalCondition Conversion is allowed according to a condition specified as string entry
Font modification: font editing 5 2 bvalYes Editing is allowed
bvalNo Editing is not allowed
bvalCondition Editing is allowed according to a condition specified as string entry
License transferable 6 0 bvalYes
bvalNo
bvalCondition
Full EULA URL 7 0 String record contains URL to the full EULA text
License upgrade URL 8 0 String record contains URL to the page where font license can be upgraded