Commit 9a6d7fa9 authored by Mike Reed's avatar Mike Reed Committed by Commit Bot

use SkFontHinting

Bug: skia:2664
Change-Id: I22633705f2f21f95a223a193a1437d2311e5e205
Reviewed-on: https://chromium-review.googlesource.com/c/1318416
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarFlorin Malita <fmalita@chromium.org>
Reviewed-by: default avatarBill Budge <bbudge@chromium.org>
Reviewed-by: default avatarAntoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606832}
parent 41c87263
......@@ -1402,7 +1402,7 @@ sk_sp<SkTextBlob> BuildTextBlob(
SkFont font;
font.setTypeface(typeface);
font.setHinting(SkFont::kNormal_Hinting);
font.setHinting(SkFontHinting::kNormal);
font.setSize(1u);
if (use_lcd_text) {
font.DEPRECATED_setAntiAlias(true);
......
......@@ -25,7 +25,7 @@ PaintFlags::PaintFlags() {
bitfields_.join_type_ = SkPaint::kDefault_Join;
bitfields_.style_ = SkPaint::kFill_Style;
bitfields_.text_encoding_ = SkPaint::kUTF8_TextEncoding;
bitfields_.hinting_ = SkPaint::kNormal_Hinting;
bitfields_.hinting_ = static_cast<unsigned>(SkFontHinting::kNormal);
bitfields_.filter_quality_ = SkFilterQuality::kNone_SkFilterQuality;
static_assert(sizeof(bitfields_) <= sizeof(bitfields_uint_),
......@@ -146,7 +146,7 @@ SkPaint PaintFlags::ToSkPaint() const {
paint.setStrokeJoin(static_cast<SkPaint::Join>(getStrokeJoin()));
paint.setStyle(static_cast<SkPaint::Style>(getStyle()));
paint.setTextEncoding(static_cast<SkPaint::TextEncoding>(getTextEncoding()));
paint.setHinting(static_cast<SkPaint::Hinting>(getHinting()));
paint.setHinting(static_cast<SkFontHinting>(getHinting()));
paint.setFilterQuality(getFilterQuality());
return paint;
}
......
......@@ -11,6 +11,7 @@
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkColorFilter.h"
#include "third_party/skia/include/core/SkDrawLooper.h"
#include "third_party/skia/include/core/SkFontTypes.h"
#include "third_party/skia/include/core/SkImageFilter.h"
#include "third_party/skia/include/core/SkMaskFilter.h"
#include "third_party/skia/include/core/SkPaint.h"
......@@ -75,10 +76,11 @@ class CC_PAINT_EXPORT PaintFlags {
SetInternalFlag(lcd_text, SkPaint::kLCDRenderText_Flag);
}
enum Hinting {
kNo_Hinting = SkPaint::kNo_Hinting,
kSlight_Hinting = SkPaint::kSlight_Hinting,
kNormal_Hinting = SkPaint::kNormal_Hinting, //!< this is the default
kFull_Hinting = SkPaint::kFull_Hinting
kNo_Hinting = static_cast<unsigned>(SkFontHinting::kNone),
kSlight_Hinting = static_cast<unsigned>(SkFontHinting::kSlight),
kNormal_Hinting =
static_cast<unsigned>(SkFontHinting::kNormal), //!< this is the default
kFull_Hinting = static_cast<unsigned>(SkFontHinting::kFull)
};
ALWAYS_INLINE Hinting getHinting() const {
return static_cast<Hinting>(bitfields_.hinting_);
......
......@@ -256,7 +256,7 @@ int32_t PepperFlashRendererHost::OnDrawGlyphs(
paint.setColor(params.color);
paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
paint.setAntiAlias(true);
paint.setHinting(SkPaint::kFull_Hinting);
paint.setHinting(SkFontHinting::kFull);
paint.setTextSize(SkIntToScalar(params.font_desc.size));
paint.setTypeface(std::move(typeface));
if (params.allow_subpixel_aa) {
......
......@@ -10,20 +10,20 @@ namespace content {
namespace {
SkPaint::Hinting RendererPreferencesToSkiaHinting(
SkFontHinting RendererPreferencesToSkiaHinting(
const RendererPreferences& prefs) {
switch (prefs.hinting) {
case gfx::FontRenderParams::HINTING_NONE:
return SkPaint::kNo_Hinting;
return SkFontHinting::kNone;
case gfx::FontRenderParams::HINTING_SLIGHT:
return SkPaint::kSlight_Hinting;
return SkFontHinting::kSlight;
case gfx::FontRenderParams::HINTING_MEDIUM:
return SkPaint::kNormal_Hinting;
return SkFontHinting::kNormal;
case gfx::FontRenderParams::HINTING_FULL:
return SkPaint::kFull_Hinting;
return SkFontHinting::kFull;
default:
NOTREACHED();
return SkPaint::kNormal_Hinting;
return SkFontHinting::kNormal;
}
}
......
......@@ -15,7 +15,7 @@ namespace content {
namespace {
SkPaint::Hinting RendererPreferencesToSkiaHinting(
SkFontHinting RendererPreferencesToSkiaHinting(
const RendererPreferences& prefs) {
if (!prefs.should_antialias_text) {
// When anti-aliasing is off, GTK maps all non-zero hinting settings to
......@@ -23,25 +23,29 @@ SkPaint::Hinting RendererPreferencesToSkiaHinting(
// hinting selected will see readable text in everything expect Chromium.
switch (prefs.hinting) {
case gfx::FontRenderParams::HINTING_NONE:
return SkPaint::kNo_Hinting;
return SkFontHinting::kNone;
case gfx::FontRenderParams::HINTING_SLIGHT:
case gfx::FontRenderParams::HINTING_MEDIUM:
case gfx::FontRenderParams::HINTING_FULL:
return SkPaint::kNormal_Hinting;
return SkFontHinting::kNormal;
default:
NOTREACHED();
return SkPaint::kNormal_Hinting;
return SkFontHinting::kNormal;
}
}
switch (prefs.hinting) {
case gfx::FontRenderParams::HINTING_NONE: return SkPaint::kNo_Hinting;
case gfx::FontRenderParams::HINTING_SLIGHT: return SkPaint::kSlight_Hinting;
case gfx::FontRenderParams::HINTING_MEDIUM: return SkPaint::kNormal_Hinting;
case gfx::FontRenderParams::HINTING_FULL: return SkPaint::kFull_Hinting;
case gfx::FontRenderParams::HINTING_NONE:
return SkFontHinting::kNone;
case gfx::FontRenderParams::HINTING_SLIGHT:
return SkFontHinting::kSlight;
case gfx::FontRenderParams::HINTING_MEDIUM:
return SkFontHinting::kNormal;
case gfx::FontRenderParams::HINTING_FULL:
return SkFontHinting::kFull;
default:
NOTREACHED();
return SkPaint::kNormal_Hinting;
return SkFontHinting::kNormal;
}
}
......
......@@ -139,20 +139,12 @@ SK_API void SkDebugf_FileLine(const char* file, int line, bool fatal,
# define SK_SUPPORT_LEGACY_ANISOTROPIC_MIPMAP_SCALE
#endif
#ifndef SK_SUPPORT_LEGACY_NONCLASS_HINTINGENUM
#define SK_SUPPORT_LEGACY_NONCLASS_HINTINGENUM
#endif
// Remove this after we fixed all the issues related to the new SDF algorithm
// (https://codereview.chromium.org/1643143002)
#ifndef SK_USE_LEGACY_DISTANCE_FIELDS
#define SK_USE_LEGACY_DISTANCE_FIELDS
#endif
#ifndef SK_SUPPORT_LEGACY_NESTED_HINTINGENUM
#define SK_SUPPORT_LEGACY_NESTED_HINTINGENUM
#endif
// Skia is enabling this feature soon. Chrome probably does
// not want it for M64
#ifndef SK_DISABLE_EXPLICIT_GPU_RESOURCE_ALLOCATION
......
......@@ -58,7 +58,7 @@ struct WebFontRenderStyle {
}
BLINK_PLATFORM_EXPORT static void SetSkiaFontManager(sk_sp<SkFontMgr>);
BLINK_PLATFORM_EXPORT static void SetHinting(SkPaint::Hinting);
BLINK_PLATFORM_EXPORT static void SetHinting(SkFontHinting);
BLINK_PLATFORM_EXPORT static void SetAutoHint(bool);
BLINK_PLATFORM_EXPORT static void SetUseBitmaps(bool);
BLINK_PLATFORM_EXPORT static void SetAntiAlias(bool);
......
......@@ -66,9 +66,8 @@ void FontMetrics::AscentDescentWithHacks(
// done. This code should be pushed into FreeType (hinted font metrics).
static const uint32_t kVdmxTag = SkSetFourByteTag('V', 'D', 'M', 'X');
int pixel_size = platform_data.size() + 0.5;
if (!paint.isAutohinted() &&
(paint.getHinting() == SkPaint::kFull_Hinting ||
paint.getHinting() == SkPaint::kNormal_Hinting)) {
if (!paint.isAutohinted() && (paint.getHinting() == SkFontHinting::kFull ||
paint.getHinting() == SkFontHinting::kNormal)) {
size_t vdmx_size = face->getTableSize(kVdmxTag);
if (vdmx_size && vdmx_size < kMaxVDMXTableSize) {
uint8_t* vdmx_table = (uint8_t*)WTF::Partitions::FastMalloc(
......
......@@ -161,7 +161,7 @@ void FontPlatformData::SetupSkPaint(SkPaint* paint,
if (font &&
(font->GetFontDescription().FontSmoothing() == kAntialiased ||
font->GetFontDescription().TextRendering() == kGeometricPrecision))
paint->setHinting(SkPaint::kNo_Hinting);
paint->setHinting(SkFontHinting::kNone);
}
void FontPlatformData::SetupSkFont(SkFont* skfont,
......@@ -213,7 +213,7 @@ void FontPlatformData::SetupSkFont(SkFont* skfont,
if (font &&
(font->GetFontDescription().FontSmoothing() == kAntialiased ||
font->GetFontDescription().TextRendering() == kGeometricPrecision))
skfont->setHinting(SkFont::kNo_Hinting);
skfont->setHinting(SkFontHinting::kNone);
}
FontPlatformData::FontPlatformData(NSFont* ns_font,
......
......@@ -15,7 +15,7 @@ namespace blink {
namespace {
SkPaint::Hinting g_skia_hinting = SkPaint::kNormal_Hinting;
SkFontHinting g_skia_hinting = SkFontHinting::kNormal;
bool g_use_skia_auto_hint = true;
bool g_use_skia_bitmaps = true;
bool g_use_skia_anti_alias = true;
......@@ -29,7 +29,7 @@ void WebFontRenderStyle::SetSkiaFontManager(sk_sp<SkFontMgr> font_mgr) {
}
// static
void WebFontRenderStyle::SetHinting(SkPaint::Hinting hinting) {
void WebFontRenderStyle::SetHinting(SkFontHinting hinting) {
g_skia_hinting = hinting;
}
......@@ -67,8 +67,7 @@ void WebFontRenderStyle::SetSystemFontFamily(const WebString& name) {
WebFontRenderStyle WebFontRenderStyle::GetDefault() {
WebFontRenderStyle result;
result.use_anti_alias = g_use_skia_anti_alias;
result.hint_style = SkPaint::kNo_Hinting;
result.hint_style = g_skia_hinting;
result.hint_style = static_cast<char>(g_skia_hinting);
result.use_bitmaps = g_use_skia_bitmaps;
result.use_auto_hint = g_use_skia_auto_hint;
result.use_anti_alias = g_use_skia_anti_alias;
......@@ -100,7 +99,7 @@ void WebFontRenderStyle::OverrideWith(const WebFontRenderStyle& other) {
void WebFontRenderStyle::ApplyToSkPaint(SkPaint& font,
float device_scale_factor) const {
auto sk_hint_style = static_cast<SkPaint::Hinting>(hint_style);
auto sk_hint_style = static_cast<SkFontHinting>(hint_style);
font.setAntiAlias(use_anti_alias);
font.setHinting(sk_hint_style);
font.setEmbeddedBitmapText(use_bitmaps);
......@@ -112,14 +111,14 @@ void WebFontRenderStyle::ApplyToSkPaint(SkPaint& font,
// low-dpi screen or when running layout tests.
bool force_subpixel_positioning =
!LayoutTestSupport::IsRunningLayoutTest() &&
(sk_hint_style != SkPaint::kFull_Hinting || device_scale_factor > 1.0f);
(sk_hint_style != SkFontHinting::kFull || device_scale_factor > 1.0f);
font.setSubpixelText(force_subpixel_positioning || use_subpixel_positioning);
}
void WebFontRenderStyle::ApplyToSkFont(SkFont* font,
float device_scale_factor) const {
auto sk_hint_style = static_cast<SkFont::Hinting>(hint_style);
auto sk_hint_style = static_cast<SkFontHinting>(hint_style);
font->DEPRECATED_setAntiAlias(use_anti_alias);
font->setHinting(sk_hint_style);
font->setEmbeddedBitmaps(use_bitmaps);
......@@ -131,7 +130,7 @@ void WebFontRenderStyle::ApplyToSkFont(SkFont* font,
// low-dpi screen or when running layout tests.
bool force_subpixel_positioning =
!LayoutTestSupport::IsRunningLayoutTest() &&
(sk_hint_style != SkFont::kFull_Hinting || device_scale_factor > 1.0f);
(sk_hint_style != SkFontHinting::kFull || device_scale_factor > 1.0f);
font->setSubpixel(force_subpixel_positioning || use_subpixel_positioning);
}
......
......@@ -430,15 +430,15 @@ String TextEncodingName(SkPaint::TextEncoding encoding) {
};
}
String HintingName(SkPaint::Hinting hinting) {
String HintingName(SkFontHinting hinting) {
switch (hinting) {
case SkPaint::kNo_Hinting:
case SkFontHinting::kNone:
return "None";
case SkPaint::kSlight_Hinting:
case SkFontHinting::kSlight:
return "Slight";
case SkPaint::kNormal_Hinting:
case SkFontHinting::kNormal:
return "Normal";
case SkPaint::kFull_Hinting:
case SkFontHinting::kFull:
return "Full";
default:
NOTREACHED();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment