[GX] Hookup VariationDevice to Device table implementation
This commit is contained in:
parent
a0c2366075
commit
4c535a822f
|
@ -1165,8 +1165,11 @@ struct ClassDef
|
||||||
* Device Tables
|
* Device Tables
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct Device
|
struct HintingDevice
|
||||||
{
|
{
|
||||||
|
friend struct Device;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
inline hb_position_t get_x_delta (hb_font_t *font) const
|
inline hb_position_t get_x_delta (hb_font_t *font) const
|
||||||
{ return get_delta (font->x_ppem, font->x_scale); }
|
{ return get_delta (font->x_ppem, font->x_scale); }
|
||||||
|
@ -1320,6 +1323,9 @@ struct VariationMap
|
||||||
|
|
||||||
struct VariationDevice
|
struct VariationDevice
|
||||||
{
|
{
|
||||||
|
friend struct Device;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
inline hb_position_t get_x_delta (hb_font_t *font) const
|
inline hb_position_t get_x_delta (hb_font_t *font) const
|
||||||
{ return font->em_scalef_x (get_delta (font->x_coords, font->num_coords)); }
|
{ return font->em_scalef_x (get_delta (font->x_coords, font->num_coords)); }
|
||||||
|
@ -1355,6 +1361,63 @@ struct VariationDevice
|
||||||
DEFINE_SIZE_ARRAY (6, deltaValue);
|
DEFINE_SIZE_ARRAY (6, deltaValue);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct Device
|
||||||
|
{
|
||||||
|
inline hb_position_t get_x_delta (hb_font_t *font) const
|
||||||
|
{
|
||||||
|
switch (u.b.format)
|
||||||
|
{
|
||||||
|
case 1: case 2: case 3:
|
||||||
|
return u.hinting.get_x_delta (font);
|
||||||
|
case 0x10:
|
||||||
|
return u.variation.get_x_delta (font);
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inline hb_position_t get_y_delta (hb_font_t *font) const
|
||||||
|
{
|
||||||
|
switch (u.b.format)
|
||||||
|
{
|
||||||
|
case 1: case 2: case 3:
|
||||||
|
return u.hinting.get_x_delta (font);
|
||||||
|
case 0x10:
|
||||||
|
return u.variation.get_x_delta (font);
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||||
|
{
|
||||||
|
TRACE_SANITIZE (this);
|
||||||
|
if (!u.b.format.sanitize (c)) return_trace (false);
|
||||||
|
switch (u.b.format) {
|
||||||
|
case 1: case 2: case 3:
|
||||||
|
return_trace (u.hinting.sanitize (c));
|
||||||
|
case 0x10:
|
||||||
|
return_trace (u.variation.sanitize (c));
|
||||||
|
default:
|
||||||
|
return_trace (true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
USHORT reserved1;
|
||||||
|
USHORT reserved2;
|
||||||
|
USHORT format; /* Format identifier */
|
||||||
|
public:
|
||||||
|
DEFINE_SIZE_STATIC (6);
|
||||||
|
} b;
|
||||||
|
HintingDevice hinting;
|
||||||
|
VariationDevice variation;
|
||||||
|
} u;
|
||||||
|
public:
|
||||||
|
DEFINE_SIZE_UNION (6, b);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
} /* namespace OT */
|
} /* namespace OT */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue