diff options
Diffstat (limited to 'system/graphics/thebes/gfxFontConstants.h')
-rw-r--r-- | system/graphics/thebes/gfxFontConstants.h | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/system/graphics/thebes/gfxFontConstants.h b/system/graphics/thebes/gfxFontConstants.h new file mode 100644 index 000000000..3eae49ee1 --- /dev/null +++ b/system/graphics/thebes/gfxFontConstants.h @@ -0,0 +1,238 @@ +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* font constants shared by both thebes and layout */ + +#ifndef GFX_FONT_CONSTANTS_H +#define GFX_FONT_CONSTANTS_H + +/* + * This file is separate from gfxFont.h so that layout can include it + * without bringing in gfxFont.h and everything it includes. + */ + +#define NS_FONT_STYLE_NORMAL 0 +#define NS_FONT_STYLE_ITALIC 1 +#define NS_FONT_STYLE_OBLIQUE 2 + +#define NS_FONT_WEIGHT_NORMAL 400 +#define NS_FONT_WEIGHT_BOLD 700 +#define NS_FONT_WEIGHT_THIN 100 + +#define NS_FONT_STRETCH_ULTRA_CONDENSED (-4) +#define NS_FONT_STRETCH_EXTRA_CONDENSED (-3) +#define NS_FONT_STRETCH_CONDENSED (-2) +#define NS_FONT_STRETCH_SEMI_CONDENSED (-1) +#define NS_FONT_STRETCH_NORMAL 0 +#define NS_FONT_STRETCH_SEMI_EXPANDED 1 +#define NS_FONT_STRETCH_EXPANDED 2 +#define NS_FONT_STRETCH_EXTRA_EXPANDED 3 +#define NS_FONT_STRETCH_ULTRA_EXPANDED 4 + +#define NS_FONT_SMOOTHING_AUTO 0 +#define NS_FONT_SMOOTHING_GRAYSCALE 1 + +#define NS_FONT_KERNING_AUTO 0 +#define NS_FONT_KERNING_NONE 1 +#define NS_FONT_KERNING_NORMAL 2 + +#define NS_FONT_SYNTHESIS_WEIGHT 0x1 +#define NS_FONT_SYNTHESIS_STYLE 0x2 + +#define NS_FONT_DISPLAY_AUTO 0 +#define NS_FONT_DISPLAY_BLOCK 1 +#define NS_FONT_DISPLAY_SWAP 2 +#define NS_FONT_DISPLAY_FALLBACK 3 +#define NS_FONT_DISPLAY_OPTIONAL 4 + +enum { + eFeatureAlternates_historical, + eFeatureAlternates_stylistic, + eFeatureAlternates_styleset, + eFeatureAlternates_character_variant, + eFeatureAlternates_swash, + eFeatureAlternates_ornaments, + eFeatureAlternates_annotation, + + eFeatureAlternates_numFeatures +}; + +// alternates - simple enumerated values +#define NS_FONT_VARIANT_ALTERNATES_HISTORICAL (1 << eFeatureAlternates_historical) + +// alternates - values that use functional syntax +#define NS_FONT_VARIANT_ALTERNATES_STYLISTIC (1 << eFeatureAlternates_stylistic) +#define NS_FONT_VARIANT_ALTERNATES_STYLESET (1 << eFeatureAlternates_styleset) +#define NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT (1 << eFeatureAlternates_character_variant) +#define NS_FONT_VARIANT_ALTERNATES_SWASH (1 << eFeatureAlternates_swash) +#define NS_FONT_VARIANT_ALTERNATES_ORNAMENTS (1 << eFeatureAlternates_ornaments) +#define NS_FONT_VARIANT_ALTERNATES_ANNOTATION (1 << eFeatureAlternates_annotation) + +#define NS_FONT_VARIANT_ALTERNATES_ENUMERATED_MASK \ + NS_FONT_VARIANT_ALTERNATES_HISTORICAL + +#define NS_FONT_VARIANT_ALTERNATES_FUNCTIONAL_MASK ( \ + NS_FONT_VARIANT_ALTERNATES_STYLISTIC | \ + NS_FONT_VARIANT_ALTERNATES_STYLESET | \ + NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT | \ + NS_FONT_VARIANT_ALTERNATES_SWASH | \ + NS_FONT_VARIANT_ALTERNATES_ORNAMENTS | \ + NS_FONT_VARIANT_ALTERNATES_ANNOTATION ) + +#define NS_FONT_VARIANT_CAPS_NORMAL 0 +#define NS_FONT_VARIANT_CAPS_SMALLCAPS 1 +#define NS_FONT_VARIANT_CAPS_ALLSMALL 2 +#define NS_FONT_VARIANT_CAPS_PETITECAPS 3 +#define NS_FONT_VARIANT_CAPS_ALLPETITE 4 +#define NS_FONT_VARIANT_CAPS_TITLING 5 +#define NS_FONT_VARIANT_CAPS_UNICASE 6 + +enum { + eFeatureEastAsian_jis78, + eFeatureEastAsian_jis83, + eFeatureEastAsian_jis90, + eFeatureEastAsian_jis04, + eFeatureEastAsian_simplified, + eFeatureEastAsian_traditional, + eFeatureEastAsian_full_width, + eFeatureEastAsian_prop_width, + eFeatureEastAsian_ruby, + + eFeatureEastAsian_numFeatures +}; + +#define NS_FONT_VARIANT_EAST_ASIAN_JIS78 (1 << eFeatureEastAsian_jis78) +#define NS_FONT_VARIANT_EAST_ASIAN_JIS83 (1 << eFeatureEastAsian_jis83) +#define NS_FONT_VARIANT_EAST_ASIAN_JIS90 (1 << eFeatureEastAsian_jis90) +#define NS_FONT_VARIANT_EAST_ASIAN_JIS04 (1 << eFeatureEastAsian_jis04) +#define NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED (1 << eFeatureEastAsian_simplified) +#define NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL (1 << eFeatureEastAsian_traditional) +#define NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH (1 << eFeatureEastAsian_full_width) +#define NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH (1 << eFeatureEastAsian_prop_width) +#define NS_FONT_VARIANT_EAST_ASIAN_RUBY (1 << eFeatureEastAsian_ruby) + +#define NS_FONT_VARIANT_EAST_ASIAN_VARIANT_MASK ( \ + NS_FONT_VARIANT_EAST_ASIAN_JIS78 | \ + NS_FONT_VARIANT_EAST_ASIAN_JIS83 | \ + NS_FONT_VARIANT_EAST_ASIAN_JIS90 | \ + NS_FONT_VARIANT_EAST_ASIAN_JIS04 | \ + NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED | \ + NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL ) + +#define NS_FONT_VARIANT_EAST_ASIAN_WIDTH_MASK ( \ + NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH | \ + NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH ) + +enum { + eFeatureLigatures_none, + eFeatureLigatures_common, + eFeatureLigatures_no_common, + eFeatureLigatures_discretionary, + eFeatureLigatures_no_discretionary, + eFeatureLigatures_historical, + eFeatureLigatures_no_historical, + eFeatureLigatures_contextual, + eFeatureLigatures_no_contextual, + + eFeatureLigatures_numFeatures +}; + +#define NS_FONT_VARIANT_LIGATURES_NONE (1 << eFeatureLigatures_none) +#define NS_FONT_VARIANT_LIGATURES_COMMON (1 << eFeatureLigatures_common) +#define NS_FONT_VARIANT_LIGATURES_NO_COMMON (1 << eFeatureLigatures_no_common) +#define NS_FONT_VARIANT_LIGATURES_DISCRETIONARY (1 << eFeatureLigatures_discretionary) +#define NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY (1 << eFeatureLigatures_no_discretionary) +#define NS_FONT_VARIANT_LIGATURES_HISTORICAL (1 << eFeatureLigatures_historical) +#define NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL (1 << eFeatureLigatures_no_historical) +#define NS_FONT_VARIANT_LIGATURES_CONTEXTUAL (1 << eFeatureLigatures_contextual) +#define NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL (1 << eFeatureLigatures_no_contextual) + +#define NS_FONT_VARIANT_LIGATURES_COMMON_MASK ( \ + NS_FONT_VARIANT_LIGATURES_COMMON | \ + NS_FONT_VARIANT_LIGATURES_NO_COMMON ) + +#define NS_FONT_VARIANT_LIGATURES_DISCRETIONARY_MASK ( \ + NS_FONT_VARIANT_LIGATURES_DISCRETIONARY | \ + NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY ) + +#define NS_FONT_VARIANT_LIGATURES_HISTORICAL_MASK ( \ + NS_FONT_VARIANT_LIGATURES_HISTORICAL | \ + NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL ) + +#define NS_FONT_VARIANT_LIGATURES_CONTEXTUAL_MASK \ + NS_FONT_VARIANT_LIGATURES_CONTEXTUAL | \ + NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL + +enum { + eFeatureNumeric_lining, + eFeatureNumeric_oldstyle, + eFeatureNumeric_proportional, + eFeatureNumeric_tabular, + eFeatureNumeric_diagonal_fractions, + eFeatureNumeric_stacked_fractions, + eFeatureNumeric_slashedzero, + eFeatureNumeric_ordinal, + + eFeatureNumeric_numFeatures +}; + +#define NS_FONT_VARIANT_NUMERIC_LINING (1 << eFeatureNumeric_lining) +#define NS_FONT_VARIANT_NUMERIC_OLDSTYLE (1 << eFeatureNumeric_oldstyle) +#define NS_FONT_VARIANT_NUMERIC_PROPORTIONAL (1 << eFeatureNumeric_proportional) +#define NS_FONT_VARIANT_NUMERIC_TABULAR (1 << eFeatureNumeric_tabular) +#define NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS (1 << eFeatureNumeric_diagonal_fractions) +#define NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS (1 << eFeatureNumeric_stacked_fractions) +#define NS_FONT_VARIANT_NUMERIC_SLASHZERO (1 << eFeatureNumeric_slashedzero) +#define NS_FONT_VARIANT_NUMERIC_ORDINAL (1 << eFeatureNumeric_ordinal) + +#define NS_FONT_VARIANT_NUMERIC_FIGURE_MASK \ + NS_FONT_VARIANT_NUMERIC_LINING | \ + NS_FONT_VARIANT_NUMERIC_OLDSTYLE + +#define NS_FONT_VARIANT_NUMERIC_SPACING_MASK \ + NS_FONT_VARIANT_NUMERIC_PROPORTIONAL | \ + NS_FONT_VARIANT_NUMERIC_TABULAR + +#define NS_FONT_VARIANT_NUMERIC_FRACTION_MASK \ + NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS | \ + NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS + +#define NS_FONT_VARIANT_POSITION_NORMAL 0 +#define NS_FONT_VARIANT_POSITION_SUPER 1 +#define NS_FONT_VARIANT_POSITION_SUB 2 + +#define NS_FONT_VARIANT_WIDTH_NORMAL 0 +#define NS_FONT_VARIANT_WIDTH_FULL 1 +#define NS_FONT_VARIANT_WIDTH_HALF 2 +#define NS_FONT_VARIANT_WIDTH_THIRD 3 +#define NS_FONT_VARIANT_WIDTH_QUARTER 4 + +// based on fixed offset values used within WebKit +#define NS_FONT_SUBSCRIPT_OFFSET_RATIO (0.20) +#define NS_FONT_SUPERSCRIPT_OFFSET_RATIO (0.34) + +// this roughly corresponds to font-size: smaller behavior +// at smaller sizes <20px the ratio is closer to 0.8 while at +// larger sizes >45px the ratio is closer to 0.667 and in between +// a blend of values is used +#define NS_FONT_SUB_SUPER_SIZE_RATIO_SMALL (0.82) +#define NS_FONT_SUB_SUPER_SIZE_RATIO_LARGE (0.667) +#define NS_FONT_SUB_SUPER_SMALL_SIZE (20.0) +#define NS_FONT_SUB_SUPER_LARGE_SIZE (45.0) + +// pref lang ids for font prefs +enum eFontPrefLang { + #define FONT_PREF_LANG(enum_id_, str_, atom_id_) eFontPrefLang_ ## enum_id_ + #include "gfxFontPrefLangList.h" + #undef FONT_PREF_LANG + + , eFontPrefLang_CJKSet // special code for CJK set + , eFontPrefLang_Emoji // special code for emoji presentation + , eFontPrefLang_First = eFontPrefLang_Western + , eFontPrefLang_Last = eFontPrefLang_Others + , eFontPrefLang_Count = (eFontPrefLang_Last - eFontPrefLang_First + 1) +}; + +#endif |