61 lines
1.7 KiB
Java
61 lines
1.7 KiB
Java
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);
|
|
}
|
|
}
|