27#include <initializer_list>
72 SkFont font(sample.typeface);
75 const char*
text = sample.sampleText;
78 for (
SkScalar textSize : { 70, 150 }) {
79 font.setSize(textSize);
80 font.getMetrics(&metrics);
82 font.setSubpixel(
true);
87 for (
bool fakeBold : {
false,
true }) {
88 font.setEmbolden(fakeBold);
93 x,
y, font, textPaint);
96 canvas->
drawRect(bounds, boundsPaint);
98 canvas->
drawRect(advanceRect, advancePaint);
100 x += bounds.width() * 1.2;
109 using INHERITED =
GM;
114DEF_GM(
return new ScaledEmojiRenderingGM;)
constexpr SkColor SK_ColorCYAN
constexpr SkColor SK_ColorGRAY
constexpr SkColor SK_ColorRED
constexpr SkColor SK_ColorGREEN
constexpr SkEnumerate< Iter > SkMakeEnumerate(C &c)
@ kUTF8
uses bytes to represent UTF-8 or ASCII
void drawRect(const SkRect &rect, const SkPaint &paint)
void drawSimpleText(const void *text, size_t byteLength, SkTextEncoding encoding, SkScalar x, SkScalar y, const SkFont &font, const SkPaint &paint)
void drawColor(SkColor color, SkBlendMode mode=SkBlendMode::kSrcOver)
@ kAlias
no transparent pixels on glyph edges
void setStyle(Style style)
void setColor(SkColor color)
@ kStroke_Style
set to stroke geometry
void setStrokeWidth(SkScalar width)
void onDraw(SkCanvas *canvas) override
SkString getName() const override
ToolUtils::EmojiTestSample fontSamples[std::size(formatsToTest)]
static constexpr ToolUtils::EmojiFontFormat formatsToTest[]
SkISize getISize() override
void onOnceBeforeDraw() override
uint32_t uint32_t * format
SkScalar fLeading
distance to add between lines, typically positive or zero
SkScalar fAscent
distance to reserve above baseline, typically negative
SkScalar fDescent
distance to reserve below baseline, typically positive
static constexpr SkISize Make(int32_t w, int32_t h)
static constexpr SkRect MakeLTRB(float l, float t, float r, float b)