aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/typeface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gm/typeface.cpp')
-rw-r--r--gm/typeface.cpp66
1 files changed, 38 insertions, 28 deletions
diff --git a/gm/typeface.cpp b/gm/typeface.cpp
index 8303b37358..4ed3956986 100644
--- a/gm/typeface.cpp
+++ b/gm/typeface.cpp
@@ -154,25 +154,13 @@ private:
typedef skiagm::GM INHERITED;
};
-class TypefaceRenderingGM : public skiagm::GM {
- sk_sp<SkTypeface> fFace;
-
-protected:
- void onOnceBeforeDraw() override {
- fFace = MakeResourceAsTypeface("/fonts/hintgasp.ttf");
- }
-
- SkString onShortName() override {
- SkString name("typefacerendering");
- name.append(sk_tool_utils::major_platform_os_name());
- return name;
- }
+DEF_GM( return new TypefaceStylesGM(false); )
+DEF_GM( return new TypefaceStylesGM(true); )
- SkISize onISize() override {
- return SkISize::Make(640, 680);
- }
+////////////////////////////////////////////////////////////////////////////////
- void onDraw(SkCanvas* canvas) override {
+static void draw_typeface_rendering_gm(SkCanvas* canvas, sk_sp<SkTypeface> face,
+ char character = 'A') {
struct AliasType {
bool antiAlias;
bool subpixelAntitalias;
@@ -226,7 +214,7 @@ protected:
constexpr bool rotateABitTypes[] = { false, true };
SkPaint paint;
- paint.setTypeface(fFace);
+ paint.setTypeface(face);
paint.setEmbeddedBitmapText(true);
SkScalar x = 0;
@@ -260,10 +248,12 @@ protected:
canvas->rotate(2, x + subpixel.offset.x(),
y + subpixel.offset.y());
}
- canvas->drawText("A", 1, x + subpixel.offset.x(),
- y + subpixel.offset.y(), paint);
+ canvas->drawText(&character, 1,
+ x + subpixel.offset.x(),
+ y + subpixel.offset.y(), paint);
- SkScalar dx = SkScalarCeilToScalar(paint.measureText("A", 1)) + 5;
+ SkScalar dx = SkScalarCeilToScalar(
+ paint.measureText(&character, 1)) + 5;
x += dx;
xMax = SkTMax(x, xMax);
}
@@ -273,14 +263,34 @@ protected:
}
xBase = xMax;
}
+}
+
+DEF_SIMPLE_GM_BG_NAME(typefacerendering, canvas, 640, 680, SK_ColorWHITE,
+ SkStringPrintf("typefacerendering%s",
+ sk_tool_utils::major_platform_os_name().c_str())) {
+ if (sk_sp<SkTypeface> face = MakeResourceAsTypeface("/fonts/hintgasp.ttf")) {
+ draw_typeface_rendering_gm(canvas, std::move(face));
}
+}
-private:
- typedef skiagm::GM INHERITED;
-};
+// Type1 fonts don't currently work in Skia on Windows.
+#ifndef SK_BUILD_FOR_WIN
+
+DEF_SIMPLE_GM_BG_NAME(typefacerendering_pfa, canvas, 640, 680, SK_ColorWHITE,
+ SkStringPrintf("typefacerendering_pfa%s",
+ sk_tool_utils::major_platform_os_name().c_str())) {
+ if (sk_sp<SkTypeface> face = MakeResourceAsTypeface("fonts/Roboto2-Regular.pfa")) {
+ // This subsetted typeface doesn't have the character 'A'.
+ draw_typeface_rendering_gm(canvas, std::move(face), 'O');
+ }
+}
-///////////////////////////////////////////////////////////////////////////////
+DEF_SIMPLE_GM_BG_NAME(typefacerendering_pfb, canvas, 640, 680, SK_ColorWHITE,
+ SkStringPrintf("typefacerendering_pfb%s",
+ sk_tool_utils::major_platform_os_name().c_str())) {
+ if (sk_sp<SkTypeface> face = MakeResourceAsTypeface("fonts/Roboto2-Regular.pfb")) {
+ draw_typeface_rendering_gm(canvas, std::move(face), 'O');
+ }
+}
-DEF_GM( return new TypefaceStylesGM(false); )
-DEF_GM( return new TypefaceStylesGM(true); )
-DEF_GM( return new TypefaceRenderingGM(); )
+#endif