Apply non-controversial parts of ot-style (#1464)
Things to be used in https://github.com/harfbuzz/harfbuzz/pull/1459
This commit is contained in:
parent
4d809696ef
commit
47cf9a9633
|
@ -26,6 +26,7 @@
|
||||||
#define HB_AAT_FDSC_TABLE_HH
|
#define HB_AAT_FDSC_TABLE_HH
|
||||||
|
|
||||||
#include "hb-aat-layout-common.hh"
|
#include "hb-aat-layout-common.hh"
|
||||||
|
#include "hb-open-type.hh"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* fdsc -- Font descriptors
|
* fdsc -- Font descriptors
|
||||||
|
@ -37,17 +38,36 @@
|
||||||
namespace AAT {
|
namespace AAT {
|
||||||
|
|
||||||
|
|
||||||
struct GXFontDescriptor
|
struct FontDescriptor
|
||||||
{
|
{
|
||||||
|
inline bool has_data () const { return tag; }
|
||||||
|
|
||||||
|
inline int cmp (hb_tag_t a) const { return tag.cmp (a); }
|
||||||
|
|
||||||
|
inline float get_value () const { return u.value.to_float (); }
|
||||||
|
|
||||||
|
enum non_alphabetic_value_t {
|
||||||
|
Alphabetic = 0,
|
||||||
|
Dingbats = 1,
|
||||||
|
PiCharacters = 2,
|
||||||
|
Fleurons = 3,
|
||||||
|
DecorativeBorders = 4,
|
||||||
|
InternationalSymbols= 5,
|
||||||
|
MathSymbols = 6
|
||||||
|
};
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||||
{
|
{
|
||||||
TRACE_SANITIZE (this);
|
TRACE_SANITIZE (this);
|
||||||
return_trace (c->check_struct (this));
|
return_trace (c->check_struct (this));
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
protected:
|
||||||
Tag tag; /* The 4-byte table tag name. */
|
Tag tag; /* The 4-byte table tag name. */
|
||||||
|
union {
|
||||||
Fixed value; /* The value for the descriptor tag. */
|
Fixed value; /* The value for the descriptor tag. */
|
||||||
|
HBUINT32 nalfType; /* If the tag is `nalf`, see non_alphabetic_value_t */
|
||||||
|
} u;
|
||||||
public:
|
public:
|
||||||
DEFINE_SIZE_STATIC (8);
|
DEFINE_SIZE_STATIC (8);
|
||||||
};
|
};
|
||||||
|
@ -77,6 +97,9 @@ struct fdsc
|
||||||
* (default value: 0) */
|
* (default value: 0) */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline const FontDescriptor &get_descriptor (hb_tag_t style) const
|
||||||
|
{ return descriptors.lsearch (style); }
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||||
{
|
{
|
||||||
TRACE_SANITIZE (this);
|
TRACE_SANITIZE (this);
|
||||||
|
@ -87,7 +110,7 @@ struct fdsc
|
||||||
protected:
|
protected:
|
||||||
Fixed version; /* Version number of the font descriptors
|
Fixed version; /* Version number of the font descriptors
|
||||||
* table (0x00010000 for the current version). */
|
* table (0x00010000 for the current version). */
|
||||||
LArrayOf<GXFontDescriptor>
|
LArrayOf<FontDescriptor>
|
||||||
descriptors; /* List of tagged-coordinate pairs style descriptors
|
descriptors; /* List of tagged-coordinate pairs style descriptors
|
||||||
* that will be included to characterize this font.
|
* that will be included to characterize this font.
|
||||||
* Each descriptor consists of a <tag, value> pair.
|
* Each descriptor consists of a <tag, value> pair.
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#define HB_AAT_LAYOUT_COMMON_HH
|
#define HB_AAT_LAYOUT_COMMON_HH
|
||||||
|
|
||||||
#include "hb-aat-layout.hh"
|
#include "hb-aat-layout.hh"
|
||||||
|
#include "hb-open-type.hh"
|
||||||
|
|
||||||
|
|
||||||
namespace AAT {
|
namespace AAT {
|
||||||
|
|
|
@ -54,6 +54,19 @@ struct head
|
||||||
return 16 <= upem && upem <= 16384 ? upem : 1000;
|
return 16 <= upem && upem <= 16384 ? upem : 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum mac_style_flag_t {
|
||||||
|
BOLD = 1u<<0,
|
||||||
|
ITALIC = 1u<<1,
|
||||||
|
UNDERLINE = 1u<<2,
|
||||||
|
OUTLINE = 1u<<3,
|
||||||
|
SHADOW = 1u<<4,
|
||||||
|
CONDENSED = 1u<<5
|
||||||
|
};
|
||||||
|
|
||||||
|
inline bool is_bold (void) const { return macStyle & BOLD; }
|
||||||
|
inline bool is_italic (void) const { return macStyle & ITALIC; }
|
||||||
|
inline bool is_condensed (void) const { return macStyle & CONDENSED; }
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||||
{
|
{
|
||||||
TRACE_SANITIZE (this);
|
TRACE_SANITIZE (this);
|
||||||
|
|
|
@ -93,10 +93,56 @@ struct OS2
|
||||||
{
|
{
|
||||||
enum { tableTag = HB_OT_TAG_OS2 };
|
enum { tableTag = HB_OT_TAG_OS2 };
|
||||||
|
|
||||||
|
inline bool has_data () const { return this != &Null (OS2); }
|
||||||
|
|
||||||
inline const OS2V1Tail &v1 (void) const { return version >= 1 ? v1X : Null (OS2V1Tail); }
|
inline const OS2V1Tail &v1 (void) const { return version >= 1 ? v1X : Null (OS2V1Tail); }
|
||||||
inline const OS2V2Tail &v2 (void) const { return version >= 2 ? v2X : Null (OS2V2Tail); }
|
inline const OS2V2Tail &v2 (void) const { return version >= 2 ? v2X : Null (OS2V2Tail); }
|
||||||
inline const OS2V5Tail &v5 (void) const { return version >= 5 ? v5X : Null (OS2V5Tail); }
|
inline const OS2V5Tail &v5 (void) const { return version >= 5 ? v5X : Null (OS2V5Tail); }
|
||||||
|
|
||||||
|
enum fs_selection_flag_t {
|
||||||
|
ITALIC = 1u<<0,
|
||||||
|
UNDERSCORE = 1u<<1,
|
||||||
|
NEGATIVE = 1u<<2,
|
||||||
|
OUTLINED = 1u<<3,
|
||||||
|
STRIKEOUT = 1u<<4,
|
||||||
|
BOLD = 1u<<5,
|
||||||
|
REGULAR = 1u<<6,
|
||||||
|
USE_TYPO_METRICS = 1u<<7,
|
||||||
|
WWS = 1u<<8,
|
||||||
|
OBLIQUE = 1u<<9
|
||||||
|
};
|
||||||
|
|
||||||
|
inline bool is_italic (void) const { return fsSelection & ITALIC; }
|
||||||
|
inline bool is_oblique (void) const { return fsSelection & OBLIQUE; }
|
||||||
|
|
||||||
|
enum us_width_class_t {
|
||||||
|
FWIDTH_ULTRA_CONDENSED = 1, /* 50% */
|
||||||
|
FWIDTH_EXTRA_CONDENSED = 2, /* 62.5% */
|
||||||
|
FWIDTH_CONDENSED = 3, /* 75% */
|
||||||
|
FWIDTH_SEMI_CONDENSED = 4, /* 87.5% */
|
||||||
|
FWIDTH_NORMAL = 5, /* 100% */
|
||||||
|
FWIDTH_SEMI_EXPANDED = 6, /* 112.5% */
|
||||||
|
FWIDTH_EXPANDED = 7, /* 125% */
|
||||||
|
FWIDTH_EXTRA_EXPANDED = 8, /* 150% */
|
||||||
|
FWIDTH_ULTRA_EXPANDED = 9 /* 200% */
|
||||||
|
};
|
||||||
|
|
||||||
|
inline float get_width () const
|
||||||
|
{
|
||||||
|
switch (usWidthClass) {
|
||||||
|
case FWIDTH_ULTRA_CONDENSED:return 50.f;
|
||||||
|
case FWIDTH_EXTRA_CONDENSED:return 62.5f;
|
||||||
|
case FWIDTH_CONDENSED: return 75.f;
|
||||||
|
case FWIDTH_SEMI_CONDENSED: return 87.5f;
|
||||||
|
default:
|
||||||
|
case FWIDTH_NORMAL: return 100.f;
|
||||||
|
case FWIDTH_SEMI_EXPANDED: return 112.5f;
|
||||||
|
case FWIDTH_EXPANDED: return 125.f;
|
||||||
|
case FWIDTH_EXTRA_EXPANDED: return 150.f;
|
||||||
|
case FWIDTH_ULTRA_EXPANDED: return 200.f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
inline bool subset (hb_subset_plan_t *plan) const
|
inline bool subset (hb_subset_plan_t *plan) const
|
||||||
{
|
{
|
||||||
hb_blob_t *os2_blob = hb_sanitize_context_t ().reference_table<OS2> (plan->source);
|
hb_blob_t *os2_blob = hb_sanitize_context_t ().reference_table<OS2> (plan->source);
|
||||||
|
|
|
@ -57,25 +57,6 @@ enum
|
||||||
// Reserved = 0xFFFC /* Reserved for future use — set to zero. */
|
// Reserved = 0xFFFC /* Reserved for future use — set to zero. */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct StatAxisRecord
|
|
||||||
{
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
|
||||||
{
|
|
||||||
TRACE_SANITIZE (this);
|
|
||||||
return_trace (likely (c->check_struct (this)));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
Tag axisTag; /* A tag identifying the axis of design variation. */
|
|
||||||
NameID axisNameID; /* The name ID for entries in the 'name' table that
|
|
||||||
* provide a display string for this axis. */
|
|
||||||
HBUINT16 axisOrdering; /* A value that applications can use to determine
|
|
||||||
* primary sorting of face names, or for ordering
|
|
||||||
* of descriptors when composing family or face names. */
|
|
||||||
public:
|
|
||||||
DEFINE_SIZE_STATIC (8);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct AxisValueFormat1
|
struct AxisValueFormat1
|
||||||
{
|
{
|
||||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||||
|
@ -223,6 +204,25 @@ struct AxisValue
|
||||||
DEFINE_SIZE_UNION (2, format);
|
DEFINE_SIZE_UNION (2, format);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct StatAxisRecord
|
||||||
|
{
|
||||||
|
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||||
|
{
|
||||||
|
TRACE_SANITIZE (this);
|
||||||
|
return_trace (likely (c->check_struct (this)));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Tag tag; /* A tag identifying the axis of design variation. */
|
||||||
|
NameID nameID; /* The name ID for entries in the 'name' table that
|
||||||
|
* provide a display string for this axis. */
|
||||||
|
HBUINT16 ordering; /* A value that applications can use to determine
|
||||||
|
* primary sorting of face names, or for ordering
|
||||||
|
* of descriptors when composing family or face names. */
|
||||||
|
public:
|
||||||
|
DEFINE_SIZE_STATIC (8);
|
||||||
|
};
|
||||||
|
|
||||||
struct STAT
|
struct STAT
|
||||||
{
|
{
|
||||||
enum { tableTag = HB_OT_TAG_STAT };
|
enum { tableTag = HB_OT_TAG_STAT };
|
||||||
|
|
Loading…
Reference in New Issue