Bug 1354876 - Use literal numbers to shift bit for macros of font-variant-{alternates, east-asian, numeric, ligatures}. r?heycam draft
authorHiroyuki Ikezoe <hikezoe@mozilla.com>
Fri, 14 Apr 2017 10:41:21 +0900
changeset 562562 f2830005097ce99c102443dbd744887a34740fe9
parent 562561 52ba40a2c1335cca00d7641e638ca67ee651a404
child 562563 b8bd98a7c808d7b9250d48359b089611dc85d103
push id54047
push userhikezoe@mozilla.com
push dateFri, 14 Apr 2017 02:39:29 +0000
reviewersheycam
bugs1354876
milestone55.0a1
Bug 1354876 - Use literal numbers to shift bit for macros of font-variant-{alternates, east-asian, numeric, ligatures}. r?heycam rust-bindgen does not support this kind of constants macro. MozReview-Commit-ID: DxR65I08N53
gfx/src/nsFont.cpp
gfx/thebes/gfxFontConstants.h
--- a/gfx/src/nsFont.cpp
+++ b/gfx/src/nsFont.cpp
@@ -92,51 +92,51 @@ const gfxFontFeature eastAsianDefaults[]
   { TRUETYPE_TAG('s','m','p','l'), 1 },
   { TRUETYPE_TAG('t','r','a','d'), 1 },
   { TRUETYPE_TAG('f','w','i','d'), 1 },
   { TRUETYPE_TAG('p','w','i','d'), 1 },
   { TRUETYPE_TAG('r','u','b','y'), 1 }
 };
 
 static_assert(MOZ_ARRAY_LENGTH(eastAsianDefaults) ==
-              eFeatureEastAsian_numFeatures,
-              "eFeatureEastAsian_numFeatures should be correct");
+              NS_FONT_VARIANT_EAST_ASIAN_COUNT,
+              "eastAsianDefaults[] should be correct");
 
 // NS_FONT_VARIANT_LIGATURES_xxx values
 const gfxFontFeature ligDefaults[] = {
   { TRUETYPE_TAG('l','i','g','a'), 0 },  // none value means all off
   { TRUETYPE_TAG('l','i','g','a'), 1 },
   { TRUETYPE_TAG('l','i','g','a'), 0 },
   { TRUETYPE_TAG('d','l','i','g'), 1 },
   { TRUETYPE_TAG('d','l','i','g'), 0 },
   { TRUETYPE_TAG('h','l','i','g'), 1 },
   { TRUETYPE_TAG('h','l','i','g'), 0 },
   { TRUETYPE_TAG('c','a','l','t'), 1 },
   { TRUETYPE_TAG('c','a','l','t'), 0 }
 };
 
 static_assert(MOZ_ARRAY_LENGTH(ligDefaults) ==
-              eFeatureLigatures_numFeatures,
-              "eFeatureLigatures_numFeatures should be correct");
+              NS_FONT_VARIANT_LIGATURES_COUNT,
+              "ligDefaults[] should be correct");
 
 // NS_FONT_VARIANT_NUMERIC_xxx values
 const gfxFontFeature numericDefaults[] = {
   { TRUETYPE_TAG('l','n','u','m'), 1 },
   { TRUETYPE_TAG('o','n','u','m'), 1 },
   { TRUETYPE_TAG('p','n','u','m'), 1 },
   { TRUETYPE_TAG('t','n','u','m'), 1 },
   { TRUETYPE_TAG('f','r','a','c'), 1 },
   { TRUETYPE_TAG('a','f','r','c'), 1 },
   { TRUETYPE_TAG('z','e','r','o'), 1 },
   { TRUETYPE_TAG('o','r','d','n'), 1 }
 };
 
 static_assert(MOZ_ARRAY_LENGTH(numericDefaults) ==
-              eFeatureNumeric_numFeatures,
-              "eFeatureNumeric_numFeatures should be correct");
+              NS_FONT_VARIANT_NUMERIC_COUNT,
+              "numericDefaults[] should be correct");
 
 static void
 AddFontFeaturesBitmask(uint32_t aValue, uint32_t aMin, uint32_t aMax,
                       const gfxFontFeature aFeatureDefaults[],
                       nsTArray<gfxFontFeature>& aFeaturesOut)
 
 {
   uint32_t i, m;
--- a/gfx/thebes/gfxFontConstants.h
+++ b/gfx/thebes/gfxFontConstants.h
@@ -42,38 +42,27 @@
 #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)
+#define NS_FONT_VARIANT_ALTERNATES_HISTORICAL        (1 << 0)
 
 // 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_STYLISTIC         (1 << 1)
+#define NS_FONT_VARIANT_ALTERNATES_STYLESET          (1 << 2)
+#define NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT (1 << 3)
+#define NS_FONT_VARIANT_ALTERNATES_SWASH             (1 << 4)
+#define NS_FONT_VARIANT_ALTERNATES_ORNAMENTS         (1 << 5)
+#define NS_FONT_VARIANT_ALTERNATES_ANNOTATION        (1 << 6)
+#define NS_FONT_VARIANT_ALTERNATES_COUNT              7
 
 #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 | \
@@ -84,75 +73,49 @@ enum {
 #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_JIS78       (1 << 0)
+#define NS_FONT_VARIANT_EAST_ASIAN_JIS83       (1 << 1)
+#define NS_FONT_VARIANT_EAST_ASIAN_JIS90       (1 << 2)
+#define NS_FONT_VARIANT_EAST_ASIAN_JIS04       (1 << 3)
+#define NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED  (1 << 4)
+#define NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL (1 << 5)
+#define NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH  (1 << 6)
+#define NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH  (1 << 7)
+#define NS_FONT_VARIANT_EAST_ASIAN_RUBY        (1 << 8)
+#define NS_FONT_VARIANT_EAST_ASIAN_COUNT        9
 
 #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_NONE             (1 << 0)
+#define NS_FONT_VARIANT_LIGATURES_COMMON           (1 << 1)
+#define NS_FONT_VARIANT_LIGATURES_NO_COMMON        (1 << 2)
+#define NS_FONT_VARIANT_LIGATURES_DISCRETIONARY    (1 << 3)
+#define NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY (1 << 4)
+#define NS_FONT_VARIANT_LIGATURES_HISTORICAL       (1 << 5)
+#define NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL    (1 << 6)
+#define NS_FONT_VARIANT_LIGATURES_CONTEXTUAL       (1 << 7)
+#define NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL    (1 << 8)
+#define NS_FONT_VARIANT_LIGATURES_COUNT             9
 
 #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 )
@@ -160,37 +123,25 @@ enum {
 #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_LINING             (1 << 0)
+#define NS_FONT_VARIANT_NUMERIC_OLDSTYLE           (1 << 1)
+#define NS_FONT_VARIANT_NUMERIC_PROPORTIONAL       (1 << 2)
+#define NS_FONT_VARIANT_NUMERIC_TABULAR            (1 << 3)
+#define NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS (1 << 4)
+#define NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS  (1 << 5)
+#define NS_FONT_VARIANT_NUMERIC_SLASHZERO          (1 << 6)
+#define NS_FONT_VARIANT_NUMERIC_ORDINAL            (1 << 7)
+#define NS_FONT_VARIANT_NUMERIC_COUNT               8
 
 #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