1                        !        2 2 2 2 2                                !"# $%&'( v v) v* v+ v, v- ./01 2 3456 78 9:; < = > ? @A BCDE FG HI JK L MNOP QRS TU VW X Y%Z [ M\]^ &_ [ ` a bc   de f ghi jk lm nop qr stu vw xy z{ |} [~             COMMENTLjava/lang/String; ConstantValueSTART_FONT_METRICSEND_FONT_METRICS FONT_NAME FULL_NAME FAMILY_NAMEWEIGHT FONT_BBOXVERSIONNOTICEENCODING_SCHEMEMAPPING_SCHEMEESC_CHAR CHARACTER_SET CHARACTERS IS_BASE_FONTV_VECTOR IS_FIXED_V CAP_HEIGHTX_HEIGHTASCENDER DESCENDERUNDERLINE_POSITIONUNDERLINE_THICKNESS ITALIC_ANGLE CHAR_WIDTHIS_FIXED_PITCHSTART_CHAR_METRICSEND_CHAR_METRICS CHARMETRICS_CCHARMETRICS_CHCHARMETRICS_WXCHARMETRICS_W0XCHARMETRICS_W1XCHARMETRICS_WYCHARMETRICS_W0YCHARMETRICS_W1Y CHARMETRICS_WCHARMETRICS_W0CHARMETRICS_W1CHARMETRICS_VV CHARMETRICS_N CHARMETRICS_B CHARMETRICS_LSTD_HWSTD_VWSTART_TRACK_KERNEND_TRACK_KERNSTART_KERN_DATA END_KERN_DATASTART_KERN_PAIRSEND_KERN_PAIRSSTART_KERN_PAIRS0START_KERN_PAIRS1START_COMPOSITESEND_COMPOSITESCCPCC KERN_PAIR_KP KERN_PAIR_KPH KERN_PAIR_KPX KERN_PAIR_KPY BITS_IN_HEXIinputLjava/io/InputStream;result#Lorg/apache/fontbox/afm/FontMetric;main([Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablestartJLjava/io/FileInputStream;parser"Lorg/apache/fontbox/afm/AFMParser;stopiargs[Ljava/lang/String;afmDirLjava/io/File;files[Ljava/io/File; Exceptions(Ljava/io/InputStream;)Vthisinparse()V getResult%()Lorg/apache/fontbox/afm/FontMetric;parseFontMetricbBox%Lorg/apache/fontbox/util/BoundingBox;vector[Fwidths charMetric#Lorg/apache/fontbox/afm/CharMetric;countendpart"Lorg/apache/fontbox/afm/Composite; fontMetricsstartFontMetrics nextCommand parseKernData&(Lorg/apache/fontbox/afm/FontMetric;)Vkern"Lorg/apache/fontbox/afm/TrackKern;pair!Lorg/apache/fontbox/afm/KernPair; parseKernPair#()Lorg/apache/fontbox/afm/KernPair;firstsecondxFykernPaircmd hexToString&(Ljava/lang/String;)Ljava/lang/String;e!Ljava/lang/NumberFormatException;hex hexStringdata[BparseComposite$()Lorg/apache/fontbox/afm/Composite;&Lorg/apache/fontbox/afm/CompositePart;pccpartName compositepartData tokenizerLjava/util/StringTokenizer;ccname partCountparseCharMetric%()Lorg/apache/fontbox/afm/CharMetric;charCodewxw0xw1xwyw0yw1yw0w1ww00w01w10w11vv0vv1vvllxllyurxurybox successorligaturelig!Lorg/apache/fontbox/afm/Ligature;metricsmetricsTokenizerverifySemicolon(Ljava/util/StringTokenizer;)V semicolon readBoolean()Z theBooleanreadInt()ItheInt readFloat()FtheFloatreadLine()Ljava/lang/String;bufLjava/lang/StringBuffer;nextByte readStringisEOL(I)Z character isWhitespace SourceFileAFMParser.java java/io/File Resources/afm E   .AFM  java/io/FileInputStream E org/apache/fontbox/afm/AFMParser EF IJ java/lang/StringBuilder EJParsing:     ./ ML 01!org/apache/fontbox/afm/FontMetric StartFontMetrics java/io/IOException@Error: The AFM file should start with StartFontMetrics and not ''  EndFontMetricsFontName  FullName  FamilyName Weight FontBBox#org/apache/fontbox/util/BoundingBox     Version Notice EncodingScheme  MappingScheme  EscChar  CharacterSet  Characters  IsBaseFont  VVector IsFixedV  CapHeight XHeight Ascender  Descender StdHW StdVW Comment UnderlinePosition UnderlineThickness  ItalicAngle  CharWidth  IsFixedPitch StartCharMetrics  EndCharMetrics)Error: Expected 'EndCharMetrics' actual 'StartComposites st  EndComposites(Error: Expected 'EndComposites' actual ' StartKernData \]Unknown AFM key ' EndKernDataStartTrackKern org/apache/fontbox/afm/TrackKern       EndTrackKern'Error: Expected 'EndTrackKern' actual 'StartKernPairs bc  EndKernPairs'Error: Expected 'EndKernPairs' actual 'StartKernPairs0 StartKernPairs1 Unknown kerning data type 'org/apache/fontbox/afm/KernPairKP    KPH klKPXKPY)Error expected kern pair command actual=' /Error: Expected hex string of length >= 2 not=' -String should be enclosed by angle brackets '   java/lang/NumberFormatExceptionError parsing AFM file: java/lang/String ISO-8859-1 E org/apache/fontbox/afm/Compositejava/util/StringTokenizer ; E Expected 'CC' actual='  Error parsing AFM document:$org/apache/fontbox/afm/CompositePartExpected 'PCC' actual='   !org/apache/fontbox/afm/CharMetric C  CHWX  W0X W1XWY W0Y W1YW W0 W1 VV NB Lorg/apache/fontbox/afm/Ligature   Unknown CharMetrics command 'Error: Corrupt AFM document:;,Error: Expected semicolon in stream actual='2CharMetrics is missing a semicolon after a command   java/lang/StringBuffer     java/lang/Object(Ljava/lang/String;)V listFiles()[Ljava/io/File;getPath toUpperCaseendsWith(Ljava/lang/String;)Zjava/lang/SystemcurrentTimeMillis()J(Ljava/io/File;)VoutLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;toStringjava/io/PrintStreamprintlnequals(Ljava/lang/Object;)Z setAFMVersion(F)V setFontName setFullName setFamilyName setWeight setLowerLeftX setLowerLeftYsetUpperRightXsetUpperRightY setFontBBox((Lorg/apache/fontbox/util/BoundingBox;)VsetFontVersion setNoticesetEncodingSchemesetMappingScheme(I)V setEscCharsetCharacterSet setCharacters setIsBaseFont(Z)V setVVector([F)V setIsFixedV setCapHeight setXHeight setAscender setDescendersetStandardHorizontalWidthsetStandardVerticalWidth addCommentsetUnderlinePositionsetUnderlineThicknesssetItalicAngle setCharWidth setFixedPitch addCharMetric&(Lorg/apache/fontbox/afm/CharMetric;)V addComposite%(Lorg/apache/fontbox/afm/Composite;)V setDegreesetMinPointSize setMinKernsetMaxPointSize setMaxKern addTrackKern%(Lorg/apache/fontbox/afm/TrackKern;)V addKernPair$(Lorg/apache/fontbox/afm/KernPair;)V addKernPair0 addKernPair1setFirstKernCharactersetSecondKernCharactersetXsetYlengthcharAt(I)C substring(II)Ljava/lang/String;(C)Ljava/lang/StringBuilder;java/lang/IntegerparseInt(Ljava/lang/String;I)I-(Ljava/lang/Object;)Ljava/lang/StringBuilder;([BLjava/lang/String;)V'(Ljava/lang/String;Ljava/lang/String;)V nextTokensetName(Ljava/lang/String;)IsetXDisplacementsetYDisplacementaddPart)(Lorg/apache/fontbox/afm/CompositePart;)V hasMoreTokenssetCharacterCodejava/lang/Float parseFloat(Ljava/lang/String;)FsetWxsetW0xsetWysetW0ysetWsetW0setW1setVvsetBoundingBox setSuccessor setLigature addLigature$(Lorg/apache/fontbox/afm/Ligature;)Vjava/lang/BooleanvalueOf'(Ljava/lang/String;)Ljava/lang/Boolean; booleanValuejava/io/InputStreamread(C)Ljava/lang/StringBuffer;! A['(+-/19;=?BDFHKMOQSU]_aceg j    WYu~qt !"#l$o%&'()*+,-./01 234 YL+M>,k,2T 7 Y,2 : Y : 7Y,2e52 . /02(4-596D7I8N9y0<6R-L789@.9D5:;N+<8n=,>? v@AqBCD!EF4F **+5DE F6 G; H/IJ47 **5 PQ6  G;D!KL4/*5Z6 G;ML4YL*M, #!YY",#$+*%&N'*YN _(- +*)*+- +*),-- +*)./- +*)01- 92Y3:*%4*%5*%6*%7+8f9- +*):R;- +*)<>=- +*)>*?- +*@AB- +*@CD- +*)EF- +*@GH- +*IJK- !:*%Q*%Q+LM- +*INO- +*%PwQ- +*%RcS- +*%TOU- +*%V;W- +*%X'Y- +*%Z[- +*)\]- +*%^_- +*%`a- +*%bc- !:*%Q*%Q+de- +*Ifg- Y*@66*h:+i*:j $!YYk#$)l- Y*@66*m:+n*:o $!YYp#$q- *+r!YYs-#$+5cfg hj6m>n@oNqWsbukwvy{}"-6AJU^ir}%09DMXalu#)39?EKUvy 6*NOPQRQST=,MU,+V9WX,=,)MU,K+VG;Y1 Z@l[D!\]4sM*YMt u, *@>6EvYw:*@x*%y*%z*%{*%|+}*:~ $!YY#$h, W*@>6*:+*: $!YY#$ , W*@>6*:+*: $!YY#$, W*@>6*:+*: $!YY#$Q!YY,#$51 !'#0$9%B&K'T(])c!i+o,y.1245785:;=@ACDFGD#I)J3LTOWP`ReSnUtVzSXY[^ad603^_!H=,|U,o+V`a=,LU,+V`a =,LU,)+Vt`ah=,eLU,+VG;Y1[D!bc4YL*M, 4*N*:*%8*%8+-+++, <**N**:*%8*%8+-+++, -*N*:*%8+-+++ V, -*N*:*%8+-++ +#!YY,#$+5*op qst!u'v-w2x8y>zD{G|P~Yciotz6)d!#e'fg-hgY-dc#eifgohg"defg"dehgG; ia jD!kl4u+!YY+$+<++d>#!YY+#$++dL+lM>+ZY++`:,lT!:!YY$Y,5:#<\hq{6>mn.os_=,G;pqlqrD!st4U YL*)MY,N-: $!YY#$-:+-6!:!YY$6Y:-:   $!YY #$-: -6 -6    +!: !YY $h+U^a5v (IOU^ac6cmn$f, h, mn Wuv Nw =,G;xX yz{|O}^~,D!4d YL*)MY,N--: -:+*- -:+*- -:+*-o¶ -:+*-NĶ -:+*--Ŷ -:+*- Ƕ -:+*-ɶ -:+*-ʶ 4-:-::QQ+*-̶ 4-:-::QQ+*-Tζ 4-:-::QQ+*-ж 4-:-::QQ+*-Ҷ -:+*-Զ Z-:-:-:-:2Y3:  4 5 6 7+ *-_ֶ 4-:-:Y:+*-$!YYܶ#$"!:!YYݶ$+5r   #-3<ADNT_dg q"w#$%&()*+,./01245678:;< = >@A%B*C-D7F=GCHHIQJZK`LeMhNrPxQ~RSTUVWXZ[\]^_`abdefgh ijkl#n)o/p4q7rAtGuMvSwYxbylzv{|}~6`#3Tw=(C"HQx(~"Q("Q("Q) }GNMHSBY<b3O ("#[mnG;ST  {D!4C+4+M,޶ #!YY߶,#$ !Y$5 58B6  )CG;Cz{D!4E *L+5 6 G;D!4x&*L+M!YY,$ 5  6  mn&G;!D!4B *L+5 6 G;D!4IYL*=**=+W**Y= +W+5"#*:D6 IG;A9,D!4IYL*=**=+W**Y= +W+5"#*:D6 IG;A9,D!4F  56G;,4R    5!6G;,