diff options
| author | 2017-11-10 03:23:25 +0000 | |
|---|---|---|
| committer | 2017-11-10 03:23:25 +0000 | |
| commit | 5e22f57bc80e8447ce5a8cd8fe2ea9dce2ef8dba (patch) | |
| tree | 38a8511a249fc050f074458d77721318f330a2f2 /libs | |
| parent | bb1c884939829242ac244596db2febbb0f08d56e (diff) | |
| parent | c0a35e7b0ecbd35c9c39205fec6ef2555e86db8b (diff) | |
Merge "Store FontCollection in MinikinPaint"
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/hwui/hwui/MinikinUtils.cpp | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/libs/hwui/hwui/MinikinUtils.cpp b/libs/hwui/hwui/MinikinUtils.cpp index 90fe0b74dcec..2a1a1f3e4cf0 100644 --- a/libs/hwui/hwui/MinikinUtils.cpp +++ b/libs/hwui/hwui/MinikinUtils.cpp @@ -30,46 +30,43 @@ minikin::MinikinPaint MinikinUtils::prepareMinikinPaint(const Paint* paint, const Typeface* typeface) { const Typeface* resolvedFace = Typeface::resolveDefault(typeface); minikin::FontStyle resolved = resolvedFace->fStyle; - const minikin::FontVariant minikinVariant = (paint->getFontVariant() == minikin::FontVariant::ELEGANT) ? minikin::FontVariant::ELEGANT : minikin::FontVariant::COMPACT; - - minikin::MinikinPaint minikinPaint; - /* Prepare minikin Paint */ - minikinPaint.size = - paint->isLinearText() ? paint->getTextSize() : static_cast<int>(paint->getTextSize()); - minikinPaint.scaleX = paint->getTextScaleX(); - minikinPaint.skewX = paint->getTextSkewX(); - minikinPaint.letterSpacing = paint->getLetterSpacing(); - minikinPaint.wordSpacing = paint->getWordSpacing(); - minikinPaint.paintFlags = MinikinFontSkia::packPaintFlags(paint); - minikinPaint.localeListId = paint->getMinikinLocaleListId(); - minikinPaint.fontStyle = minikin::FontStyle(minikinVariant, resolved.weight, resolved.slant); - minikinPaint.fontFeatureSettings = paint->getFontFeatureSettings(); - minikinPaint.hyphenEdit = minikin::HyphenEdit(paint->getHyphenEdit()); - return minikinPaint; + float textSize = paint->getTextSize(); + if (!paint->isLinearText()) { + // If linear text is not specified, truncate the value. + textSize = trunc(textSize); + } + return minikin::MinikinPaint( + textSize, + paint->getTextScaleX(), + paint->getTextSkewX(), + paint->getLetterSpacing(), + paint->getWordSpacing(), + MinikinFontSkia::packPaintFlags(paint), + paint->getMinikinLocaleListId(), + minikin::FontStyle(minikinVariant, resolved.weight, resolved.slant), + minikin::HyphenEdit(paint->getHyphenEdit()), + paint->getFontFeatureSettings(), + resolvedFace->fFontCollection); } minikin::Layout MinikinUtils::doLayout(const Paint* paint, minikin::Bidi bidiFlags, const Typeface* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize) { - minikin::MinikinPaint minikinPaint = prepareMinikinPaint(paint, typeface); minikin::Layout layout; - layout.doLayout(buf, start, count, bufSize, bidiFlags, minikinPaint, - Typeface::resolveDefault(typeface)->fFontCollection); + layout.doLayout(buf, start, count, bufSize, bidiFlags, prepareMinikinPaint(paint, typeface)); return layout; } float MinikinUtils::measureText(const Paint* paint, minikin::Bidi bidiFlags, const Typeface* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize, float* advances) { - minikin::MinikinPaint minikinPaint = prepareMinikinPaint(paint, typeface); - const Typeface* resolvedTypeface = Typeface::resolveDefault(typeface); - return minikin::Layout::measureText(buf, start, count, bufSize, bidiFlags, minikinPaint, - resolvedTypeface->fFontCollection, advances, - nullptr /* extent */, nullptr /* overhangs */); + return minikin::Layout::measureText( + buf, start, count, bufSize, bidiFlags, prepareMinikinPaint(paint, typeface), advances, + nullptr /* extent */, nullptr /* overhangs */); } bool MinikinUtils::hasVariationSelector(const Typeface* typeface, uint32_t codepoint, uint32_t vs) { |