Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(394)

Side by Side Diff: site/dev/testing/fonts.md

Issue 954523004: Add testing section of docs (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: remove content, update build description Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « site/dev/testing/buildbot.md ('k') | site/dev/testing/index.md » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 Fonts and GM Tests
2 ==================
3
4 Overview
5 --------
6
7 Each test in the gm directory draws a reference image. Their primary purpose is
8 to detect when images change unexpectedly, indicating that a rendering bug has
9 been introduced.
10
11 The gm tests have a secondary purpose: they detect when rendering is different
12 across platforms and configurations.
13
14 The dm \(Diamond Master\) tool supports flags that minimize or eliminate the
15 differences introduced by the font scaler native to each platform.
16
17
18 Portable fonts
19 --------------
20
21 The most portable font format uses Skia to draw characters directly from paths,
22 and contains a idealized set of font metrics. This does not exercise platform
23 specific fonts at all, but does support specifying the font name, font size,
24 font style, and attributes like fakeBold. The paths are generated on a reference
25 platform \(currently a Mac\) and are stored as data in
26 'tools/test_font_data.cpp' .
27
28 To use portable fonts, pass '\-\-portableFonts' to dm.
29
30
31 Resource fonts
32 --------------
33
34 The '\-\-resourceFonts' flag directs dm to use font files present in the resourc es
35 directory. By using the same font set on all buildbots, the generated gm images
36 become more uniform across platforms.
37
38 Today, the set of fonts used by gm, and present in my resources directory,
39 include:
40
41 * Courier New Bold Italic.ttf
42 * Courier New Bold.ttf
43 * Courier New Italic.ttf
44 * Courier New.ttf
45 * LiberationSans-Bold.ttf
46 * LiberationSans-BoldItalic.ttf
47 * LiberationSans-Italic.ttf
48 * LiberationSans-Regular.ttf
49 * Papyrus.ttc
50 * Pro W4.otf
51 * Times New Roman Bold Italic.ttf
52 * Times New Roman Bold.ttf
53 * Times New Roman Italic.ttf
54 * Times New Roman.ttf
55
56
57 System fonts
58 ------------
59
60 If neither '\-\-portableFonts' nor '\-\-resourceFonts' is specified, dm uses the fonts
61 present on the system. Also, if '\-\-portableFonts' or '\-\-resourceFonts' is sp ecified
62 and the desired font is not available, the native font lookup algorithm is
63 invoked.
64
65
66 GM font selection
67 -----------------
68
69 Each gm specifies the typeface to use when drawing text. For now, to set the
70 portable typeface on the paint, call:
71
72 ~~~~
73 sk_tool_utils::set_portable_typeface(SkPaint* , const char* name = NULL,
74 SkTypeface::Style style = SkTypeface::kNormal );
75 ~~~~
76
77 To create a portable typeface, use:
78
79 ~~~~
80 SkTypeface* typeface = sk_tool_utils::create_portable_typeface(const char* name,
81 SkTypeface::Style style);
82 ~~~~
83
84 Eventually, both 'set_portable_typeface()' and 'create_portable_typeface()' will be
85 removed. Instead, a test-wide 'SkFontMgr' will be selected to choose portable
86 fonts or resource fonts.
87
88
89 Adding new fonts and glyphs to a GM
90 -----------------------------------
91
92 If a font is missing from the portable data or the resource directory, the
93 system font is used instead. If a glyph is missing from the portable data, the
94 first character, usually a space, is drawn instead.
95
96 Running dm with '\-\-portableFonts' and '\-\-reportUsedChars' generates
97 'tools/test_font_data_chars.cpp', which describes the fonts and characters used by
98 all gm tests. Subsequently running the 'create_test_font' tool generates new pat hs
99 and writes them into 'tools/test_font_data.cpp' .
100
101
102 Future work
103 -----------
104
105 The font set used by gm tests today is arbitrary and not intended to be
106 cross-platform. By choosing fonts without licensing issues, all bots can freely
107 contain the same fonts. By narrowing the font selection, the size of the test
108 font data will be more manageable.
109
110 Adding support for selecting from multiple font managers at runtime permits
111 removing manual typeface selection in the gm tests. Today, options to dm like
112 '\-\-pipe' fail with '\-\-portableFonts' because we're hard-coded to using the d efault
113 font manage when pictures are serialized.
114
115 Some gm tests explicitly always want to use system fonts and system metrics;
116 other gm tests use text only to label the drawing; yet other gm tests use text
117 to generate paths for testing. Additional discrimination is needed to
118 distinguish these cases.
OLDNEW
« no previous file with comments | « site/dev/testing/buildbot.md ('k') | site/dev/testing/index.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698