| Index: Source/platform/fonts/skia/FontCustomPlatformDataSkia.cpp
|
| diff --git a/Source/platform/fonts/skia/FontCustomPlatformDataSkia.cpp b/Source/platform/fonts/skia/FontCustomPlatformDataSkia.cpp
|
| index b175fc0885265e3a3a8735565e1cdc75bf28a60e..ecf42ef0664ed88c7ffd2acb51f92f9dfa5d5056 100644
|
| --- a/Source/platform/fonts/skia/FontCustomPlatformDataSkia.cpp
|
| +++ b/Source/platform/fonts/skia/FontCustomPlatformDataSkia.cpp
|
| @@ -56,6 +56,29 @@ FontCustomPlatformData::~FontCustomPlatformData()
|
| FontPlatformData FontCustomPlatformData::fontPlatformData(float size, bool bold, bool italic, FontOrientation orientation, FontWidthVariant)
|
| {
|
| ASSERT(m_typeface);
|
| +#if OS(WIN)
|
| + // FIXME: Skia currently renders synthetic bold and italics with hinting and without
|
| + // linear metrics on windows. Using CreateFromName and specifying the bold/italics
|
| + // style allows for proper rendering of synthetic style. Once Skia has been updated
|
| + // this workaround will no longer be needed. crbug.com/332958
|
| + bool syntheticBold = bold && !m_typeface->isBold();
|
| + bool syntheticItalic = italic && !m_typeface->isItalic();
|
| + if (syntheticBold || syntheticItalic) {
|
| + SkString name;
|
| + m_typeface->getFamilyName(&name);
|
| +
|
| + int style = SkTypeface::kNormal;
|
| + if (syntheticBold)
|
| + style |= SkTypeface::kBold;
|
| + if (syntheticItalic)
|
| + style |= SkTypeface::kItalic;
|
| +
|
| + RefPtr<SkTypeface> typeface = adoptRef(SkTypeface::CreateFromName(name.c_str(), static_cast<SkTypeface::Style>(style)));
|
| + syntheticBold = false;
|
| + syntheticItalic = false;
|
| + return FontPlatformData(typeface.release(), "", size, syntheticBold, syntheticItalic, orientation);
|
| + }
|
| +#endif
|
| return FontPlatformData(m_typeface.get(), "", size, bold && !m_typeface->isBold(), italic && !m_typeface->isItalic(), orientation);
|
| }
|
|
|
|
|