Add a simplified runner which outputs a CSV report
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package com.google.typography.font.compression;
|
||||
|
||||
import com.google.common.io.Files;
|
||||
import com.google.typography.font.sfntly.Font;
|
||||
import com.google.typography.font.sfntly.FontFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Simple WOFF 2.0 compression report runner.
|
||||
*
|
||||
* @author David Kuettel
|
||||
*/
|
||||
public class SimpleRunner {
|
||||
|
||||
private static final FontFactory FONT_FACTORY = FontFactory.getInstance();
|
||||
|
||||
private static final String GZIP = "gzip";
|
||||
private static final String WOFF2 = "glyf/cbbox,triplet,code,reslice:woff2/lzma";
|
||||
|
||||
private static final String REPORT = "report.csv";
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
if (args.length == 0) {
|
||||
usage();
|
||||
}
|
||||
CompressionStats stats = new CompressionStats();
|
||||
|
||||
System.out.printf("Analyzing (%d) fonts\n", args.length);
|
||||
run(stats, args);
|
||||
|
||||
System.out.printf("Creating report: %s\n", REPORT);
|
||||
CsvReport.create(stats, REPORT);
|
||||
}
|
||||
|
||||
private static void run(CompressionStats stats, String[] filenames) throws IOException {
|
||||
for (String filename : filenames) {
|
||||
File file = new File(filename);
|
||||
byte[] bytes = Files.toByteArray(file);
|
||||
Font font = FONT_FACTORY.loadFonts(bytes)[0];
|
||||
|
||||
byte[] gzip = Experiment.run(font, GZIP);
|
||||
byte[] woff2 = Experiment.run(font, WOFF2);
|
||||
|
||||
stats.add(
|
||||
CompressionStats.Stats.builder()
|
||||
.setFilename(file.getName())
|
||||
.setSize(CompressionStats.Size.ORIGINAL, bytes.length)
|
||||
.setSize(CompressionStats.Size.GZIP, gzip.length)
|
||||
.setSize(CompressionStats.Size.WOFF2, woff2.length)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
private static void usage() {
|
||||
System.err.println("Usage: SimpleRunner font...");
|
||||
System.exit(-1);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user