[MPEG-OTSPEC] Interaction between delta-set indices and non-variable values

Skef Iterum skef at skef.org
Sun Apr 7 17:02:43 CEST 2024


I've been looking through the spec and want to ask a question about 
delta-set indices (7.2.3.1 in Vladimir's latest).

The whole point of delta-set indices is:

  * They are arrays, indexed by some external field (generally a GID)
  * They allow the outer, inner pairs to be packed into 3, 2, or (I
    think) even 1 byte when that's possible.

OK, but these values map into an Item Variation Store, and that section 
(7.2.3.2) says:

    A complete delta-set index involves an outer-level index into the
    ItemVariationData subtable array, plus an inner-level index to a
    delta-set row within that subtable. A special meaning is assigned to
    a delta-set index 0xFFFF/0xFFFF (that is, outer-level and
    inner-level portions are both 0xFFFF): this is used to indicate that
    there is no variation data for a given item. Functionally, this
    would be equivalent to referencing delta-set data consisting of only
    deltas of 0 for all regions.

So 0xFFFF,0xFFFF is used as the index pair for something that doesn't 
vary. And you'll often need these (or some substitute) in a delta-set 
index because all the elements (e.g. glyphs) are typically represented 
in a delta-set index.

However, just on the face of it it seems like you'll need 16 bits of 
representation for the outer and 16 for the inner in the delta-set index 
just because those are both 0xFFFF.

Is that wrong, or did our ancestors not notice this interaction? (I'm 
hoping it's wrong.)

Skef

(One can add a zero-delta row to some subtable in the IVS and just use 
its inner and outer indices to work around this, but obviously that's 
not ideal.)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.aau.at/pipermail/mpeg-otspec/attachments/20240407/fa6e4caf/attachment.htm>


More information about the mpeg-otspec mailing list