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

Commit 30bc95d7 authored by Seigo Nonaka's avatar Seigo Nonaka
Browse files

Add FontFakery argument to minikin callbacks

Bug: 65024629
Test: N/A
Change-Id: I46e2c85f04a28a1d48f7f5869112b7277f86bc85
parent a8162738
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;