From: Glenn Adams Date: Wed, 27 Jun 2012 18:20:40 +0000 (+0000) Subject: Merge from origin/trunk. X-Git-Tag: fop-1_1rc1old~4^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fremotes%2Ffop-1_1rc1;p=xmlgraphics-fop.git Merge from origin/trunk. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/fop-1_1rc1@1354655 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/examples/fo/advanced/cid-fonts.fo b/examples/fo/advanced/cid-fonts.fo index 526ebea06..cdcb4737c 100644 --- a/examples/fo/advanced/cid-fonts.fo +++ b/examples/fo/advanced/cid-fonts.fo @@ -369,7 +369,7 @@ This font contains no embedding license restrictions - + diff --git a/examples/fo/advanced/giro.fo b/examples/fo/advanced/giro.fo index 5b5422ec9..9f1a6723a 100644 --- a/examples/fo/advanced/giro.fo +++ b/examples/fo/advanced/giro.fo @@ -32,7 +32,7 @@ - + @@ -107,7 +107,7 @@ Från konto nr - + @@ -182,7 +182,7 @@ 16.6.2006 - + @@ -201,7 +201,7 @@ - + @@ -950,7 +950,7 @@ - + @@ -1025,7 +1025,7 @@ Från konto nr - + @@ -1100,7 +1100,7 @@ 16.6.2006 - + diff --git a/examples/fo/basic/images.fo b/examples/fo/basic/images.fo index 3bb864fd8..daabcd31b 100644 --- a/examples/fo/basic/images.fo +++ b/examples/fo/basic/images.fo @@ -31,8 +31,6 @@ odd-or-even="even" /> - - diff --git a/examples/fo/basic/tableunits.fo b/examples/fo/basic/tableunits.fo index aca927c4a..1a1c8c9e1 100644 --- a/examples/fo/basic/tableunits.fo +++ b/examples/fo/basic/tableunits.fo @@ -67,9 +67,9 @@ The next table has width=100% on the table no column widths specified on the table-column element. - - - + + + Some text to make this cell @@ -83,7 +83,7 @@ The next table has fixed column widths=13cm, ipd.optimum=12cm and ipd.max = 100%. @@ -122,8 +122,8 @@ - - + + Some text to make this cell @@ -140,11 +140,11 @@ - + - + Some text to make this cell @@ -159,10 +159,10 @@ The next table specifies neither width nor inline-progression-dimension. - - + + - + Some text to make this cell @@ -178,11 +178,11 @@ specifies a column width of 5cm on the middle column only. - - + - + Some text to make this cell @@ -194,17 +194,17 @@ - The next table specifies inline-progression-dimension.minimum="10cm", - inline-progression-dimension.maximum="17cm and + The next table specifies inline-progression-dimension.minimum="10cm", + inline-progression-dimension.maximum="17cm and specifies a column width of 5cm on the middle column only. - - + - + Some text to make this cell diff --git a/examples/fo/build.xml b/examples/fo/build.xml index 2c7c18259..de83b945c 100644 --- a/examples/fo/build.xml +++ b/examples/fo/build.xml @@ -127,6 +127,7 @@ + @@ -144,6 +145,7 @@ + @@ -154,6 +156,9 @@ + + + diff --git a/examples/fo/svg/embedding.fo b/examples/fo/svg/embedding.fo index dbcac747b..a4af1675e 100644 --- a/examples/fo/svg/embedding.fo +++ b/examples/fo/svg/embedding.fo @@ -794,7 +794,7 @@ XML Syntax Here we have some examples of how the XML can be specified in the fo document. - + @@ -932,7 +932,7 @@ Sizing The size of the instream-foreign-object is obtained in a number of ways. - + diff --git a/examples/fo/tables/background.fo b/examples/fo/tables/background.fo index fe2cf128d..e516348da 100644 --- a/examples/fo/tables/background.fo +++ b/examples/fo/tables/background.fo @@ -30,7 +30,7 @@ Table 1: cell background - + @@ -72,7 +72,7 @@ Table 1: row background - + @@ -152,7 +152,7 @@ Table 1: column background - + @@ -219,7 +219,7 @@ Table 1: column backgrounds over page - + @@ -286,7 +286,7 @@ Table 1: body background - + @@ -323,7 +323,7 @@ - + @@ -360,7 +360,7 @@ - + @@ -397,7 +397,7 @@ - + @@ -438,7 +438,7 @@ Table 1: table background - + @@ -475,7 +475,7 @@ - + @@ -516,7 +516,7 @@ Table 1: combinations - + diff --git a/examples/fo/tables/borders.fo b/examples/fo/tables/borders.fo index a38a6b148..f6704ef61 100644 --- a/examples/fo/tables/borders.fo +++ b/examples/fo/tables/borders.fo @@ -30,7 +30,7 @@ Table 1: cell borders - + @@ -186,7 +186,7 @@ Table 2: row borders - + @@ -310,7 +310,7 @@ Table 3: column borders - + @@ -377,7 +377,7 @@ Table 4: column borders over page - + @@ -444,7 +444,7 @@ Table 5: body borders - + @@ -480,7 +480,7 @@ - + @@ -516,7 +516,7 @@ - + @@ -552,7 +552,7 @@ - + @@ -588,7 +588,7 @@ - + @@ -628,8 +628,7 @@ Table 6: table borders - + @@ -665,7 +664,7 @@ - + @@ -701,7 +700,7 @@ - + @@ -737,7 +736,7 @@ - + @@ -773,7 +772,7 @@ - + @@ -813,7 +812,7 @@ Table 7: combinations - + @@ -1025,7 +1024,7 @@ implementation status. - + @@ -1090,7 +1089,7 @@ fo:table-cell level. - + @@ -1159,7 +1158,7 @@ Check the FOP compliance page for current implementation status. - @@ -1264,7 +1263,7 @@ the border properties differ only on color. - + diff --git a/examples/fo/tables/break.fo b/examples/fo/tables/break.fo index 81325c4ed..91559699d 100644 --- a/examples/fo/tables/break.fo +++ b/examples/fo/tables/break.fo @@ -34,7 +34,7 @@ Table 1: basic break after with next - + @@ -81,7 +81,7 @@ Table 2: basic break before with next - + @@ -128,7 +128,7 @@ Table 3: basic break before a keep with next - + @@ -175,7 +175,7 @@ Table 4: basic break after a keep with previous - + @@ -222,7 +222,7 @@ Table 5: basic break after a keep with previous - + diff --git a/examples/fo/tables/headfoot.fo b/examples/fo/tables/headfoot.fo index fd0a14590..4401a2c77 100644 --- a/examples/fo/tables/headfoot.fo +++ b/examples/fo/tables/headfoot.fo @@ -30,7 +30,7 @@ Table 1: with header - + @@ -311,7 +311,7 @@ Table 2: with footer - + @@ -592,7 +592,7 @@ Table 3: with header and footer and keeps - + @@ -888,7 +888,7 @@ Table 4: cells spanning columns - + @@ -940,7 +940,7 @@ Table 5: cells spanning rows - + @@ -1054,7 +1054,7 @@ Table 6: table with header and multiple body's - + @@ -1242,7 +1242,7 @@ Table 6: table with footer and multiple body's - + diff --git a/examples/fo/tables/keep.fo b/examples/fo/tables/keep.fo index b369d7162..929ee760d 100644 --- a/examples/fo/tables/keep.fo +++ b/examples/fo/tables/keep.fo @@ -34,7 +34,7 @@ Table 1: basic keep with next - + @@ -81,7 +81,7 @@ Table 1: basic keep with previous - + @@ -128,7 +128,7 @@ Table 1: basic keep with next and keep with previous - + @@ -192,7 +192,7 @@ Table 1: basic multiple keep with next after normal row - + @@ -324,7 +324,7 @@ Table 1: basic multiple keep (next and previous) after normal row - + @@ -456,7 +456,7 @@ Table 1: basic multiple keep with next after normal row with normal row in middle - + diff --git a/examples/fo/tables/omit.fo b/examples/fo/tables/omit.fo index 042f557ed..875afe77e 100644 --- a/examples/fo/tables/omit.fo +++ b/examples/fo/tables/omit.fo @@ -30,7 +30,7 @@ Table 1: with header - + @@ -311,7 +311,7 @@ Table 2: with footer - + @@ -592,7 +592,7 @@ Table 3: with header and footer and keeps - + @@ -888,7 +888,7 @@ Table 6: table with multiple body's - + @@ -1076,7 +1076,7 @@ Table 6: table with multiple body's - + diff --git a/examples/fo/tables/space.fo b/examples/fo/tables/space.fo index c0562d8f9..e409720bb 100644 --- a/examples/fo/tables/space.fo +++ b/examples/fo/tables/space.fo @@ -30,7 +30,7 @@ Table 1: spaces around cells - + @@ -109,7 +109,7 @@ Table 2: spaces around rows - + @@ -190,7 +190,7 @@ Table 3: spaces around body - + @@ -281,7 +281,7 @@ - + @@ -309,7 +309,7 @@ - + @@ -337,7 +337,7 @@ - + @@ -365,7 +365,7 @@ - + @@ -397,7 +397,7 @@ - + @@ -462,7 +462,7 @@ - + diff --git a/findbugs-exclude.xml b/findbugs-exclude.xml index a52209c32..a764eac41 100644 --- a/findbugs-exclude.xml +++ b/findbugs-exclude.xml @@ -958,11 +958,6 @@ - - - - - diff --git a/src/documentation/content/xdocs/examples.xml b/src/documentation/content/xdocs/examples.xml index f64a0d702..6565c1b4e 100644 --- a/src/documentation/content/xdocs/examples.xml +++ b/src/documentation/content/xdocs/examples.xml @@ -39,7 +39,7 @@ default font characters fonts.fo - fonts.fo.pdf + fonts.pdf

Other basic examples on the use of XSL-FO can be found in the FOP distribution in @@ -100,17 +100,17 @@ Embedding images in FO: align in larger viewport align.fo - align.fo.pdf + align.pdf align in smaller viewport align2.fo - align2.fo.pdf + align2.pdf scaling image size.fo - size.fo.pdf + size.pdf

Look also into the directory examples/fo/svg. There you find some very extensive SVG examples. @@ -132,7 +132,7 @@ Instream Foreign Object images in FO, there are more on the embedding svg in viewport embed.fo - embed.fo.pdf + embed.pdf diff --git a/src/documentation/content/xdocs/fo/align.fo b/src/documentation/content/xdocs/fo/align.fo index ee0cc8827..06e6a2929 100644 --- a/src/documentation/content/xdocs/fo/align.fo +++ b/src/documentation/content/xdocs/fo/align.fo @@ -19,19 +19,18 @@ - - - - - - + + + + + diff --git a/src/documentation/content/xdocs/fo/align.fo.pdf b/src/documentation/content/xdocs/fo/align.fo.pdf deleted file mode 100644 index 9e5393e1e..000000000 Binary files a/src/documentation/content/xdocs/fo/align.fo.pdf and /dev/null differ diff --git a/src/documentation/content/xdocs/fo/align.pdf b/src/documentation/content/xdocs/fo/align.pdf new file mode 100644 index 000000000..4b9413b1c Binary files /dev/null and b/src/documentation/content/xdocs/fo/align.pdf differ diff --git a/src/documentation/content/xdocs/fo/align2.fo b/src/documentation/content/xdocs/fo/align2.fo index d16553139..64449dbb3 100644 --- a/src/documentation/content/xdocs/fo/align2.fo +++ b/src/documentation/content/xdocs/fo/align2.fo @@ -19,19 +19,18 @@ - - - - - - + + + + + @@ -59,7 +58,7 @@ Default align: Default align: (), start-before -(), start-center +(), start-center (), start-after (), center-before (), center-after diff --git a/src/documentation/content/xdocs/fo/align2.fo.pdf b/src/documentation/content/xdocs/fo/align2.fo.pdf deleted file mode 100644 index f5a02666b..000000000 Binary files a/src/documentation/content/xdocs/fo/align2.fo.pdf and /dev/null differ diff --git a/src/documentation/content/xdocs/fo/align2.pdf b/src/documentation/content/xdocs/fo/align2.pdf new file mode 100644 index 000000000..01b8d1bfb Binary files /dev/null and b/src/documentation/content/xdocs/fo/align2.pdf differ diff --git a/src/documentation/content/xdocs/fo/build.xml b/src/documentation/content/xdocs/fo/build.xml new file mode 100644 index 000000000..4b4a099b4 --- /dev/null +++ b/src/documentation/content/xdocs/fo/build.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/documentation/content/xdocs/fo/embed.fo b/src/documentation/content/xdocs/fo/embed.fo index 558e9d397..6b052e0bf 100644 --- a/src/documentation/content/xdocs/fo/embed.fo +++ b/src/documentation/content/xdocs/fo/embed.fo @@ -23,19 +23,18 @@ - - - - - - + + + + + diff --git a/src/documentation/content/xdocs/fo/embed.fo.pdf b/src/documentation/content/xdocs/fo/embed.fo.pdf deleted file mode 100644 index 6da06b559..000000000 --- a/src/documentation/content/xdocs/fo/embed.fo.pdf +++ /dev/null @@ -1,87 +0,0 @@ -%PDF-1.3 -%ª«¬­ -4 0 obj -<< /Type /Info -/Producer (FOP 0.20.5) >> -endobj -5 0 obj -<< /Length 1556 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb"0W9p=9h(^KQB5D>011Kd^2(:&!s-8.0G?92NC6am<+$Zp"a8L^3ZrE?Z%8B:u_OFn)DOGr-/INIQ=q\oZh2p:3YpSJW^j5k;[E4:*BGe#CoakN"mYH!sFZ8>$).@Y@g/-!,+\,3geIX]sgn&ks8h-P:I5CJ>(?M3srEp%+j`GFC2lVAW?-k]'A%*A+X0,Y&n>gXrgJRd8etuLIh.uop[SIXoW1(Me8(mZ+eI84[tkfD8Y2>AOP5_.60qf-b].hK50R#%EJ8&ck"-ed6),XDAZ4I/+.NABKpXVTecSBnJhE/-BIl,-QFP0P>7hCkMsi)STHZs%$'J5nT--!YC%F5o`L74Wr:Be]r#sCZ+lgS/E:AD3,3jV\ej=Ch)Mm&T3L9Qof&akqNaE.ePBeD$+%h=PJ*s!3>n&C]igN#KOB]'j8H"aks*5=iHX3ZW>2HPS[b]*`)73_Q%NVce\!_DKr]/-Y/42K3d4X3_6^:.XnTm.M/Ws*C)U,oQ,$R7M5;IQWWpQNXEeNq$-MaM&m21cZ'7XGeK>`6"O7>Tplj8g:-IOGkatB8+,OGQk;/'tf.M\ap^O]Zf]N/IY_K;_Cf\L-lRiL(u"ei;CH2-j*X=.qf*gTG=iZSQ6qr)cgBtH@(6&KA0C:edj%+t+a=UNaVEi.YkDdNJud0091bqd)C/fC``XJC$=&-4E!YWO/1#n25qkWC_ic-+YL^(]=:7:C?abAqh?bqD4b-,1\n_j+*T5NVnRDAT6? -endstream -endobj -6 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 5 0 R ->> -endobj -7 0 obj -<< /Length 1817 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb"0W:N+uG(^BKA5)#"'Yd"$U8imem#OF-PR"6:/*k]utN6sEG3%4Xj7nFsp;3J?+4m;Cb/S%)3?CFKB?VSYnqb?ePK?>&Z1uIXURQk@7VtS,NabaJ,Y-fH"AbkJUs)n(bDSLTWQi$]3.r%#RgR?#YrF>m&j5#._.Gt&lrOg7dfGe=DCLO9.JlJ#\Nu:_+'9XObCm7%pIqEiC#]3r(6ZXV,rHP^:2:!="7[p5gQd%aYoh4"?CMW%pVqf;,\4sMKf<>Y[[oqT?]$9s%n,K_VArek#gUbF!FjDL/(H\Zt^D8g"tMc@0c>I%?@\t`PT_@NNSUM//U^7dnFB>]k,gsGT'8p>p-/_"t]4N`X)^SA/n>4O8[WK$DZi:"X[8@`0iGF;K/oBJDZ9tRQ^T20MuX/In(9BX/odV^W3rKV8qhu&C&.Ui@aH`nog^">K.8!\SZl<4uYB;@Nk0tuRbZQ^4Zl`RW%CQc6l9V>:g\X^LPnhTI(tXiC5P1&O>dih=]W7P0+tFD=.[%`'UfWeAOpP4=dVor(_H")Q=5iGu?005^2='PfY.j8J=(&-[];:`7n,`KdDas8\bkm\B&A4"hR1fT1/:_fusB%2tDAdYA`K1Sda):WQ;.YHi:?tGNSg5X.4ecbW9V!N#'SDR\-c*j=-Y$X,X&#FPY<*N9aZGQn-WL<.sM6$CZe\5cE7=W(ZpJ.6/"Y,KQRN)PJi,BKk(lkffCYd>!XZP"g+F4['#tNb0soB]CI].`JJ$#/^9_Q\FLn"+mCRiUL`Z"CJkGNJlhFK?GS.:>s#6[Hb1&@?()XK^4M2BZ*,oS9LsJ(`@./D2(]8Ei@B;0YOE:@Y2*0Q]NkoZ/kuj+,'5q+XHLMT,b>rMPKCr*@3P+I?GS.:"g?j,mCZ'Ym@*'X=+=PH)to%WGsV)l\>r8sj/sOC"]p_r\of,GA;.+H's^0W[EIir]<[S6Z`l&V$F>)o:D+>(*`=mgV@L0aKjZEIKrqQo[_gV'gWGqjlRK%F1W!Bq+pYQ6,V^J,-0:n4_Uc(NCk]!q't1t[fXc61"a>,!D']\B?a8_H-VhA(.Qi,aB[MhUFG6l5fo.&eK),#!I2T6rR/Z're+oUP&g(8R_^!@;&u7($?83Z%nS$eZO5XGIU386~> -endstream -endobj -8 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 7 0 R ->> -endobj -9 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F5 -/BaseFont /Times-Roman -/Encoding /WinAnsiEncoding >> -endobj -10 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F7 -/BaseFont /Times-Bold -/Encoding /WinAnsiEncoding >> -endobj -1 0 obj -<< /Type /Pages -/Count 2 -/Kids [6 0 R 8 0 R ] >> -endobj -2 0 obj -<< /Type /Catalog -/Pages 1 0 R - >> -endobj -3 0 obj -<< -/Font << /F5 9 0 R /F7 10 0 R >> -/ProcSet [ /PDF /ImageC /Text ] >> -endobj -xref -0 11 -0000000000 65535 f -0000004058 00000 n -0000004122 00000 n -0000004172 00000 n -0000000015 00000 n -0000000071 00000 n -0000001719 00000 n -0000001825 00000 n -0000003734 00000 n -0000003840 00000 n -0000003949 00000 n -trailer -<< -/Size 11 -/Root 2 0 R -/Info 4 0 R ->> -startxref -4261 -%%EOF diff --git a/src/documentation/content/xdocs/fo/embed.pdf b/src/documentation/content/xdocs/fo/embed.pdf new file mode 100644 index 000000000..59dec7763 Binary files /dev/null and b/src/documentation/content/xdocs/fo/embed.pdf differ diff --git a/src/documentation/content/xdocs/fo/fonts.fo b/src/documentation/content/xdocs/fo/fonts.fo index 12e176eba..0c2646d05 100644 --- a/src/documentation/content/xdocs/fo/fonts.fo +++ b/src/documentation/content/xdocs/fo/fonts.fo @@ -18,32 +18,32 @@ - - - - - - - - - - - + + + + + + + + + + - + Helvetica - - + + @@ -303,7 +303,7 @@ Helvetica Times Roman - + @@ -563,7 +563,7 @@ Times Roman Courier - + @@ -823,7 +823,7 @@ Courier ZapfDingbats: - + @@ -1071,7 +1071,7 @@ Courier Symbol: - + diff --git a/src/documentation/content/xdocs/fo/fonts.fo.pdf b/src/documentation/content/xdocs/fo/fonts.fo.pdf deleted file mode 100644 index 85a37fd0e..000000000 --- a/src/documentation/content/xdocs/fo/fonts.fo.pdf +++ /dev/null @@ -1,160 +0,0 @@ -%PDF-1.4 -%ª«¬­ -4 0 obj -<< /Type /Info -/Producer (FOP 0.20.5) >> -endobj -5 0 obj -<< /Length 2756 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gas2O=aO+:'LgpN.p>dQQ0),tXf?8Xl8sh^A"4[?L]L?S.Yp(`G)J$07;CF[q0Xk,m[_:;p.hg?\%DUPMj%;2G1eG?n*DpXrcNRk=kqghM^JC4(9q#F6kF&rk?5<4+=n+NmTMjoY'X2c"#Z%_Ip=kXFJF_B#_[H@&U`<@2^l+]E+l1pZ!Cop\)PH?hg\+B/,61.dsGk/JYH2/>>gUQl'^O&$qIgP0_PeXi&QbNt"`g=GeR$XG9Q\Vt!J+koUIg+m`>Q4&kH259:cpnuO)YE2Y+(Xr3H2XcdDe8Lq]_jXK4.1I\07P#'<[L&Tb:eD$aQ1Beq%DbJ9R`Fs?_!J[FZFa!bf^reYKF[C8A"tK/EcFDnJ:3"S@aEl4-6r5g`7ZS"h?/HmND$@jL1SjK>\"VRr[p,&g'EraP7s/X*K!&QFTB@f-"GBg`c-Q5TXJ(OS?p@pG-s6q\pYrAaYZS2aQkBmZ@1P5]10$OS?4MDT]N!OSQR%mfVpmZ@1(5i0Z=+n$M*gm)sTOS;O9DTfS;aSVkX2s&gXjSdfFgoS]0HcZ(s+CCCTpQ5,tON2D0*qK<@aA)011uohL?]\T5a@"t%,e`]/LWFs6H3#3#RK&`J6:;k]J"?4`6lo6U"8'`(*b'V<5R'PD*eJm*oKktfP5c!UKo.u\s'*nZ('VeYGGH$-$5!2@U_b]lOT+]?04Yb>rjPHPBG;Th5Cd(n-pReQP$[&p5QTX`^!KW,!k:mL_4pu6n0@1ONrg$24jj]\"Xnnn82#W1TE'Ef]c^4'!k;$P@AEo!56AMb;Ln[0+MCTLJG_VW]jO`kr;T*0iM6bTs-<3X8eLXo)sN'@,38b9klm=rjSpt!KpZfR!_j9tru^KZRPp8B"5E*hD.fR'["/K0$b`fV$_aI-UbGs8SLn%O6#@a#a[0o_fg7*%"'J;5H>gtB6;ebYA$XIN>IG*3g-?jGL#1XkKb2dh:@6Wubr&]2E7Rrp\;']Dq5gL.E"22g,$Icji>UDXV6lij_DSh>!bsmkKkk?TPgt*F$eNa3.'E6m(TsIF:h&ai0:\`L:h]0o0@Hn"Z4Lp>W@sd8]hih:W@sd8]hj%@W@sd8]hj7FW@sdX]b#qaW@sd8]hj[RW@sd8]hjk2YV.QpKu2VqI:6hCPii8;$VPi?82jp`=P=.Z\cM]FdU"?S%G2J_p-RGM^qR%_(P6i5p4]?V:qRaO0-'A5in]-5iFjkYmfr+d7sgqS2dfuPg'bm3!W0a]?7=Y>fGBSA6Les/^2UFqMK]0rKql=X]Gn+/>1sA']+Oq73^.'^_7L1G_S2u:(YM.EDSj,dmMFPCn8?+WW9tJT6L\m0^8UH9fg>1G_S2u:(YM.EDSj,dmMFPCn8?+WW9tH`$cT^aqkCZ/A.-5c$2^I.?XsP\]*\A/\mJtU_7L$NU:O]B$c0F]qkCZ/A.-5c`mBo4#I^A5Ca+Cr9^pb<]k#;5Jp<9KV]=,\K%hH1QV?oF>.oUFR4.3oYOU=J]l;.A!d_rkDd4#rAeRJDA:dmcl;_LU&_LmC)Fn&gG-Zt_?=WM*\ZH,`RgAN:`o*FfYa%ocq2u'@V(:?D-3AV;"@l]oF>a`t9."o3XZ1W>U>VA3n>KP3n$7eC?S]I^<&gID"TFPjDJTL;fgP<_RGc(c=28Y#lCM+ZK'J/Y9q:VXI>B>?d%2Wg-54TuF^`?<7e_R"'9mqY1/STV;<<,"NE$Zd-Fg>23A6jih%P+u5?.`Q"PFI+s'tZ2ioFb/G)!V!4POK$Y.#KpgV7rSpuo9+[>.8]*b5XST6W59[<2(ShO[$rp'3YX&jGo!9J#:K?4NTQ1JK:ZDI*gFH!C/Dh9N([,B'Wk<;UquIH&M:l7fE=&%pRn*TtuLH+3^sZV8W]GGf(pF_i,55NtD*>T)>jdG.>hO64UG[SQ$do'7Ebd;9uLXlME+0!j:rQWqS4kAp0"8VX^&cbDBrp\]/_g\:X//F^Y+,M^#r5@]95q9'I6W/ag5ns;XcclT*uj'U*;K*"(#%KCI=*L+Xhqu+(VAY::H&:ETgJWBA$n -endstream -endobj -6 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 5 0 R ->> -endobj -7 0 obj -<< /Length 2935 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gas2O=-jma'SPBB.u%SN_RLo"U`"2C^gpR]H\8rsDC;V+n\@!W1DSmP!\1o:WBuBZFn%'.G[c,iln8L?&E7_MV*Pg^/KUXmT!'HLWF1)Oe!;E>VS86"__#%#PY&D4)J@e^%cF;aRi3lUU$Z1+g\1(G@@N-?hhNb*^i:oYYmZ440*#SY\n0k:=^HVkj+K>OY57DKaWWU"#!q9Mq#C_.:i(d5VIX_da<`BINJT>-rnlOh^;B1MIk9u9QNNo9pZ#VSn6K)^&O>9"M,85d6D)-eZnpr^,l#3;X;EiI5ep>i"'_;@,R4(TB>0[@lB;-MSBL*`UTSZ!X@7,D34eaQ\l69.t9cm4K6$8;=UoBERMkIZ&'N3LPe4!>BA.%Se,O-JQ/i&,[p(;EZ<>V&i>5O,eLoQA,+iSjt>t!+pG4uTS4&M(l[(_S4hhcr,TacI(#+$`/(L#fG-unFQ,@+uDTBI87*U,nkr']_(lUViGjsN2[>XuBP69ijXP2_HLUsi,((TnugBW[mT03h#Yct5L>?FZ#;U#g`t]PrUIU&BG7]PrUITbW'O]PrUITe1bg]PrUITgaI*]PrUITj5`*X$VS(Xp-3%n=OMm5!&Nbk-!f^C0OnEkdY3\^1ZjB[?-"9F@pW9cKh_\*k(P$ckThil?9$Ae:'*66Kd0me,VW_737\-KhMOU8uikE15/C'$VJUCZnd>/!XhWDX0aX99EGSobH&!*KhMOu8h6jI15/C'.nV=jZq_;r$*5PW5e><6@)\lhO=kVf=RddHU^N^r<]l8>;)_Fp,d?9*XEYFZUMcrj8RTN4W#Be7KhMOuk!_/mSg\[n=>;J/;)_Fp,d:`a<24?.O@`j!]VnR7&BT7"X1.C?.F,VgmGs#NC.1c:`hUH>jAo^.?(^#!Y!h%B/Gm=e,PlaICCB]J(+$^2&e^O:?:)\1b3R$:3Oqs^I@*59*?-L;8tLGu^$nEkqo_Z%&nG"Wbahd.;_hJAh>g.&uX(PfN0Rg8\+#1dJ_o&BAS@e8@pfUY4=LjQm^C_#6\05i.Q4?2I\_FrU-YfuEdQalSDR5YC)H/l^sDZX5Ia+J$],.o1]#Lg=[G_mCNXuS]o!XTkX^7i0<)EJpu6[)HdF?EZ\m\Xaa">CAB:"@l&?lutLWjreY5]eqbK."H[8U")ZGljM&F>['m-bt"!2cD#L!k9=*VO$0S_#/L32(s;&Hj7sS\ZN<(R6pIW!;RoJ>'t)gNM+(.>AY`DKr!'$,"r]XpspQ+6&1;K?AN81N?H2.5qbV_N^f+?U7`;H)Fu)Dnq)cZRRnaFnq)cZ)G;;Go7Dl[RS4sV3PL9tF4D;P'87da65FXm*QUntM7&Ga>]g9,;b1@LA2.0AJ]ngk=:88j?PmNe/S$Sb@Ao$jON7-MTdJ>W-K>nsRTKs.N*dE:@P)+HIUT13[F12]0+9/3<]ZB=IA%q;8d@,d/sO:X0eE*:@@:4JAjnnDQa9>7"16kd=o~> -endstream -endobj -8 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 7 0 R ->> -endobj -9 0 obj -<< /Length 3803 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=/BpTgY&cAe=0fD3@gQ_!gWbr-%H[Bq?nSK$`Y[E-$#ltYUY`6udmM]f;-7cEtQ,Vbc]Vh).W&c.ZU3c[qlIOe/ZuagNh:9DIG5(3dgY).YgLY0?P]f'"1YKFQHEqn\p30j>.YR\CFtY4iXLN]Ir1DrnmbQ^L)koHS`^WiIf?5Be+%G9[;Eh1K&"l%F-?rF[f#n^Tuk?@Hh+4AD$Eo]RpYbO:)SEAEOqh6LAd$7O5a$2!HTlfG=%nhcb*O7%&%r.gqmR*7gVm]^$s)CUZ1alMZ[>qc3i-kB8P2^rt:jYJA>InG_RqXsCe;!tH*jQIf7qZ=p`..QB^,1-3.Pa=Uoo]Uh^0A"C&adRc%*ROZaP`OC+H?;F@YClE+^Zj,H^&Jq6-Yk&TF?o:Z!TeqiNZK4fq\u1j3ofJP!PSLIPQthF4Z]81T7M%ObWq4!kl'\;gc:S^d/gr\!gHo%7XB/An%W*\O-;@53P#7TrE#Y>oZ!#g)h?dp%Ec"9SfHPdo_oe+T"GBjkQ[^S2aR8tbs7;,!.)B]jjBPcNt1CP/QV;fYj+srOPGViT%T;12"qj;1OkRZQlFC?F5l^jRous[OT`>%bH=g;8d/SSm4nC3Bkl6.2Ssbl^kjR4qLEMt(R=PJKKLZTt]Z`Wp"bOeM$Gd.p%"q_*Ggri,bf%^jMZn^Qh$UuWbREQ7+F)s16#\V9"%sW%YZcR=R1&"R6A4DJ#Qe!eL3")k7cOZp=,pn7hh*AcY!]3`pj$'nY,/"j&;tI[h.)3Lp>q/6I@k'nVjE"j&;tI[h.)q4.]2/6I.ebjm;UB#/MU<=%`5(*p4o\]cN+1Hl20=`G5XJpX*naXfF$(Yo!@87o]3^>KK75r&fXo`[9?$^+Y3W%YXk>*-s[6[ceQciR6VJO"Y"h9Z53@=^[l_%"cn$upiKIDJ%n*mP-(qh!Lq4e*<0p'#M,HT3Z@l3hKip2F>_e/-m^mGY_IW%YYLg;A3p;.":/["n7iUV>YUBb0B\7t&45dN6\lJGOj:V*1=b!VHUT8p`NN!pg;,PkK'&"P=O7..-!+#cKDd;;/p5&PuhRUU5gJ,+u[.7VNCr76l:;NRB,C(D6US!.;dhc>hB2F+U>\k+?jopln_qVla_UKuq5HFp,lpn!)D?oPM>\aIa[0YXaK9\G)B&hSFT@%:^D5>ZW<6WSCTHS]*cgr4N:tG3SQ'M#/_oMm::T#M-TcZD(sb'3SfqEcqGY8]g3SGYM^B*1Gsg+F`5V2,:GNm1r2&>h&E`;L^MF:2B*I)h9aD<0a7eo8Q3'c6`tcg2Af$%)5\`!(XDFXg0eFpVp?\KF3&KBcj!uZE4XQS2&4F)"km?X$;MPbd*A>qGMY4p$7A(6k-h]pG->]hEW=":@nH.V&F*Sn']PAo1T&9iFp)rk:($OV#34qa#;RD*p"8l4D+$X8;aW#I;Gb]Q8kLh@1o)<>"ngfSU_Mi@%B7E>5s>#n.E2(aL6RIh*7UaeP#@7rBh1Zb$L6;G8L_[J25DEC"nhAcU_Mi")H)]]JpR9=Q_.neMXe-0<90jJSq!#i@_AHY'fd]Joa(2-I.$)F`q?`oPp`CJe75_g;N,fWU`q8lFbD`FDhISOL/_][T["*=dUsGL@f0(j.`,(_LPV.+)N=DJU`qBZFc*,n']Xb!<5bW3NY.P@@XOgl'mV6O0@U3d:C9u;Qt#eVD(tsj+Vfh_Ft_>Lj"D\CtC.Ld*MVSZJ_0Db!'qm("0@U3d6Og"c9sK&=2AhK4U`q_9mY0A&I&%o#\LD\Te-=rC%4Mf__pU:/8!>pP-ONb6S7;4RV%?E:PWUu9F2s/`I^TsMWIe#YVqA[T.E&,'Pc#THam>8A@j/@IQV6C@nsd9S5,G&]0pS)7OIt*Bo'uo`g9I-6@Z]L-DtM,L6).d!X("u=[1dHtWsZ.eQNsSDYG2;sn7qSGZ;p7`)\#9qe`^)QX4TY/)iVY7dB?)C0r^^JjeWfJ=/0+7Z=6_$\&q>u$Elq612#_Jk=[N:Y=?8^C?>HX9/-dW7_^]qjmM#>RrOlmYKl)0:lO\P*I)=>T$/FmN'-EhZf25qs6Zo>Jc9d2ZKca:eEhJ#^L$!DPC7!AP8C6M`3esb)%o([:Oj.pE'g%igj9j[@%CJmsLb1e2IoB0/D]]/&(Un3\@S=;oir^L[e=1mFZe._DoH^p17,!1;,[E0q*ETo,qlJK'BAEU/42L38GY$!n3.rUWmcC^28n]DYRZ[,06GhYW0rpFTd=1mgeeRPoU2MitQNIL!DY$%;\.rUWm6Ib4#^@7TA$+07]M(D&SIcWYp=e/A=Dj/7/eEBuJp6sM]M0RXRl?"c=!Y)^A,kET2Miu$h@Q9'AKmU*p?uZmk(tX*h@N^oOiZ[FrHlH:,dOY"6WeV&,+C[fD`M1N'3Wu#+fr=#Oj+pDpP-.KA7>(aYk!Z>2L"NFRr`H[=kLA1XLoa>boQ\*>Y/I7o7jL?MF;X8]a*:[(,g*r.^)BR(YsGB9k7](VQTKI7!?tk#?`8*]W"!_MF;X8]a!4Z[WtYm@MOadU3d3TM/;dLmeg?H94Sjp/$M`YooAJ2lIPt9%SlFX~> -endstream -endobj -10 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 9 0 R ->> -endobj -11 0 obj -<< /Length 3625 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=pl'!AO&]MNR?dW8Ah#PVEWCj1r\[H]o!-@0DJ8h!q!>kkWF(9:im::-ZV))$pbtDN\D8a(oQWhOZ:F5](rlJr"nIVTP*U\FKA3.Bt,T\cg#8L>rL7GbR:UPuQr7%f``GA"MrkOnAsl"=ML"An:6X*#._o:eW*(n)KJR,*(SgLXJ2tX]-cM$^VUTi#0[gg"WgLoQPT!&B)/E>e`QW4se9D!JV\2m,bh:7*)E3^5b;P,eKc5[fC$a+mM,\!b]s=7\fKjJ2tTQkW3hGAkJ'O4O.3_/Sr!.\bi;Qpb'?-mA0'0]72;imfCX16;_kR]DJMSpccJuQ8#:!Phl::C&@s=c8fFsLU+OA.ZGM[R'A1_'=P]/Rprob1TBn7"PUAi"Wgs(8rZ%Yd)LelnF/24CA\s#=s(0m*RK-&\5M??#h0ctjTl[<'Xs0edJ,3n[8(O`!P=%"f9[4KC&AEk2HFX65YGn3rXM140=KZO*bBh!V=>'!g6f-VoffA'p]uF/DJXl0$:CZ0`sC2KZ+@_/AR@2bj.?UanRDsn;]$uAre3TV6aeu*l#e1ANIN2"`fVjW;dlWSp^[FC/D1)/'cp\\nQuFQGd?>s1.pSkjp5p1?WPsA7VNDm+l(),'fZRW=)&:*,M^;2'fZ^[=)&:j7_"FJ.r]B9Y1+T^JoD[$Bb7`^\VDYD@V\A'h$C(Riugh-S&Kj-Z\V8at)$/mdhBIhm"R4C.N40"LgD9U`A2u4MtqnH$]\>)*qF5+C8(%1`V=(r4i<%"*g=L])`pGlRS#c%ZEOnIJ?\/"H,b`s*b7FlBmjAreTo/KAPiZd]tol;Rq7rd[_pF)71EKTqKg:7ZQdec(')Q0*ep"MO=%JDg+Po@S0eo,?h2V@1H=)&9_>/-'#gL-Yk>ik9l6Ip)@lS`tee\3X`AGnF#0)EUkqmr;Zp"T8QpjYE0noZr9laQD,EHD!dmH^]k+l()hD=7D(I9k-nop_<)(>KMq)tR%`pRimS=pVV-F[u4PRB(aAKq>dDF[t)&0N\._3iZ9*D1(.Op)EV1L/Jst=%Dq@\W*dS_L@-Jg=OkP]jbm>lgSc,H+IkqC0t%4onp;>Y<0UMK=T^fePX$6\ZN%s_L>u:BB/=CW*V41pq"*1(@M'4DX6W:cp'>oMikjr.Ss>Xs4>H"AjhMpt>alY)es?cV3.HsIZQ,N]nO8'gM"=4__oHsIZY1GIGU3oW3sd<1uPIbf[Y,O=ZO$g351odVlsFi3"Z>iY.+lf^j*EAm]:'@I\uY9U3Fs'E^um+4tQ]X#83\9L6LY$\MB2r$o4Y46YANaNs@Y9UA\2pB%\bqW0tYARe+c7>kS'@qJZ)ZaCLFaFh.Fl>9A@amYC8G55;M:^RDVGAed'Bri!B`(-V]<@MD!0&8NT8/;TiD1*B2CbfX7&9kpF4-r";aL^WWGm.j+NYj?l/t.YA:TmOVe6!MU/Db)Nk8LEKf9!@Thd(PNk8LEKeEJF\V)GJ:+)J@Lf33T!7BHbm-]p,!Ot6YL0SS#Ap8`($Gb2S89)(qRaX?_1jDKhnFkn\Q#`ED3PDabrNB'*]^n+d`_](>=kl@o"b&YnmADmZd$aG/Q^m[3%9eWm@s%:5TdK(:'WsL[o1s'X)P^g3$oN$[T^_S^W72ZTK4h,S49U@RcPa<+UG4e8cVP:$#R\m^L.[HQ8U,uYfL&KF!qGbPNLq=i'7:&mYF+qJXiY78cJS(eRsh13*;8XoP:DR>!ITWjpd7m1W\[Uh+K+18![9&ZSJ`n7hEmk^";)?VcO?'WpB]:0+G.H?R\7gRU4+bIQXR\Vl6pfC/PacOe\2dgS9S>Z/Xr3)F$]apAIk,2ffk:hB:q=q$Q9i\"[o0TF'Nc`(%)T5(iF#L4e@dgttJ1EL5Mk&t;\Z1..Fhj7\`'kHFNE.LfQL2>0RqQr=D]7T'FHtjF@m47WL=/'CN6GoRY__V4cPNb4+>,FAD8md&@m481;M2L#I'tbf\;pB4j[p!A,2]Ru>/YR-k:9VK&/Ub\2Jf3H\a-'>pbW%0@>gfH@\knVWBagna]l]+(Fu?P)$"FC(.$as:hbG=h/)-rY.NL?NR9Bs1"8TDK#0O/Ti)!*Y$tNNe(WjO_j_8/tBWK2P`/nO$HG5+t+F'c4>9YT2llg>nn$fB]ZiXQ'=8iiD&6+DGI277T=SkOqOr.OSb`g-@o#!6^dQ<_!A$k/eKkj-EskoFcj3qJO,(HRfo%'Q_"FeS\TuH2484n=R'0U*cQ6'K+Y69>*u""0Mr=d.>s&7S_=TgV&(cJ98BY_f_B%tF);!%]jIH!&$er<\KHg/8RNE#j.Y6^?07P\--Eu;&KtY#lm"0P7(Bn=!*S%qYb(In[7WBjeQq_]P`Y4QUh4?TgQIH1"A9l&m[&4TpFI,;`Q)3%.(QLA(J_h\\)k+-:.f^OVSF%m.V>Ar>G6#$5uJXRQJ:rfBC6<+Lgco"Oe_hdXBpfFW@@0sNBBlb,2iV^`$S\p1HbJ[YL_hdV\6s$P@+>0sUC_S+s].'*q2LJT4F%m>nXCD]FYU55Nhl_fF7"o!8lml.0&9Vms\+`\t#E)-F\G~> -endstream -endobj -12 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 11 0 R ->> -endobj -13 0 obj -<< /Length 1495 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%e6#YO:&4Z-f'`nFNG*'!T7j=r);VSgQ,.A\Q*a85ECc>(H)@>c+9oufu4l[f^3$X(O#[b5&oKA>r%%k$GqigJlY&i1HDZA_7G/'ZZcLR%^U,=BQ0#lc#0mCdA_d(b8%&cB&YK_)\unqBH]F-n,X[*I"tZ40:U!a-N"5_4l;qbM!_NP-N")[*LSW7`:J^D1.Wm@IaGM-GE8W5[?1Q9OOe$THT_f$L#hF/JG8fi]nh"$ZQhaQ]Obr@J0\cpa5q@h).I"$!&?G4sCNePDM^9Z>T:gf(85tPqi(u!*G^a/GbI)&RS*c[`g`23cc/62G#TlLFP&3!%)>K/""i1/2NjtbWmLC_8H^nAsO<=JCu:`HGL$7bVJ3kJ4Y-L:,)3qR@.X+Nr[WT1F0e1c-.s'=bZ+WE3CTj\qGFDGL7[6)6XXN1'NEL'q1h-`XMuLZG9;H6o23op^)L$?XP9eUD[6Ig`fRk$k2NmTk24_!32<8Tl=Y3Td&MK!`dCY:q/AnBUSAlJLY5=.,5as[*1KP:h:(EKptGaQ5T-'W3QV^Nm5p+iu\E(XarCTbs>l&7A)/DfJGMlOhn%qZd5&Op4c:_eVK/K&a2h,2U,5H1B'b9arJ(e%5T!Tk.osq&[&DEju*W+XR1Sp[jKmuWsljLC*.A^_(3YQ>\+MkD:ijFg*1d5CKu=r]2p7?Y8!3om^'T_N/%[b3[(1WR#&h)+E4'6G5FT,\1*Y."U:7F/e.QI$nQj`Ap]tN0M$nG%h35;/`6";0rKVd.:8/_-FL1108eA:m:R?X$)*GYcQ/UjV^G1X"mb%#'43UcWo]P6d8so=*Y!kiP(GbdPHWHB4S19%-GET,BK\o<58CQ>lF=cg;,FnRB&FPRV1_"b_?!QF+n7'oqaTgQ"_oghL@=_*+r+@$_NifAV7Ot^Wp)H_-Ed3C>WDOm&tK&PeKH6rASe_D_N"$f?=uD5ul7Q>icpKKh_-eIRMmKW-YD)\]QjugT^^,iW\K/^]/I>/0EO>qa\iMQcF>4h*r~> -endstream -endobj -14 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 13 0 R ->> -endobj -15 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F14 -/BaseFont /ZapfDingbats >> -endobj -16 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F5 -/BaseFont /Times-Roman -/Encoding /WinAnsiEncoding >> -endobj -17 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F13 -/BaseFont /Symbol >> -endobj -18 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F1 -/BaseFont /Helvetica -/Encoding /WinAnsiEncoding >> -endobj -19 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F9 -/BaseFont /Courier -/Encoding /WinAnsiEncoding >> -endobj -1 0 obj -<< /Type /Pages -/Count 5 -/Kids [6 0 R 8 0 R 10 0 R 12 0 R 14 0 R ] >> -endobj -2 0 obj -<< /Type /Catalog -/Pages 1 0 R - >> -endobj -3 0 obj -<< -/Font << /F5 16 0 R /F14 15 0 R /F13 17 0 R /F1 18 0 R /F9 19 0 R >> -/ProcSet [ /PDF /ImageB /ImageC /Text ] >> -endobj -xref -0 20 -0000000000 65535 f -0000016170 00000 n -0000016255 00000 n -0000016305 00000 n -0000000015 00000 n -0000000071 00000 n -0000002919 00000 n -0000003025 00000 n -0000006052 00000 n -0000006158 00000 n -0000010053 00000 n -0000010160 00000 n -0000013878 00000 n -0000013986 00000 n -0000015574 00000 n -0000015682 00000 n -0000015767 00000 n -0000015877 00000 n -0000015956 00000 n -0000016064 00000 n -trailer -<< -/Size 20 -/Root 2 0 R -/Info 4 0 R ->> -startxref -16438 -%%EOF diff --git a/src/documentation/content/xdocs/fo/fonts.pdf b/src/documentation/content/xdocs/fo/fonts.pdf new file mode 100644 index 000000000..5c84a41b2 Binary files /dev/null and b/src/documentation/content/xdocs/fo/fonts.pdf differ diff --git a/src/documentation/content/xdocs/fo/size.fo b/src/documentation/content/xdocs/fo/size.fo index 225adb491..1de6b0245 100644 --- a/src/documentation/content/xdocs/fo/size.fo +++ b/src/documentation/content/xdocs/fo/size.fo @@ -19,19 +19,18 @@ - - - - - - + + + + + diff --git a/src/documentation/content/xdocs/fo/size.fo.pdf b/src/documentation/content/xdocs/fo/size.fo.pdf deleted file mode 100644 index 177160580..000000000 Binary files a/src/documentation/content/xdocs/fo/size.fo.pdf and /dev/null differ diff --git a/src/documentation/content/xdocs/fo/size.pdf b/src/documentation/content/xdocs/fo/size.pdf new file mode 100644 index 000000000..add8fe871 Binary files /dev/null and b/src/documentation/content/xdocs/fo/size.pdf differ diff --git a/src/java/org/apache/fop/hyphenation/HyphenationTreeCache.java b/src/java/org/apache/fop/hyphenation/HyphenationTreeCache.java index c5845977f..ec16810b3 100644 --- a/src/java/org/apache/fop/hyphenation/HyphenationTreeCache.java +++ b/src/java/org/apache/fop/hyphenation/HyphenationTreeCache.java @@ -79,7 +79,7 @@ public class HyphenationTreeCache { String userKey = null; if (hyphPatNames != null) { String key = constructLlccKey(lang, country); - key.replace('_', '-'); + key = key.replace('_', '-'); userKey = (String) hyphPatNames.get(key); } return userKey; @@ -96,7 +96,7 @@ public class HyphenationTreeCache { /** * Notes a key to a hyphenation tree as missing. - * This is to avoid searching a second time for a hyphneation pattern file which is not + * This is to avoid searching a second time for a hyphenation pattern file which is not * available. * @param key the key (ex. "de_CH" or "en") */ @@ -109,7 +109,7 @@ public class HyphenationTreeCache { /** * Indicates whether a hyphenation file has been requested before but it wasn't available. - * This is to avoid searching a second time for a hyphneation pattern file which is not + * This is to avoid searching a second time for a hyphenation pattern file which is not * available. * @param key the key (ex. "de_CH" or "en") * @return true if the hyphenation tree is unavailable diff --git a/src/java/org/apache/fop/pdf/AbstractPDFStream.java b/src/java/org/apache/fop/pdf/AbstractPDFStream.java index 0181728b8..0948a7d2b 100644 --- a/src/java/org/apache/fop/pdf/AbstractPDFStream.java +++ b/src/java/org/apache/fop/pdf/AbstractPDFStream.java @@ -78,7 +78,7 @@ public abstract class AbstractPDFStream extends PDFObject { * from outside. */ protected void setupFilterList() { - if (!getFilterList().isInitialized()) { + if (multipleFiltersAllowed() && !getFilterList().isInitialized()) { getFilterList().addDefaultFilters( getDocumentSafely().getFilterMap(), getDefaultFilterName()); @@ -273,4 +273,11 @@ public abstract class AbstractPDFStream extends PDFObject { //nop: No default implicit filters } + /** + * Whether multiple filters can be applied. + * @return true if multiple filters allowed + */ + protected boolean multipleFiltersAllowed() { + return true; + } } diff --git a/src/java/org/apache/fop/pdf/AlphaRasterImage.java b/src/java/org/apache/fop/pdf/AlphaRasterImage.java index 7272c5edd..250b5daa2 100644 --- a/src/java/org/apache/fop/pdf/AlphaRasterImage.java +++ b/src/java/org/apache/fop/pdf/AlphaRasterImage.java @@ -212,6 +212,10 @@ public class AlphaRasterImage implements PDFImage { return null; } + /** {@inheritDoc} */ + public boolean multipleFiltersAllowed() { + return true; + } } diff --git a/src/java/org/apache/fop/pdf/BitmapImage.java b/src/java/org/apache/fop/pdf/BitmapImage.java index 0979ddf9a..ac7af1dbd 100644 --- a/src/java/org/apache/fop/pdf/BitmapImage.java +++ b/src/java/org/apache/fop/pdf/BitmapImage.java @@ -38,6 +38,7 @@ public class BitmapImage implements PDFImage { private String key; private PDFDocument pdfDoc; private PDFFilter pdfFilter; + private boolean multipleFiltersAllowed = true; /** * Create a bitmap image. @@ -215,6 +216,17 @@ public class BitmapImage implements PDFImage { public void setPDFFilter(PDFFilter pdfFilter) { this.pdfFilter = pdfFilter; } -} + /** {@inheritDoc} */ + public boolean multipleFiltersAllowed() { + return multipleFiltersAllowed; + } + + /** + * Disallows multiple filters. + */ + public void disallowMultipleFilters() { + multipleFiltersAllowed = false; + } +} diff --git a/src/java/org/apache/fop/pdf/PDFImage.java b/src/java/org/apache/fop/pdf/PDFImage.java index e2b9e521c..38da60e7b 100644 --- a/src/java/org/apache/fop/pdf/PDFImage.java +++ b/src/java/org/apache/fop/pdf/PDFImage.java @@ -151,5 +151,13 @@ public interface PDFImage { */ String getFilterHint(); + /** + * Indicates whether multiple image filters are allowed; this is implemented because Adobe + * Reader does not like multiple FlateDecode filters applied to an image even though that + * allowed by the PDF spec; this is probable due to security concerns since many PDF malware + * exploits, like zip bombs, make use of a chain of FlateDecode filters. + */ + boolean multipleFiltersAllowed(); + } diff --git a/src/java/org/apache/fop/pdf/PDFImageXObject.java b/src/java/org/apache/fop/pdf/PDFImageXObject.java index acab4c19c..1c28cb2a7 100644 --- a/src/java/org/apache/fop/pdf/PDFImageXObject.java +++ b/src/java/org/apache/fop/pdf/PDFImageXObject.java @@ -166,4 +166,9 @@ public class PDFImageXObject extends PDFXObject { return pdfimage.getFilterHint(); } + /** {@inheritDoc} */ + protected boolean multipleFiltersAllowed() { + return pdfimage.multipleFiltersAllowed(); + } + } diff --git a/src/java/org/apache/fop/render/pdf/AbstractImageAdapter.java b/src/java/org/apache/fop/render/pdf/AbstractImageAdapter.java index 36d58246f..46e8ebe95 100644 --- a/src/java/org/apache/fop/render/pdf/AbstractImageAdapter.java +++ b/src/java/org/apache/fop/render/pdf/AbstractImageAdapter.java @@ -57,6 +57,8 @@ public abstract class AbstractImageAdapter implements PDFImage { private static final int MAX_HIVAL = 255; + private boolean multipleFiltersAllowed = true; + /** * Creates a new PDFImage from an Image instance. * @param image the image @@ -293,5 +295,17 @@ public abstract class AbstractImageAdapter implements PDFImage { return pdfCS; } + /** {@inheritDoc} */ + public boolean multipleFiltersAllowed() { + return multipleFiltersAllowed; + } + + /** + * Disallows multiple filters. + */ + public void disallowMultipleFilters() { + multipleFiltersAllowed = false; + } + } diff --git a/src/java/org/apache/fop/render/pdf/ImageRawPNGAdapter.java b/src/java/org/apache/fop/render/pdf/ImageRawPNGAdapter.java index 55264e2fe..b9f5e1d28 100644 --- a/src/java/org/apache/fop/render/pdf/ImageRawPNGAdapter.java +++ b/src/java/org/apache/fop/render/pdf/ImageRawPNGAdapter.java @@ -103,6 +103,7 @@ public class ImageRawPNGAdapter extends AbstractImageAdapter { throw new RuntimeException("FlateFilter configuration error", e); } this.pdfFilter = flate; + this.disallowMultipleFilters(); // Handle transparency channel if applicable; note that for palette images the transparency is // not TRANSLUCENT @@ -154,6 +155,7 @@ public class ImageRawPNGAdapter extends AbstractImageAdapter { BitmapImage alphaMask = new BitmapImage("Mask:" + this.getKey(), image.getSize().getWidthPx(), image.getSize().getHeightPx(), baos.toByteArray(), null); alphaMask.setPDFFilter(transFlate); + alphaMask.disallowMultipleFilters(); alphaMask.setColorSpace(new PDFDeviceColorSpace(PDFDeviceColorSpace.DEVICE_GRAY)); softMask = doc.addImage(null, alphaMask).makeReference(); } diff --git a/src/java/org/apache/fop/svg/PDFGraphics2D.java b/src/java/org/apache/fop/svg/PDFGraphics2D.java index 67fc5d860..87c12d869 100644 --- a/src/java/org/apache/fop/svg/PDFGraphics2D.java +++ b/src/java/org/apache/fop/svg/PDFGraphics2D.java @@ -1201,6 +1201,8 @@ public class PDFGraphics2D extends AbstractGraphics2D implements NativeImageHand currentStream.write("] "); float offset = bs.getDashPhase(); currentStream.write(PDFNumber.doubleOut(offset) + " d\n"); + } else { + currentStream.write("[] 0 d\n"); } int ec = bs.getEndCap(); switch (ec) { diff --git a/status.xml b/status.xml index a55f79fea..e53dbc8eb 100644 --- a/status.xml +++ b/status.xml @@ -62,6 +62,18 @@ documents. Example: the fix of marks layering will be such a case when it's done. --> + + Fix errors and warnings in example files. Add build.xml for documentation examples. + + + Fix incorrect language and country code key generation in hyphenation tree cache. + + + Fix incorrect SVG line dash pattern with PDF output format. + + + Fix interoperability issue with Adobe reader regarding use of multiple filters. + Eliminate javadocs warnings. diff --git a/test/java/org/apache/fop/svg/PDFGraphics2DTestCase.java b/test/java/org/apache/fop/svg/PDFGraphics2DTestCase.java new file mode 100644 index 000000000..3f610c56f --- /dev/null +++ b/test/java/org/apache/fop/svg/PDFGraphics2DTestCase.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* $Id$ */ + +package org.apache.fop.svg; + +import java.awt.BasicStroke; + +import org.junit.Test; + +import static org.junit.Assert.assertTrue; + +public class PDFGraphics2DTestCase { + + @Test + public void testApplyStrokeNullDash() { + PDFGraphics2D g2d = new PDFGraphics2D(false); + BasicStroke stroke = new BasicStroke(); + g2d.applyStroke(stroke); + assertTrue(g2d.getString().contains("[] 0 d\n")); + } + + @Test + public void testApplyStrokeNonNullDash() { + PDFGraphics2D g2d = new PDFGraphics2D(false); + float[] dashArray = {3.0f, 5.0f}; + BasicStroke stroke = new BasicStroke(1.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, + dashArray, 0.0f); + g2d.applyStroke(stroke); + assertTrue(g2d.getString().contains("[3 5] 0 d\n")); + } + +}