diff options
Diffstat (limited to 'src/ports')
-rw-r--r-- | src/ports/SkFontHost_FreeType.cpp | 8 | ||||
-rwxr-xr-x | src/ports/SkFontHost_mac.cpp | 16 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/ports/SkFontHost_FreeType.cpp b/src/ports/SkFontHost_FreeType.cpp index fa10362d4e..b350202d6b 100644 --- a/src/ports/SkFontHost_FreeType.cpp +++ b/src/ports/SkFontHost_FreeType.cpp @@ -262,6 +262,14 @@ static void unref_ft_face(FT_Face face) { /////////////////////////////////////////////////////////////////////////// +void SkFontHost::FilterRec(SkScalerContext::Rec* rec) { + // collapse full->normaling hinting if we're not doing LCD + SkPaint::Hinting h = rec->getHinting(); + if (SkPaint::kFull_Hinting == h && !rec->isLCD()) { + rec->setHinting(SkPaint::kNormal_Hinting); + } +} + SkScalerContext_FreeType::SkScalerContext_FreeType(const SkDescriptor* desc) : SkScalerContext(desc) { SkAutoMutexAcquire ac(gFTMutex); diff --git a/src/ports/SkFontHost_mac.cpp b/src/ports/SkFontHost_mac.cpp index c807be74b9..aac0034083 100755 --- a/src/ports/SkFontHost_mac.cpp +++ b/src/ports/SkFontHost_mac.cpp @@ -106,6 +106,22 @@ private: static OSStatus Close(void *cb); }; +void SkFontHost::FilterRec(SkScalerContext::Rec* rec) { + // we only support 2 levels of hinting + SkPaint::Hinting h = rec->getHinting(); + if (SkPaint::kSlight_Hinting == h) { + h = SkPaint::kNo_Hinting; + } else if (SkPaint::kFull_Hinting == h) { + h = SkPaint::kNormal_Hinting; + } + rec->setHinting(h); + + // we don't support LCD text + if (SkMask::FormatIsLCD((SkMask::Format)rec->fMaskFormat)) { + rec->fMaskFormat = SkMask::kA8_Format; + } +} + SkScalerContext_Mac::SkScalerContext_Mac(const SkDescriptor* desc) : SkScalerContext(desc), fLayout(0), fStyle(0) { |