michael@0: /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: /* font constants shared by both thebes and layout */ michael@0: michael@0: #ifndef GFX_FONT_CONSTANTS_H michael@0: #define GFX_FONT_CONSTANTS_H michael@0: michael@0: /* michael@0: * This file is separate from gfxFont.h so that layout can include it michael@0: * without bringing in gfxFont.h and everything it includes. michael@0: */ michael@0: michael@0: #define NS_FONT_STYLE_NORMAL 0 michael@0: #define NS_FONT_STYLE_ITALIC 1 michael@0: #define NS_FONT_STYLE_OBLIQUE 2 michael@0: michael@0: #define NS_FONT_WEIGHT_NORMAL 400 michael@0: #define NS_FONT_WEIGHT_BOLD 700 michael@0: michael@0: #define NS_FONT_STRETCH_ULTRA_CONDENSED (-4) michael@0: #define NS_FONT_STRETCH_EXTRA_CONDENSED (-3) michael@0: #define NS_FONT_STRETCH_CONDENSED (-2) michael@0: #define NS_FONT_STRETCH_SEMI_CONDENSED (-1) michael@0: #define NS_FONT_STRETCH_NORMAL 0 michael@0: #define NS_FONT_STRETCH_SEMI_EXPANDED 1 michael@0: #define NS_FONT_STRETCH_EXPANDED 2 michael@0: #define NS_FONT_STRETCH_EXTRA_EXPANDED 3 michael@0: #define NS_FONT_STRETCH_ULTRA_EXPANDED 4 michael@0: michael@0: #define NS_FONT_SMOOTHING_AUTO 0 michael@0: #define NS_FONT_SMOOTHING_GRAYSCALE 1 michael@0: michael@0: #define NS_FONT_KERNING_AUTO 0 michael@0: #define NS_FONT_KERNING_NONE 1 michael@0: #define NS_FONT_KERNING_NORMAL 2 michael@0: michael@0: #define NS_FONT_SYNTHESIS_WEIGHT 0x1 michael@0: #define NS_FONT_SYNTHESIS_STYLE 0x2 michael@0: michael@0: enum { michael@0: eFeatureAlternates_historical, michael@0: eFeatureAlternates_stylistic, michael@0: eFeatureAlternates_styleset, michael@0: eFeatureAlternates_character_variant, michael@0: eFeatureAlternates_swash, michael@0: eFeatureAlternates_ornaments, michael@0: eFeatureAlternates_annotation, michael@0: michael@0: eFeatureAlternates_numFeatures michael@0: }; michael@0: michael@0: // alternates - simple enumerated values michael@0: #define NS_FONT_VARIANT_ALTERNATES_HISTORICAL (1 << eFeatureAlternates_historical) michael@0: michael@0: // alternates - values that use functional syntax michael@0: #define NS_FONT_VARIANT_ALTERNATES_STYLISTIC (1 << eFeatureAlternates_stylistic) michael@0: #define NS_FONT_VARIANT_ALTERNATES_STYLESET (1 << eFeatureAlternates_styleset) michael@0: #define NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT (1 << eFeatureAlternates_character_variant) michael@0: #define NS_FONT_VARIANT_ALTERNATES_SWASH (1 << eFeatureAlternates_swash) michael@0: #define NS_FONT_VARIANT_ALTERNATES_ORNAMENTS (1 << eFeatureAlternates_ornaments) michael@0: #define NS_FONT_VARIANT_ALTERNATES_ANNOTATION (1 << eFeatureAlternates_annotation) michael@0: michael@0: #define NS_FONT_VARIANT_ALTERNATES_ENUMERATED_MASK \ michael@0: NS_FONT_VARIANT_ALTERNATES_HISTORICAL michael@0: michael@0: #define NS_FONT_VARIANT_ALTERNATES_FUNCTIONAL_MASK ( \ michael@0: NS_FONT_VARIANT_ALTERNATES_STYLISTIC | \ michael@0: NS_FONT_VARIANT_ALTERNATES_STYLESET | \ michael@0: NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT | \ michael@0: NS_FONT_VARIANT_ALTERNATES_SWASH | \ michael@0: NS_FONT_VARIANT_ALTERNATES_ORNAMENTS | \ michael@0: NS_FONT_VARIANT_ALTERNATES_ANNOTATION ) michael@0: michael@0: #define NS_FONT_VARIANT_CAPS_NORMAL 0 michael@0: #define NS_FONT_VARIANT_CAPS_SMALLCAPS 1 michael@0: #define NS_FONT_VARIANT_CAPS_ALLSMALL 2 michael@0: #define NS_FONT_VARIANT_CAPS_PETITECAPS 3 michael@0: #define NS_FONT_VARIANT_CAPS_ALLPETITE 4 michael@0: #define NS_FONT_VARIANT_CAPS_TITLING 5 michael@0: #define NS_FONT_VARIANT_CAPS_UNICASE 6 michael@0: michael@0: enum { michael@0: eFeatureEastAsian_jis78, michael@0: eFeatureEastAsian_jis83, michael@0: eFeatureEastAsian_jis90, michael@0: eFeatureEastAsian_jis04, michael@0: eFeatureEastAsian_simplified, michael@0: eFeatureEastAsian_traditional, michael@0: eFeatureEastAsian_full_width, michael@0: eFeatureEastAsian_prop_width, michael@0: eFeatureEastAsian_ruby, michael@0: michael@0: eFeatureEastAsian_numFeatures michael@0: }; michael@0: michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_JIS78 (1 << eFeatureEastAsian_jis78) michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_JIS83 (1 << eFeatureEastAsian_jis83) michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_JIS90 (1 << eFeatureEastAsian_jis90) michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_JIS04 (1 << eFeatureEastAsian_jis04) michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED (1 << eFeatureEastAsian_simplified) michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL (1 << eFeatureEastAsian_traditional) michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH (1 << eFeatureEastAsian_full_width) michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH (1 << eFeatureEastAsian_prop_width) michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_RUBY (1 << eFeatureEastAsian_ruby) michael@0: michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_VARIANT_MASK ( \ michael@0: NS_FONT_VARIANT_EAST_ASIAN_JIS78 | \ michael@0: NS_FONT_VARIANT_EAST_ASIAN_JIS83 | \ michael@0: NS_FONT_VARIANT_EAST_ASIAN_JIS90 | \ michael@0: NS_FONT_VARIANT_EAST_ASIAN_JIS04 | \ michael@0: NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED | \ michael@0: NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL ) michael@0: michael@0: #define NS_FONT_VARIANT_EAST_ASIAN_WIDTH_MASK ( \ michael@0: NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH | \ michael@0: NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH ) michael@0: michael@0: enum { michael@0: eFeatureLigatures_none, michael@0: eFeatureLigatures_common, michael@0: eFeatureLigatures_no_common, michael@0: eFeatureLigatures_discretionary, michael@0: eFeatureLigatures_no_discretionary, michael@0: eFeatureLigatures_historical, michael@0: eFeatureLigatures_no_historical, michael@0: eFeatureLigatures_contextual, michael@0: eFeatureLigatures_no_contextual, michael@0: michael@0: eFeatureLigatures_numFeatures michael@0: }; michael@0: michael@0: #define NS_FONT_VARIANT_LIGATURES_NONE (1 << eFeatureLigatures_none) michael@0: #define NS_FONT_VARIANT_LIGATURES_COMMON (1 << eFeatureLigatures_common) michael@0: #define NS_FONT_VARIANT_LIGATURES_NO_COMMON (1 << eFeatureLigatures_no_common) michael@0: #define NS_FONT_VARIANT_LIGATURES_DISCRETIONARY (1 << eFeatureLigatures_discretionary) michael@0: #define NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY (1 << eFeatureLigatures_no_discretionary) michael@0: #define NS_FONT_VARIANT_LIGATURES_HISTORICAL (1 << eFeatureLigatures_historical) michael@0: #define NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL (1 << eFeatureLigatures_no_historical) michael@0: #define NS_FONT_VARIANT_LIGATURES_CONTEXTUAL (1 << eFeatureLigatures_contextual) michael@0: #define NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL (1 << eFeatureLigatures_no_contextual) michael@0: michael@0: #define NS_FONT_VARIANT_LIGATURES_COMMON_MASK ( \ michael@0: NS_FONT_VARIANT_LIGATURES_COMMON | \ michael@0: NS_FONT_VARIANT_LIGATURES_NO_COMMON ) michael@0: michael@0: #define NS_FONT_VARIANT_LIGATURES_DISCRETIONARY_MASK ( \ michael@0: NS_FONT_VARIANT_LIGATURES_DISCRETIONARY | \ michael@0: NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY ) michael@0: michael@0: #define NS_FONT_VARIANT_LIGATURES_HISTORICAL_MASK ( \ michael@0: NS_FONT_VARIANT_LIGATURES_HISTORICAL | \ michael@0: NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL ) michael@0: michael@0: #define NS_FONT_VARIANT_LIGATURES_CONTEXTUAL_MASK \ michael@0: NS_FONT_VARIANT_LIGATURES_CONTEXTUAL | \ michael@0: NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL michael@0: michael@0: enum { michael@0: eFeatureNumeric_lining, michael@0: eFeatureNumeric_oldstyle, michael@0: eFeatureNumeric_proportional, michael@0: eFeatureNumeric_tabular, michael@0: eFeatureNumeric_diagonal_fractions, michael@0: eFeatureNumeric_stacked_fractions, michael@0: eFeatureNumeric_slashedzero, michael@0: eFeatureNumeric_ordinal, michael@0: michael@0: eFeatureNumeric_numFeatures michael@0: }; michael@0: michael@0: #define NS_FONT_VARIANT_NUMERIC_LINING (1 << eFeatureNumeric_lining) michael@0: #define NS_FONT_VARIANT_NUMERIC_OLDSTYLE (1 << eFeatureNumeric_oldstyle) michael@0: #define NS_FONT_VARIANT_NUMERIC_PROPORTIONAL (1 << eFeatureNumeric_proportional) michael@0: #define NS_FONT_VARIANT_NUMERIC_TABULAR (1 << eFeatureNumeric_tabular) michael@0: #define NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS (1 << eFeatureNumeric_diagonal_fractions) michael@0: #define NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS (1 << eFeatureNumeric_stacked_fractions) michael@0: #define NS_FONT_VARIANT_NUMERIC_SLASHZERO (1 << eFeatureNumeric_slashedzero) michael@0: #define NS_FONT_VARIANT_NUMERIC_ORDINAL (1 << eFeatureNumeric_ordinal) michael@0: michael@0: #define NS_FONT_VARIANT_NUMERIC_FIGURE_MASK \ michael@0: NS_FONT_VARIANT_NUMERIC_LINING | \ michael@0: NS_FONT_VARIANT_NUMERIC_OLDSTYLE michael@0: michael@0: #define NS_FONT_VARIANT_NUMERIC_SPACING_MASK \ michael@0: NS_FONT_VARIANT_NUMERIC_PROPORTIONAL | \ michael@0: NS_FONT_VARIANT_NUMERIC_TABULAR michael@0: michael@0: #define NS_FONT_VARIANT_NUMERIC_FRACTION_MASK \ michael@0: NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS | \ michael@0: NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS michael@0: michael@0: #define NS_FONT_VARIANT_POSITION_NORMAL 0 michael@0: #define NS_FONT_VARIANT_POSITION_SUPER 1 michael@0: #define NS_FONT_VARIANT_POSITION_SUB 2 michael@0: michael@0: #endif