[OTLayout] Add FeatureParamsCharacterVariants struct

No API yet.
This commit is contained in:
Behdad Esfahbod 2012-12-11 16:01:31 -05:00
parent bd61bc13ea
commit 0bae50a36f
1 changed files with 49 additions and 3 deletions

View File

@ -329,6 +329,48 @@ struct FeatureParamsStylisticSet
DEFINE_SIZE_STATIC (4); DEFINE_SIZE_STATIC (4);
}; };
struct FeatureParamsCharacterVariants
{
inline bool sanitize (hb_sanitize_context_t *c) {
TRACE_SANITIZE (this);
return TRACE_RETURN (c->check_struct (this) &&
characters.sanitize (c));
}
/* TODO: This is made private since we don't have the facilities in
* FeatureParams to correctly sanitize this. */
private:
USHORT format; /* Format number is set to 0. */
USHORT featUILableNameID; /* The name table name ID that
* specifies a string (or strings,
* for multiple languages) for a
* user-interface label for this
* feature. (May be NULL.) */
USHORT featUITooltipTextNameID;/* The name table name ID that
* specifies a string (or strings,
* for multiple languages) that an
* application can use for tooltip
* text for this feature. (May be
* NULL.) */
USHORT sampleTextNameID; /* The name table name ID that
* specifies sample text that
* illustrates the effect of this
* feature. (May be NULL.) */
USHORT numNamedParameters; /* Number of named parameters. (May
* be zero.) */
USHORT firstParamUILabelNameID;/* The first name table name ID
* used to specify strings for
* user-interface labels for the
* feature parameters. (Must be zero
* if numParameters is zero.) */
ArrayOf<UINT24>
characters; /* Array of the Unicode Scalar Value
* of the characters for which this
* feature provides glyph variants.
* (May be zero.) */
public:
DEFINE_SIZE_ARRAY (14, characters);
};
struct FeatureParams struct FeatureParams
{ {
/* Note: /* Note:
@ -339,6 +381,9 @@ struct FeatureParams
* subtable possible. This may nuke a possibly valid subtable if it's unfortunate * subtable possible. This may nuke a possibly valid subtable if it's unfortunate
* enough to happen at the very end of the GSUB/GPOS table. But that's very * enough to happen at the very end of the GSUB/GPOS table. But that's very
* unlikely (I hope!). * unlikely (I hope!).
*
* When we fully implement FeatureParamsCharacterVariants, we should fix this
* shortcoming...
*/ */
inline bool sanitize (hb_sanitize_context_t *c) { inline bool sanitize (hb_sanitize_context_t *c) {
@ -349,8 +394,9 @@ struct FeatureParams
union { union {
FeatureParamsSize size; FeatureParamsSize size;
FeatureParamsStylisticSet stylisticSet; FeatureParamsStylisticSet stylisticSet;
FeatureParamsCharacterVariants characterVariants;
} u; } u;
DEFINE_SIZE_STATIC (10); DEFINE_SIZE_STATIC (17);
}; };
struct Feature struct Feature