Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 285ec31b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add FontFakery argument to minikin callbacks"

parents 48cfe03c 30bc95d7
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -31,22 +31,23 @@ MinikinFontSkia::MinikinFontSkia(sk_sp<SkTypeface> typeface, const void* fontDat
}

static void MinikinFontSkia_SetSkiaPaint(const minikin::MinikinFont* font, SkPaint* skPaint,
        const minikin::MinikinPaint& paint) {
        const minikin::MinikinPaint& paint, const minikin::FontFakery& fakery) {
    skPaint->setTextEncoding(SkPaint::kGlyphID_TextEncoding);
    skPaint->setTextSize(paint.size);
    skPaint->setTextScaleX(paint.scaleX);
    skPaint->setTextSkewX(paint.skewX);
    MinikinFontSkia::unpackPaintFlags(skPaint, paint.paintFlags);
    // Apply font fakery on top of user-supplied flags.
    MinikinFontSkia::populateSkPaint(skPaint, font, paint.fakery);
    MinikinFontSkia::populateSkPaint(skPaint, font, fakery);
}

float MinikinFontSkia::GetHorizontalAdvance(uint32_t glyph_id,
        const minikin::MinikinPaint &paint) const {
        const minikin::MinikinPaint &paint,
        const minikin::FontFakery& fakery) const {
    SkPaint skPaint;
    uint16_t glyph16 = glyph_id;
    SkScalar skWidth;
    MinikinFontSkia_SetSkiaPaint(this, &skPaint, paint);
    MinikinFontSkia_SetSkiaPaint(this, &skPaint, paint, fakery);
    skPaint.getTextWidths(&glyph16, sizeof(glyph16), &skWidth, NULL);
#ifdef VERBOSE
    ALOGD("width for typeface %d glyph %d = %f", mTypeface->uniqueID(), glyph_id, skWidth);
@@ -55,11 +56,12 @@ float MinikinFontSkia::GetHorizontalAdvance(uint32_t glyph_id,
}

void MinikinFontSkia::GetBounds(minikin::MinikinRect* bounds, uint32_t glyph_id,
        const minikin::MinikinPaint& paint) const {
        const minikin::MinikinPaint& paint,
        const minikin::FontFakery& fakery) const {
    SkPaint skPaint;
    uint16_t glyph16 = glyph_id;
    SkRect skBounds;
    MinikinFontSkia_SetSkiaPaint(this, &skPaint, paint);
    MinikinFontSkia_SetSkiaPaint(this, &skPaint, paint, fakery);
    skPaint.getTextWidths(&glyph16, sizeof(glyph16), NULL, &skBounds);
    bounds->mLeft = skBounds.fLeft;
    bounds->mTop = skBounds.fTop;
@@ -68,9 +70,10 @@ void MinikinFontSkia::GetBounds(minikin::MinikinRect* bounds, uint32_t glyph_id,
}

void MinikinFontSkia::GetFontExtent(minikin::MinikinExtent* extent,
        const minikin::MinikinPaint& paint) const {
        const minikin::MinikinPaint& paint,
        const minikin::FontFakery& fakery) const {
    SkPaint skPaint;
    MinikinFontSkia_SetSkiaPaint(this, &skPaint, paint);
    MinikinFontSkia_SetSkiaPaint(this, &skPaint, paint, fakery);
    SkPaint::FontMetrics metrics;
    skPaint.getFontMetrics(&metrics);
    extent->ascent = metrics.fAscent;
+6 −3
Original line number Diff line number Diff line
@@ -32,13 +32,16 @@ public:
        int ttcIndex, const std::vector<minikin::FontVariation>& axes);

    float GetHorizontalAdvance(uint32_t glyph_id,
        const minikin::MinikinPaint &paint) const;
        const minikin::MinikinPaint& paint,
        const minikin::FontFakery& fakery) const override;

    void GetBounds(minikin::MinikinRect* bounds, uint32_t glyph_id,
        const minikin::MinikinPaint &paint) const;
        const minikin::MinikinPaint& paint,
        const minikin::FontFakery& fakery) const override;

    void GetFontExtent(minikin::MinikinExtent* extent,
        const minikin::MinikinPaint &paint) const;
        const minikin::MinikinPaint& paint,
        const minikin::FontFakery& fakery) const override;

    SkTypeface* GetSkTypeface() const;
    sk_sp<SkTypeface> RefSkTypeface() const;