xref: /aosp_15_r20/external/harfbuzz_ng/docs/subset-preprocessing.md (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1*2d1272b8SAndroid Build Coastguard Worker# Introduction
2*2d1272b8SAndroid Build Coastguard Worker
3*2d1272b8SAndroid Build Coastguard WorkerSubset preprocessing is a mechanism which can significantly speed up font subsetting operations.
4*2d1272b8SAndroid Build Coastguard WorkerIt works by prepopulating datastructures from the source font which can be used in later subsetting
5*2d1272b8SAndroid Build Coastguard Workeroperations to more quickly produce the subset. Preprocessing is useful in cases where multiple subsets
6*2d1272b8SAndroid Build Coastguard Workerwill be cut from the same source font.
7*2d1272b8SAndroid Build Coastguard Worker
8*2d1272b8SAndroid Build Coastguard Worker# Usage
9*2d1272b8SAndroid Build Coastguard Worker
10*2d1272b8SAndroid Build Coastguard Worker```c++
11*2d1272b8SAndroid Build Coastguard Workerhb_face_t* preprocessed = hb_subset_preprocess (source_face);
12*2d1272b8SAndroid Build Coastguard Worker
13*2d1272b8SAndroid Build Coastguard Worker...
14*2d1272b8SAndroid Build Coastguard Worker
15*2d1272b8SAndroid Build Coastguard Workerhb_face_t* subset = hb_subset_or_fail (preprocessed, subset_input);
16*2d1272b8SAndroid Build Coastguard Worker```
17*2d1272b8SAndroid Build Coastguard Worker
18*2d1272b8SAndroid Build Coastguard Worker# Additional Details
19*2d1272b8SAndroid Build Coastguard Worker
20*2d1272b8SAndroid Build Coastguard Worker*  A subset produced from a preprocessed face should be identical to a subset produced from only the
21*2d1272b8SAndroid Build Coastguard Worker   original face. The preprocessor does not change the functionality of the subsetter, just speeds
22*2d1272b8SAndroid Build Coastguard Worker   things up.
23*2d1272b8SAndroid Build Coastguard Worker
24*2d1272b8SAndroid Build Coastguard Worker*  The preprocessing operation may take longer than the time it takes to produce a subset from the
25*2d1272b8SAndroid Build Coastguard Worker   source font. Thus the main performance gains are made when a preprocessed face is reused for
26*2d1272b8SAndroid Build Coastguard Worker   multiple subsetting operations.
27*2d1272b8SAndroid Build Coastguard Worker
28*2d1272b8SAndroid Build Coastguard Worker*  Currently the largest performance gains are seen when using a preprocessed face for CFF subsetting.
29*2d1272b8SAndroid Build Coastguard Worker
30*2d1272b8SAndroid Build Coastguard Worker*  The preprocessed face may contain references to the memory backing the source face. If this memory
31*2d1272b8SAndroid Build Coastguard Worker   is fully owned by a harfbuzz hb_blob_t* then it will automatically be kept alive for the lifetime
32*2d1272b8SAndroid Build Coastguard Worker   of the preprocessed face. However, if this memory is not fully owned by a harfbuzz hb_blob_t* then
33*2d1272b8SAndroid Build Coastguard Worker   it is necessary to ensure that the memory is kept alive for the lifetime of the preprocessed face.
34*2d1272b8SAndroid Build Coastguard Worker
35*2d1272b8SAndroid Build Coastguard Worker
36*2d1272b8SAndroid Build Coastguard Worker# Performance Improvements
37*2d1272b8SAndroid Build Coastguard Worker
38*2d1272b8SAndroid Build Coastguard WorkerHere is the performance difference of producing a subset with a preprocessed face vs producing
39*2d1272b8SAndroid Build Coastguard Workera subset with the source face:
40*2d1272b8SAndroid Build Coastguard Worker
41*2d1272b8SAndroid Build Coastguard WorkerBenchmark | Delta Time (%)
42*2d1272b8SAndroid Build Coastguard Worker----------|-----------------
43*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Roboto-Regular.ttf/10_median|-56%
44*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Roboto-Regular.ttf/64_median|-33%
45*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Roboto-Regular.ttf/512_median|-28%
46*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Roboto-Regular.ttf/1000_median|-11%
47*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Roboto-Regular.ttf/nohinting/10_median|-56%
48*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Roboto-Regular.ttf/nohinting/64_median|-33%
49*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Roboto-Regular.ttf/nohinting/512_median|-21%
50*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Roboto-Regular.ttf/nohinting/1000_median|-9%
51*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Amiri-Regular.ttf/10_median|-67%
52*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Amiri-Regular.ttf/64_median|-48%
53*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Amiri-Regular.ttf/512_median|-21%
54*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Amiri-Regular.ttf/4096_median|-9%
55*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Amiri-Regular.ttf/nohinting/10_median|-66%
56*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Amiri-Regular.ttf/nohinting/64_median|-50%
57*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Amiri-Regular.ttf/nohinting/512_median|-8%
58*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Amiri-Regular.ttf/nohinting/4096_median|-9%
59*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoNastaliqUrdu-Regular.ttf/10_median|-85%
60*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoNastaliqUrdu-Regular.ttf/64_median|-71%
61*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoNastaliqUrdu-Regular.ttf/512_median|-3%
62*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoNastaliqUrdu-Regular.ttf/1400_median|4%
63*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoNastaliqUrdu-Regular.ttf/nohinting/10_median|-84%
64*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoNastaliqUrdu-Regular.ttf/nohinting/64_median|-72%
65*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoNastaliqUrdu-Regular.ttf/nohinting/512_median|0%
66*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoNastaliqUrdu-Regular.ttf/nohinting/1400_median|0%
67*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoSansDevanagari-Regular.ttf/10_median|-30%
68*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoSansDevanagari-Regular.ttf/64_median|-24%
69*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoSansDevanagari-Regular.ttf/512_median|-3%
70*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoSansDevanagari-Regular.ttf/1000_median|-3%
71*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoSansDevanagari-Regular.ttf/nohinting/10_median|-30%
72*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoSansDevanagari-Regular.ttf/nohinting/64_median|-24%
73*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoSansDevanagari-Regular.ttf/nohinting/512_median|-3%
74*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/NotoSansDevanagari-Regular.ttf/nohinting/1000_median|-5%
75*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Mplus1p-Regular.ttf/10_median|-96%
76*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Mplus1p-Regular.ttf/64_median|-90%
77*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Mplus1p-Regular.ttf/512_median|-74%
78*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Mplus1p-Regular.ttf/4096_median|-25%
79*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Mplus1p-Regular.ttf/10000_median|-23%
80*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Mplus1p-Regular.ttf/nohinting/10_median|-95%
81*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Mplus1p-Regular.ttf/nohinting/64_median|-90%
82*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Mplus1p-Regular.ttf/nohinting/512_median|-73%
83*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Mplus1p-Regular.ttf/nohinting/4096_median|-24%
84*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/Mplus1p-Regular.ttf/nohinting/10000_median|-11%
85*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/10_median|-84%
86*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/64_median|-77%
87*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/512_median|-70%
88*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/4096_median|-80%
89*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/10000_median|-86%
90*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/nohinting/10_median|-84%
91*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/nohinting/64_median|-78%
92*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/nohinting/512_median|-71%
93*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/nohinting/4096_median|-86%
94*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/nohinting/10000_median|-88%
95*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceSansPro-Regular.otf/10_median|-59%
96*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceSansPro-Regular.otf/64_median|-55%
97*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceSansPro-Regular.otf/512_median|-67%
98*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceSansPro-Regular.otf/2000_median|-68%
99*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceSansPro-Regular.otf/nohinting/10_median|-60%
100*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceSansPro-Regular.otf/nohinting/64_median|-58%
101*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceSansPro-Regular.otf/nohinting/512_median|-72%
102*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/SourceSansPro-Regular.otf/nohinting/2000_median|-71%
103*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/AdobeVFPrototype.otf/10_median|-70%
104*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/AdobeVFPrototype.otf/64_median|-64%
105*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/AdobeVFPrototype.otf/300_median|-73%
106*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/AdobeVFPrototype.otf/nohinting/10_median|-71%
107*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/AdobeVFPrototype.otf/nohinting/64_median|-68%
108*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/AdobeVFPrototype.otf/nohinting/300_median|-72%
109*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/MPLUS1-Variable.ttf/10_median|-90%
110*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/MPLUS1-Variable.ttf/64_median|-82%
111*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/MPLUS1-Variable.ttf/512_median|-31%
112*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/MPLUS1-Variable.ttf/4096_median|-9%
113*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/MPLUS1-Variable.ttf/6000_median|-22%
114*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/MPLUS1-Variable.ttf/nohinting/10_median|-88%
115*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/MPLUS1-Variable.ttf/nohinting/64_median|-83%
116*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/MPLUS1-Variable.ttf/nohinting/512_median|-31%
117*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/MPLUS1-Variable.ttf/nohinting/4096_median|-16%
118*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/MPLUS1-Variable.ttf/nohinting/6000_median|-18%
119*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/RobotoFlex-Variable.ttf/10_median|-44%
120*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/RobotoFlex-Variable.ttf/64_median|-18%
121*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/RobotoFlex-Variable.ttf/512_median|-2%
122*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/RobotoFlex-Variable.ttf/900_median|-6%
123*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/RobotoFlex-Variable.ttf/nohinting/10_median|-45%
124*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/RobotoFlex-Variable.ttf/nohinting/64_median|-17%
125*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/RobotoFlex-Variable.ttf/nohinting/512_median|-15%
126*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_glyphs/RobotoFlex-Variable.ttf/nohinting/900_median|-3%
127*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Roboto-Regular.ttf/10_median|-20%
128*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Roboto-Regular.ttf/64_median|-16%
129*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Roboto-Regular.ttf/512_median|-12%
130*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Roboto-Regular.ttf/1000_median|-10%
131*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Roboto-Regular.ttf/nohinting/10_median|-24%
132*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Roboto-Regular.ttf/nohinting/64_median|-14%
133*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Roboto-Regular.ttf/nohinting/512_median|-15%
134*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Roboto-Regular.ttf/nohinting/1000_median|-9%
135*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Amiri-Regular.ttf/10_median|-51%
136*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Amiri-Regular.ttf/64_median|-37%
137*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Amiri-Regular.ttf/512_median|-12%
138*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Amiri-Regular.ttf/4096_median|-1%
139*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Amiri-Regular.ttf/nohinting/10_median|-49%
140*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Amiri-Regular.ttf/nohinting/64_median|-35%
141*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Amiri-Regular.ttf/nohinting/512_median|-6%
142*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Amiri-Regular.ttf/nohinting/4096_median|-1%
143*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/10_median|-82%
144*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/64_median|-9%
145*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/512_median|0%
146*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/1400_median|0%
147*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/10_median|-82%
148*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/64_median|-13%
149*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/512_median|-3%
150*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/1400_median|2%
151*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/10_median|-40%
152*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/64_median|-26%
153*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/512_median|-5%
154*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/1000_median|3%
155*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/nohinting/10_median|-43%
156*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/nohinting/64_median|-24%
157*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/nohinting/512_median|-2%
158*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/nohinting/1000_median|2%
159*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Mplus1p-Regular.ttf/10_median|-83%
160*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Mplus1p-Regular.ttf/64_median|-67%
161*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Mplus1p-Regular.ttf/512_median|-39%
162*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Mplus1p-Regular.ttf/4096_median|-20%
163*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Mplus1p-Regular.ttf/10000_median|-25%
164*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Mplus1p-Regular.ttf/nohinting/10_median|-83%
165*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Mplus1p-Regular.ttf/nohinting/64_median|-65%
166*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Mplus1p-Regular.ttf/nohinting/512_median|-42%
167*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Mplus1p-Regular.ttf/nohinting/4096_median|-34%
168*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/Mplus1p-Regular.ttf/nohinting/10000_median|-21%
169*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/10_median|-69%
170*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/64_median|-69%
171*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/512_median|-70%
172*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/4096_median|-84%
173*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/10000_median|-83%
174*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10_median|-71%
175*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/64_median|-68%
176*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/512_median|-70%
177*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/4096_median|-86%
178*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10000_median|-88%
179*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceSansPro-Regular.otf/10_median|-45%
180*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceSansPro-Regular.otf/64_median|-48%
181*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceSansPro-Regular.otf/512_median|-57%
182*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceSansPro-Regular.otf/2000_median|-66%
183*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceSansPro-Regular.otf/nohinting/10_median|-43%
184*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceSansPro-Regular.otf/nohinting/64_median|-50%
185*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceSansPro-Regular.otf/nohinting/512_median|-63%
186*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/SourceSansPro-Regular.otf/nohinting/2000_median|-72%
187*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/AdobeVFPrototype.otf/10_median|-69%
188*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/AdobeVFPrototype.otf/64_median|-66%
189*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/AdobeVFPrototype.otf/300_median|-74%
190*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/AdobeVFPrototype.otf/nohinting/10_median|-70%
191*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/AdobeVFPrototype.otf/nohinting/64_median|-71%
192*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/AdobeVFPrototype.otf/nohinting/300_median|-75%
193*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/MPLUS1-Variable.ttf/10_median|-66%
194*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/MPLUS1-Variable.ttf/64_median|-46%
195*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/MPLUS1-Variable.ttf/512_median|-15%
196*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/MPLUS1-Variable.ttf/4096_median|-5%
197*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/MPLUS1-Variable.ttf/6000_median|-16%
198*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/MPLUS1-Variable.ttf/nohinting/10_median|-66%
199*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/MPLUS1-Variable.ttf/nohinting/64_median|-45%
200*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/MPLUS1-Variable.ttf/nohinting/512_median|-14%
201*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/MPLUS1-Variable.ttf/nohinting/4096_median|-11%
202*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/MPLUS1-Variable.ttf/nohinting/6000_median|-27%
203*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/RobotoFlex-Variable.ttf/10_median|-38%
204*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/RobotoFlex-Variable.ttf/64_median|-9%
205*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/RobotoFlex-Variable.ttf/512_median|-3%
206*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/RobotoFlex-Variable.ttf/900_median|-16%
207*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/RobotoFlex-Variable.ttf/nohinting/10_median|-39%
208*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/RobotoFlex-Variable.ttf/nohinting/64_median|-12%
209*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/RobotoFlex-Variable.ttf/nohinting/512_median|-4%
210*2d1272b8SAndroid Build Coastguard WorkerBM_subset/subset_codepoints/RobotoFlex-Variable.ttf/nohinting/900_median|-2%
211*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/MPLUS1-Variable.ttf/10_median|-68%
212*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/MPLUS1-Variable.ttf/64_median|-45%
213*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/MPLUS1-Variable.ttf/512_median|-18%
214*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/MPLUS1-Variable.ttf/4096_median|-2%
215*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/MPLUS1-Variable.ttf/6000_median|4%
216*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/MPLUS1-Variable.ttf/nohinting/10_median|-69%
217*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/MPLUS1-Variable.ttf/nohinting/64_median|-46%
218*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/MPLUS1-Variable.ttf/nohinting/512_median|-11%
219*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/MPLUS1-Variable.ttf/nohinting/4096_median|4%
220*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/MPLUS1-Variable.ttf/nohinting/6000_median|-5%
221*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/RobotoFlex-Variable.ttf/10_median|-34%
222*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/RobotoFlex-Variable.ttf/64_median|-12%
223*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/RobotoFlex-Variable.ttf/512_median|6%
224*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/RobotoFlex-Variable.ttf/900_median|-6%
225*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/RobotoFlex-Variable.ttf/nohinting/10_median|-33%
226*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/RobotoFlex-Variable.ttf/nohinting/64_median|-11%
227*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/RobotoFlex-Variable.ttf/nohinting/512_median|3%
228*2d1272b8SAndroid Build Coastguard WorkerBM_subset/instance/RobotoFlex-Variable.ttf/nohinting/900_median|0%
229