| Index: third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzFace.cpp
|
| diff --git a/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzFace.cpp b/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzFace.cpp
|
| index 75436bf827530f4f2eaa52e67cd31f59f773d90b..a3bb692c2a59b58df893d0ebd92b6b251f1391d1 100644
|
| --- a/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzFace.cpp
|
| +++ b/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzFace.cpp
|
| @@ -380,6 +380,21 @@ PassRefPtr<HbFontCacheEntry> createHbFontCacheEntry(hb_face_t* face) {
|
| return cacheEntry;
|
| }
|
|
|
| +// TODO: crbug.com/696570 Remove this conditional
|
| +// once HarfBuzz on CrOS is updated.
|
| +#if HB_VERSION_ATLEAST(1, 4, 2)
|
| +static_assert(
|
| + std::is_same<decltype(SkFontArguments::VariationPosition::Coordinate::axis),
|
| + decltype(hb_variation_t::tag)>::value &&
|
| + std::is_same<
|
| + decltype(SkFontArguments::VariationPosition::Coordinate::value),
|
| + decltype(hb_variation_t::value)>::value &&
|
| + sizeof(SkFontArguments::VariationPosition::Coordinate) ==
|
| + sizeof(hb_variation_t),
|
| + "Skia and HarfBuzz Variation parameter types must match in structure and "
|
| + "size.");
|
| +#endif
|
| +
|
| hb_font_t* HarfBuzzFace::getScaledFont(
|
| PassRefPtr<UnicodeRangeSet> rangeSet) const {
|
| m_platformData->setupPaint(&m_harfBuzzFontData->m_paint);
|
| @@ -399,14 +414,12 @@ hb_font_t* HarfBuzzFace::getScaledFont(
|
| if (axisCount > 0) {
|
| Vector<SkFontArguments::VariationPosition::Coordinate> axisValues;
|
| axisValues.resize(axisCount);
|
| - typeface->getVariationDesignPosition(axisValues.data(), axisValues.size());
|
| - Vector<float> axisValuesFloat;
|
| - axisValuesFloat.resize(axisCount);
|
| - for (size_t i = 0; i < axisValues.size(); i++) {
|
| - axisValuesFloat[i] = axisValues[i].value;
|
| + if (typeface->getVariationDesignPosition(axisValues.data(),
|
| + axisValues.size()) > 0) {
|
| + hb_font_set_variations(
|
| + m_unscaledFont, reinterpret_cast<hb_variation_t*>(axisValues.data()),
|
| + axisValues.size());
|
| }
|
| - hb_font_set_var_coords_design(m_unscaledFont, axisValuesFloat.data(),
|
| - axisValuesFloat.size());
|
| }
|
| #endif
|
|
|
|
|