在将sfnttool.jar转换为sfnttool.dll之后,已经可以将dll添加到C#引用中了,但是这还远远不够。
sfnttool.jar中含有主函数main,因而可以直接通过命令行调用,但是在C#中只能够调用相应类的方法,而这些方法是被封装在jar包中的主函数中的,因此需要查看sfnttool的源代码。
方法如下:
1、将sfnttool.jar使用压缩软件解压,找到SfntTool.class文件(sfnttool\com\google\typography\font\tools\sfnttool),这就是SfntTool的类文件。
2、下载jd-gui:http://jd.benow.ca/jd-gui/downloads/jd-gui-0.3.6.windows.zip;
3、反编译SfntTool.class文件,得到如下代码:
package com.google.typography.font.tools.sfnttool;
import com.google.typography.font.sfntly.Font;
import com.google.typography.font.sfntly.Font.Builder;
import com.google.typography.font.sfntly.FontFactory;
import com.google.typography.font.sfntly.Tag;
import com.google.typography.font.sfntly.data.WritableFontData;
import com.google.typography.font.sfntly.table.core.CMapTable.CMapId;
import com.google.typography.font.tools.conversion.eot.EOTWriter;
import com.google.typography.font.tools.conversion.woff.WoffWriter;
import com.google.typography.font.tools.subsetter.HintStripper;
import com.google.typography.font.tools.subsetter.RenumberingSubsetter;
import com.google.typography.font.tools.subsetter.Subsetter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java