Index: third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
diff --git a/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaper.cpp b/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
index d13dd370db55c76c8bc431ec55280846e22229c7..fcd7bde807787bff6c25fb029807a2ec8eb5920f 100644 |
--- a/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
+++ b/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
@@ -205,6 +205,38 @@ void HarfBuzzShaper::setFontFeatures() |
break; |
} |
+ // font-variant-numeric: |
+ static hb_feature_t lnum = createFeature('l', 'n', 'u', 'm', 1); |
+ if (description.variantNumeric().numericFigureValue() == FontVariantNumeric::LiningNums) |
+ m_features.append(lnum); |
+ |
+ static hb_feature_t onum = createFeature('o', 'n', 'u', 'm', 1); |
+ if (description.variantNumeric().numericFigureValue() == FontVariantNumeric::OldstyleNums) |
+ m_features.append(onum); |
+ |
+ static hb_feature_t pnum = createFeature('p', 'n', 'u', 'm', 1); |
+ if (description.variantNumeric().numericSpacingValue() == FontVariantNumeric::ProportionalNums) |
+ m_features.append(pnum); |
+ static hb_feature_t tnum = createFeature('t', 'n', 'u', 'm', 1); |
+ if (description.variantNumeric().numericSpacingValue() == FontVariantNumeric::TabularNums) |
+ m_features.append(tnum); |
+ |
+ static hb_feature_t afrc = createFeature('a', 'f', 'r', 'c', 1); |
+ if (description.variantNumeric().numericFractionValue() == FontVariantNumeric::StackedFractions) |
+ m_features.append(afrc); |
+ static hb_feature_t frac = createFeature('f', 'r', 'a', 'c', 1); |
+ if (description.variantNumeric().numericFractionValue() == FontVariantNumeric::DiagonalFractions) |
+ m_features.append(frac); |
+ |
+ static hb_feature_t ordn = createFeature('o', 'r', 'd', 'n', 1); |
+ if (description.variantNumeric().ordinalValue() == FontVariantNumeric::OrdinalOn) |
+ m_features.append(ordn); |
+ |
+ static hb_feature_t zero = createFeature('z', 'e', 'r', 'o', 1); |
+ if (description.variantNumeric().slashedZeroValue() == FontVariantNumeric::SlashedZeroOn) |
+ m_features.append(zero); |
+ |
+ |
FontFeatureSettings* settings = description.featureSettings(); |
if (!settings) |
return; |