#pragma once
namespace WebCore {
enum TextRenderingMode { AutoTextRendering, OptimizeSpeed, OptimizeLegibility, GeometricPrecision };
enum FontSmoothingMode { AutoSmoothing, NoSmoothing, Antialiased, SubpixelAntialiased };
enum class FontRenderingMode { Normal, Alternate };
enum FontOrientation { Horizontal, Vertical };
enum class NonCJKGlyphOrientation { Mixed, Upright };
enum ExpansionBehaviorFlags {
ForbidTrailingExpansion = 0 << 0,
AllowTrailingExpansion = 1 << 0,
ForceTrailingExpansion = 2 << 0,
TrailingExpansionMask = 3 << 0,
ForbidLeadingExpansion = 0 << 2,
AllowLeadingExpansion = 1 << 2,
ForceLeadingExpansion = 2 << 2,
LeadingExpansionMask = 3 << 2,
DefaultExpansion = AllowTrailingExpansion | ForbidLeadingExpansion,
};
typedef unsigned ExpansionBehavior;
enum FontSynthesisValues {
FontSynthesisNone = 0x0,
FontSynthesisWeight = 0x1,
FontSynthesisStyle = 0x2,
FontSynthesisSmallCaps = 0x4
};
typedef unsigned FontSynthesis;
const unsigned FontSynthesisWidth = 3;
enum class FontVariantLigatures {
Normal,
Yes,
No
};
enum class FontVariantPosition {
Normal,
Subscript,
Superscript
};
enum class FontVariantCaps {
Normal,
Small,
AllSmall,
Petite,
AllPetite,
Unicase,
Titling
};
enum class FontVariantNumericFigure {
Normal,
LiningNumbers,
OldStyleNumbers
};
enum class FontVariantNumericSpacing {
Normal,
ProportionalNumbers,
TabularNumbers
};
enum class FontVariantNumericFraction {
Normal,
DiagonalFractions,
StackedFractions
};
enum class FontVariantNumericOrdinal {
Normal,
Yes
};
enum class FontVariantNumericSlashedZero {
Normal,
Yes
};
enum class FontVariantAlternates {
Normal,
HistoricalForms
};
enum class FontVariantEastAsianVariant {
Normal,
Jis78,
Jis83,
Jis90,
Jis04,
Simplified,
Traditional
};
enum class FontVariantEastAsianWidth {
Normal,
Full,
Proportional
};
enum class FontVariantEastAsianRuby {
Normal,
Yes
};
struct FontVariantSettings {
FontVariantSettings()
: commonLigatures(FontVariantLigatures::Normal)
, discretionaryLigatures(FontVariantLigatures::Normal)
, historicalLigatures(FontVariantLigatures::Normal)
, contextualAlternates(FontVariantLigatures::Normal)
, position(FontVariantPosition::Normal)
, caps(FontVariantCaps::Normal)
, numericFigure(FontVariantNumericFigure::Normal)
, numericSpacing(FontVariantNumericSpacing::Normal)
, numericFraction(FontVariantNumericFraction::Normal)
, numericOrdinal(FontVariantNumericOrdinal::Normal)
, numericSlashedZero(FontVariantNumericSlashedZero::Normal)
, alternates(FontVariantAlternates::Normal)
, eastAsianVariant(FontVariantEastAsianVariant::Normal)
, eastAsianWidth(FontVariantEastAsianWidth::Normal)
, eastAsianRuby(FontVariantEastAsianRuby::Normal)
{
}
FontVariantSettings(
FontVariantLigatures commonLigatures,
FontVariantLigatures discretionaryLigatures,
FontVariantLigatures historicalLigatures,
FontVariantLigatures contextualAlternates,
FontVariantPosition position,
FontVariantCaps caps,
FontVariantNumericFigure numericFigure,
FontVariantNumericSpacing numericSpacing,
FontVariantNumericFraction numericFraction,
FontVariantNumericOrdinal numericOrdinal,
FontVariantNumericSlashedZero numericSlashedZero,
FontVariantAlternates alternates,
FontVariantEastAsianVariant eastAsianVariant,
FontVariantEastAsianWidth eastAsianWidth,
FontVariantEastAsianRuby eastAsianRuby)
: commonLigatures(commonLigatures)
, discretionaryLigatures(discretionaryLigatures)
, historicalLigatures(historicalLigatures)
, contextualAlternates(contextualAlternates)
, position(position)
, caps(caps)
, numericFigure(numericFigure)
, numericSpacing(numericSpacing)
, numericFraction(numericFraction)
, numericOrdinal(numericOrdinal)
, numericSlashedZero(numericSlashedZero)
, alternates(alternates)
, eastAsianVariant(eastAsianVariant)
, eastAsianWidth(eastAsianWidth)
, eastAsianRuby(eastAsianRuby)
{
}
bool isAllNormal() const
{
return commonLigatures == FontVariantLigatures::Normal
&& discretionaryLigatures == FontVariantLigatures::Normal
&& historicalLigatures == FontVariantLigatures::Normal
&& contextualAlternates == FontVariantLigatures::Normal
&& position == FontVariantPosition::Normal
&& caps == FontVariantCaps::Normal
&& numericFigure == FontVariantNumericFigure::Normal
&& numericSpacing == FontVariantNumericSpacing::Normal
&& numericFraction == FontVariantNumericFraction::Normal
&& numericOrdinal == FontVariantNumericOrdinal::Normal
&& numericSlashedZero == FontVariantNumericSlashedZero::Normal
&& alternates == FontVariantAlternates::Normal
&& eastAsianVariant == FontVariantEastAsianVariant::Normal
&& eastAsianWidth == FontVariantEastAsianWidth::Normal
&& eastAsianRuby == FontVariantEastAsianRuby::Normal;
}
bool operator==(const FontVariantSettings& other) const
{
return commonLigatures == other.commonLigatures
&& discretionaryLigatures == other.discretionaryLigatures
&& historicalLigatures == other.historicalLigatures
&& contextualAlternates == other.contextualAlternates
&& position == other.position
&& caps == other.caps
&& numericFigure == other.numericFigure
&& numericSpacing == other.numericSpacing
&& numericFraction == other.numericFraction
&& numericOrdinal == other.numericOrdinal
&& numericSlashedZero == other.numericSlashedZero
&& alternates == other.alternates
&& eastAsianVariant == other.eastAsianVariant
&& eastAsianWidth == other.eastAsianWidth
&& eastAsianRuby == other.eastAsianRuby;
}
bool operator!=(const FontVariantSettings& other) const { return !(*this == other); }
unsigned uniqueValue() const
{
return static_cast<unsigned>(commonLigatures) << 26
| static_cast<unsigned>(discretionaryLigatures) << 24
| static_cast<unsigned>(historicalLigatures) << 22
| static_cast<unsigned>(contextualAlternates) << 20
| static_cast<unsigned>(position) << 18
| static_cast<unsigned>(caps) << 15
| static_cast<unsigned>(numericFigure) << 13
| static_cast<unsigned>(numericSpacing) << 11
| static_cast<unsigned>(numericFraction) << 9
| static_cast<unsigned>(numericOrdinal) << 8
| static_cast<unsigned>(numericSlashedZero) << 7
| static_cast<unsigned>(alternates) << 6
| static_cast<unsigned>(eastAsianVariant) << 3
| static_cast<unsigned>(eastAsianWidth) << 1
| static_cast<unsigned>(eastAsianRuby) << 0;
}
FontVariantLigatures commonLigatures;
FontVariantLigatures discretionaryLigatures;
FontVariantLigatures historicalLigatures;
FontVariantLigatures contextualAlternates;
FontVariantPosition position;
FontVariantCaps caps;
FontVariantNumericFigure numericFigure;
FontVariantNumericSpacing numericSpacing;
FontVariantNumericFraction numericFraction;
FontVariantNumericOrdinal numericOrdinal;
FontVariantNumericSlashedZero numericSlashedZero;
FontVariantAlternates alternates;
FontVariantEastAsianVariant eastAsianVariant;
FontVariantEastAsianWidth eastAsianWidth;
FontVariantEastAsianRuby eastAsianRuby;
};
struct FontVariantLigaturesValues {
FontVariantLigaturesValues(
FontVariantLigatures commonLigatures,
FontVariantLigatures discretionaryLigatures,
FontVariantLigatures historicalLigatures,
FontVariantLigatures contextualAlternates)
: commonLigatures(commonLigatures)
, discretionaryLigatures(discretionaryLigatures)
, historicalLigatures(historicalLigatures)
, contextualAlternates(contextualAlternates)
{
}
FontVariantLigatures commonLigatures;
FontVariantLigatures discretionaryLigatures;
FontVariantLigatures historicalLigatures;
FontVariantLigatures contextualAlternates;
};
struct FontVariantNumericValues {
FontVariantNumericValues(
FontVariantNumericFigure figure,
FontVariantNumericSpacing spacing,
FontVariantNumericFraction fraction,
FontVariantNumericOrdinal ordinal,
FontVariantNumericSlashedZero slashedZero)
: figure(figure)
, spacing(spacing)
, fraction(fraction)
, ordinal(ordinal)
, slashedZero(slashedZero)
{
}
FontVariantNumericFigure figure;
FontVariantNumericSpacing spacing;
FontVariantNumericFraction fraction;
FontVariantNumericOrdinal ordinal;
FontVariantNumericSlashedZero slashedZero;
};
struct FontVariantEastAsianValues {
FontVariantEastAsianValues(
FontVariantEastAsianVariant variant,
FontVariantEastAsianWidth width,
FontVariantEastAsianRuby ruby)
: variant(variant)
, width(width)
, ruby(ruby)
{
}
FontVariantEastAsianVariant variant;
FontVariantEastAsianWidth width;
FontVariantEastAsianRuby ruby;
};
enum FontWidthVariant {
RegularWidth,
HalfWidth,
ThirdWidth,
QuarterWidth,
LastFontWidthVariant = QuarterWidth
};
const unsigned FontWidthVariantWidth = 2;
COMPILE_ASSERT(!(LastFontWidthVariant >> FontWidthVariantWidth), FontWidthVariantWidth_is_correct);
enum FontSmallCaps {
FontSmallCapsOff = 0,
FontSmallCapsOn = 1
};
enum class Kerning {
Auto,
Normal,
NoShift
};
enum class FontOpticalSizing {
Enabled,
Disabled
};
enum class FontStyleAxis {
slnt,
ital
};
enum class AllowUserInstalledFonts {
No,
Yes
};
}