Merge "use appropriate fallback chain for style" into jb-mr2-dev

This commit is contained in:
Victoria Lease
2013-04-17 16:23:37 +00:00
committed by Android (Google) Code Review
2 changed files with 9 additions and 28 deletions

View File

@@ -339,23 +339,11 @@ uint32_t TextLayoutValue::getElapsedTime() {
}
TextLayoutShaper::TextLayoutShaper() {
init();
mBuffer = hb_buffer_create();
}
void TextLayoutShaper::init() {
mDefaultTypeface = SkFontHost::CreateTypeface(NULL, NULL, SkTypeface::kNormal);
}
void TextLayoutShaper::unrefTypefaces() {
SkSafeUnref(mDefaultTypeface);
}
TextLayoutShaper::~TextLayoutShaper() {
hb_buffer_destroy(mBuffer);
unrefTypefaces();
}
void TextLayoutShaper::computeValues(TextLayoutValue* value, const SkPaint* paint, const UChar* chars,
@@ -839,23 +827,27 @@ size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint) {
}
if (baseGlyphCount != 0) {
SkTypeface::Style style = SkTypeface::kNormal;
if (typeface != NULL) {
style = typeface->style();
}
typeface = typefaceForScript(paint, typeface, hb_buffer_get_script(mBuffer));
if (!typeface) {
baseGlyphCount = 0;
typeface = mDefaultTypeface;
SkSafeRef(typeface);
typeface = SkFontHost::CreateTypeface(NULL, NULL, style);
#if DEBUG_GLYPHS
ALOGD("Using Default Typeface");
#endif
}
} else {
if (!typeface) {
typeface = mDefaultTypeface;
typeface = SkFontHost::CreateTypeface(NULL, NULL, SkTypeface::kNormal);
#if DEBUG_GLYPHS
ALOGD("Using Default Typeface");
ALOGD("Using Default Typeface (normal style)");
#endif
} else {
SkSafeRef(typeface);
}
SkSafeRef(typeface);
}
mShapingPaint.setTypeface(typeface);
@@ -899,8 +891,6 @@ void TextLayoutShaper::purgeCaches() {
hb_face_destroy(mCachedHBFaces.valueAt(i));
}
mCachedHBFaces.clear();
unrefTypefaces();
init();
}
TextLayoutEngine::TextLayoutEngine() {

View File

@@ -196,19 +196,11 @@ private:
*/
SkPaint mShapingPaint;
/**
* Skia default typeface to be returned if we cannot resolve script
*/
SkTypeface* mDefaultTypeface;
/**
* Cache of Harfbuzz faces
*/
KeyedVector<SkFontID, hb_face_t*> mCachedHBFaces;
void init();
void unrefTypefaces();
SkTypeface* typefaceForScript(const SkPaint* paint, SkTypeface* typeface,
hb_script_t script);
@@ -228,7 +220,6 @@ private:
hb_face_t* referenceCachedHBFace(SkTypeface* typeface);
bool isComplexScript(hb_script_t script);
}; // TextLayoutShaper
/**