From 3ca2877834f3ae97ef0d3dcc2a8f2fd8f504dd20 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Mon, 30 Mar 2015 20:05:34 +0200 Subject: [PATCH] set font creation and modification time to the modification time of the swf file --- .gitignore | 5 ++- lib/ttf.jar | Bin 138375 -> 140212 bytes .../flash/abc/avm2/AVM2ConstantPool.java | 14 +++---- .../flash/exporters/FontExporter.java | 12 ++++++ .../decompiler/flash/tags/base/TextTag.java | 6 +-- libsrc/ttf/src/fontastic/Fontastic.java | 9 +++++ .../ttf/src/org/doubletype/ossa/Engine.java | 16 ++++++++ .../org/doubletype/ossa/module/GlyphFile.java | 21 ++++++++++ .../doubletype/ossa/module/TypefaceFile.java | 2 + .../ossa/truetype/FontFileWriter.java | 9 +++++ .../doubletype/ossa/truetype/HeadWriter.java | 16 +++++++- .../console/CommandLineArgumentParser.java | 37 ++++++++++++++++++ 12 files changed, 133 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index e7ae37017..63b993378 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,8 @@ hs_err_pid*.log *.~* /revision.txt /lib/ffdec_lib.jar +/lib/README.TXT +/libsrc/avi/nbproject/private/ /libsrc/gnujpdf/dist/ /libsrc/jsyntaxpane/jsyntaxpane/target/ /libsrc/ffdec_lib/build/ @@ -52,5 +54,4 @@ hs_err_pid*.log /jpexs_website.properties /version.properties /tools.properties -/nbproject/private/ -/libsrc/avi/nbproject/private/ \ No newline at end of file +/nbproject/private/ \ No newline at end of file diff --git a/lib/ttf.jar b/lib/ttf.jar index e07d1e1f4a129ffd5a1a21f4346b4578f774495e..509a4c424f1ec640f87fb958e8720188fc8643ee 100644 GIT binary patch delta 25752 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 Jbs>xj2P zJWt{QyTE+BC~zbwM7*^l-UbZ{HiZb35dn@VV!c8wAY(LGwY-MWAQF zKc+|SoT+PPi$Cgi7o%}IFGkn9#DTTGnFAi^H=Tim(WTCa%+VdKPP0r+ZfEW@b+}5= z>t+8HDO11n`jw(!L|XvOz6wQ+gyK*<9i4P4PEPgr@?QyROP666(v zz@vh~^7^293%w#PFFITx3P{X@9+N1_Mj||<_LVo%VN2m%k^@0*x*~u z3jyclubZRHzt@?iibFkAMzHXN{kS99Y6a<7XtkYc#6i6nIHFH}k5AZ*wJo zp>D{pxn?eBy41S|F6Lj=MF}fQI(^SA^R8oZSsP*)?={C+oI9I4*T-OV>- zs8HCeoMqu_@fLp)q25J&#)EPt6dWI^bqU?}AG|eED^{9;7YzY6q@*7~Wyb#VY)7J(JSu6Zo#>msf`z&+RLZUxd^-=J9#H z;0jQq@UM>pn$tMyjt|k3yuml)?1KL#ANpQ_5AA}*@pkHg@p$>e8obOj&$-MUycUHj zG+X4u>sOk)R(A}3kJO5i2KQDppyb<|fg%y7W1@q-6KuL0ou3J%-@dZnZacL)OB1}K zE=Rq+T%EXaw8DSAE-_Q_>hzI1;fmPNgv6cpfE2@+u zPq)4~CIOZp{0c&42-l-;RO!vApMAl>sWzsHRA8EQpM^;bt-(!oR9W|uNI4XAS7wmuCHfM1W`lcKkL*|Nyn;HHva t>jw1pJ87lgG7LVI^0$y_K!V+h+3CPn_>KB5_fQ09rE7_vB?+Pv{2xFl-Kziq delta 24373 zcmbV!2Vhmj^7qWS<=oty6w+^cAq3Ls0b;-)y@f7BdIv>70i|D26h%Prs8Nz@parbkyXye+BQ{AoF7L9M&e(j^H9r$RLajtq!w4W`2q^$ zL!p2oNeAkanFSOJXfB|IfH?WuQs-7-^ewmca2tuY_4-lS5-+#o_Ffvm9pq)HhcA+6 znTI=ixRV4g_Hem8JA3#N4|kDZR{`Cmn%xD&32%BxsHcQ_3Fs}HLo4KP9|3)Z+D=JnZ4JU7!V1}&zA=C16F zh*@-%!Q;qp&|~z7c|5z^zeCcF;_(JgpxI2u<>Rgy*L>Q{=G~`FpTy)Wo-=2%K?`W1 z&Jzuu#FKR%Xz&ysY4B8@#uPny=8QSxX3v>6p?UWn)925cYVhTJg~8MLN`q(cOoM0f zRp5+4PtsEcU(F~ZCM1t}PfnRp5^6CW#+-gab{6&zWbm=+anrpUY*;_ z@jNiym)ptlBAy@TPH4XdNa&E{Tf%D%zMV~>7_{HX;QL)1F!*j>XYhKE3nGsid=HyU zv1ZGp*s4`c(p-5npi_u+(g;n3kS3C$o{$G(x<-Ys4g8SJ@resn1Z|6F8a^%|KQdfr zo-HUDwG{8tfrzL(IjJp$QxA%!o)k~L$Va`YG4-MA@imhifVp%7EyGhnQXs1kVODj};ZbjNK(#}vzomMsuAwrWLq7bhrS~5%!XUo7q(^1(O6a)Tc zfpg7JjppE354sj#=BWY_kc;R_o4_8_glN&?X-jLpnuRNdW$yGJG6y9z}pY$A^HTe_%C{dexmJk zhIX)%9^+`*#c_~KX@j01{Xr@OmfKP1wNy?fFnRna;A*;)?gHb+fGGjGn_M7ZE3KpT zXtp#uK=;rFsTIfDwGy^U8fp>ZH?sI&D;8F!Fw#HX(eLDsLfJ>+v1?4|Cz@k%4%Po$Ecy&&uZ<1LcgN^Y-0{v2p{J|t(Dol_)Wn`$DKj;wMPv`kj*V&!}V zIsb8ioZIc3&~TCyrFBJVQW*pFNUf&wf@3G0!sr*}X`}3H zqYM+2z}LGWzN4Vo;cbbT74I{|e5PcMM)aT{M1?XmG)VmF^x$jez( zO??|8{1QC=Dg>W5SYIzaLDj&+R8t?HUmC6!VZVk5zX!q}E`V^ajSypjO<-@Ef02SO zrJ5@8Q=TBL4yPqvzoFK@Qw05?@Mc*ZIWkCTq>Q18(tQ@Cx3@|3_uoqS{T`=*`zWfi zhN5EzRa1-i?6@ zbkNxtbY_6gOwgGPI>3TVauU($kAJ=vvAlf zFNybySjLPErG1>d`ENXKf-Xng479fd?fIa+0JIlTTW(I>xsZBs3+l(MLg?=pIylQc=AVTHSp#2RB_z&GNa1nZm{ac@fHP}?OvSc7zo z1+SuzFjzU(z$nGOW*55@TwDm{?R-b^=B=;*ltO6vgpq z^6^;8f(b3XKi|R^EI-FCA7!Y)S_37?iV_ECc$r?eDR~2wh{@8W0VNtuGK~&d{>jVS zy!HH7^{BD*lCtRdYEUy9)Xb$KzJ^-k*@5R#XP&R9Y6FUkU^0lgAogFEAbnke^mU;( z=rFh&Mx{1=qNY+vJ5L$p*I^H^PH!sX;Z3MLC|@6Fe=FF8yOCFT*@^o(I;9C8pQI@a zv!__XX;0Er4aP}+H5H`XPjU6$_1j8e%N(fRtEz=V>va=pyqp^O`DV)HTTrnTP-Dxf zj8_HO?S#qrPbhnlpH9Jwb+Rj_L04D}FV%@4$60cs65R4Mc*68HtTIcIo8u{x>;h@2 zb&ajeS@z!@BEYrwEYrL6o}Iguo!cY1F`hI;usI~Z$0m~Leam)6siFCsRMWHu`HT6{ zzd_)Y34=|*DX?Ffwl6q*xjF2j4DS`|D8}b@?xpGGbr&^O7E&=R8RA{!;@yy!$0>uW zD3A9*W}X0BYrxjW=@Q-t4Y8m4@H0UcXTY%h0OqDx>wW2%vc@HJ9JVZjk3HxkSaTW) zi?hjf9yYfdHaZ06WBeCsIn#u4@CHo(om?Imd6~7V zOZhb#&9BoWegm`hH)#&iF5q`D6MK(t;3KMfVrX|l`6o~*15=&;^eHOkK{W=cDhp4S z1*^QwZ`WB~o>X;qVTL8Occ|KTAK`_Dm`u3Fl*W=p~vL&E&;m*JT9P0z#af|b(e%_ou2Yi8`>u?_v`d@ z)$uO7nV+dz-Oa`Pta(TGdAzkMqKC%j!1Ortn)G<{-t=g5UC++^lzFUYK}s2QG@$P; z(&>N!t=JVUq0>PF*2VMi2NcGXVW1>^#>~v|Gbh3&Gn;0aV|q35m(eUtewANj?wo1U zn|B>IXOd1Y7?7S94Vpu<49qiU>GYCJ{a-eqBmZGwT8P)LN^}SfHK4RQ7#N6NH=uVx z#9NpBg@X>S|QPRR5wjW;ln1$a-AzOT^{)7`smzoQ03^dCAMGejzN z`pBS<#m#YoJ~ilaxfmzl+n=dxU^iM37RF*m4h^$nE{@x8v3x=X0bTrtwj2Ut-6w%4t(tjE< zMh<8_Oft$yM>IT`aX9=MeUMt-^`(Bukpwa-P!9*@?#`xG*E>You6s2 zRX6kQ0a<>jiZ$^V2IVjuGl0sF>O|Y+u{14m3O_obEDcY0e!&xz*pMM3LFXui!K$h| zNUKVG2g+si5a_g~9UI)Y3qheN@tA$QcG%9)Xq;OJgKT z6E@#Hums#XJTRwIIcTf(^whFB*Uss}m(g%AI231;&jrqdv5}|{L{uSaF({)$9YG7g zlts`Qi$kgu8LUzy+&LE^7t=(Wr8f`i1~T3ll;;;Rgas)edlF4X8iL!yB1oFWLk`bC zou)+N%T$^MD9jBVtP`!VQixH5HM}q72saco^ane0=veDdtfu^i2+R-!o?z2Xho9)L zrE3i{2SPHtf|=2K?acM$Lc6G;VB7=2*bu_SP{F9>A~cC0GmD2vpBXshLVe~cCHf(K z2I|1hn9{F6N_MC|s*Gt2VbH?h_oHZu?I9F|_QJnlgho^t&nZ%}hF*x2ZVgF+k_?g( z-H?;ozLFF?v)Fhb)hjQ3qCT>0^TC*>MD;~PV>yNeWA>^KA(UIq=Xf`-@r zR~oK`+d*1p#<1kDqTa9tAzsDi+F@z_<`S`9w6Gp6r{qnkrdAS3a!IiDR`QnWV(PRN z_d@}?{|G2FtBsV+gHZxDIEZ>1M7;w8{5{y_?^70rfu^ug3ZVYm(kIZUC!qE|fx7z? zI6ecGlVj2UPeBGhS2YnWISRi?Fq?JMctWtNPJp6afWo7p{T3qRP@dsM2#J*^I?&}g zOGyq#*i4-kOMhEpS9#U&_pRd&;{S4 zPCrr}+@sCt7ivMj!j?IWd}opKPmCOAK+L&dRW1psO3z?bdfHX#6^(Jrs!JA7Hmpk~ z>eAP)iyx%GTVCJnx^?#*zbu7XTFQZgb2&NiiBI!Yy;*rHtEIrvBNip7z=u~g3sZrx zh23-&7$dm%ogjS{0UgOqG!UO zy`F_l;syUz3vd9TUoq z3;0mLN0Q{YWcyffeqyGsFP(fsr%z=tmcIyjeNw+AHEjav1}Sc-{|zM7a9cSYz%!bsjzHXPCx4OlevF=*QyTp{H#?yd|wiK52!`d zmvyX|J>Bf0D%brh*!daQVw#(_IbR1Fv-9Rm&lFi&!|*DrYFQX84fF=AM~xORhQ=D` z5CCccZUfzGzBwt;%v=}kGGIE-MXXu4Yr@>|( zW5601V!ria3(pF|Lec}YIPgPPZrVc@Zw*;bF=PeTfOl`MLAz)-e19Bea5P8N8mQy0 zozr~4%xN>`fJSa)aEz3TMO_14x4Fv33zYAHp*LkqwB{dxwhBiVK=BA^QVsP)P1F;_ zsHd1F^4&5tMyT*em{4FN!cO5No-x8qsEBdu`*_5`*I;}iRLi80_+;{V@o@@I$LeTEL=fi;hzU!mmIc%dY8&Wu7Y$ zljRRtL=)4ZBXs>B5H96hrOG+D^%B37qdaD)(1pvn4CRba_$`~QWe|T$8^5(Q2kL>Z z9mH5l49kaxcRxY8HPTB_mQ6ew`fiLumuT54VKzR-3_=$6rkU#=eo@hO3DhEiSuRi= z0sh3Ige+KpEs?zoat%g3hogpLQM<{g*F4DX3d~kE0Mkz3s=^{+9bfhY>E46)(jXBS z{AK78zRXuE22z7I5*L-|&UaK(L__-LgPa8ltwp{&Nd5wgeB`V%cHqeW3x>tOutZ^~ zHG*p!%xx3KRK74sPXQ1LNA1~#aMCjPmWEKlK`Iu(8WkpP*p}0(F71sWX=CiPOMuBm zT6DRXsD8RmW&3ekV%xgLx&;YVT!7T2=oFIkdiZsuz{5upRI6FUtqLj76(nw%RSF8O zV-e;FSq+)I7UkalU&_7FDi^qdX0abKmt|R|bydIfZz+LF6RMHBZs96rFJ%YUTI#!MCP)aEjlK2s2A!f-D}mO2Z4&T7i5rl!N-Jc0|i z*?Rbic1hrAitG#5qy#rpTtQl48f<^$8LWJdUl$0!oQfz*=j=pvAA?@lg?_&q21pe= z1$&@lYM^!Y`cb_np)U5K5ARo0i&51CeOo$`6SGwxmV?KlmIVE0$#qw_(PX6>dqt4* zHaJ)`T8r<}f2=pR5kKs38zw+_$}|$=`OrPFYuqnOqP{L*J{1c zl}uN`lT-kQc|&P>2`oMo(tw6dn2@jzWQ!DI&;gY8YcBmCPw|Kr?m$3O%(2AU|7u86 z)ylOK8s}a+cPCU`D(}wEc!CNWQgRr~dNYKQTIC^KS~Rp!a-Y?Kfum5xL4Z>PN0H&T z`~KS@WN5+ewK16WCbWf+(E;AYqVkM5D!yYK72w$d&m25k;hBPG8$4t2EWtAz&-Qmf zaGcv6b)ss`3*HCiN2#qJwst$%*P>P}?bX39-37&Yzp8??B-Z)PP+O~3Jd%UQ;FC)xmMVZZt zVz5GYZY5_3GqBf8L;mkT>klEc<^`FM9m0e#a-5+or=wihumzh5RN;I8EhCE_59QZT zr@jS;unJ#I7pwldkIJz`+qqvMI`bukc-^I%x*~!Tr{R3F|gs1G5yH!!-&gc%+#>_Tf{CbuDR)A)~OpD zRDC&&DzN}N70(%rEnWDwgrjIZN7E*5gw>Q-#WpM>!3mXt?GR%jE8U=GM1Q#8tSZEy zyarO<9=b#{i4$E@X6TRLD|iM*`^CC(L9VtbrIL(ft1x}nU<+M^Df}9+SJaD$r-g0@ z&{^Mh;G2kNv1|;9fmS&~$vW*kE1N`2K1T^UJtm>kl>R$KogtUfLm9vXBh!|h_x&h5 z3`kl-rS|F#(7S_cAN8qhwmQkRx`z6e>hR*@bwBv?oh66wW@ZrX^!FF9oZWsc4oAD&$P8US}z0iL+kZ+P0bCNAPh}Sd^5g=SM)E3su^K zZ3+&kx~5pWd;)KLXs#M)YMoNCb>~U&(xWO51$rJTTUUB@Cw$2chmNgaz{b$&qG+D3 zKNa+C*m>2t_C)e4A_}}Tm*X)r&`tlI6#sQz2*E6O`J{4Wl_9YyUlp8cN$hHO`GV_$ z-)1A_*kEjqB$(?iU!&fr%-6`PYdt(qp7RAP(0QSk5_pkB77JJ+0NXB`@^uO>mEiRP zZV<3cz>NZK@&YWEEsb#e=kqN(uYebx7YVpk=auqYrSod}c$;Kcqcgn!O&Q+*A~wVM z4!$#7wyOz%aFyT7 zd-w_YSS_GNz+M4Q3cxZ!Q{E>@_Dkq#oiPC&!Ou$MfR_*Qa{@rxa(>>!FUV`muk-mO zoey~!v+Id`o6eY}PGL;3r!eN%P5Ctmy)Gflu>Di`umsG^zI3dDT6DSxChCen*}md>95GoO$Ml6~r>>v@($PD<#M z0KERp%b&CV3xSwIPhm`|g-O&ap>PQq0wM%N3W%!uv&QA%Xp{GS%Z<$M_pQNP zp4XebdNi)uy8jPH1h!_bMysHWz(RA!ftmWpV3N+=%;bKVW|xC^aEy86;1~Qu)q&?8 zWanD+A9LCZIqiGt%Fu-a4x4}-;4k#a)VO@WC=(X zaxRikQ_ibhbjmr(c?M@Qs#IoZ9kot|cCl6tYhjGR37lwXo$2Sm#!OB#a}Tv1d{n!{ z;5hg>v@Y_kt9U$;B-Bmbb(c^N3H1~nHcEKX=ZoxpM~3xq8yLD-CUsHW)axA%PPS9NR+I zVhnAlcB!Ea(}o*brIZ(`VSDya?AF#sNJEX(Mj1SkM;Y2^)JR-8VeHh#7}{8EoVoqw zB>#9ro1jg^2H?zTvoo(8H*40UiJ9Z3qqK?hi_!Q}tx4KsLz|*aHMD6`%;j3n-}rit zYF9{0OlNAO$e%uL#+2s0X3Uv1WzyA#cBN#Tq0Kb3SrWQRz|{iU&K6G1k>FejU87xV zX!Ec-s?C?^0tqdY&>{hg1uW5W%%i=ttJc3VkJ%qsdX{sm+P`{^t9HMh@AO+625T^^ z$#PhXbU2KzR@{X+`d%>ZK^)yM7!OArJu(>Ik2pGKFdl_C`e`tJ5OMU?U_6#IzjQ%W zIJ%O0VnJ3tu_lXzud48CAPv1a7=HtCbnJR@2)arOSyxZ=dG&n9exm2AI6A+2qW|L= zi?v#nL8j(M;iuQ=nEA~=*YR=lrnkp*_z+1lVXF}4%^zV#A%8d1C#nt-Isu|J%razR z%2>!19H#(}nd$Fr1deCk8IvnGtQpAaAdc1W`oD;Dn&=&s{*re)_>Uu{wTL+ncF=q{ z!xvz$Lv8M+cJ4&1wtlH7U{MH?8)-VjjuJW}_EAwK?D67^8ftFMHUzCTDO?nj$`$9OuODmSa3l-)Y4~D0x)@@gmi6_DRJO17F1Ax5#7s zNtLB}dZIjGlDi-i(;I6>DY>m#+VjZsLXfG_TD8LF#%|W{6;`)uCEycRw1w3VM@QZE z=p;B5dIp^eb;u9F(tbIl;f)}215zl+1*Hgx5Ly93g*CF_Iw=Jk`+7Mrp%Cp*hw)Wl zd<__3Vq2Xf1SO_d(&44y1-a1c!4ylHJoJ;K(SGl%*&;)J&)(46Hx=s`yOdoHj7a@iF3M9fS zuZqKqi&4BxpJm%*GWgmDt}#R{CRkLQyZ{xAY${?bDv)cmIptV(ccI_%P<(;ujqKt6 z7kuU4gkTA!&B78wTdZBF!^fH^v9nNp4^%$@)xUx2=l>NIMrPp;=&9%1RCB)2X8sK= z^m_=>TB#g>hTwR+ni&0UWXV|xRCpTp4;TfK*?i%6c1T}3ACk6_-Cn{8 zxN3|p=!|G7-``hZKm$od=W(&~Z>kVl0~kC)`7v|yhnGNJ9{Dh1n8=GoYfHO)77Iye z#g}4{O+1}(6!jRMAyNUd>hd~+dDE=CX2wS;c|kem*pRf|VA^y$?YNIJ6;G6g0H0+3 zU57g=m_8#&SDil)yX6}amKu_|PC;b`Gq+JAn4A*8?t1)&O?ixN|JWHqZe|FEI&xt% zswOP>xN&=_ni{{jG3lHOcR|yTJh3*(wor$o8DUVW%**R#E=1-cWNz`FGm8U4gy&?v z%x#bvN2j>`f6ffcS7pBVlTfnDkhvo=m;dL?u$@)rd+KHGip<@Rx#xe*+=TNWF~`iq zCz8yl6MC0Aru9V|_oE1|PzWrOA<||V7>h0^rd6%6F@iL)&=s!A6V3Y7;TedugD8=Q zgy2aE;z_dcNHbthRiq~bBXhGLbr~U)4FhGvL0M%8#{WbabH0tI<)n8AMJALHeJGEDXWb;$$eU z%Yo|(;F|tF<0`UcV!_Fb)>2_LNbpRR-%=&Dv@jP#<3I$UIX;Do4Tn9^&3x_T&ErR{ zuBKT&7kb}NgsxJdAqZWqLc{QW@B~C>=Zh0`j)HR)yvFCMrfYrfmuRR@e~A*s-#TwA z^(^)HbRXP#3${|3dS||TD%FoKaiv~-@v1K#^~D$VEF7;3*I_-hsIZ0>?W4t&crGc$ z;-b&Jm#%w);w9nI-5~ibOrej$K)n>J72n#=Ur`MWi{tQ=;N9;q%w${@R$L9Y9`Us} z>o6bZGM1PVKFjs5;#=XrSP56_Dx9jjjjDMK?dP@h9N$id*u=5n8(;;PoDM%yF3w^W z;1p(CUdI>X_+?k#px7#|*}?QGH;1Nh3lnV#GPnayRme1>9c+PC%0w^2f_!U)9N0hY z;5L4Ic4FOUC6Jb&t<&KrwnA-j6axp8flxZgEpplp=fQODAXXrk%6|!5q;r|*3RJjb z_<7R*k_5^in4l*ToyVfEH;Be>;i*j&#N<2=!EgtY1xu6RsJ7z=(D5<GQiB@o3B&<;VisRF>p! zlCjfjFw5n;5qr1qr&!*E1Kpb`jURybYYSMq6$fh`rgDBnHG<{x?Hug9ouNEsW&?`2 zvtoT1&YKHI9pFGQU&38Lu|F9M?}`?4VacsA?C}FO!_(wELmFJZV7SF??yhqWoqGbM zFN6ooy|}k%VU!eVdBiucJa~IZ7pxulG>`ZhB)1v+WuAX|MbTcmS=Jm5ksGU$1;US8 zs%gd6^Y7Jh#X88b3!K;u=lA1q*HvLYOqa8s~{<@LP%*;J5f7Bsi5Q!bS_PN zFyxTYYSCB4{*_zLe^FPeGC=u7l=>3baR@UnYm#A==2p`}sd!$nw7ihgP)BQ8cpAIO zLM0on7)!Fb6v82^7fZMTr!-fs^HVsUt1GYzFTVf+ep^M+A&SAPHCPbbM{BX@bi2HA z?v@oLv&4x{t=qX0Tyb;<7RpKs6VM0lYNsdYvVNAmj{=qZC>Ob!B)Im{-B^^4S*KQ} zo7K?zXOTMId1E!*6Rfcx8(N~FX8sAjyo0{+9$0#WlK2>^e;ktVF%I&5LM`|tq~R2G z+UKk`T=j9P~6qXe)Z zvD8@`a1~)Q$%Y~@@7`*PyRp*YsG<9-Y11&DD_-AAnlMqHs+m}hG6{8MYs_DU!h{E`YYI>+NGCs@~SxsBV zmW0K7CG_yv67_r}K70#Vp^|Wak)+;+)kI)@)H!i8MHR(+qBF0nrtLVOgfId=rz|k; zI6xaqql$b{duV4hJ*EP?s%iJu^Ye=0!>Z}=qIisbRYmdP&au_BN1YvWs!faI7dS?reT_cMrdvtt?4vQ^Uy?i)t71E zv{EzZF6>ypUyGz|S`_WpVyH%orRTLcI;`dRylYrTS&0;%YSRL@AH;$u6 zVP749+hQU;%u^8xXIZ8eW7R@@c@Xgxws=;M`#g5wSSo$G8ahYle5Lw7g0MuJKoLsa zH~c346Sxz8B24+ZvEH6Xq`7{l%zBbN1BGimQ)`B&7c+|cwI*6q^3_`wtg8HOc#22P z`P}9!9c6oRLrz5!nFMCCCPjz#Q7P)=+_;jN2>4A+=T<)Ll z#s0SUblLf+(R*^Y%Mk%bb=h#~w%#1mWzS`p6_N8EvP)8>#WAZ-ux%*PXI!i zy7R_MBRSQ}X>#Aq47u-S24@P$5|AxPb0pMQLLhhs=SrxFg!0_wkS6)_VusaBK)y#{ zfzE|B-!@{+i8W;|!c{)q=1rJ1YtFQpGiK{t3=it;Npm{So-k>~oWNUCIkqM{fm5}> z-AVj`vk;;axW>noj+Jz$EL2&yyx^=?AS;kejXK)*CYskqmgG;y__B2bVJ$Ep;R7~I^ zgUh(1T8;^n-^(p<(MvgZ*7*|T;Vy<)cm{XJt|;zdU|x*8y=b!myA7ZZ0Cq_r)K@}V zCDe}|HMl}Re*pskuz{e;;DPeB4LxbletH_~Lv)~aNky%j^qo0lic~MYoxy{7h_#@D z;T4&N^Tk41ZeWdi_B zXA&;o;K_204zA0YCIENlU^Oo@F!o+{Ddd6QR&Zj?D{1U;Ma@7Lk<+a9oiOI^g2cf0 z*<70ARQIun&q(fCVOoJ?axOC#Vc8wRw7O;p?l5BiZTNCIbhKRP;e`J<3j1i|)K-)M z@M908w%Ec{j`>f2=+@DgiOt8BwUszmv=N$n8_p9w0dY8peI~DC{&f_4G(UrE{fNDU zXXzR^JLh4JJ)g61+_H!kat8>&8kD4b4lulMt4RW)grEs;zxeea10ZyDO`BZ!a}{yd zz^Eihi4G}@#JWH{Ql_F>IjB?ts?-YPbU>BLvH7J3cGFd$h@sdlSqYq@fp0!AF2hYJ z%W>%W4j2a;uz%(OY;N0zEowVajcU3d%e9*@*los|$`&}2AH<~cAtBU{EnF@j2uJn+ z#5wkt!141 zk!KSMMO)yFoJrI0Yy`Jv9Cpce$1_lx$Kf5Mg{8?TYYWe)UT+s8v1@Jv) z!qbFz{%E8C|R$o7m)fwe*`@&E^@>cVnUO=3nC?$KyirEehC-zt1E&6IYn z6?ZR`ootMichAv1eteeuMqUt#@UklqONMAcy^n@gVtMpZc)54roh2d`u|I?m8y!R* zZ6nuY07QCVgemU?F+^VgBiseUqob!rM~^K_>8Rp?!G)YUvNBaX373uSxb^%;RM!un#c-KUP z1FsfxmVZJuP0SY;-y~dyp#oEGtPNczp{?g%P+Ktd%@ire1g5G@mp=((ovLeCW6U4W zWT&AF{>1v{8K~~Fn0TDSBo^m*v4%MWbBjujq%m0En1l_IS7L+YY@AeC=*J?)QjVil zoIsDjQ~Nj;DfY3CUc@$%!`LMFPk7djVUyq|cz(`Vin)`~LWL+!6t)wct%(YWs5ZiW znk{NZ{DsZ>NDN(vl$=Ck!_LbHX&4GO;=uMTXwEU@zZts#wgAnQSSo)NAs0@PO-Co% z0-1dsbrjdDmEl%o5dB|B?sKptF|mO9Z+sp@l1HaEBz~CHTe(xK6IOsR*^3St6Ev|9 zY-t(~>>^F6{y3VJvV1RHfhXWhT;{Nsu3X(QIy!Y~UH7S76LE1aJVH%EyERWU}D92u;z}NDD&}mKa3&zFh&mC}FlD`gf{`3GZH5=i{e5M)rZG`vzl1>?`U$`#XZ>ZOGC(2&1q=#9 zbg+OSas+LtfJ=26CePtIReI4#eI;_4fDr;l3K)fXt4?ETc8r9jW{&UFH85rtXWo?# z3Z5CwYXZ@WIG)D_4n}Zx;Mr{)88|kE8+C3&Fn5aymURpGXY4BkLQZJ4p>YOI^}vj7 zEnqzP12?`J{42c(EvItHE2^4_^(-g7bka~hic*<=6U@Tw>V$&etqNWQ1 z{l{~@-_r1Mfq`;k!b)^vm$h~EVJ}#ieLzHicu#8=WD8(ZmLf*jB~oUitap^bRfo~C zt_GpN!3u*iZy`yw7~Iq`(smwq!jeDe3uH~;ggl|f8V)WEDcNP`V_39S;?YP9uUu{7 z%lG4|x$!!PIK+tr`gG{%AD*0dO=?2Nb?QEd%4^&YkW4Vlph6PZj3n$a^5sFk8A8Densrl;w6~byrO!H)zOYua_+{MR*EJ95D&I@X(Y9 zSfaVfLQ-sf56Wh5m8?%a-QE4RX1A<34o~xO-BQHj52!glnZHp7p=(~9!C$HylxwQz za)wiB@gwv3S9M;x=B*pJSG0PUb_WlSSD|^2@T2PNbWM{Te08LHch5e)JxzsL9OX<4 z-{6n=RD^n0`YrcvDxtvgc&&Z#Ht4{ic&${uE=$l-0vQQfa&4@w3d~8+)a}oKhZ5|B zClj=b)u-G>ca3yr$c#_s3Q~ZK*bI*Eg z&ypXGdC=}`2ZYpezskQuy>!FCL3@lC7(#;JMjX?ioEk-3ja?scI6i(pCFTY;$wKFBT zy8k+`KN%%GJx^XVF+UmU3OG}28hk1E;<`@0zd(;<&IsDV9v+o5)`8BPF`SBYh zd4^edQ+VL%6wOfFdrc7CxlF#Kn?Fp5Hq)2818J#tt?C_@uZQfhy8@e1wKV(qyt{Bf zAJ*dF8pN1D!uSRUHiCJ#EKS=bIWJPBf1HZaCx4}Q9Nj0({OBidU|5D06ZGi@E>6=D z90#2o7}p#IiMV&+;32S#Ps)jpl3r8ovP zQwiGCy&jQ{*L&Kl*XhdqQRJwC0@w0CUWd&iKkSbS{%u)$ypNp$emrmBOu81MGSnGK z4Kw^a)Xt#nCaJLE#`Fx7e)$;tn{?&C)Jz-M+a>MV-tQ)oU;Wb8PO&qH+bHhUlwPAg!`_x6Fl1;38EL+j8m10bA6D8c>>9= zKH9({4xG4wixoGOD86=}`0hqH!6m=KAitzrom?3hkY)G!Raq#q(`Kv4yHZi&u1D+= z6_%$k0iHx);-w} zykFl^`2%B*viC0nJZ8ay$a^A) glyphs = new ArrayList<>(); + List glyphs = null; boolean firstLine = true; double top = 0; List allLeftMargins = new ArrayList<>(); @@ -403,7 +403,7 @@ public abstract class TextTag extends CharacterTag implements DrawableTag { int textHeight = 12; int x = 0; int y = 0; - List glyphs = new ArrayList<>(); + List glyphs = null; for (TEXTRECORD rec : textRecords) { if (rec.styleFlagsHasColor) { if (numText == 2) { @@ -458,7 +458,7 @@ public abstract class TextTag extends CharacterTag implements DrawableTag { int textHeight = 12; int x = 0; int y = 0; - List glyphs = new ArrayList<>(); + List glyphs = null; ExportRectangle result = null; for (TEXTRECORD rec : textRecords) { if (rec.styleFlagsHasFont) { diff --git a/libsrc/ttf/src/fontastic/Fontastic.java b/libsrc/ttf/src/fontastic/Fontastic.java index 8e62b2030..a997b0e5a 100644 --- a/libsrc/ttf/src/fontastic/Fontastic.java +++ b/libsrc/ttf/src/fontastic/Fontastic.java @@ -29,6 +29,7 @@ package fontastic; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Date; import java.util.List; import org.doubletype.ossa.Engine; import org.doubletype.ossa.OutOfRangeException; @@ -201,6 +202,14 @@ public class Fontastic { m_engine.setCopyrightYear(copyrightYear); } + public void setCreationDate(Date date) { + m_engine.setCreationDate(date); + } + + public void setModificationDate(Date date) { + m_engine.setModificationDate(date); + } + /** * Sets the version of the font (default is "0.1"). */ diff --git a/libsrc/ttf/src/org/doubletype/ossa/Engine.java b/libsrc/ttf/src/org/doubletype/ossa/Engine.java index a3f2d6499..359f72bcb 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/Engine.java +++ b/libsrc/ttf/src/org/doubletype/ossa/Engine.java @@ -187,6 +187,22 @@ public class Engine { m_typeface.setCopyrightYear(a_value); } + public void setCreationDate(Date a_value) { + if (m_typeface == null) { + return; + } + + m_typeface.setCreationDate(a_value); + } + + public void setModificationDate(Date a_value) { + if (m_typeface == null) { + return; + } + + m_typeface.setModificationDate(a_value); + } + public void setFontFamilyName(String a_value) { if (m_typeface == null) { return; diff --git a/libsrc/ttf/src/org/doubletype/ossa/module/GlyphFile.java b/libsrc/ttf/src/org/doubletype/ossa/module/GlyphFile.java index 0a34ae5cc..64778d09c 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/module/GlyphFile.java +++ b/libsrc/ttf/src/org/doubletype/ossa/module/GlyphFile.java @@ -35,6 +35,7 @@ package org.doubletype.ossa.module; import java.awt.Point; import java.io.File; import java.util.ArrayList; +import java.util.Date; import java.util.List; import org.doubletype.ossa.adapter.EContour; import org.doubletype.ossa.adapter.EContourPoint; @@ -52,6 +53,10 @@ public class GlyphFile { private String m_copyrightYear; + private Date m_creationDate; + + private Date m_modificationDate; + private String m_license; private Integer m_advanceWidth = null; @@ -149,6 +154,22 @@ public class GlyphFile { return m_copyrightYear; } + public void setCreationDate(Date a_value) { + m_creationDate = a_value; + } + + public Date getCreationDate() { + return m_creationDate; + } + + public void setModificationDate(Date a_value) { + m_modificationDate = a_value; + } + + public Date getModificationDate() { + return m_modificationDate; + } + public void setAdvanceWidth(int a_width) { m_advanceWidth = a_width; } diff --git a/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java b/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java index 11b32267e..cdf30fa66 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java +++ b/libsrc/ttf/src/org/doubletype/ossa/module/TypefaceFile.java @@ -389,6 +389,8 @@ public class TypefaceFile extends GlyphFile { writer.setFontFamilyName(fontFamilyName); writer.setCopyrightYear(getCopyrightYear()); + writer.setCreationDate(getCreationDate()); + writer.setModificationDate(getModificationDate()); writer.setFontVersion(getVersion()); writer.setManufacturer(getAuthor()); writer.setAscent((int) getAscender()); diff --git a/libsrc/ttf/src/org/doubletype/ossa/truetype/FontFileWriter.java b/libsrc/ttf/src/org/doubletype/ossa/truetype/FontFileWriter.java index 5a56238e1..2b6e41a2d 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/truetype/FontFileWriter.java +++ b/libsrc/ttf/src/org/doubletype/ossa/truetype/FontFileWriter.java @@ -39,6 +39,7 @@ import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.Date; /** * @author e.e @@ -225,6 +226,14 @@ public class FontFileWriter extends FontFormatWriter { public TTGlyph getGlyph(int a_index) { return m_glyf.getGlyph(a_index); } + + public void setCreationDate(Date a_date) { + m_head.setCreationDate(a_date); + } + + public void setModificationDate(Date a_date) { + m_head.setModificationDate(a_date); + } /** * adds character mapping to diff --git a/libsrc/ttf/src/org/doubletype/ossa/truetype/HeadWriter.java b/libsrc/ttf/src/org/doubletype/ossa/truetype/HeadWriter.java index 4716deebf..2f18831ae 100644 --- a/libsrc/ttf/src/org/doubletype/ossa/truetype/HeadWriter.java +++ b/libsrc/ttf/src/org/doubletype/ossa/truetype/HeadWriter.java @@ -73,6 +73,10 @@ public class HeadWriter extends FontFormatWriter { private Point m_min = new Point(0, 0); private Point m_max = new Point(0, 0); + + private Date m_creationDate = new Date(); + + private Date m_modificationDate = m_creationDate; public HeadWriter() { super(); @@ -109,6 +113,14 @@ public class HeadWriter extends FontFormatWriter { m_max.y = a_value.y; } } + + public void setCreationDate(Date a_date) { + m_creationDate = a_date; + } + + public void setModificationDate(Date a_date) { + m_modificationDate = a_date; + } public void write() throws IOException { // table version number @@ -130,8 +142,8 @@ public class HeadWriter extends FontFormatWriter { writeUInt16(1024); // created, modified - writeLongDateTime(new Date()); - writeLongDateTime(new Date()); + writeLongDateTime(m_creationDate); + writeLongDateTime(m_modificationDate); writeFWord(m_min.x); writeFWord(m_min.y); diff --git a/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java b/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java index 1d26f6b76..565012593 100644 --- a/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java +++ b/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java @@ -126,6 +126,10 @@ public class CommandLineArgumentParser { private static boolean commandLineMode = false; + private static String stdOut = null; + + private static String stdErr = null; + @SuppressWarnings("unchecked") private static final ConfigurationItem[] commandlineConfigBoolean = new ConfigurationItem[]{ Configuration.decompile, @@ -368,6 +372,12 @@ public class CommandLineArgumentParser { case "-exportfiletimeout": parseExportFileTimeout(args); break; + case "-stdout": + parseStdOut(args); + break; + case "-stderr": + parseStdErr(args); + break; case "-affinity": parseAffinity(args); break; @@ -717,6 +727,24 @@ public class CommandLineArgumentParser { } } + private static void parseStdOut(Stack args) { + if (args.isEmpty()) { + System.err.println("stdOut parameter expected"); + badArguments(); + } + + stdOut = args.pop(); + } + + private static void parseStdErr(Stack args) { + if (args.isEmpty()) { + System.err.println("stdErr parameter expected"); + badArguments(); + } + + stdErr = args.pop(); + } + private static void parseAffinity(Stack args) { if (Platform.isWindows()) { if (args.isEmpty()) { @@ -886,6 +914,15 @@ public class CommandLineArgumentParser { } for (File inFile : inFiles) { + String inFileName = Path.getFileNameWithoutExtension(inFile); + if (stdOut != null) { + System.setOut(new PrintStream(new FileOutputStream(stdOut.replace("{swfFile}", inFileName), true))); + } + + if (stdErr != null) { + System.setErr(new PrintStream(new FileOutputStream(stdErr.replace("{swfFile}", inFileName), true))); + } + long startTimeSwf = 0; if (!singleFile) { startTimeSwf = System.currentTimeMillis();