Index: src/documentation/content/xdocs/trunk/running.xml =================================================================== --- src/documentation/content/xdocs/trunk/running.xml (revision 1348087) +++ src/documentation/content/xdocs/trunk/running.xml (working copy) @@ -109,7 +109,7 @@

+Fop [options] [-fo|-xml] infile [-xsl file] [-awt|-pdf|-mif|-odt|-rtf|-tiff|-png|-pcl|-ps|-txt|-at [mime]|-print] [OPTIONS] -version print FOP version and exit -d debug mode @@ -164,6 +164,7 @@ -pdfa1b outfile input will be rendered as PDF/A-1b compliant PDF (outfile req'd, same as "-pdf outfile -pdfprofile PDF/A-1b") -awt input will be displayed on screen + -odt outfile input will be rendered as ODT (outfile req'd) -rtf outfile input will be rendered as RTF (outfile req'd) -pcl outfile input will be rendered as PCL (outfile req'd) -ps outfile input will be rendered as PostScript (outfile req'd) @@ -197,6 +198,7 @@ fop -xml foo.xml -xsl foo.xsl -foout foo.fo fop -xml - -xsl foo.xsl -pdf - fop foo.fo -mif foo.mif + fop foo.fo -odt foo.odt fop foo.fo -rtf foo.rtf fop foo.fo -print fop foo.fo -awt]]> Index: src/documentation/content/xdocs/trunk/output.xml =================================================================== --- src/documentation/content/xdocs/trunk/output.xml (revision 1348087) +++ src/documentation/content/xdocs/trunk/output.xml (working copy) @@ -1112,6 +1112,15 @@ +
+ ODT +

+ An open source XSL-FO to ODT converter has been integrated into Apache FOP. + This will create an ODT (rich text format) document that will + attempt to contain as much information from the XSL-FO document as + possible. +

+
RTF

Index: src/java/org/apache/fop/render/odf/FopOdfConverter.java =================================================================== --- src/java/org/apache/fop/render/odf/FopOdfConverter.java (revision 0) +++ src/java/org/apache/fop/render/odf/FopOdfConverter.java (revision 0) @@ -0,0 +1,47 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf; + +import java.io.OutputStream; + +import org.apache.fop.fo.FONode; + +/** + * Renderer that renders areas to odt. + */ +public interface FopOdfConverter { + + /** + * Initialisation of converter + * @throws OdfException + */ + void init() throws OdfException; + + /** + * Write created odf document to the output stream + * @param os output stream + */ + void writeToOutputStream(OutputStream os); + + /** + * Convert FONode with its children to odf document holden by converter + * @param foNode node of xslfo + */ + void convertRecursively(FONode foNode); + +} Index: src/java/org/apache/fop/render/odf/OdfException.java =================================================================== --- src/java/org/apache/fop/render/odf/OdfException.java (revision 0) +++ src/java/org/apache/fop/render/odf/OdfException.java (revision 0) @@ -0,0 +1,32 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf; + +import org.apache.avalon.framework.CascadingException; + +public class OdfException extends CascadingException { + + /** + * + */ + private static final long serialVersionUID = 6464226563894799824L; + + public OdfException(String message, Throwable throwable) { + super(message, throwable); + } +} Index: src/java/org/apache/fop/render/odf/ODTHandler.java =================================================================== --- src/java/org/apache/fop/render/odf/ODTHandler.java (revision 0) +++ src/java/org/apache/fop/render/odf/ODTHandler.java (revision 0) @@ -0,0 +1,74 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf; + +import java.io.OutputStream; + +import org.xml.sax.SAXException; + +import org.apache.fop.apps.FOUserAgent; +import org.apache.fop.fo.FOEventHandler; +import org.apache.fop.fo.pagination.PageSequence; + +import org.apache.fop.render.odf.odt.FopOdtConverter; + +/** + * ODT Handler: generates ODT output + */ +public class ODTHandler extends FOEventHandler { + + private FopOdfConverter converter = new FopOdtConverter(); + + private final OutputStream os; + + /** + * Constructor : keeping output stream + */ + public ODTHandler(FOUserAgent userAgent, OutputStream os) { + super(userAgent); + this.os = os; + } + + /** + * {@inheritDoc} + */ + @Override + public void startDocument() throws SAXException { + try { + converter.init(); + } catch (OdfException e) { + e.printStackTrace(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void endDocument() throws SAXException { + converter.writeToOutputStream(os); + } + + /** + * {@inheritDoc} + */ + @Override + public void endPageSequence(PageSequence pageSeq) { + converter.convertRecursively(pageSeq); + } +} Index: src/java/org/apache/fop/render/odf/FopTagType.java =================================================================== --- src/java/org/apache/fop/render/odf/FopTagType.java (revision 0) +++ src/java/org/apache/fop/render/odf/FopTagType.java (revision 0) @@ -0,0 +1,26 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf; + +/** + * Defines START and END tags helping to detect hierachical structure of xslfo. + */ +public enum FopTagType { + START, + END; +} Index: src/java/org/apache/fop/render/odf/odt/Namespace.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/Namespace.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/Namespace.java (revision 0) @@ -0,0 +1,40 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt; + +/** + * Defines namespeces used for odf attributes. + */ +public final class Namespace { + + public static final String OFFICE = "urn:oasis:names:tc:opendocument:xmlns:office:1.0"; + + public static final String FO = "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"; + + public static final String XLINK = "http://www.w3.org/1999/xlink"; + + public static final String SVG = "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"; + + public static final String TABLE = "urn:oasis:names:tc:opendocument:xmlns:table:1.0"; + + public static final String STYLE = "urn:oasis:names:tc:opendocument:xmlns:style:1.0"; + + public static final String TEXT = "urn:oasis:names:tc:opendocument:xmlns:text:1.0"; + + private Namespace() { } +} Index: src/java/org/apache/fop/render/odf/odt/FopOdtConverter.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/FopOdtConverter.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/FopOdtConverter.java (revision 0) @@ -0,0 +1,115 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt; + +import java.io.OutputStream; +import java.util.Iterator; + +import org.odftoolkit.simple.TextDocument; + +import org.apache.fop.fo.FONode; + +import org.apache.fop.render.odf.FopOdfConverter; +import org.apache.fop.render.odf.FopTagType; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.tags.RootTag; +import org.apache.fop.render.odf.odt.tags.Tag; +import org.apache.fop.render.odf.odt.tags.TagFactory; + +/** + * Renderer that renders areas to odt. + */ +public class FopOdtConverter implements FopOdfConverter { + + TextDocument odt = null; + + private TagFactory factory = new TagFactory(); + + private Tag actualTag = null; + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void init() throws OdfException { + + try { + odt = TextDocument.newTextDocument(); + } catch (Exception e) { + throw new OdfException("Can't initialize the document", e); + } + + actualTag = new RootTag(odt); + } + + /** + * {@inheritDoc} + */ + public void writeToOutputStream(OutputStream os) { + + try { + odt.save(os); + } catch (Exception e) { + System.err.println(e.getMessage()); + e.printStackTrace(); + } + } + + /** + * {@inheritDoc} + */ + public void convertRecursively(FONode foNode) { + this.convert(foNode, FopTagType.START); + + if (foNode.getChildNodes() != null) { + for (Iterator it = foNode.getChildNodes(); it.hasNext();) { + FONode fn = (FONode) it.next(); + convertRecursively(fn); + } + } + + this.convert(foNode, FopTagType.END); + } + + /** + * Convert one tag to the element of odt. + * @param image the image which will be painted + * @param context the renderer context for the current renderer + */ + private void convert(FONode foNode, FopTagType type) { + if (type == FopTagType.START) { + try { + actualTag = factory.getTag(this, foNode, actualTag); + } catch (OdfException e1) { + e1.printStackTrace(); + } + try { + actualTag.execute(); + } catch (OdfException e) { + e.printStackTrace(); + } + } else if (type == FopTagType.END) { + try { + actualTag.closeIntercept(); + } catch (OdfException e) { + e.printStackTrace(); + } + actualTag = actualTag.getParent(); + } + } +} Index: src/java/org/apache/fop/render/odf/odt/tags/TableCellTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/TableCellTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/TableCellTag.java (revision 0) @@ -0,0 +1,138 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement; +import org.odftoolkit.odfdom.dom.element.style.StyleTableCellPropertiesElement; +import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement; +import org.odftoolkit.odfdom.pkg.OdfXMLFactory; + +import org.apache.fop.fo.flow.table.TableCell; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.Namespace; + +/** + * TableCell converter + */ +public class TableCellTag extends Tag { + + private TableCell tblCell = null; + + private TableTableCellElement tce = null; + + TableCellTag(Tag parent, TableCell tblCell) { + super(parent); + this.tblCell = tblCell; + } + + public TableCell getTableCell() { + return tblCell; + } + + public TableTableCellElement getTableCellElement() { + return tce; + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute() throws OdfException { + + try { + tce = (TableTableCellElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TableTableCellElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create table cell", e); + } + + StyleStyleElement sse = null; + try { + sse = (StyleStyleElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), StyleStyleElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create the style for new table cell", e); + } + + sse.setAttributeNS(Namespace.STYLE, "style:family", "table-cell"); + + StyleTableCellPropertiesElement stcpe = null; + + try { + stcpe = (StyleTableCellPropertiesElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), StyleTableCellPropertiesElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create style fot table cell", e); + } + + float borderSize = Math.round(((float)tblCell.getCommonBorderPaddingBackground().getBorderStartWidth(false)) / 100); + borderSize = borderSize / 10; + stcpe.setAttributeNS(Namespace.FO, "fo:border-left", Float.toString(borderSize) + "pt solid #000000"); + + borderSize = Math.round((float)tblCell.getCommonBorderPaddingBackground().getBorderEndWidth(false) / 100); + borderSize = borderSize / 10; + stcpe.setAttributeNS(Namespace.FO, "fo:border-right", Float.toString(borderSize) + "pt solid #000000"); + + borderSize = Math.round((float)tblCell.getCommonBorderPaddingBackground().getBorderBeforeWidth(false) / 100); + borderSize = borderSize / 10; + stcpe.setAttributeNS(Namespace.FO, "fo:border-top", Float.toString(borderSize) + "pt solid #000000"); + + borderSize = Math.round((float)tblCell.getCommonBorderPaddingBackground().getBorderAfterWidth(false) / 100); + borderSize = borderSize / 10; + stcpe.setAttributeNS(Namespace.FO, "fo:border-bottom", Float.toString(borderSize) + "pt solid #000000"); + + float paddingSize = Math.round((float)tblCell.getCommonBorderPaddingBackground().getPaddingLengthProperty(0).getLengthValue() / 100); + paddingSize = paddingSize / 10; + stcpe.setAttributeNS(Namespace.FO, "fo:padding-left", Float.toString(paddingSize) + "pt"); + + paddingSize = Math.round((float)tblCell.getCommonBorderPaddingBackground().getPaddingLengthProperty(1).getLengthValue() / 100); + paddingSize = paddingSize / 10; + stcpe.setAttributeNS(Namespace.FO, "fo:padding-top", Float.toString(paddingSize) + "pt"); + + paddingSize = Math.round((float)tblCell.getCommonBorderPaddingBackground().getPaddingLengthProperty(2).getLengthValue() / 100); + paddingSize = paddingSize / 10; + stcpe.setAttributeNS(Namespace.FO, "fo:padding-right", Float.toString(paddingSize) + "pt"); + + paddingSize = Math.round((float)tblCell.getCommonBorderPaddingBackground().getPaddingLengthProperty(3).getLengthValue() / 100); + paddingSize = paddingSize / 10; + stcpe.setAttributeNS(Namespace.FO, "fo:padding-bottom", Float.toString(paddingSize) + "pt"); + + sse.appendChild(stcpe); + + tce.setAttributeNS(Namespace.TABLE, "table:number-columns-spanned", Integer.toString(tblCell.getNumberColumnsSpanned())); + tce.setAttributeNS(Namespace.TABLE, "table:number-rows-spanned", Integer.toString(tblCell.getNumberRowsSpanned())); + + tce.setStyleName(this.appendNewStyle(sse)); + + parent.executeFromParent(this); + } + + @Override + public void execute(TableRowTag tag) throws OdfException { + try { + tag.getTableRow().appendChild(tce); + } catch (Exception e) { + throw new OdfException("Can't create table cell", e); + } + } + + public void executeFromParent(TagExecutable child) throws OdfException { + if (this != child) { + child.execute(this); + } + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/TableBodyTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/TableBodyTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/TableBodyTag.java (revision 0) @@ -0,0 +1,45 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.table.TableBody; +import org.apache.fop.render.odf.OdfException; + +/** + * TableBody converter + */ +public class TableBodyTag extends Tag { + + TableBodyTag(Tag parent, TableBody tblBody) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + parent.executeFromParent(child); + } +} Index: src/java/org/apache/fop/render/odf/odt/tags/InstreamForeignObjectTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/InstreamForeignObjectTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/InstreamForeignObjectTag.java (revision 0) @@ -0,0 +1,46 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.InstreamForeignObject; +import org.apache.fop.render.odf.OdfException; + +/** + * InstreamForeignObject converter + */ +public class InstreamForeignObjectTag extends Tag { + + InstreamForeignObjectTag(Tag parent, InstreamForeignObject foNode) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/PageNumberCitationTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/PageNumberCitationTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/PageNumberCitationTag.java (revision 0) @@ -0,0 +1,46 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.PageNumberCitation; +import org.apache.fop.render.odf.OdfException; + +/** + * PageNumberCitation converter + */ +public class PageNumberCitationTag extends Tag { + + PageNumberCitationTag(Tag parent, PageNumberCitation foNode) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/LeaderTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/LeaderTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/LeaderTag.java (revision 0) @@ -0,0 +1,49 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.Leader; +import org.apache.fop.render.odf.OdfException; + +/** + * Leader converter + */ +public class LeaderTag extends Tag { + + protected LeaderTag(Tag parent, Leader foNode) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { + // TODO Auto-generated method stub + + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/TagFactory.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/TagFactory.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/TagFactory.java (revision 0) @@ -0,0 +1,116 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.FONode; +import org.apache.fop.fo.FOText; +import org.apache.fop.fo.flow.BasicLink; +import org.apache.fop.fo.flow.Block; +import org.apache.fop.fo.flow.BlockContainer; +import org.apache.fop.fo.flow.Character; +import org.apache.fop.fo.flow.ExternalGraphic; +import org.apache.fop.fo.flow.Footnote; +import org.apache.fop.fo.flow.FootnoteBody; +import org.apache.fop.fo.flow.Inline; +import org.apache.fop.fo.flow.InstreamForeignObject; +import org.apache.fop.fo.flow.Leader; +import org.apache.fop.fo.flow.ListBlock; +import org.apache.fop.fo.flow.ListItem; +import org.apache.fop.fo.flow.ListItemBody; +import org.apache.fop.fo.flow.ListItemLabel; +import org.apache.fop.fo.flow.PageNumber; +import org.apache.fop.fo.flow.PageNumberCitation; +import org.apache.fop.fo.flow.table.Table; +import org.apache.fop.fo.flow.table.TableBody; +import org.apache.fop.fo.flow.table.TableCell; +import org.apache.fop.fo.flow.table.TableColumn; +import org.apache.fop.fo.flow.table.TableFooter; +import org.apache.fop.fo.flow.table.TableHeader; +import org.apache.fop.fo.flow.table.TableRow; +import org.apache.fop.fo.pagination.Flow; +import org.apache.fop.fo.pagination.PageSequence; +import org.apache.fop.fo.pagination.StaticContent; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.FopOdtConverter; + +/** + * Factory that creates tag converters + */ +public class TagFactory { + + public Tag getTag(FopOdtConverter converter, FONode foNode, Tag actualTag) throws OdfException { + if (foNode instanceof PageSequence) { + return new PageSequenceTag(actualTag, (PageSequence) foNode, converter); + } else if (foNode instanceof Flow) { + return new FlowTag(actualTag, (Flow) foNode); + } else if (foNode instanceof StaticContent) { + return new StaticContentTag(actualTag, (StaticContent) foNode); + } else if (foNode instanceof ExternalGraphic) { + return new ExternalGraphicTag(actualTag, (ExternalGraphic) foNode); + } else if (foNode instanceof InstreamForeignObject) { + return new InstreamForeignObjectTag(actualTag, (InstreamForeignObject) foNode); + } else if (foNode instanceof Block) { + return new BlockTag(actualTag, (Block) foNode); + } else if (foNode instanceof BlockContainer) { + return new BlockContainerTag(actualTag, (BlockContainer) foNode); + } else if (foNode instanceof BasicLink) { + return new BasicLinkTag(actualTag, (BasicLink) foNode); + } else if (foNode instanceof Inline) { + return new InlineTag(actualTag, (Inline) foNode); + } else if (foNode instanceof FOText) { + return new Text(actualTag, (FOText) foNode); + } else if (foNode instanceof Character) { + return new CharacterTag(actualTag, (Character) foNode); + } else if (foNode instanceof PageNumber) { + return new PageNumberTag(actualTag, (PageNumber) foNode); + } else if (foNode instanceof Footnote) { + return new FootnoteTag(actualTag, (Footnote) foNode); + } else if (foNode instanceof FootnoteBody) { + return new FootnoteBodyTag(actualTag, (FootnoteBody) foNode); + } else if (foNode instanceof ListBlock) { + return new ListBlockTag(actualTag, (ListBlock) foNode); + } else if (foNode instanceof ListItemBody) { + return new ListItemBodyTag(actualTag, (ListItemBody) foNode); + } else if (foNode instanceof ListItem) { + return new ListItemTag(actualTag, (ListItem) foNode, converter); + } else if (foNode instanceof ListItemLabel) { + return new ListItemLabelTag(actualTag, (ListItemLabel) foNode); + } else if (foNode instanceof Table) { + return new TableTag(actualTag, (Table) foNode); + } else if (foNode instanceof TableHeader) { + return new TableHeaderTag(actualTag, (TableHeader) foNode); + } else if (foNode instanceof TableFooter) { + return new TableFooterTag(actualTag, (TableFooter) foNode); + } else if (foNode instanceof TableBody) { + return new TableBodyTag(actualTag, (TableBody) foNode); + } else if (foNode instanceof TableColumn) { + return new TableColumnTag(actualTag, (TableColumn) foNode); + } else if (foNode instanceof TableRow) { + return new TableRowTag(actualTag, (TableRow) foNode); + } else if (foNode instanceof TableCell) { + return new TableCellTag(actualTag, (TableCell) foNode); + } else if (foNode instanceof Leader) { + return new LeaderTag(actualTag, (Leader) foNode); + } else if (foNode instanceof PageNumberCitation) { + return new PageNumberCitationTag(actualTag, (PageNumberCitation) foNode); + } else { + return new UnknownTag(actualTag); + } + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/ListItemTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/ListItemTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/ListItemTag.java (revision 0) @@ -0,0 +1,90 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.odftoolkit.odfdom.dom.element.text.TextListItemElement; +import org.odftoolkit.odfdom.pkg.OdfXMLFactory; + +import org.apache.fop.fo.flow.ListItem; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.FopOdtConverter; + +/** + * ListItem converter + */ +public class ListItemTag extends Tag { + + private ListItem xslfoListItem = null; + + private TextListItemElement tlie = null; + + private FopOdtConverter converter = null; + + ListItemTag(Tag parent, ListItem foNode, FopOdtConverter converter) { + super(parent); + this.xslfoListItem = foNode; + this.converter = converter; + } + + public ListItem getXslfoListItem() { + return xslfoListItem; + } + + public TextListItemElement getTextListItemElement() { + return tlie; + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute() throws OdfException { + try { + tlie = (TextListItemElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TextListItemElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create List Item", e); + } + + parent.executeFromParent(this); + + converter.convertRecursively(xslfoListItem.getBody()); + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute(ListBlockTag tag) throws OdfException { + try { + tag.getTextListElement().appendChild(tlie); + } catch (Exception e) { + throw new OdfException("Can't create List Item", e); + } + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/Tag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/Tag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/Tag.java (revision 0) @@ -0,0 +1,221 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import java.util.Map; +import java.util.Random; +import java.util.Vector; + +import org.odftoolkit.odfdom.dom.OdfContentDom; +import org.odftoolkit.odfdom.dom.element.style.StyleFontFaceElement; +import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement; +import org.odftoolkit.odfdom.dom.element.text.TextPElement; +import org.odftoolkit.odfdom.pkg.OdfElement; +import org.odftoolkit.odfdom.pkg.OdfXMLFactory; +import org.odftoolkit.simple.TextDocument; +import org.odftoolkit.simple.text.Paragraph; +import org.w3c.dom.DOMException; +import org.w3c.dom.Node; + +import org.apache.fop.fo.pagination.Flow; +import org.apache.fop.render.odf.FopTagType; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.Namespace; +import org.apache.fop.render.odf.odt.Style; + +/** + * Tag converter abstract class. + */ +public abstract class Tag implements TagExecutable, TagExecutor { + + protected Tag parent = null; + + protected Style currentStyle = null; + + private static Random rand = new Random(); + + protected Tag(Tag parent) { + this.parent = parent; + if (parent != null) { + currentStyle = new Style(parent.getStyle()); + } else { + currentStyle = new Style(); + } + } + + protected TextDocument getOdt() { + return parent != null ? parent.getOdt() : null; + } + + protected Map getUsedStyles() { + return parent.getUsedStyles(); + } + + protected Vector getUsedFonts() { + return parent.getUsedFonts(); + } + + protected void registerFont(String font) throws OdfException { + if (!this.getUsedFonts().contains(font)) { + StyleFontFaceElement sffe = null; + try { + sffe = (StyleFontFaceElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), StyleFontFaceElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create new style.", e); + } + + if (isOnlyOneParagraph(this.getOdt())) { + removeLastParagraph(this.getOdt()); + } + + sffe.setStyleNameAttribute(font); + sffe.setAttributeNS(Namespace.SVG, "svg:font-family", font); + try { + this.getOdt().getContentDom().getElementsByTagNameNS(Namespace.OFFICE, "font-face-decls").item(0).appendChild(sffe); + } catch (Exception e) { + throw new OdfException("Can't register new font", e); + } + this.getUsedFonts().add(font); + } + } + + private boolean isOnlyOneParagraph(TextDocument textDocument) { + int i = 0; + try { + i = textDocument.getContentDom().getElementsByTagNameNS(Namespace.TEXT, "p").getLength(); + } catch (Exception e) { + return false; + } + return i == 1 ? true : false; + } + + private void removeLastParagraph(TextDocument textDocument) { + try { + textDocument.getContentDom().getElementsByTagNameNS(Namespace.OFFICE, "text").item(0).removeChild(textDocument.getContentDom().getElementsByTagNameNS(Namespace.TEXT, "p").item(0)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + protected Style getStyle() { + return this.currentStyle; + } + + public Tag getParent() { + return parent; + } + + protected Paragraph getParagraph() throws OdfException { + return parent != null ? parent.getParagraph() : null; + } + + protected OdfElement getParagraphContainer() { + return parent != null ? parent.getParagraphContainer() : null; + } + + protected Paragraph newParagraph(Node paragraphContainer) throws OdfException { + + TextPElement tpe = null; + + try { + tpe = (TextPElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TextPElement.ELEMENT_NAME); + } catch (Exception e1) { + throw new OdfException("Can't create new style.", e1); + } + + try { + paragraphContainer.appendChild(tpe); + } catch (DOMException e) { + throw new OdfException("Can't create new paragraph", e); + } + + return Paragraph.getInstanceof(tpe); + } + + protected String appendNewStyle(StyleStyleElement sse) throws OdfException { + + sse.setAttributeNS(Namespace.STYLE, "style:name", ""); + + String styleName = Style.getStyleName(this.getUsedStyles(), sse); + + if (styleName == null) { + styleName = generateName(); + sse.setAttributeNS(Namespace.STYLE, "style:name", styleName); + + try { + OdfContentDom odf = this.getOdt().getContentDom(); + Node odfstyles = odf.getElementsByTagNameNS(Namespace.OFFICE, "automatic-styles").item(0); + odfstyles.appendChild(sse); + } catch (Exception e) { + throw new OdfException("Can't create new style.", e); + } + + this.getUsedStyles().put(styleName, sse); + } + + return styleName; + } + + private String generateName() { + return Integer.toString(rand.nextInt()); + } + + public abstract void execute() throws OdfException; + + public Tag execute(Flow fl, FopTagType type) { + return this; + } + + public void closeIntercept() throws OdfException { } + + public void execute(Tag tag) throws OdfException { + } + + public void execute(BlockTag tag) throws OdfException { + this.execute((Tag) tag); + } + + public void execute(InlineTag tag) throws OdfException { + this.execute((Tag) tag); + } + + public void execute(BasicLinkTag tag) throws OdfException { + this.execute((Tag) tag); + } + + public void execute(TableTag tag) throws OdfException { + this.execute((Tag) tag); + } + + public void execute(TableRowTag tag) throws OdfException { + this.execute((Tag) tag); + } + + public void execute(TableCellTag tag) throws OdfException { + this.execute((Tag) tag); + } + + public void execute(ListBlockTag tag) throws OdfException { + this.execute((Tag) tag); + } + + public void execute(ListItemTag tag) throws OdfException { + this.execute((Tag) tag); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/Text.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/Text.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/Text.java (revision 0) @@ -0,0 +1,70 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.FOText; +import org.apache.fop.render.odf.OdfException; + +/** + * Text converter + */ +public class Text extends Tag { + + private String string = null; + + Text(Tag parent, FOText textFop) { + super(parent); + this.string = textFop.getCharSequence().toString(); + } + + @Override + public void execute() throws OdfException { + + if (string.length() == 0) { + return; + } + + parent.executeFromParent(this); + } + + @Override + public void execute(Tag parent) throws OdfException { + this.getParagraph().appendTextContent(string, false); + } + + @Override + public void execute(BlockTag parent) throws OdfException { + this.getParagraph().appendTextContent(string, false); + } + + @Override + public void execute(InlineTag parent) { + parent.getTextSpanElement().setTextContent(string); + } + + @Override + public void execute(BasicLinkTag parent) { + parent.getLinkElement().setTextContent(string); + } + + public void executeFromParent(TagExecutable child) throws OdfException { + if (this != child) { + child.execute(this); + } + } +} Index: src/java/org/apache/fop/render/odf/odt/tags/TableFooterTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/TableFooterTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/TableFooterTag.java (revision 0) @@ -0,0 +1,39 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.table.TableFooter; +import org.apache.fop.render.odf.OdfException; + +/** + * TableFooter converter + */ +public class TableFooterTag extends Tag { + + TableFooterTag(Tag parent, TableFooter tblFooter) { + super(parent); + } + + @Override + public void execute() { } + + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/BasicLinkTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/BasicLinkTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/BasicLinkTag.java (revision 0) @@ -0,0 +1,108 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.odftoolkit.odfdom.dom.element.text.TextAElement; +import org.odftoolkit.odfdom.dom.element.text.TextBookmarkRefElement; +import org.odftoolkit.odfdom.pkg.OdfElement; +import org.odftoolkit.odfdom.pkg.OdfXMLFactory; + +import org.w3c.dom.DOMException; + +import org.apache.fop.fo.flow.BasicLink; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.Namespace; +import org.apache.fop.render.odf.odt.Style; +import org.apache.fop.render.odf.odt.Style.Params; + +/** + * VasicLink converter + */ +public class BasicLinkTag extends Tag { + + BasicLink basicLink = null; + + OdfElement oe = null; + + /** + * Constructor. + */ + public BasicLinkTag(Tag parent, BasicLink basicLink) { + super(parent); + this.basicLink = basicLink; + + this.currentStyle.getParameters().put(Params.FONT_NAME, basicLink.getCommonFont().getFirstFontFamily().split(",")[0]); + this.currentStyle.getParameters().put(Params.FONT_STYLE, Style.fopFontToOdfFontStyle( basicLink.getCommonFont())); + this.currentStyle.getParameters().put(Params.FONT_WEIGHT, Style.fopFontToOdfFontWeight( basicLink.getCommonFont())); + this.currentStyle.getParameters().put(Params.FONT_SIZE, Style.fopLengthToPt( basicLink.getCommonFont().getFontSize())); + this.currentStyle.getParameters().put(Params.COLOR, Style.awtColorToOdfColor( basicLink.getColor())); + } + + public OdfElement getLinkElement() { + return oe; + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { + if (basicLink.hasExternalDestination()) { + try { + oe = (TextAElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TextAElement.ELEMENT_NAME); + } catch (Exception e1) { + e1.printStackTrace(); + } + String url = basicLink.getExternalDestination(); + if (url.startsWith("url")) { + url = url.substring(5, url.length() - 2); + } + oe.setAttributeNS(Namespace.XLINK, "xlink:href", url); + oe.setAttributeNS(Namespace.XLINK, "xlink:type", "simple"); + } else if (basicLink.hasInternalDestination()) { + try { + oe = (TextBookmarkRefElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TextBookmarkRefElement.ELEMENT_NAME); + } catch (Exception e) { + e.printStackTrace(); + } + oe.setAttributeNS(Namespace.TEXT, "text:ref-name", basicLink.getInternalDestination()); + oe.setAttributeNS(Namespace.TEXT, "text:reference-format", "page"); + } + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void closeIntercept() throws OdfException { + try { + this.getParagraph().getOdfElement().appendChild(oe); + } catch (DOMException e) { + e.printStackTrace(); + } + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } +} Index: src/java/org/apache/fop/render/odf/odt/tags/StaticTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/StaticTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/StaticTag.java (revision 0) @@ -0,0 +1,37 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.render.odf.OdfException; + +/** + * + */ +public class StaticTag extends Tag { + + protected StaticTag(Tag parent) { + super(parent); + } + + @Override + public void execute() { } + + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } +} Index: src/java/org/apache/fop/render/odf/odt/tags/TableTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/TableTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/TableTag.java (revision 0) @@ -0,0 +1,98 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement; +import org.odftoolkit.odfdom.dom.element.table.TableTableElement; +import org.odftoolkit.odfdom.pkg.OdfXMLFactory; +import org.w3c.dom.DOMException; + + +import org.apache.fop.fo.flow.table.Table; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.Namespace; + +/** + * Table converter + */ +public class TableTag extends Tag { + + private Table table = null; + + private TableTableElement tte = null; + + TableTag(Tag parent, Table table) { + super(parent); + this.table = table; + } + + public TableTableElement getTable() { + return tte; + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute() throws OdfException { + + try { + tte = (TableTableElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TableTableElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create new table.", e); + } + tte.setAttributeNS(Namespace.TABLE, "table:align", "margins"); + + if (table.getColumns().size() > 1) { + TableTableColumnElement tcne = null; + try { + tcne = (TableTableColumnElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TableTableColumnElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create new table column.", e); + } + tcne.setAttributeNS(Namespace.TABLE, + "table:number-columns-repeated", + Integer.toString(table.getColumns().size())); + + try { + tte.appendChild(tcne); + } catch (Exception e) { + throw new OdfException("Can't create table.", e); + } + } + } + + /** + * {@inheritDoc} + */ + @Override + public void closeIntercept() { + try { + this.getOdt().getTableContainerElement().appendChild(tte); + } catch (DOMException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } +} Index: src/java/org/apache/fop/render/odf/odt/tags/UnknownTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/UnknownTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/UnknownTag.java (revision 0) @@ -0,0 +1,38 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.render.odf.OdfException; + +/** + * Unknown tag converter + */ +public class UnknownTag extends Tag { + + protected UnknownTag(Tag parent) { + super(parent); + } + + @Override + public void execute() { } + + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/FootnoteBodyTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/FootnoteBodyTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/FootnoteBodyTag.java (revision 0) @@ -0,0 +1,46 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.FootnoteBody; +import org.apache.fop.render.odf.OdfException; + +/** + * FootnoteBodyConverter + */ +public class FootnoteBodyTag extends Tag { + + protected FootnoteBodyTag(Tag parent, FootnoteBody foNode) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/BlockContainerTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/BlockContainerTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/BlockContainerTag.java (revision 0) @@ -0,0 +1,51 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.BlockContainer; +import org.apache.fop.render.odf.OdfException; + +/** + * BlockContainer converter + */ +public class BlockContainerTag extends Tag { + + /** + * Constructor + */ + protected BlockContainerTag(Tag parent, BlockContainer foNode) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { + + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/PageSequenceTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/PageSequenceTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/PageSequenceTag.java (revision 0) @@ -0,0 +1,113 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.pagination.PageSequence; +import org.apache.fop.fo.pagination.PageSequenceMaster; +import org.apache.fop.fo.pagination.SimplePageMaster; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.FopOdtConverter; + +/** + * Defines a number of standard constants (keys) for use by the RendererContext class. + */ +public class PageSequenceTag extends Tag { + + protected PageSequence pageSeq = null; + + protected FopOdtConverter converter = null; + + protected SimplePageMaster pagemaster = null; + + PageSequenceTag(Tag parent, PageSequence pageSeq, FopOdtConverter converter) { + super(parent); + this.pageSeq = pageSeq; + this.converter = converter; + + String reference = pageSeq.getMasterReference(); + this.pagemaster = pageSeq.getRoot().getLayoutMasterSet().getSimplePageMaster(reference); + if (pagemaster == null) { + PageSequenceMaster master = pageSeq.getRoot().getLayoutMasterSet().getPageSequenceMaster(reference); + this.pagemaster = master.getNextSimplePageMaster(false, false, false, false, ""); + } + + //if(!isFirstPageSequence()) this.getOdt().addPageBreak(); + + //read page size and margins, if specified + //only simple-page-master supported, so pagemaster may be null + + //builderContext.pushContainer(sect); + + //Calculate usable page width for this flow + //int useAblePageWidth = pagemaster.getPageWidth().getValue() + // - pagemaster.getCommonMarginBlock().marginLeft.getValue() + // - pagemaster.getCommonMarginBlock().marginRight.getValue() + //percentManager.setDimension(pageSeq, useAblePageWidth); + + //bHeaderSpecified = false; + //bFooterSpecified = false; + + /*Region regionBefore = pagemaster.getRegion(Constants.FO_REGION_BEFORE); + if (regionBefore != null) { + FONode staticBefore = (FONode) pageSequence.getFlowMap().get(regionBefore.getRegionName()); + if (staticBefore != null) recurseFONode(staticBefore); + } + + Region regionAfter = pagemaster.getRegion(Constants.FO_REGION_AFTER); + if (regionAfter != null) { + FONode staticAfter = (FONode) pageSequence.getFlowMap().get(regionAfter.getRegionName()); + if (staticAfter != null) recurseFONode(staticAfter); + }*/ + } + + //private boolean isFirstPageSequence() { + // TODO Auto-generated method stub + // return false; + //} + + /** + * {@inheritDoc} + */ + @Override + public void execute() { + setMargins(); + converter.convertRecursively(pageSeq.getMainFlow()); + } + + private void setMargins() { + //int a = this.pagemaster.getPageWidth().getValue(); + //int b = this.pagemaster.getPageHeight().getValue(); + //int c = this.pagemaster.getCommonMarginBlock().marginLeft.getValue(); + //int d = this.pagemaster.getCommonMarginBlock().marginRight.getValue(); + } + + /** + * {@inheritDoc} + */ + @Override + public void closeIntercept() { + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } +} Index: src/java/org/apache/fop/render/odf/odt/tags/TableColumnTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/TableColumnTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/TableColumnTag.java (revision 0) @@ -0,0 +1,46 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.table.TableColumn; +import org.apache.fop.render.odf.OdfException; + +/** + * TableColumn converter + */ +public class TableColumnTag extends Tag { + + TableColumnTag(Tag parent, TableColumn tblColumn) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/ListItemBodyTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/ListItemBodyTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/ListItemBodyTag.java (revision 0) @@ -0,0 +1,46 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.ListItemBody; +import org.apache.fop.render.odf.OdfException; + +/** + * ListItemBody converter + */ +public class ListItemBodyTag extends Tag { + + protected ListItemBodyTag(Tag parent, ListItemBody foNode) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + parent.executeFromParent(child); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/InlineTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/InlineTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/InlineTag.java (revision 0) @@ -0,0 +1,121 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.odftoolkit.odfdom.dom.OdfContentDom; +import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement; +import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement; +import org.odftoolkit.odfdom.dom.element.text.TextSpanElement; +import org.odftoolkit.odfdom.pkg.OdfXMLFactory; +import org.w3c.dom.Node; + +import org.apache.fop.fo.flow.Inline; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.Namespace; +import org.apache.fop.render.odf.odt.Style; +import org.apache.fop.render.odf.odt.Style.Params; + +/** + * Inline converter + */ +public class InlineTag extends Tag { + + protected TextSpanElement tse = null; + + InlineTag(Tag parent, Inline inl) throws OdfException { + super(parent); + + this.currentStyle.getParameters().put(Params.FONT_NAME, inl.getCommonFont().getFirstFontFamily().split(",")[0]); + this.currentStyle.getParameters().put(Params.FONT_STYLE, Style.fopFontToOdfFontStyle( inl.getCommonFont())); + this.currentStyle.getParameters().put(Params.FONT_WEIGHT, Style.fopFontToOdfFontWeight( inl.getCommonFont())); + this.currentStyle.getParameters().put(Params.FONT_SIZE, Style.fopLengthToPt( inl.getCommonFont().getFontSize())); + this.currentStyle.getParameters().put(Params.COLOR, Style.awtColorToOdfColor( inl.getColor())); + + registerFont(this.currentStyle.getParameters().get(Params.FONT_NAME)); + } + + public TextSpanElement getTextSpanElement() { + return tse; + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute() throws OdfException { + try { + tse = (TextSpanElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TextSpanElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create text span.", e); + } + + StyleStyleElement sse = null; + try { + sse = (StyleStyleElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), StyleStyleElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create new style for text span.", e); + } + + sse.setAttributeNS(Namespace.STYLE, "style:family", "text"); + + StyleTextPropertiesElement stpe = null; + + try { + stpe = (StyleTextPropertiesElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), StyleTextPropertiesElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create new style for text span.", e); + } + + stpe.setAttributeNS(Namespace.FO, "fo:font-size", this.currentStyle.get(Params.FONT_SIZE)); + stpe.setAttributeNS(Namespace.FO, "fo:font-weight", this.currentStyle.get(Params.FONT_WEIGHT)); + stpe.setAttributeNS(Namespace.FO, "fo:font-style", this.currentStyle.get(Params.FONT_STYLE)); + stpe.setAttributeNS(Namespace.FO, "fo:color", this.currentStyle.get(Params.COLOR)); + stpe.setAttributeNS(Namespace.STYLE, "style:font-name", this.currentStyle.get(Params.FONT_NAME)); + + sse.appendChild(stpe); + + try { + OdfContentDom odf = this.getOdt().getContentDom(); + Node odfstyles = odf.getElementsByTagNameNS(Namespace.OFFICE, "automatic-styles").item(0); + odfstyles.appendChild(sse); + } catch (Exception e) { + throw new OdfException("Can't create new style.", e); + } + + tse.setStyleName(this.appendNewStyle(sse)); + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void closeIntercept() throws OdfException { + this.getParagraph().getOdfElement().appendChild(tse); + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/CharacterTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/CharacterTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/CharacterTag.java (revision 0) @@ -0,0 +1,46 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.Character; +import org.apache.fop.render.odf.OdfException; + +/** + * Character converter + */ +public class CharacterTag extends Tag { + + CharacterTag(Tag actualTag, Character foNode) { + super(actualTag); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/FootnoteTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/FootnoteTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/FootnoteTag.java (revision 0) @@ -0,0 +1,52 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.Footnote; +import org.apache.fop.render.odf.OdfException; + +/** + * Footnote converter + */ +public class FootnoteTag extends Tag { + + FootnoteTag(Tag parent, Footnote foNode) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { + /*Footnote fn = (Footnote)foNode; + + recurseFONode(fn.getFootnoteCitation()); + recurseFONode(fn.getFootnoteBody()); */ + + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/FlowTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/FlowTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/FlowTag.java (revision 0) @@ -0,0 +1,45 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.pagination.Flow; +import org.apache.fop.render.odf.OdfException; + +/** + * Flow converter. + */ +public class FlowTag extends Tag { + + FlowTag(Tag parent, Flow fl) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } +} Index: src/java/org/apache/fop/render/odf/odt/tags/PageNumberTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/PageNumberTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/PageNumberTag.java (revision 0) @@ -0,0 +1,46 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.PageNumber; +import org.apache.fop.render.odf.OdfException; + +/** + * PageNumber converter + */ +public class PageNumberTag extends Tag { + + PageNumberTag(Tag parent, PageNumber foNode) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/BlockTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/BlockTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/BlockTag.java (revision 0) @@ -0,0 +1,251 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import java.util.Iterator; + +import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement; +import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement; +import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement; +import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement; +import org.odftoolkit.odfdom.dom.element.text.TextBookmarkElement; +import org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement; +import org.odftoolkit.odfdom.dom.element.text.TextListItemElement; +import org.odftoolkit.odfdom.pkg.OdfElement; +import org.odftoolkit.odfdom.pkg.OdfXMLFactory; +import org.odftoolkit.simple.text.Paragraph; + +import org.apache.fop.fo.FONode; +import org.apache.fop.fo.FOText; +import org.apache.fop.fo.flow.Block; +import org.apache.fop.layoutmgr.BlockLayoutManager; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.Namespace; +import org.apache.fop.render.odf.odt.Style; +import org.apache.fop.render.odf.odt.Style.Params; +/** + * Block converter + */ +public class BlockTag extends Tag { + + private Block bl = null; + + private Paragraph paragraph = null; + + private OdfElement paragraphContainer = null; + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + protected Paragraph getParagraph() throws OdfException { + if (this.paragraph != null) { + return this.paragraph; + } else { + return parent.getParagraph(); + } + } + + /** + * {@inheritDoc} + */ + @Override + protected OdfElement getParagraphContainer() { + if (paragraphContainer != null) { + return this.paragraphContainer; + } else { + return parent.getParagraphContainer(); + } + } + + /** + * Constructor + * @throws OdfException + */ + BlockTag(Tag parent, Block bl) throws OdfException { + super(parent); + this.bl = bl; + this.currentStyle.getParameters().put(Params.FONT_NAME, bl.getCommonFont().getFirstFontFamily().split(",")[0]); + this.currentStyle.getParameters().put(Params.FONT_STYLE, Style.fopFontToOdfFontStyle( bl.getCommonFont())); + this.currentStyle.getParameters().put(Params.FONT_WEIGHT, Style.fopFontToOdfFontWeight( bl.getCommonFont())); + this.currentStyle.getParameters().put(Params.FONT_SIZE, Style.fopLengthToPt( bl.getCommonFont().getFontSize())); + this.currentStyle.getParameters().put(Params.COLOR, Style.awtColorToOdfColor( bl.getColor())); + this.currentStyle.getParameters().put(Params.TEXT_ALIGN, Style.fopAlignToOdfAlign( bl.getTextAlign())); + this.currentStyle.getParameters().put(Params.SPACE_BEFORE, Style.fopSpaceBeforeToPt( bl.getCommonMarginBlock().spaceBefore, new BlockLayoutManager(bl))); + this.currentStyle.getParameters().put(Params.SPACE_AFTER, Style.fopSpaceAfterToPt( bl.getCommonMarginBlock().spaceAfter, new BlockLayoutManager(bl))); + this.currentStyle.getParameters().put(Params.MARGIN_LEFT, Style.fopLengthToPt( bl.getCommonMarginBlock().marginLeft)); + this.currentStyle.getParameters().put(Params.MARGIN_RIGHT, Style.fopLengthToPt( bl.getCommonMarginBlock().marginRight)); + this.currentStyle.getParameters().put(Params.BACKGROUND_COLOR, Style.awtColorToString( bl.getCommonBorderPaddingBackground().backgroundColor)); + + registerFont(this.currentStyle.getParameters().get(Params.FONT_NAME)); + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute() throws OdfException { + parent.executeFromParent(this); + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute(Tag tag) throws OdfException { + + if (!bl.hasChildren()) { + addLineBreak(); + } else { + if (!childrenAreOnlyBlocks(this.bl)) { + this.paragraph = this.newParagraph(parent.getParagraphContainer()); + + if (bl.getId() != null) { + insertBookmark(bl.getId()); + } + + StyleStyleElement sse = null; + try { + sse = (StyleStyleElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), StyleStyleElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create new pragraph.", e); + } + + sse.setAttributeNS(Namespace.STYLE, "style:family", "paragraph"); + + StyleParagraphPropertiesElement sppe = null; + try { + sppe = (StyleParagraphPropertiesElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), StyleParagraphPropertiesElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create new pragraph.", e); + } + + sppe.setAttributeNS(Namespace.FO, "fo:margin-top", this.currentStyle.get(Params.SPACE_BEFORE)); + sppe.setAttributeNS(Namespace.FO, "fo:margin-bottom", this.currentStyle.get(Params.SPACE_AFTER)); + sppe.setAttributeNS(Namespace.FO, "fo:margin-left", this.currentStyle.get(Params.MARGIN_LEFT)); + sppe.setAttributeNS(Namespace.FO, "fo:margin-right", this.currentStyle.get(Params.MARGIN_RIGHT)); + sppe.setAttributeNS(Namespace.FO, "fo:background-color", this.currentStyle.get(Params.BACKGROUND_COLOR)); + sppe.setAttributeNS(Namespace.FO, "fo:text-align", this.currentStyle.get(Params.TEXT_ALIGN)); + sse.appendChild(sppe); + + StyleTextPropertiesElement stpe = null; + + try { + stpe = (StyleTextPropertiesElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), StyleTextPropertiesElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create new pragraph.", e); + } + + stpe.setAttributeNS(Namespace.STYLE, "style:font-name", this.currentStyle.get(Params.FONT_NAME)); + stpe.setAttributeNS(Namespace.FO, "fo:color", this.currentStyle.get(Params.COLOR)); + stpe.setAttributeNS(Namespace.FO, "fo:font-size", this.currentStyle.get(Params.FONT_SIZE)); + stpe.setAttributeNS(Namespace.FO, "fo:font-style", this.currentStyle.get(Params.FONT_STYLE)); + stpe.setAttributeNS(Namespace.FO, "fo:font-weight", this.currentStyle.get(Params.FONT_WEIGHT)); + + sse.appendChild(stpe); + + this.paragraph.getOdfElement().setStyleName(this.appendNewStyle(sse)); + } + } + } + + private void insertBookmark(String id) throws OdfException { + TextBookmarkElement tbe = null; + try { + tbe = (TextBookmarkElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TextBookmarkElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create link intern.", e); + } + tbe.setAttributeNS(Namespace.TEXT, "text:name", id); + this.paragraph.getOdfElement().appendChild(tbe); + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute(TableCellTag tag) throws OdfException { + TableTableCellElement ttce = tag.getTableCellElement(); + + this.paragraphContainer = ttce; + + if (!childrenAreOnlyBlocks(this.bl)) { + this.paragraph = this.newParagraph(this.paragraphContainer); + } + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute(ListItemTag tag) throws OdfException { + TextListItemElement tlie = tag.getTextListItemElement(); + + this.paragraphContainer = tlie; + + if (!childrenAreOnlyBlocks(this.bl)) { + this.paragraph = this.newParagraph(this.paragraphContainer); + } + } + + private void addLineBreak() throws OdfException { + TextLineBreakElement tlb = null; + try { + tlb = (TextLineBreakElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TextLineBreakElement.ELEMENT_NAME); + } catch (Exception e) { + e.printStackTrace(); + } + + this.getParagraph().getOdfElement().appendChild(tlb); + } + + private boolean childrenAreOnlyBlocks(Block bl) { + + if (bl.hasChildren()) { + for (Iterator it = bl.getChildNodes(); it.hasNext();) { + FONode next = (FONode) it.next(); + if (!(next instanceof Block) ) { + if (next instanceof FOText) { + if ( ((FOText) next).length() != 0) { + return false; + } + } else { + return false; + } + } + } + } else { + return false; + } + + return true; + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } +} Index: src/java/org/apache/fop/render/odf/odt/tags/StaticContentTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/StaticContentTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/StaticContentTag.java (revision 0) @@ -0,0 +1,46 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.pagination.StaticContent; +import org.apache.fop.render.odf.OdfException; + +/** + * + */ +public class StaticContentTag extends Tag { + + protected StaticContentTag(Tag parent, StaticContent foNode) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/ListItemLabelTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/ListItemLabelTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/ListItemLabelTag.java (revision 0) @@ -0,0 +1,46 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.ListItemLabel; +import org.apache.fop.render.odf.OdfException; + +/** + * ListItemLabel converter + */ +public class ListItemLabelTag extends Tag { + + ListItemLabelTag(Tag parent, ListItemLabel foNode) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/RootTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/RootTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/RootTag.java (revision 0) @@ -0,0 +1,93 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import java.util.HashMap; +import java.util.Map; +import java.util.Vector; + +import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement; +import org.odftoolkit.odfdom.pkg.OdfElement; +import org.odftoolkit.simple.TextDocument; +import org.odftoolkit.simple.text.Paragraph; + +import org.apache.fop.render.odf.OdfException; + +/** + * + */ +public class RootTag extends Tag { + + private TextDocument outputOdt = null; + + private Map usedStyles = new HashMap(); + + private Vector usedFonts = new Vector(); + + private Paragraph paragraph = null; + + public RootTag(TextDocument outputOdt) { + super(null); + this.outputOdt = outputOdt; + } + + protected TextDocument getOdt() { + return outputOdt; + } + + @Override + public Map getUsedStyles() { + return usedStyles; + } + + @Override + public Vector getUsedFonts() { + return usedFonts; + } + + @Override + protected Paragraph getParagraph() throws OdfException { + this.paragraph = this.newParagraph(getParagraphContainer()); + return this.paragraph; + } + + @Override + protected OdfElement getParagraphContainer() { + try { + return outputOdt.getContentRoot(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/TableHeaderTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/TableHeaderTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/TableHeaderTag.java (revision 0) @@ -0,0 +1,46 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.fo.flow.table.TableHeader; +import org.apache.fop.render.odf.OdfException; + +/** + * TableHeader converter + */ +public class TableHeaderTag extends Tag { + + TableHeaderTag(Tag parent, TableHeader tblHeader) { + super(parent); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute() { } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/ExternalGraphicTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/ExternalGraphicTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/ExternalGraphicTag.java (revision 0) @@ -0,0 +1,251 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; +import java.util.Random; + +import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement; +import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement; +import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase; +import org.odftoolkit.odfdom.pkg.OdfXMLFactory; + +import org.apache.commons.io.IOUtils; + +import org.apache.xmlgraphics.image.loader.Image; +import org.apache.xmlgraphics.image.loader.ImageFlavor; +import org.apache.xmlgraphics.image.loader.ImageInfo; +import org.apache.xmlgraphics.image.loader.ImageManager; +import org.apache.xmlgraphics.image.loader.ImageSessionContext; +import org.apache.xmlgraphics.image.loader.impl.ImageRawStream; +import org.apache.xmlgraphics.image.loader.util.ImageUtil; + +import org.apache.fop.apps.FOUserAgent; + +import org.apache.fop.datatypes.LengthBase; +import org.apache.fop.fo.FObj; +import org.apache.fop.fo.flow.AbstractGraphics; +import org.apache.fop.fo.flow.ExternalGraphic; +import org.apache.fop.layoutmgr.inline.ImageLayout; +import org.apache.fop.render.odf.OdfException; +import org.apache.fop.render.odf.odt.Namespace; + +/** + * External Graphic converter + */ +public class ExternalGraphicTag extends Tag { + + public static class PercentBaseContext implements org.apache.fop.datatypes.PercentBaseContext { + + Image image = null; + + public PercentBaseContext(Image image) { + this.image = image; + } + + public int getBaseLength(int lengthBase, FObj fobj) { + + final ImageInfo info = image.getInfo(); + + switch (lengthBase) { + case LengthBase.IMAGE_INTRINSIC_WIDTH: + return info.getSize().getWidthMpt(); + case LengthBase.IMAGE_INTRINSIC_HEIGHT: + return info.getSize().getHeightMpt(); + default: + return info.getSize().getHeightMpt(); + } + } + } + + public static final String ODT_IMAGES_PATH = "Pictures/"; + + ExternalGraphic eg = null; + + ExternalGraphicTag(Tag parent, ExternalGraphic eg) { + super(parent); + this.eg = eg; + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute() throws OdfException { + + ImageInfo info = null; + FOUserAgent userAgent = eg.getUserAgent(); + ImageManager manager = userAgent.getFactory().getImageManager(); + + try { + info = manager.getImageInfo(eg.getURL(), userAgent.getImageSessionContext()); + putGraphic(eg, info); + } catch (Exception e) { + throw new OdfException("Can't create an image.", e); + } + } + + private static final ImageFlavor[] FLAVORS = new ImageFlavor[] { + ImageFlavor.RAW_EMF, + ImageFlavor.RAW_PNG, + ImageFlavor.RAW_JPEG + }; + + private void putGraphic(AbstractGraphics abstractGraphic, ImageInfo info) + throws OdfException { + + FOUserAgent userAgent = abstractGraphic.getUserAgent(); + ImageManager manager = userAgent.getFactory().getImageManager(); + ImageSessionContext sessionContext = userAgent.getImageSessionContext(); + Map hints = ImageUtil.getDefaultHints(sessionContext); + Image image; + try { + image = manager.getImage(info, FLAVORS, hints, sessionContext); + } catch (Exception e) { + throw new OdfException("Can't create an image.", e); + } + + putGraphic(abstractGraphic, image); + } + + private void putGraphic(AbstractGraphics abstractGraphic, Image image) + throws OdfException { + + byte[] rawData; + try { + rawData = getRawData(image); + } catch (IOException e) { + throw new OdfException("Can't create an image.", e); + } + + if (rawData == null) { + return; + } + + ImageLayout layout = getImageLayout(abstractGraphic, image); + + String imageType = image.getInfo().getMimeType().split("/")[1]; + + String filename = createFilename(imageType); + + putImageFileIntoOdt(rawData, filename, imageType); + + DrawImageElement die = createImage(); + + die.setAttributeNS(Namespace.XLINK, "xlink:href", ODT_IMAGES_PATH + filename); + die.setAttributeNS(Namespace.XLINK, "xlink:type", "simple"); + die.setAttributeNS(Namespace.XLINK, "xlink:show", "embed"); + die.setAttributeNS(Namespace.XLINK, "xlink:actuate", "onLoad"); + + DrawFrameElement dfe = createImageFrame(); + + dfe.setAttributeNS(Namespace.SVG, "svg:width", Double.valueOf(layout.getViewportSize().getWidth() / 1000) + "pt"); + dfe.setAttributeNS(Namespace.SVG, "svg:height", Double.valueOf(layout.getViewportSize().getHeight() / 1000) + "pt"); + + addImageToImageFrame(die, dfe); + + addImageFrameToParagraph(dfe, this.getParagraph().getOdfElement()); + } + + private byte[] getRawData(Image image) throws IOException { + + byte[] rawData = null; + + if (image instanceof ImageRawStream) { + ImageRawStream rawImage = (ImageRawStream)image; + InputStream in = rawImage.createInputStream(); + try { + rawData = IOUtils.toByteArray(in); + } finally { + IOUtils.closeQuietly(in); + } + } + return rawData; + } + + private ImageLayout getImageLayout(AbstractGraphics abstractGraphic, Image image) { + + PercentBaseContext pContext = new ExternalGraphicTag.PercentBaseContext(image); + + return new ImageLayout( abstractGraphic, + pContext, + image.getInfo().getSize().getDimensionMpt()); + } + + private void putImageFileIntoOdt(byte[] rawData, String filename, String imageType) { + this.getOdt().getPackage().insert(rawData, ODT_IMAGES_PATH + filename, imageType); + } + + private String createFilename(String imageType) { + String filename = null; + + do { + Random randomGenerator = new Random(); + filename = randomGenerator.nextInt(100) + "." + imageType; + } while(this.getOdt().getPackage().contains(ODT_IMAGES_PATH + filename)); + + return filename; + } + + private DrawImageElement createImage() throws OdfException { + DrawImageElement die = null; + try { + die = (DrawImageElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), DrawImageElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create an image.", e); + } + return die; + } + + private DrawFrameElement createImageFrame() { + DrawFrameElement dfe = null; + try { + dfe = (DrawFrameElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), DrawFrameElement.ELEMENT_NAME); + } catch (Exception e) { + e.printStackTrace(); + } + return dfe; + } + + private void addImageToImageFrame(DrawImageElement die, DrawFrameElement dfe) throws OdfException { + try { + dfe.appendChild(die); + } catch (Exception e) { + throw new OdfException("Can't create an image.", e); + } + } + + private void addImageFrameToParagraph(DrawFrameElement dfe, TextParagraphElementBase tpeb) { + try { + tpeb.appendChild(dfe); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } +} Index: src/java/org/apache/fop/render/odf/odt/tags/ListBlockTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/ListBlockTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/ListBlockTag.java (revision 0) @@ -0,0 +1,71 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.odftoolkit.odfdom.dom.element.text.TextListElement; +import org.odftoolkit.odfdom.pkg.OdfXMLFactory; + +import org.apache.fop.fo.flow.ListBlock; +import org.apache.fop.render.odf.OdfException; + +/** + * ListBlock converter + */ +public class ListBlockTag extends Tag { + + protected TextListElement tle = null; + + ListBlockTag(Tag parent, ListBlock foNode) { + super(parent); + } + + public TextListElement getTextListElement() { + return tle; + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute() throws OdfException { + try { + tle = (TextListElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TextListElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create the list", e); + } + } + + @Override + public void closeIntercept() throws OdfException { + try { + this.getOdt().getListContainerElement().appendChild(tle); + } catch (Exception e) { + throw new OdfException("Can't create the list", e); + } + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } + +} Index: src/java/org/apache/fop/render/odf/odt/tags/TagExecutor.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/TagExecutor.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/TagExecutor.java (revision 0) @@ -0,0 +1,28 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.render.odf.OdfException; + +/** + * Interface of the converter class that wants to execute in order to its parent converter + */ +public interface TagExecutor { + + void executeFromParent(TagExecutable child) throws OdfException; +} Index: src/java/org/apache/fop/render/odf/odt/tags/TagExecutable.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/TagExecutable.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/TagExecutable.java (revision 0) @@ -0,0 +1,44 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.apache.fop.render.odf.OdfException; + +/** + * Interface for the class that accept parent visitor. + */ +public interface TagExecutable { + + void execute(Tag tag) throws OdfException; + + void execute(BlockTag tag) throws OdfException; + + void execute(InlineTag tag) throws OdfException; + + void execute(BasicLinkTag tag) throws OdfException; + + void execute(TableTag tag) throws OdfException; + + void execute(TableRowTag tag) throws OdfException; + + void execute(TableCellTag tag) throws OdfException; + + void execute(ListBlockTag tag) throws OdfException; + + void execute(ListItemTag tag) throws OdfException; +} Index: src/java/org/apache/fop/render/odf/odt/tags/TableRowTag.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/tags/TableRowTag.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/tags/TableRowTag.java (revision 0) @@ -0,0 +1,75 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt.tags; + +import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement; +import org.odftoolkit.odfdom.pkg.OdfXMLFactory; + +import org.apache.fop.fo.flow.table.TableRow; +import org.apache.fop.render.odf.OdfException; + +/** + * TableRow converter + */ +public class TableRowTag extends Tag { + + private TableTableRowElement tre = null; + + TableRowTag(Tag parent, TableRow tblRow) { + super(parent); + } + + public TableTableRowElement getTableRow() { + return this.tre; + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + @Override + public void execute() throws OdfException { + try { + tre = (TableTableRowElement) OdfXMLFactory.newOdfElement(this.getOdt().getContentDom(), TableTableRowElement.ELEMENT_NAME); + } catch (Exception e) { + throw new OdfException("Can't create table row.", e); + } + + parent.executeFromParent(this); + } + + /** + * {@inheritDoc} + */ + @Override + public void execute(TableTag tag) { + try { + tag.getTable().appendChild(tre); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * {@inheritDoc} + * @throws OdfException + */ + public void executeFromParent(TagExecutable child) throws OdfException { + child.execute(this); + } +} Index: src/java/org/apache/fop/render/odf/odt/Style.java =================================================================== --- src/java/org/apache/fop/render/odf/odt/Style.java (revision 0) +++ src/java/org/apache/fop/render/odf/odt/Style.java (revision 0) @@ -0,0 +1,174 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf.odt; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement; +import org.odftoolkit.odfdom.type.Color; +import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType; + +import org.apache.fop.datatypes.Length; +import org.apache.fop.fo.Constants; +import org.apache.fop.fo.properties.CommonFont; +import org.apache.fop.fo.properties.SpaceProperty; +import org.apache.fop.layoutmgr.BlockLayoutManager; + +/** + * Main class for style management. + */ +public class Style { + + public enum Params { + FONT_NAME, + FONT_STYLE, + FONT_WEIGHT, + FONT_SIZE, + COLOR, + TEXT_ALIGN, + SPACE_BEFORE, + SPACE_AFTER, + MARGIN_LEFT, + MARGIN_RIGHT, + BACKGROUND_COLOR + } + + private Map parameters = new HashMap(); + + private Style parentStyle = null; + + /** + * Constructor + */ + public Style(Style parentStyle) { + this.parentStyle = parentStyle; + } + + /** + * Constructor Style for the root tag. Setting default style parameters + */ + public Style() { + parameters.put(Params.FONT_NAME, "Times New Roman"); + parameters.put(Params.FONT_SIZE, "12pt"); + parameters.put(Params.COLOR, "#000000"); + parameters.put(Params.TEXT_ALIGN, HorizontalAlignmentType.LEFT.toString()); + } + + /** + * Get all style parameters + */ + public Map getParameters() { + return parameters; + } + + /** + * get an object from parameters. + */ + public String get(Params param) { + String value = parameters.get(param); + + if (value == null && parentStyle != null) { + value = parentStyle.get(param); + } + + return value; + } + + public static String getStyleName(Map styles, StyleStyleElement sse) { + for (Entry entry : styles.entrySet()) { + StyleStyleElement style = entry.getValue(); + if (style.equals(sse)) { + return entry.getKey(); + } + } + return null; + } + + public static Double fopLengthToDouble(Length length) { + return Double.valueOf((double)length.getValue() / 1000); + } + + public static String awtColorToOdfColor(java.awt.Color color) { + if (color == null) { + return null; + } else { + return new Color(color.getRed(), + color.getGreen(), + color.getBlue()).toString(); + } + } + + public static String fopFontToOdfFontStyle(CommonFont commonFont) { + return commonFont.getFontStyle() == Constants.EN_ITALIC ? "italic" : null; + } + + public static String fopFontToOdfFontWeight(CommonFont commonFont) { + return commonFont.getFontWeight() >= Constants.EN_700 ? "bold" : null; + } + + public static String fopAlignToOdfAlign(int textAlign) { + + if (textAlign == Constants.EN_LEFT) { + return HorizontalAlignmentType.LEFT.toString(); + } else if (textAlign == Constants.EN_JUSTIFY) { + return HorizontalAlignmentType.JUSTIFY.toString(); + } else if (textAlign == Constants.EN_CENTER) { + return HorizontalAlignmentType.CENTER.toString(); + } else if (textAlign == 39) { + return HorizontalAlignmentType.RIGHT.toString(); + } else { + return HorizontalAlignmentType.LEFT.toString(); + } + + } + + public static String fopSpaceBeforeToPt(SpaceProperty spaceBefore, BlockLayoutManager context) { + if (spaceBefore == null) { + return null; + } + Double value = Double.valueOf((double) spaceBefore.getLengthRange().toMinOptMax(context).getOpt() / 1000); + return value + "pt"; + } + + public static String fopSpaceAfterToPt(SpaceProperty spaceAfter, BlockLayoutManager context) { + if (spaceAfter == null) { + return null; + } + Double value = Double.valueOf((double) spaceAfter.getLengthRange().toMinOptMax(context).getOpt() / 1000); + return value + "pt"; + } + + public static String fopLengthToPt(Length l) { + if (l == null) { + return null; + } + Double value = Double.valueOf((double)l.getValue() / 1000); + return value + "pt"; + } + + public static String awtColorToString(java.awt.Color color) { + if (color == null) { + return null; + } + return "#" + Integer.toHexString(color.getRed()) + + Integer.toHexString(color.getGreen()) + + Integer.toHexString(color.getBlue()); + } +} Index: src/java/org/apache/fop/render/odf/ODTFOEventHandlerMaker.java =================================================================== --- src/java/org/apache/fop/render/odf/ODTFOEventHandlerMaker.java (revision 0) +++ src/java/org/apache/fop/render/odf/ODTFOEventHandlerMaker.java (revision 0) @@ -0,0 +1,63 @@ +/* + * 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. + */ + +package org.apache.fop.render.odf; + +import java.io.OutputStream; + +import org.apache.fop.apps.FOUserAgent; +import org.apache.fop.apps.MimeConstants; +import org.apache.fop.fo.FOEventHandler; +import org.apache.fop.render.AbstractFOEventHandlerMaker; + +/** + * Maker class for ODT support. + */ +public class ODTFOEventHandlerMaker extends AbstractFOEventHandlerMaker { + + private static final String[] MIMES = new String[] { + MimeConstants.MIME_ODT + }; + + + /** + * {@inheritDoc} + * @param ua FOUserAgent + * @param out OutputStream + * @return created ODTHandler + */ + public FOEventHandler makeFOEventHandler(FOUserAgent ua, OutputStream out) { + return new ODTHandler(ua, out); + } + + /** + * {@inheritDoc} + * @return true, if an outputstream is needed + */ + public boolean needsOutputStream() { + return true; + } + + /** + * {@inheritDoc} + * @return array of MIME types + */ + public String[] getSupportedMimeTypes() { + return MIMES; + } + +} Index: src/java/org/apache/fop/cli/CommandLineOptions.java =================================================================== --- src/java/org/apache/fop/cli/CommandLineOptions.java (revision 1348087) +++ src/java/org/apache/fop/cli/CommandLineOptions.java (working copy) @@ -319,6 +319,8 @@ i = i + parsePDFOutputOption(args, i, "PDF/A-1b"); } else if (args[i].equals("-mif")) { i = i + parseMIFOutputOption(args, i); + } else if (args[i].equals("-odt")) { + i = i + parseODTOutputOption(args, i); } else if (args[i].equals("-rtf")) { i = i + parseRTFOutputOption(args, i); } else if (args[i].equals("-tiff")) { @@ -519,6 +521,17 @@ } } + private int parseODTOutputOption(String[] args, int i) throws FOPException { + setOutputMode(MimeConstants.MIME_ODT); + if ((i + 1 == args.length) + || (isOption(args[i + 1]))) { + throw new FOPException("you must specify the ODT output file"); + } else { + setOutputFile(args[i + 1]); + return 1; + } + } + private void setOutputFile(String filename) { if (isSystemInOutFile(filename)) { this.useStdOut = true; @@ -1177,7 +1190,7 @@ public static void printUsage(PrintStream out) { out.println( "\nUSAGE\nfop [options] [-fo|-xml] infile [-xsl file] " - + "[-awt|-pdf|-mif|-rtf|-tiff|-png|-pcl|-ps|-txt|-at [mime]|-print] \n" + + "[-awt|-pdf|-mif|-odt|-rtf|-tiff|-png|-pcl|-ps|-txt|-at [mime]|-print] \n" + " [OPTIONS] \n" + " -version print FOP version and exit\n" + " -d debug mode \n" @@ -1236,6 +1249,7 @@ + " -pdfa1b outfile input will be rendered as PDF/A-1b compliant PDF\n" + " (outfile req'd, same as \"-pdf outfile -pdfprofile PDF/A-1b\")\n" + " -awt input will be displayed on screen \n" + + " -odt outfile input will be rendered as ODT (outfile req'd)\n" + " -rtf outfile input will be rendered as RTF (outfile req'd)\n" + " -pcl outfile input will be rendered as PCL (outfile req'd) \n" + " -ps outfile input will be rendered as PostScript (outfile req'd) \n" @@ -1271,6 +1285,7 @@ + " fop -xml foo.xml -xsl foo.xsl -foout foo.fo\n" + " fop -xml - -xsl foo.xsl -pdf -\n" + " fop foo.fo -mif foo.mif\n" + + " fop foo.fo -odt foo.odt\n" + " fop foo.fo -rtf foo.rtf\n" + " fop foo.fo -print\n" + " fop foo.fo -awt\n"); Index: src/java/org/apache/fop/apps/MimeConstants.java =================================================================== --- src/java/org/apache/fop/apps/MimeConstants.java (revision 1348087) +++ src/java/org/apache/fop/apps/MimeConstants.java (working copy) @@ -32,4 +32,6 @@ String MIME_FOP_AREA_TREE = "application/X-fop-areatree"; /** Apache FOP's intermediate format XML */ String MIME_FOP_IF = "application/X-fop-intermediate-format"; + /** Apache FOP's ODT format */ + String MIME_ODT = "application/vnd.oasis.opendocument.text"; } Index: src/java/META-INF/services/org.apache.fop.fo.FOEventHandler =================================================================== --- src/java/META-INF/services/org.apache.fop.fo.FOEventHandler (revision 1348087) +++ src/java/META-INF/services/org.apache.fop.fo.FOEventHandler (working copy) @@ -1 +1,2 @@ -org.apache.fop.render.rtf.RTFFOEventHandlerMaker \ No newline at end of file +org.apache.fop.render.rtf.RTFFOEventHandlerMaker +org.apache.fop.render.odf.ODTFOEventHandlerMaker \ No newline at end of file Index: lib/simple-odf.LICENSE.txt =================================================================== --- lib/simple-odf.LICENSE.txt (revision 0) +++ lib/simple-odf.LICENSE.txt (revision 0) @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. Index: lib/odfdom-java.LICENSE.txt =================================================================== --- lib/odfdom-java.LICENSE.txt (revision 0) +++ lib/odfdom-java.LICENSE.txt (revision 0) @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. Index: lib/odfdom-java.NOTICE.txt =================================================================== --- lib/odfdom-java.NOTICE.txt (revision 0) +++ lib/odfdom-java.NOTICE.txt (revision 0) @@ -0,0 +1,142 @@ +==================================================================================== + + Apache ODF Toolkit + + +==================================================================================== + +The Apache ODF Toolkit (incuating) is a set of Java modules that allow programmatic +creation, scanning and manipulation of Open Document Format (ISO/IEC 26300 == ODF) +documents. Unlike other approaches which rely on runtime manipulation of heavy-weight +editors via an automation interface, the ODF Toolkit is lightweight and ideal for +server use. +It's an incubator project of the Apache Software Foundation . + +The ODF Toolkit consists of four subcomponents: + +1. ODFDOM (odfdom-java-*.jar) + This is an Open Document Format (ODF) framework. Its purpose is to provide + an easy, common way to create, access and manipulate ODF files, without + requiring detailed knowledge of the ODF specification. It is designed to + provide the ODF developer community with an easy, lightweight programming API + portable to any object-oriented language. + +2. Simple API (simple-odf-*.jar) + The Simple Java API for ODF is an easy-to-use, high-level Java API + for creating, modifying and extracting data from ODF 1.2 documents. + It is written in pure Java and does not require that you install any + document editor on your system. The Simple Java API for ODF is a high + level abstraction of the lower-level ODFDOM API + +3. ODF Validator (odfvalidator-*.war) + This is a tool that validates Open Document Format (ODF) files and checks them + for conformance according to the ODF Standard. ODF Validator is available as an + online service and as a command line tool. This page primarily describes the + command line tool. Please visit web page: + http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html + for details regarding the online tool. + +4. ODF XSLT Runner(xslt-runner-*.jar, xslt-runner-task-*.jar) + ODF XSLT Runner is a small Java application that allows you to apply XSLT + stylesheets to XML streams included in ODF packages without extracting them + from the package. It can be used from the command line. A driver to use it + within an Ant build file, ODF XSLT Runner Task, is also available. + + +Getting Started +=============== + +The ODF Toolkit is based on Java 5 and uses the Maven 2 +build system. To build ODF Toolkit, use the following command in this directory: + + mvn clean install + +The simplest way to use these modules are just put the jars files in your classpath +directly. + +Documentation +============= + +The Home Page for the ODF Toolkit: + http://incubator.apache.org/odftoolkit/index.html + +ODFDOM Getting Start Guide: + http://incubator.apache.org/odftoolkit/odfdom/index.html + +Simple API Getting Start Guide: + http://incubator.apache.org/odftoolkit/simple/gettingstartguide.html + +Simple API Cookbook: + http://incubator.apache.org/odftoolkit/simple/document/cookbook/index.html + +Simple API Demos: + http://incubator.apache.org/odftoolkit/simple/demo/index.html + +Simple API Online JavaDoc: + http://incubator.apache.org/odftoolkit/simple/document/javadoc/index.html + +ODF Validator Getting Start Guide: + http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html + +ODF XSLT Runner Getting Start Guide: + http://incubator.apache.org/odftoolkit/xsltrunner/ODFXSLTRunner.html + + +License (see also LICENSE.txt) +============================== + +Collective work: Copyright 2011 The Apache Software Foundation. + +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. + +Apache ODF Toolkit includes a number of subcomponents with separate copyright +notices and license terms. Your use of these subcomponents is subject to +the terms and conditions of the licenses listed in the LICENSE.txt file. + + +Mailing Lists +============= + +Discussion about ODF Toolkit takes place on the following mailing lists: + +Development Mailing List + Subscribe: odf-dev-subscribe@incubator.apache.org + Post (after subscription): odf-dev@incubator.apache.org + Unsubscribe: odf-dev-unsubscribe@incubator.apache.org + Archives + (1) Markmail - http://markmail.org/search/+list:org.apache.incubator.odf-dev/ + (2) Apache - http://mail-archives.apache.org/mod_mbox/incubator-odf-dev/ + +Users Mailing List + Subscribe: odf-users-subscribe@incubator.apache.org + Post (after subscription): odf-users@incubator.apache.org + Unsubscribe: odf-users-unsubscribe@incubator.apache.org + Archives: http://mail-archives.apache.org/mod_mbox/incubator-odf-users/ + +Notification on all code changes are sent to the following mailing list: + + odf-commits@incubator.apache.org + +The mailing lists are open to anyone and publicly archived. + + +Issue Tracker +============= + +If you encounter errors in ODF Toolkit or want to suggest an improvement or +a new feature, please visit the ODF Toolkit issue tracker at +https://issues.apache.org/jira/browse/ODFTOOLKIT. There you can also find the +latest information on known issues and recent bug fixes and enhancements. Index: lib/simple-odf.NOTICE.txt =================================================================== --- lib/simple-odf.NOTICE.txt (revision 0) +++ lib/simple-odf.NOTICE.txt (revision 0) @@ -0,0 +1,142 @@ +==================================================================================== + + Apache ODF Toolkit + + +==================================================================================== + +The Apache ODF Toolkit (incuating) is a set of Java modules that allow programmatic +creation, scanning and manipulation of Open Document Format (ISO/IEC 26300 == ODF) +documents. Unlike other approaches which rely on runtime manipulation of heavy-weight +editors via an automation interface, the ODF Toolkit is lightweight and ideal for +server use. +It's an incubator project of the Apache Software Foundation . + +The ODF Toolkit consists of four subcomponents: + +1. ODFDOM (odfdom-java-*.jar) + This is an Open Document Format (ODF) framework. Its purpose is to provide + an easy, common way to create, access and manipulate ODF files, without + requiring detailed knowledge of the ODF specification. It is designed to + provide the ODF developer community with an easy, lightweight programming API + portable to any object-oriented language. + +2. Simple API (simple-odf-*.jar) + The Simple Java API for ODF is an easy-to-use, high-level Java API + for creating, modifying and extracting data from ODF 1.2 documents. + It is written in pure Java and does not require that you install any + document editor on your system. The Simple Java API for ODF is a high + level abstraction of the lower-level ODFDOM API + +3. ODF Validator (odfvalidator-*.war) + This is a tool that validates Open Document Format (ODF) files and checks them + for conformance according to the ODF Standard. ODF Validator is available as an + online service and as a command line tool. This page primarily describes the + command line tool. Please visit web page: + http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html + for details regarding the online tool. + +4. ODF XSLT Runner(xslt-runner-*.jar, xslt-runner-task-*.jar) + ODF XSLT Runner is a small Java application that allows you to apply XSLT + stylesheets to XML streams included in ODF packages without extracting them + from the package. It can be used from the command line. A driver to use it + within an Ant build file, ODF XSLT Runner Task, is also available. + + +Getting Started +=============== + +The ODF Toolkit is based on Java 5 and uses the Maven 2 +build system. To build ODF Toolkit, use the following command in this directory: + + mvn clean install + +The simplest way to use these modules are just put the jars files in your classpath +directly. + +Documentation +============= + +The Home Page for the ODF Toolkit: + http://incubator.apache.org/odftoolkit/index.html + +ODFDOM Getting Start Guide: + http://incubator.apache.org/odftoolkit/odfdom/index.html + +Simple API Getting Start Guide: + http://incubator.apache.org/odftoolkit/simple/gettingstartguide.html + +Simple API Cookbook: + http://incubator.apache.org/odftoolkit/simple/document/cookbook/index.html + +Simple API Demos: + http://incubator.apache.org/odftoolkit/simple/demo/index.html + +Simple API Online JavaDoc: + http://incubator.apache.org/odftoolkit/simple/document/javadoc/index.html + +ODF Validator Getting Start Guide: + http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html + +ODF XSLT Runner Getting Start Guide: + http://incubator.apache.org/odftoolkit/xsltrunner/ODFXSLTRunner.html + + +License (see also LICENSE.txt) +============================== + +Collective work: Copyright 2011 The Apache Software Foundation. + +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. + +Apache ODF Toolkit includes a number of subcomponents with separate copyright +notices and license terms. Your use of these subcomponents is subject to +the terms and conditions of the licenses listed in the LICENSE.txt file. + + +Mailing Lists +============= + +Discussion about ODF Toolkit takes place on the following mailing lists: + +Development Mailing List + Subscribe: odf-dev-subscribe@incubator.apache.org + Post (after subscription): odf-dev@incubator.apache.org + Unsubscribe: odf-dev-unsubscribe@incubator.apache.org + Archives + (1) Markmail - http://markmail.org/search/+list:org.apache.incubator.odf-dev/ + (2) Apache - http://mail-archives.apache.org/mod_mbox/incubator-odf-dev/ + +Users Mailing List + Subscribe: odf-users-subscribe@incubator.apache.org + Post (after subscription): odf-users@incubator.apache.org + Unsubscribe: odf-users-unsubscribe@incubator.apache.org + Archives: http://mail-archives.apache.org/mod_mbox/incubator-odf-users/ + +Notification on all code changes are sent to the following mailing list: + + odf-commits@incubator.apache.org + +The mailing lists are open to anyone and publicly archived. + + +Issue Tracker +============= + +If you encounter errors in ODF Toolkit or want to suggest an improvement or +a new feature, please visit the ODF Toolkit issue tracker at +https://issues.apache.org/jira/browse/ODFTOOLKIT. There you can also find the +latest information on known issues and recent bug fixes and enhancements. Index: test/odf/odt/fo_inline/color_font_size_style_weight.fo =================================================================== --- test/odf/odt/fo_inline/color_font_size_style_weight.fo (revision 0) +++ test/odf/odt/fo_inline/color_font_size_style_weight.fo (revision 0) @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + Joad rolled the coat up more tightly. "An old turtle," he said. "Picked + him up on the + road. An old bulldozer. Thought I'd take 'im to my little brother. Kids + like turtles." + + + + + \ No newline at end of file Index: test/odf/odt/fo_inline/color_font_size_style_weight.odt =================================================================== --- test/odf/odt/fo_inline/color_font_size_style_weight.odt (revision 0) +++ test/odf/odt/fo_inline/color_font_size_style_weight.odt (revision 0) @@ -0,0 +1,69 @@ +PK +T�@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPKT�@ META-INF/PKPKT�@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPKT�@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PKT�@meta.xml�����0��}����@�nb���S������`#ۄ��ט@ +�{A��3������js!)gG/ +Bo,�9e���s~���k�-�EA3�9����kPd�8�����|Lb�h}�Z�0'�J�H +� �ؘ���3`S~8̮D(� F<�9+h����W6'�\�����R +F�iEpQ���a�N:h���^_T��z��k� ��� R}͇� W����`-w�Ѯ��4��hwhxՍ���ִ���m��;�g|M+gZkWn�لs������㡥+-��{ F<���<�^k���gr�W1“��Ԗ: ��e���>�㿢wS�O��@�E�����qBa�^�bʨ�D�U�9���χv󦯡�-iF�����x�]��纁�\gdz�_Y2���$�pEXْR` ����Y뤏��5���0����a��^~/��� � +=�M�PK��O�%�PKT�@ content.xml�X]o�6}߯ ԇ�L��Į#�. �%ð��^)��8S�FRV�_�K�V��JU������syx�$���C�ў*ͤ��l *�̘(6�����u�a�Ӎ�sFh�I�TT��Ha�/:ڽ�AH�,X� %�5Ӊ�Չ!���8J��@��)茤��L����9+&���g�Tn� +N��6��1uEu��L�"�HD9�Dų8걲��m���K_��q���-�G��l�2�T)�N������r*�A�0��%U +eM9�Q��b}n����d�2�C-�=���K��!N�������'�ܾn3T�ൢ��u0�>>ǿ�&�ՓwH��+�'�;��ʓ�^@~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +T�@^�2 ''mimetypePKT�@ MMETA-INF/PKT�@�4�/�u�META-INF/manifest.xmlPKT�@������ �settings.xmlPKT�@��O�%��meta.xmlPKT�@,�b�5� content.xmlPKT�@R[��;[ +n +styles.xmlPK��$ \ No newline at end of file Index: test/odf/odt/basic/text.odf =================================================================== --- test/odf/odt/basic/text.odf (revision 0) +++ test/odf/odt/basic/text.odf (revision 0) @@ -0,0 +1,70 @@ +PK +v��@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPKv��@ META-INF/PKPKv��@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPKv��@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PKv��@meta.xml�����0��}�����Dmb���S������`#ۄ��ט��H� ��������ԫ H��8���\�W����-�/ٷT�%ˁ"��:l@���С�`e�qE(g�>�$'�*�� +(�s"Z��,俖j�����a~�R�f��-x�*oܪ]�8���D��|��n Bm'�H� +9�P!a4i��e��:���,��N]���U�a)�\4�Yԩ�y��A법,�zV��Q���J�x����t� ���07�����L�>�&����� +Z�;�5'�_� J·#J_\����h-�ѭ+�4���n��~W���fM�[�e��*���v� +��i�}r+�&��,צ.�#}҂�0�`�3��S�.{|���*Acx�u�Ѓ�R;d���f��t���_1�)K��*� �2{}{}?�8�F?S��bƙf��U�=m����v �f�ah,Y�$���`L6�=׍,+��kP�I�i����d�S��E���}��� +4St�6��>��o�,���)� +=�Mg�PK��0�'�PKv��@ content.xml�W]o�0}߯@��O�!�5��4iR��5���^�f� �~� +!� +��jU��{Ϲ�/���SU;*|ƳyPND�x� �_���v��Fd#4Ii*�uD���v'�" $W �Z�������㊪D�DԔ%G,�!� +:#)�Ծ,x���m.E�S����Th��9��Fhm^D.f�Z���f0���f���]�ڵ�m���5J�l̰u�E�����dž��S�7^ �;k�X���v�F��p�6N���zY�ޱ�~�0�W7v�)��塲/��5�L�%�G�Ѱ�($uGa����S�,!C�>Ō�w[��w���A�t��6��Y�;�M|_�X�)���f<ֽb ݸu5@�u�T��U5̗q�zA����Q��Ŀ?��PK]�Z�? +PKv��@ +styles.xml�][��6�~�_a8� [�/eR�t:HݙL�3�Z��Jdɐ�r�<��b� +���`�ݟ�?`��"�ԅ2)�Bw+�������#�P���/{w� ��񽇱1��#�Y��xO�_>~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +v��@^�2 ''mimetypePKv��@ MMETA-INF/PKv��@�4�/�u�META-INF/manifest.xmlPKv��@������ �settings.xmlPKv��@��0�'��meta.xmlPKv��@]�Z�? +  content.xmlPKv��@R[��;[ +� styles.xmlPK�$ \ No newline at end of file Index: test/odf/odt/basic/text.fo =================================================================== --- test/odf/odt/basic/text.fo (revision 0) +++ test/odf/odt/basic/text.fo (revision 0) @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + This is simple text. + + + \ No newline at end of file Index: test/odf/odt/basic/text.odt =================================================================== --- test/odf/odt/basic/text.odt (revision 0) +++ test/odf/odt/basic/text.odt (revision 0) @@ -0,0 +1,68 @@ +PK +��@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPK��@ META-INF/PKPK��@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPK��@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PK��@meta.xml�����0��}����@���"�e��F[��8x ւ�l�o_c5(��$<�73���˵�7�� ��(6� A�����[����2Q��LE�5�u؀&�ۡC����� +Κ}�I�QLaNPXX���,�h����aq&R�f��-x�*oܪ]��|YJ49 ��g�[�P��:�B�@P�*�D ��rK�k?$�?Kz�S/�/|UuX��Mku�a�Fz�zкl%)��a�}�[;�4���L�L7�0�O��)�{@��=�� ���׬7շ�A�vǻ��+7A���pD鋋;����Z#�u���4�b�4�O�V�2٬ }k��[Y����� �a�7m�n�݄w�������a�Z0��xA��{���e����_�h ��n�z�Xj�lt�֌<�� ������z��h!��׷������)C��(f�iF�^%�ӆH�iױ��o��Ƃ��q����0��ow8Io�R7�@MFnV�YԠ��&]g��5�UG*ȁg�}��f��!�)�l�v�6��>��6y��j�gh1lt�7��PK/�9&�PK��@ content.xml�W]o�0}߯@��O��%��4iR��5���^�f� �~� +!� ��jU��{Ϲ�/����,�=�� � +g�iPND�x� +�7_���~�i)Ҕ'��%�:"�k�:�`��sV��Z�X`�T�qIU�I,*ʏ��k�[���Xj�<` ��̛n�.?��r��+:`�U�k]�U�,&Bf(!���Mf�NJ�7M3i>�Ng�J����[`�$n�&p��%��"JtIYAY���ލa�.7�IR�dk� �P�h�hsud@_����[�N�����ƾ� �U��rK�{�F��09"���4v��D�[��B�Y2�qL� +j�4yNpAp�&��LSy�W�*Pjׁ�y\�{*E$��wH��KVx�;����q^���{�1��H��/��l��E�u�/f�����Q����./�7����Z0��oU������DrZ���1�4�0�㳱��zC +��(ńF %�Z/����`p +�s�2ʩd0ZR���.�b��"�c�Lu�>S�U�aP��;m�q���W��+�u��%H��������O����3x���T]��oe� S�31�c��-]��H��� !'�Ac���q��y�!��A�!��x�.r�%�$���a���|>]|��U�SjUOE��d�IQ�D!�!s�e�x�Z����dZi�Q���,Y�_�kQ�V� +"\� �Zi�N�Ρ�N�����6w����}���nՓ����A/�U����L���[�� #{��KN��5�,�e=7֔0U��Z�V���=�%��Vᷢ� I�3?lc���Q���ҾGڴ�g�j)6�]ɞ`�&X&�� ��o+�Zq� +�&g*�_�� +&�8'���T���hPt4���/PK��^{9 +PK��@ +styles.xml�][��6�~�_a8� [�/eR�t:HݙL�3�Z��Jdɐ�r�<��b� +���`�ݟ�?`��"�ԅ2)�Bw+�������#�P���/{w� ��񽇱1��#�Y��xO�_>~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +��@^�2 ''mimetypePK��@ MMETA-INF/PK��@�4�/�u�META-INF/manifest.xmlPK��@������ �settings.xmlPK��@/�9&��meta.xmlPK��@��^{9 +  content.xmlPK��@R[��;[ +� styles.xmlPK�$ \ No newline at end of file Index: test/odf/odt/fo_block/font_size.fo =================================================================== --- test/odf/odt/fo_block/font_size.fo (revision 0) +++ test/odf/odt/fo_block/font_size.fo (revision 0) @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + Lokomotywa + + + Stoi na stacji lokomotywa, + + Ciężka, ogromna i pot z niej spływa - + + Tłusta oliwa. + + Stoi i sapie, dyszy i dmucha, + + Żar z rozgrzanego jej brzucha bucha: + + Buch - jak gorąco! + + Uch - jak gorąco! + + Puff - jak gorąco! + + Uff - jak gorąco! + + Już ledwo sapie, już ledwo zipie, + + A jeszcze palacz węgiel w nią sypie. + + Wagony do niej podoczepiali + + Wielkie i ciężkie, z żelaza, stali, + + I pełno ludzi w każdym wagonie, + + A w jednym krowy, a w drugim konie, + + A w trzecim siedzą same grubasy, + + Siedzą i jedzą tłuste kiełbasy. + + A czwarty wagon pełen bananów, + + A w piątym stoi sześć fortepianów, + + W szóstym armata, o! jaka wielka! + + Pod każdym kołem żelazna belka! + + W siódmym dębowe stoły i szafy, + + W ósmym słoń, niedźwiedź i dwie żyrafy, + + W dziewiątym - same tuczone świnie, + + W dziesiątym - kufry, paki i skrzynie, + + A tych wagonów jest ze czterdzieści, + + Sam nie wiem, co się w nich jeszcze mieści. + + + Lecz choćby przyszło tysiąc atletów + + I każdy zjadłby tysiąc kotletów, + + I każdy nie wiem jak się natężał, + + To nie udźwigną - taki to ciężar! + + + Nagle - gwizd! + + Nagle - świst! + + Para - buch! + + Koła - w ruch! + + + Najpierw + + powoli + + jak żółw + + ociężale + + Ruszyła + + maszyna + + po szynach + + ospale. + + Szarpnęła wagony i ciągnie z mozołem, + + I kręci się, kręci się koło za kołem, + + I biegu przyspiesza, i gna coraz prędzej, + + I dudni, i stuka, łomoce i pędzi. + + + A dokąd? A dokąd? A dokąd? Na wprost! + + Po torze, po torze, po torze, przez most, + + Przez góry, przez tunel, przez pola, przez las + + I spieszy się, spieszy, by zdążyć na czas, + + Do taktu turkoce i puka, i stuka to: + + Tak to to, tak to to, tak to to, tak to to, + + Gładko tak, lekko tak toczy się w dal, + + Jak gdyby to była piłeczka, nie stal, + + Nie ciężka maszyna zziajana, zdyszana, + + Lecz raszka, igraszka, zabawka blaszana. + + + A skądże to, jakże to, czemu tak gna? + + A co to to, co to to, kto to tak pcha? + + Że pędzi, że wali, że bucha, buch-buch? + + To para gorąca wprawiła to w ruch, + + To para, co z kotła rurami do tłoków, + + A tłoki kołami ruszają z dwóch boków + + I gnają, i pchają, i pociąg się toczy, + + Bo para te tłoki wciąż tłoczy i tłoczy,, + + I koła turkocą, i puka, i stuka to: + + Tak to to, tak to to, tak to to, tak to to!... + + + + + \ No newline at end of file Index: test/odf/odt/fo_block/space_before_after.odt =================================================================== --- test/odf/odt/fo_block/space_before_after.odt (revision 0) +++ test/odf/odt/fo_block/space_before_after.odt (revision 0) @@ -0,0 +1,73 @@ +PK +o�@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPKo�@ META-INF/PKPKo�@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPKo�@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PKo�@meta.xml�����0��}����@�6�{Y��Vj���`#ۄ��ט@ +J$�����fF3�!{�5�� +R1�A��x!(��!�sz w�K�%e� +�T]\� +h��:tlL>�0�9��X���u�E |ʂ�i�6�-?"�o+^Ђ���ƭ���ٗ�D�3Q���CpѺ����#!+D 5 �BI��Y+�Ի��.�H��7;u�R��7U�� ѴfQ��i�����V��zV��Q���J�x����t�+���D��ry$��M�>�?g����� +Z�;�5g��s��\G���(���Z��5�[W�yJ0*��~C��n%(�͚з�˸�U!Y���Q��V{�F��V�Mx�Y�M]�?F��a�o��4ܼ�8h]�6�L=�U���,�������Fgi���s� +��_1�)Ϭ�*� �2}{}?�8�E?2� +�bƙf��U�=m����v �f�ah,y'i���8I�6��K��5�Y�gQ�ʓ�tu��ׄW� �!�}��uN�����I�h��G�t�{����b���o:� PK�.<&%�PKo�@ content.xml�X�r�6��)0�!Q�l7�ۙN;�&���83�� H�E��>D��O�E���2MzhfbG��.������w�$;n���z�^�,WL�B�׋���狗7�\��or�ښ+�0�~�^>rp� p��*Q_/Z�6�Za7���n�膫���=�:x؄��UԸ�xb�U!���=�ϳ��9u4��O����r�٤i��ҦLs�rɽ�M׫u:`u=���[ug~zr�N�H�Λ hs�ώ �IT�v�mi�� =���ʤ�`Iݠ���S7f61ty���)aw���GB���BO����*z����ϰ=2��iT��Տ�7��2 +�*���z���� +�˻��Y�kz� N���*L���n��� (pG&e<�9���*vv��g�g��\q#0ZF�T-ƈF8�E��F��t�׋[�~��xG~� +w������G������{�x=?��-9%全�xQ�Ǣz�_GvK+�� �^q��hnjbqt񈋑n�cD��u�?{X~��=7���Ц�&s~y~���g���L��4N���d�mK�[�cCH�[j��55�PI���ϐg��ƍ����F��cr�<��~$T�����:Q�� ��(�О��?�E���#����8J�^�t<�5aÃ��֌*�/ʞ���/Ο]\���R��_������G�Wd:�|�7W�z��_S��z($A� �H�Ot�ppu�q� �����2���c�"g�a�|����_��ǫ�D�P���R �L�-x�{��7����Z�xN�r���Q�Yg�Xh9�$q��CT8�� �#�'^e�ܾ'�$��-�?�m���Et�ң �A8h��z����#p����d�h�V�;��< ��-3M�Z\�`a� >���,f8�1K��4��y�����`�C�"�S���<=�]�:�Rc=.�9��d����>d^ 4R���[�<Ѱ�W�j����s�/ ���O=���(�\�����q�J�M\O����8�hXӇ�:X;^�Z��.��E#xq�a=c�Q����PN6]X,~���~���vT�tr����.=��l7PKg[�!�PKo�@ +styles.xml�][��6�~�_a8� [�/eR�t:HݙL�3�Z��Jdɐ�r�<��b� +���`�ݟ�?`��"�ԅ2)�Bw+�������#�P���/{w� ��񽇱1��#�Y��xO�_>~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +o�@^�2 ''mimetypePKo�@ MMETA-INF/PKo�@�4�/�u�META-INF/manifest.xmlPKo�@������ �settings.xmlPKo�@�.<&%��meta.xmlPKo�@g[�!� content.xmlPKo�@R[��;[ +Zstyles.xmlPK��& \ No newline at end of file Index: test/odf/odt/fo_block/font_family.odt =================================================================== --- test/odf/odt/fo_block/font_family.odt (revision 0) +++ test/odf/odt/fo_block/font_family.odt (revision 0) @@ -0,0 +1,67 @@ +PK +(�@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPK(�@ META-INF/PKPK(�@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPK(�@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PK(�@meta.xml�����0��}����@V��"�e��F[��8f ւ�l�o_c5(��$<�73���˵�7�� ��(6��(�����[����2Q��.��:l@���С�`c�q� g�>�$ǂ(�0' +(�)-�) ��%�d���xH�Dj� V��/Y�[��'_� ����M��Y�#�v����PA�0� +%Q�f��޵�vQG�ޟ%�٩�����:,EHEӚE�jX��ޫ�.[ɢ��a�}�[;�4���L�L7�0�O��)�{@��=�� ���׬7շ�A�vǻ��+7A���pD鋋;����Z#�u���4�b��'u+A�lք�5]ƭ��d��sG��oX�M�[i7�g�6u��x�̇��+^�p���u���3��W)ó�4��!��5���C4ȧ��<�����$Z���������9�Up3�4#f��iC$|ܴ��H�7s +CcA��8I��G���8�q����R7�P��ܬ�֠��&]g�5�UG*ȁg�}��f��!�)�l��m4�}���d�g����b���o:�PK7��A%�PK(�@ content.xml�Y�r�6��)吋(Z���&�N۴�'�83�B D�"E�G�x� �>�o�o�ޫ �����:�%�~�b�aw�L�N��M�TL��N���A�0w>]��tNO~8�#t�Ɣk���oT��lw��j�9��;���S�c�� DBy�h���< l�$c��z��[� [�-���m��x�m��qg�u2��$�QO���O#j������+�%8˲^�c��[[}��-w�֑���Y{.� ���hK�R�7�%q�:�hӍl�[�2�5j��1��7e4{Y1 ��.B����F���l�����`���4R�5y���)����ѠVmE!��ڲ��+�R%C(���~�]C��p�#Rg��d�� +�H� R���Ω�Jɒ�=�@7�1�Z��&��)���eJ�i�6�5!@�j�7�����[�^�Vkjv�/�K�X���r=��u ����������wgɘ��̞{�+�9T�Iu7٣����Ho� �J"urT��r5�!{f^H9� JK��N�0M��M�d�t*�9�����@�4CJ�4�;>����U@j�4��Gt�`�s�>q/ +���#��caN{%�Ұv���|Fv1��WM�fĵ�� ' +��l~��R3>�H�!g�D�C]n��8�¼�g�Z&��t�`�C��q�|�{�����N�^"�DBǑ�A\#1b2 �Hy]/p�v�t�eȸ7Z���Vo+�uCDG�1-Y8v�k��gM�p�B����G���a��-���t��f���b��''2Z����z�#�)��>�;x�����ڛ�n�3�������ߤx��=S�=�*���o������k�|i�`��0���砢��?����NL%�y"��~� ��svi�E�o�(UZ�Ǿ��Y�.���^`�l'?�ⶲ�W-)(Vxo��X�P� dڤ�ܞQ�#2���Jd>S��Z =Sl~C��wY���9�O�h��� �8X\��LDI�n`qFQ�h�.��q�緋{��v�.�e���� Jb~�<��!-a�'_�%�Ui�#6�r�C�# +3�/V�싿2���z ؇);���ŵ1gHZ���כ��/F���������w�kI��Ft��!U� ��j�1X�Ðd-d�XJ%�Lo��1�2�(��P�b��oB�9�Ej�؝mr~K�M�n��Ԥy��` +y�h�E��wa�cD��9�AN/�� +83x�� a�X�k��İX�&����&8E��9���;K�҅�i%��}�vl�5�wrV!u�iT}$"��8�ʥQ��<�򫋠����fq?�FF�+G? �t +��I)����v1p4Hwmv�5��U�/���Į�E�C��rP����3�%l��r� �Hn"6����x��aGea�~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +(�@^�2 ''mimetypePK(�@ MMETA-INF/PK(�@�4�/�u�META-INF/manifest.xmlPK(�@������ �settings.xmlPK(�@7��A%��meta.xmlPK(�@<[id�� content.xmlPK(�@R[��;[ +�styles.xmlPK�' \ No newline at end of file Index: test/odf/odt/fo_block/color.fo =================================================================== --- test/odf/odt/fo_block/color.fo (revision 0) +++ test/odf/odt/fo_block/color.fo (revision 0) @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + Julian Tuwim - Rzepka + + + Zasadził dziadek rzepkę w ogrodzie, + + Chodził te rzepkę oglądać co dzień. + + Wyrosła rzepka jędrna i krzepka, + + Schrupać by rzepkę z kawałkiem chlebaka! + + Więc ciągnie rzepkę dziadek niebożę, + + Ciągnie i ciągnie, wyciągnąć nie może! + + + Zawołał dziadek na pomoc babcię: + + "Ja złapię rzepkę, ty za mnie złap się!" + + I biedny dziadek z babcią niebogą + + Ciągną i ciągną, wyciągnąć nie mogą! + + Babcia za dziadka, + + Dziadek za rzepkę, + + Oj, przydałby się ktoś na przyczepkę! + + + Przyleciał wnuczek, babci się złapał, + + Poci się, stęka, aż się zasapał! + + Wnuczek za babcię, + + Babcia za dziadka, + + Dziadek za rzepkę, + + Oj, przydałby się ktoś na przyczepkę! + + Pocą się, sapią, stękają srogo, + + Ciągną i ciągną, wyciągnąć nie mogą! + + + Zawołał wnuczek szczeniaczka Mruczka, + + Przyleciał Mruczek i ciągnie wnuczka! + + Mruczek za wnuczka, + + Wnuczek za babcię, + + Babcia za dziadka, + + Dziadek za rzepkę, + + Oj, przydałby się ktoś na przyczepkę! + + Pocą się, sapią, stękają srogo, + + Ciągną i ciągną, wyciągnąć nie mogą! + + + Na kurkę czyhał kotek w ukryciu, + + Zaszczekał Mruczek: "Pomóż nam, Kiciu!" + + Kicia za Mruczka, + + Mruczek za wnuczka, + + Wnuczek za babcię, + + Babcia za dziadka, + + Dziadek za rzepkę, + + Oj, przydałby się ktoś na przyczepkę! + + Pocą się, sapią, stękają srogo, + + Ciągną i ciągną, wyciągnąć nie mogą! + + + Więc woła Kicia kurkę z podwórka, + + Wnet przyleciała usłużna kurka. + + Kurka za Kicię, + + Kicia za Mruczka, + + Mruczek za wnuczka, + + Wnuczek za babcię, + + Babcia za dziadka, + + Dziadek za rzepkę, + + Oj, przydałby się ktoś na przyczepkę! + + Pocą się, sapią, stękają srogo, + + Ciągną i ciągną, wyciągnąć nie mogą! + + + Szła sobie gąska ścieżynką wąską, + + Krzyknęła kurka: "ChodĽ no tu gąsko!" + + Gąska za kurkę, + + Kurka za Kicię, + + Kicia za Mruczka, + + Mruczek za wnuczka, + + Wnuczek za babcię, + + Babcia za dziadka, + + Dziadek za rzepkę, + + Oj, przydałby się ktoś na przyczepkę! + + Pocą się, sapią, stękają srogo, + + Ciągną i ciągną, wyciągnąć nie mogą! + + + Leciał wysoko bocian-długonos, + + "Fruńże tu, boćku, do nas na pomoc!" + + Bociek za gąskę, + + Gąska za kurkę, + + Kurka za Kicię, + + Kicia za Mruczka, + + Mruczek za wnuczka, + + Wnuczek za babcię, + + Babcia za dziadka, + + Dziadek za rzepkę, + + Oj, przydałby się ktoś na przyczepkę! + + Pocą się, sapią, stękają srogo, + + Ciągną i ciągną, wyciągnąć nie mogą! + + + Skakała drogą zielona żabka, + + Złapała boćka - rzadka to gradka! + + Żabka za boćka, + + Bociek za gąskę, + + Gąska za kurkę, + + Kurka za Kicię, + + Kicia za Mruczka, + + Mruczek za wnuczka, + + Wnuczek za babcię, + + Babcia za dziadka, + + Dziadek za rzepkę, + + A na przyczepkę + + Kawka za żabkę + + Bo na tę rzepkę + + Też miała chrapkę. + + + Tak się zawzięli, + + Tak się nadęli, + + Ze nagle rzepkę + + Trrrach!! - wyciągnęli! + + Aż wstyd powiedzieć, + + Co było dalej! + + Wszyscy na siebie + + Poupadali: + + Rzepka na dziadka, + + Dziadek na babcię, + + Babcia na wnuczka, + + Wnuczek na Mruczka, + + Mruczek na Kicię, + + Kicia na kurkę, + + Kurka na gąskę, + + Gąska na boćka, + + Bociek na żabkę, + + Żabka na kawkę + + I na ostatku + + Kawka na trawkę. + + + + + \ No newline at end of file Index: test/odf/odt/fo_block/font_weight.odt =================================================================== --- test/odf/odt/fo_block/font_weight.odt (revision 0) +++ test/odf/odt/fo_block/font_weight.odt (revision 0) @@ -0,0 +1,66 @@ +PK +M�@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPKM�@ META-INF/PKPKM�@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPKM�@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PKM�@meta.xml�����0��}����@���"�e��F[��8f ւ�l�o_c5(��$<�73���˵�7�� ��(6��(�����[����2Q��.��:l@���С�`c�q� g�>�$ǂ(�0' +(�)-�) ��%�d���xH�Dj� V��/Y�[��'_� ����M��Y�#�v����PA�0� +%Q�f��޵�vQG�ޟ%�٩�����:,EHEӚE�jX��ޫ�.[ɢ��a�}�[;�4���L�L7�0�O��)�{@��=�� ���׬7շ�A�vǻ��+7A���pD鋋;����Z#�u���4�b�4�O�V�2٬ }k��[YQ�Zo��߰ڛ6���n�;�zm����0�-�� V����=�A���gꁯR4�g�Y7w=h,�C6:Kk�?K�h�O���Myf=UI����������s���Up3�4#f��iC$|ܴ��H�7s +CcA��8I��g���8�q�ө�R7�P��ܬ�֠��&]g�5�UG*ȁg�}��f��!�)�l��m4�}��m��g����b���o:�PK�T �%�PKM�@ content.xml�W�r�6��)0�!S�l��8�2i��$c'�ƙ�A + �(�:�-:}�>B����(2]��ު�$�~�b�/^���0�� o: <��1���t�?�^-���I�) cI˜ �S) �c��C`R��/�R�P�u(H�thh( &�����:!]e�Zp�[���������XnL ��f=6]x+c��T�D����Y�����X��પ&ՙ����gKi��,�`{^)R�� +��KO�X���DB���5�Xߌ]��*���h�a�1���pV=�3��V���|��@龮.[<3d�w��N�y��c�F������$�t[ӈ㹮m��J�F��>��y��pJ2�W�+� +S{x��O�8��.��+M/Fϐ���<��@Ż,���mI���1�`D�w��{lv;:������={�u ^��hC�αӶЌ��0�j[��'�W������ ��І���ll�G�V���'�2?f4�ˋ&�����zj?e�)��dN��E�Pd����^g3��n8��g�eGܤ]� ��7��~�C�ֆ��=�,)� �H�F��;����� +YI��{����7t +���N���(� *����F�k��m����~v� �H�H��of��x9�??���� +�SyOd�N�,E #"�pLyV��r�G�{ &Aa���%�X�tuLndѕ�a����0ʭ�Ct����έg��8� ��[����j#m��AP�ƧHfq��%���ŵ����������Ƞ��6�)"��u{y��~+�%�m��B�D1�EFj_�N�08\`�N�x�6�Jm��:X�d�ƍ�'[��O6򦹿��G�h(.����ⴑ�k��u�<�}�]�~���w��a��vy��A:j���z����T!(!Z�2~���46��#��/ j+x����:?A��by��^�#N�_Cϯ9�놧�:�w_��g��Gֻ����D1�@�UM��̡+�ԑ&���^�^}�w���PKP�]�PKM�@ +styles.xml�][��6�~�_a8� [�/eR�t:HݙL�3�Z��Jdɐ�r�<��b� +���`�ݟ�?`��"�ԅ2)�Bw+�������#�P���/{w� ��񽇱1��#�Y��xO�_>~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +M�@^�2 ''mimetypePKM�@ MMETA-INF/PKM�@�4�/�u�META-INF/manifest.xmlPKM�@������ �settings.xmlPKM�@�T �%��meta.xmlPKM�@P�]� content.xmlPKM�@R[��;[ +G +styles.xmlPK��$ \ No newline at end of file Index: test/odf/odt/fo_block/font_family.fo =================================================================== --- test/odf/odt/fo_block/font_family.fo (revision 0) +++ test/odf/odt/fo_block/font_family.fo (revision 0) @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + Lokomotywa + + + Stoi na stacji lokomotywa, + + Ciężka, ogromna i pot z niej spływa - + + Tłusta oliwa. + + Stoi i sapie, dyszy i dmucha, + + Żar z rozgrzanego jej brzucha bucha: + + Buch - jak gorąco! + + Uch - jak gorąco! + + Puff - jak gorąco! + + Uff - jak gorąco! + + Już ledwo sapie, już ledwo zipie, + + A jeszcze palacz węgiel w nią sypie. + + Wagony do niej podoczepiali + + Wielkie i ciężkie, z żelaza, stali, + + I pełno ludzi w każdym wagonie, + + A w jednym krowy, a w drugim konie, + + A w trzecim siedzą same grubasy, + + Siedzą i jedzą tłuste kiełbasy. + + A czwarty wagon pełen bananów, + + A w piątym stoi sześć fortepianów, + + W szóstym armata, o! jaka wielka! + + Pod każdym kołem żelazna belka! + + W siódmym dębowe stoły i szafy, + + W ósmym słoń, niedźwiedź i dwie żyrafy, + + W dziewiątym - same tuczone świnie, + + W dziesiątym - kufry, paki i skrzynie, + + A tych wagonów jest ze czterdzieści, + + Sam nie wiem, co się w nich jeszcze mieści. + + + Lecz choćby przyszło tysiąc atletów + + I każdy zjadłby tysiąc kotletów, + + I każdy nie wiem jak się natężał, + + To nie udźwigną - taki to ciężar! + + + Nagle - gwizd! + + Nagle - świst! + + Para - buch! + + Koła - w ruch! + + + Najpierw + + powoli + + jak żółw + + ociężale + + Ruszyła + + maszyna + + po szynach + + ospale. + + Szarpnęła wagony i ciągnie z mozołem, + + I kręci się, kręci się koło za kołem, + + I biegu przyspiesza, i gna coraz prędzej, + + I dudni, i stuka, łomoce i pędzi. + + + A dokąd? A dokąd? A dokąd? Na wprost! + + Po torze, po torze, po torze, przez most, + + Przez góry, przez tunel, przez pola, przez las + + I spieszy się, spieszy, by zdążyć na czas, + + Do taktu turkoce i puka, i stuka to: + + Tak to to, tak to to, tak to to, tak to to, + + Gładko tak, lekko tak toczy się w dal, + + Jak gdyby to była piłeczka, nie stal, + + Nie ciężka maszyna zziajana, zdyszana, + + Lecz raszka, igraszka, zabawka blaszana. + + + A skądże to, jakże to, czemu tak gna? + + A co to to, co to to, kto to tak pcha? + + Że pędzi, że wali, że bucha, buch-buch? + + To para gorąca wprawiła to w ruch, + + To para, co z kotła rurami do tłoków, + + A tłoki kołami ruszają z dwóch boków + + I gnają, i pchają, i pociąg się toczy, + + Bo para te tłoki wciąż tłoczy i tłoczy,, + + I koła turkocą, i puka, i stuka to: + + Tak to to, tak to to, tak to to, tak to to!... + + + + + \ No newline at end of file Index: test/odf/odt/fo_block/color.odt =================================================================== --- test/odf/odt/fo_block/color.odt (revision 0) +++ test/odf/odt/fo_block/color.odt (revision 0) @@ -0,0 +1,81 @@ +PK +s��@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPKs��@ META-INF/PKPKs��@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPKs��@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PKs��@meta.xml��ώ�0��}�����I��"�e��F[��80k�F� ٷ�1��H� ��������ԛ+I9;xQz`9/(�ޟӛ��^�/)/K�.x�5��߀"��E��F�cF��� �9�TbF�X嘷��,�(����a~!B�f0��YI+gܨm�8��Q�L$,���]�j1Bm'ꀋ +9�P�(�ЬI�\Kku��Y���x�]᛬��9oZ��s +�4�yՃ�f+Q�<���>1��0Azjz���B�u"�M�<��~��:hǟ�^_T�����3��� R}.��KW�����h-w�Ѯ��<��h�h|�ԭ���ִ���m��;�|CkgZk��J� �<�ɫ��CK���? �-񂆛������'������<������,�)�x.�^6�+7e��T Q\d�o��G��G�V�QLU�� +0� +�q׮c#a��5��!��(���~����d�����Bgdz��y +2����qZ�&��H���Cpլu2D��5���0�f�Na��&�W]��-���PKg5݄&�PKs��@ content.xml�[�r�6�ߧ�Ջޘ��_K��l�;i�6Ӹ�;�IHBH\�4#]f��3x���{U���(*�df���j� K�wp������W�]!)g-��B�<�lz��������_��Ʉd� O˜�� >Q9^s�i!p��3�\�r��K*� 'D��`�S�֎�[������ 3,������ �6�k�:>��bC�aK��.Z�,KǮ��">�bꆁKb�����<���Ie\�Y���v�s��!� +RY�n�82�݊J�9 �:|›���ؙpPI�BZ�l����l�ة�x[]8�\8ה_���� +��F��K��?^���I��F�l�ѱ<����l�M�4��ɸVm��cu����bI�Śڞk~�Y{�5�b�q!hF��<DB��4�OSߕ M�c��Oh� +�;�����ǒ�׍���ZT�����k̢��cߩ�;j����x�%��r�z�2�)�v����T�;;�?^�x�H�7��ac�2�aq�~6�H���3ҙ��8! by��d�F[��z�Δ0"(��� f��EJ��5Teg=�2qѺ���=)Џ%�zZw|���#�/[�'$�2#I�^� +1z��D?1 +' +b��b�ߎ� +ϸ���`ʉ���S�[�f�����8ϸ:��v[�B�\�t�b�����-�G�t�Qk +� �T@M��B�'|�� � +���B����R� S��g�:|���iV���$� :���3��GUppL�п�� +�zf;�2�/���k�$]�N;�f�t��@ALL[�gJe�F���� +���=���Q�=�����߃A��v۽c�[�}�|w�{���38?"�{�~��=D��Ѱ�y��hpDtO&���>�w�Q�|xDlc?�����^���F��K�^��"ݽ�����1������ȶD{����������v�Q���F�����a����A�}L|O&��w� ~9��p^�"�|�/�$�gN���� �C!�i��ϳ�2d^��i�i��8�e&�U���]����_?�������ݬ���w�_��I���ս��o�b���&�A?.H�r�t���ہ} ��� �z��'I��Zcy� +ġ�`���_���q��H��xy��p卬~>����\p�z� + ����P0�(�̈e���L���ϫ�(�^��(IP0���#|bY�.o��͔�M���˜�Ww�[�.� Z�OQ17ߗ7��LNN�$�~��?)�jI�R���pʆ +������R�^��es��(Qq�I$a�u��l^-�(׺1M�7��5A�+A�d��U|zMk�^G��=�7���)J�be��Ee|��� +&m���þ$��1� +@� +��ѩ����IK��xit +}|y GxuW  ̦d��⢔����@�m��r�J�7덾U�O��jk(��u�Ѭ��,"��Fq����R��ӖŚ�@7��x�v��1�_Y�?&��]�Nٗ��1�r�����T�"�7�#��H� ����]�X��G�p.�� ��L9��h���~��7��C�!bd��`S�3�mh׊������W�m�J�me��C+�7�����Wwط���|��Fm9@��eM��f!e��r���Q��=*r�"�~�<˾pav�sg�x���6�M��!�s� f+��&��_�����o��>cj�le�p��� +��iL�lE���� H��$pf��S�t� �a��۪�[�BS���s☼�����\sE���������ric.��a���cM�˚T{��؃E��6{�C�J���Ѩ`�l�x�&��p廊HU����ݭ[qw�����.�PK<���0PKs��@ +styles.xml�][��6�~�_a8� [�/eR�t:HݙL�3�Z��Jdɐ�r�<��b� +���`�ݟ�?`��"�ԅ2)�Bw+�������#�P���/{w� ��񽇱1��#�Y��xO�_>~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +s��@^�2 ''mimetypePKs��@ MMETA-INF/PKs��@�4�/�u�META-INF/manifest.xmlPKs��@������ �settings.xmlPKs��@g5݄&��meta.xmlPKs��@<���0  content.xmlPKs��@R[��;[ +7styles.xmlPK��( \ No newline at end of file Index: test/odf/odt/fo_block/text_align.fo =================================================================== --- test/odf/odt/fo_block/text_align.fo (revision 0) +++ test/odf/odt/fo_block/text_align.fo (revision 0) @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + Joad rolled the coat up more tightly. "An old turtle," he said. "Picked + him up on the + road. An old bulldozer. Thought I'd take 'im to my little brother. Kids + like turtles." + + + The preacher nodded his head slowly. "Every kid got a turtle some time + or other. + Nobody can't keep a turtle though. They work at it and work at it, and at + last one day + they get out and away they go—off somewheres. It's like me. I wouldn't + take the good + ol' gospel that was just layin' there to my hand. I got to be pickin' + at it an' workin' at it + until I got it all tore down. Here I got the sperit sometimes an' + nothin' to preach about. I + got the call to lead people, an' no place to lead 'em." + + + "Lead 'em around and around," said Joad. "Sling 'em in the irrigation + ditch. Tell 'em + they'll burn in hell if they don't think like you. What the hell you want + to lead 'em + someplace for? Jus' lead 'em." + + + The straight trunk shade had stretched out along the ground. Joad + moved gratefully + into it and squatted on his hams and made a new smooth place on which + to draw his + thoughts with a stick. A thick-furred yellow shepherd dog came trotting + down the road, + head low, tongue lolling and dripping. Its tail hung limply curled, and + it panted loudly. + Joad whistled at it, but it only dropped its head an inch and trotted + fast toward some + definite destination. "Goin' someplace," Joad explained, a little piqued. + "Goin' for + home maybe." + + + The preacher could not be thrown from his subject. "Goin' someplace," + he repeated. + "That's right, he's goin' someplace. Me—I don't know where I'm goin'. Tell + you what— + I used ta get the people jumpin' an' talkin' in tongues and + glory-shoutin' till they just + fell down an' passed out. An' some I'd baptize to bring 'em to. An' + then—you know + what I'd do? I'd take one of them girls out in the grass, an' I'd lay + with her. Done it + ever' time. Then I'd feel bad, an' I'd pray an' pray, but it didn't do + no good. Come the + next time, them an' me was full of the sperit, I'd do it again. I + figgered there just wasn't + no hope for me, an' I was a damned ol' hypocrite. But I didn't mean + to be." + + + + + \ No newline at end of file Index: test/odf/odt/fo_block/font_style.odt =================================================================== --- test/odf/odt/fo_block/font_style.odt (revision 0) +++ test/odf/odt/fo_block/font_style.odt (revision 0) @@ -0,0 +1,69 @@ +PK +e�@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPKe�@ META-INF/PKPKe�@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPKe�@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PKe�@meta.xml��ώ�0��}�������"�e��F[��80k�F� ٷ�1�$�����͌f�A�ro�� +����(����UG�����{/ٗ��%�<�`�o@���Тco��1� ����ÜH*1# +H�r�[`S�OK�΀M��0��\3�欤�3n�6_\\ق(r!t~��J���u�E��A +(QDh֊�p����:���,��Nm���]�~��7�^ԥ�e��Ak��(�zV��A��q�a� =5=]�F��:�\���G'4���Y�/�kw���u�����>���+�Kl�g��;k�h��|����i����>�[Rg3&t�i3ve� �:;wT/��δ�n�J� �<�ɛ��CK7Z���xA��y���f��䆯b4�g�U5O=�-u@&:Kk�>��C�˦��,5���� ���������`�H�*8�)���W�!>�ul$̛���� dq�~�ݏ�s�0�Q������Bgdz��y +2�����qMXՑ +2`)�߇�Y�d�n�5���0�f��a�$��UWs�������AI�C<�{���u( g:44�{���� +���6�(3T��;l)b� �;t�-�r#0��:l:�V�a��FR%AD�1K��d4 ��pUU�j����x �gkKi�j +� ���TùPa��J~ЙK����m]f�+��Ŷ�����'[�s�{�9�^�XW�S����Ep�N�q{������Yl;:Q�K�~�n��t�#�t��n�q8׵m�R6Y���O�YP?���Y8����ճ�Jq��^(�1R7����i�JSŋ�3�Fw�9���S�n��|[z=x�!�'Q�Cp��= ΢Ŷ���uO�N��݀W&?��خ���6Ќ��j� +TG���ۛ;�b9���`� m@`G,�gc]=:h 1��~ ����^\�;ۘI��g�'L0ű���AxmD� +�A�����}v'��=�� XE���I[x���� ~( �ц��#�))��܁���x�`��:�#�����}�������1T_��-'�}���Ci���P߽����_�N���b�]��������|��� +�/v�2�=��h�(Y�'D&��9�p�/�1�2� �vd,6'̊'�Sv#����2��$�J��:O7�]X�����]�4��J'�F���3�`�XS����nK+�?�rr>=�\^�����I���S���α�Ѧy��/�����%�Ji���H�)��`����q�0�k�� .ӹ��gY��rw���ݼy� +~}�ȯ�ޥ�?kEMq���g�s.�L��Ҷ:�~$||����z�/���$�7z O�$5���E�RI(��%����u-�V�T �`�3������m���t��$v�9����y�$�*NDri-�.�vs�uW���L,l���89�W���#�Y�萖�S�A����֋PK&I g�PKe�@ +styles.xml�][��6�~�_a8� [�/eR�t:HݙL�3�Z��Jdɐ�r�<��b� +���`�ݟ�?`��"�ԅ2)�Bw+�������#�P���/{w� ��񽇱1��#�Y��xO�_>~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +e�@^�2 ''mimetypePKe�@ MMETA-INF/PKe�@�4�/�u�META-INF/manifest.xmlPKe�@������ �settings.xmlPKe�@ږ$��meta.xmlPKe�@&I g� �content.xmlPKe�@R[��;[ +@ +styles.xmlPK��$ \ No newline at end of file Index: test/odf/odt/fo_block/font_size.odt =================================================================== --- test/odf/odt/fo_block/font_size.odt (revision 0) +++ test/odf/odt/fo_block/font_size.odt (revision 0) @@ -0,0 +1,78 @@ +PK +=�@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPK=�@ META-INF/PKPK=�@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPK=�@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PK=�@meta.xml��ώ�0��}����@�'�{Y��V��<k�F� ٷ�1��H� ��73���ӵ�7�� ~�(6� A��߷�p<�_2Q��LE�5�u؀&�ۡC����� +ΚC�I�QLaNPXX���,�h����aq&R�f��-x�*oܪ]��|YJ49 �8g�[�P��:�B�@P�*�D ��rK�k?$�?Kz�S/�/|UuX��Mku�a�Fz�zкl%)��a�}�[;�4���L�L7�0�N��)�{@��������k֛���ݠu��]s���r8���E�����g�ݺB�S�Q1���'u+A�lք�5]ƭ� +�Zo��߰ڛ6���n�;�zm����0�-�� V����=�A���gꁯR4�g�Y7w=h,�G6:Kk��K�h�O���Myf=UI����������.�Up3�4#f��iC$�ߴ��H�7s +CcA��8I��G��oq�����nd���ܬ�A��M�:�h�k«�T�ϐ�>W�:'C�q_Sp� �m4��G�]�g����b���o:�PKH��&�PK=�@ content.xml�Z�r�8��S ��\DS���b�2;�[3����Ne� Q�@3�ѵ�yW÷�,��t��L� ��٩r9����AS�W�?%1�bRq�����a�/��g���pNz����JL��g�@�y�R��"��4� +F=[�jBS���r�NU\MR�05��Dd,]m4y��v� +�IF��@�t���p#��^Wl@5��bh��7�:��n���@�� +|�� �� ݵ�H��EQ�F|4 ]�p�B���0��nh%i�K �6|*��?�ؙ +��$�z1��Fv �mcC��]�|�\qV|�B@\�l��������۵<Ӵ�v(��.���?7J���iW��NZ�V'bw�I���B�YB@-��v���-i��Oc�%\�.$�L��3�hj�AW{ژ�Uʗ<�\Cj� +|���h����˝��cH���e Dw�%�� +Fx�>ufe��O��jGΎ�zy-<Ӊ5�!]O]���y��յ� +vV��{{��XB���*MSȈ���XG�r�S�#�)��0?V�jϮ���;DO�,e�CjI�дזȸ���]Q��;�5��Y?�{V���U�����D��J!U*͒���}PrASE>�: +f��"�WkvIg���L�����@UG��S��E����<͵���w��1ϕ=���4�4�m3<<<:}9z+�Z��$����>��Q(E�P"b�T�*C�:����� �텘M�eZ�pf��"k�b1ph�C(��#�feS�F�o�������]�ٺ�>N��i#���~i��?p����h8>{��O������d|2:={Ώ�����xpt<~��_>ʇ����������0~:�ϟ���p~Ee<��?��_ù���l<��T���0S�?9K[��Ib�������5|I1`���h�k +��\ii>�Qǯ��Ҵ�_� �z���߾ �Y�j�!ޱ��f�"�(���þoE$�˂6'd�7��7��z�')�P����x}H���=�h���/n��� ���LhR���9Q�����F^.��딈��`{�h���g}��*�5HrfSd��p�U(+��P�9(�� +���d����iDB!7�x�-����O�t��:��/�ÎB�l�?�Tg�Ao�XU�#��_�bqr��!����4iIQ�+��M2e�" F�����\E��,�Dx3��~ [^���yPqP)���LH��ﰧ���")��O(�29��iY1dgA��CP�P�U�rшq< +�D%#`��A���*��em����ģ)M��e� +�(�kU����/P��F�w�>��ÝB�P�1�^`�� j D� �h�4���v`��p$ ��(� +,f����F�G�!B-���}��`�ka���0��K� �����v���J�� �����ְ(�J���F�XD�*w�.!��ǀl��R \���=��}[�^�-C��>�!)!�MZ�n��Kj�A�*�����3Hc&�x%��.U�`��c��[���'՜���dM��2֔)clJ5�;]^[p��t�ܸ>L!���Z4e��_���4���!a���ɫu� �m�-"��}`Y�=.D�/����گ�*���+��U[�y�p����DCm̶�~��3�W ++�e!���f9J��b�;.**��Ɗ�17�M�Q�DT��؃M.n}n��~1% �9��.+��,��R�=��P�|!i �۠bs+6ȃ����9�-pZ"|��2Du�ፏ�}Nk�� ^��=��(�Dp�Ae�����*m1�'�>ܙ�h^t��x������1U6�jV��;�[�@%��� +�t����*�� ,:�ce�Pk�n8+,��%��F ��;��b0�̹}蔢z�~c64� �^,(�H +0c9�x~�c cWc���� +��I,RU�Ρ +��Vm#Ma��0���QE=Z�^8�]���?���J(-�!�^InȂ�ym�u����H�C�e�W[p��X�P}l?�@���t�}���� w +~�7M�I�B���ui��D�2zVx�!@�&\xѮ��,rSsP\B �s��*hc��� ֖,�Hbt#��0���=��c�k̄v�9�@4����fԷQs[�i֜��L�� t7~p7~ pw�Ǟ��PK,Kܦ$PK=�@ +styles.xml�][��6�~�_a8� [�/eR�t:HݙL�3�Z��Jdɐ�r�<��b� +���`�ݟ�?`��"�ԅ2)�Bw+�������#�P���/{w� ��񽇱1��#�Y��xO�_>~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +=�@^�2 ''mimetypePK=�@ MMETA-INF/PK=�@�4�/�u�META-INF/manifest.xmlPK=�@������ �settings.xmlPK=�@H��&��meta.xmlPK=�@,Kܦ$  content.xmlPK=�@R[��;[ +�styles.xmlPK�+) \ No newline at end of file Index: test/odf/odt/fo_block/text_align.odt =================================================================== --- test/odf/odt/fo_block/text_align.odt (revision 0) +++ test/odf/odt/fo_block/text_align.odt (revision 0) @@ -0,0 +1,73 @@ +PK +��@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPK��@ META-INF/PKPK��@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPK��@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PK��@meta.xml���n�0���{���E��QW��8x V�F� ��ט�5(��$<�73���˥�Wg�� � �(V� A�v���[� ^��(KV����:l@���С�`e�q� g�.�$ǂ(�0' +(� ,Z�,�h����aq"R�f��-x�*oܪ]�}YJ493��'�[�P��:�B�@P�*�D ��rM�k?$�?Kz�S/�/|QuX��Mku�a�Fz�zкl%)��a�}�k;�4���L�L7<3��sSN��d�ݠ� ���}қ���ݠu��]s�?7A��pD鋋;����Z#�u���4��6�'4��ԭe�Y��t��*$k��;�g|�jo�h�J� �<˵�����H�`> �-X񌆋���^���J���'��������$��|,�A~�W n�3� +8H���?^�^?�(�6ѯ -���q�1{�`O"��]�F¾�k B��I��a����q_�nd���ܬ�A��U�8�h�k«�T�ϐ�>�:'C�A_��i�v�6��>���i�g����l���o:�PK�[�w'�PK��@ content.xml�Y�rܶ��S`6{��[ڱ�i��ȵ3�Z��K�$�$����U�O�'�w�7�*�z2�/d�����(�~�PW�^�`�����ˉ�6s���z���_g��77x���dz�\����Y�l���_)8���a-���'��k'� k+k�1[�F۽��#VFhX�i1+���j`�����)Ng�X^mN�U2ʍ �@:���16�Ţi}5w�X�l�+M�a�������yw����r�b��Id@� u�e�X�ew���Pc�ܝ*��Y�P%u��n*}�Ɵ\��^��H�.�1r1�7��j/��*�X]]].�c��7�u��ZGرu��7�J݄�; ��Ow�z�m�O�����%H�}h_,���= �d���ݳ�Λ���x`)�����e�^�̛�dI���T'K{��9�'��eI��i �#&��N7������(v,�@=����"m�2�O�7��j���2v{J�4�� ���>d���#��:xfl�Ң#n��1UOX 9f�,���)�U��u��,�Q=�Y�����]-�d�hL�@d����~�2q=�3ȇ�Vw�_��}1V|=��2�,>ɠ� Qק[��͌�⃴A|g +n�)����֖���Q�?2��8zz0upt����&�,�B�.���ړ��B��ޟ^s#�,�l�Cgf/_|��X��>����hO +��Ff�»�*PD�0�&�\K_;۸���/�8ިt�X��(�Z����de +P��m�&�=�7��-�j��XG/����bP�V�>.t:�uP +�R3��������������ˏ;i�=}u~yqu����/?�,�{��ի���/?�� �F~yA_��~c��nx!�o^�-*�Z|�s��E�Kʄ����k#�=1�׸E�A�N�V���l�,ew��u�A�@�R#� :��](d�6����{�C0ԕ�A(ľ@�Qǃ�"%��x๳�9�a�h5�+N<������ZH4F�b�2u'�փzS����Ӥ�UD@�"�sO����Y�+\M�=uI�j�c{���D�I8�ԥtn���X�GT����P1�e>_?�#����tc0�� ��%i��n�C�ΈΈ��b�)�w5�7���u�􄒥��"���8�I��Q��\���{ +z��;okQ̱�]u���m}@���@�T2eS�$b�� +�#q���+��^R%���f%�� ��>�rNGqݑ�F�����l2���F6�=�i��� +�,�$�{d�ʽy�4y��4� +ܴ=�=CH4K���x~C��L�d��#�<��\c�l�zn<��< e� �+��iV�şy��t��`�g�<� +/����~����1�(`�) +��]��Z�Ӊ8��}�k��G�-떘ĵ�ij���e�Kݹ�,��\ki�x�����8�/�����gPK�n>��PK��@ +styles.xml�][��6�~�_a8� [�/eR�t:HݙL�3�Z��Jdɐ�r�<��b� +���`�ݟ�?`��"�ԅ2)�Bw+�������#�P���/{w� ��񽇱1��#�Y��xO�_>~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +��@^�2 ''mimetypePK��@ MMETA-INF/PK��@�4�/�u�META-INF/manifest.xmlPK��@������ �settings.xmlPK��@�[�w'��meta.xmlPK��@�n>��  content.xmlPK��@R[��;[ +styles.xmlPK�`( \ No newline at end of file Index: test/odf/odt/fo_block/space_before_after.fo =================================================================== --- test/odf/odt/fo_block/space_before_after.fo (revision 0) +++ test/odf/odt/fo_block/space_before_after.fo (revision 0) @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + Joad had moved + into the imperfect shade of the molting leaves before + the man heard + him coming, stopped his song, and turned his head. It was a long + head, + bony; tight of + skin, and set on a neck as stringy and muscular + as a celery stalk. His + eyeballs were + heavy and protruding; the lids + stretched to cover them, and the lids + were raw and red. + His cheeks + were brown and shiny and hairless and his mouth + full—humorous or + sensual. The nose, beaked and hard, stretched the skin so tightly + that the + bridge showed + white. There was no perspiration on the face, + not even on the tall pale + forehead. It was + an abnormally high + forehead, lined with delicate blue veins at the + temples. Fully half + of the face was above the eyes. His stiff gray hair was mussed back + from his brow as + though he had combed it back with his fingers. For + clothes he wore + overalls and a blue + shirt. A denim coat with brass + buttons and a spotted brown hat creased + like a pork pie + lay on the + ground beside him. Canvas sneakers, gray with dust, lay + near by + where they + had fallen when they were kicked off. + + + The man looked long at Joad. The light seemed to go far into his brown + eyes, and it + picked out little golden specks deep in the irises. The strained bundle + of neck muscles + stood out. + + + + + \ No newline at end of file Index: test/odf/odt/fo_block/font_style.fo =================================================================== --- test/odf/odt/fo_block/font_style.fo (revision 0) +++ test/odf/odt/fo_block/font_style.fo (revision 0) @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + O KOCIE + + + Słyszał kto kiedy jako ciągą kota? + + Nie zawżdy szuka wody ta robota, + + Ciągnie go drugi nadobnie na suszy, + + Sukniej nie zmacza, ale wżdy mdło duszy. + + + + + \ No newline at end of file Index: test/odf/odt/fo_block/font_weight.fo =================================================================== --- test/odf/odt/fo_block/font_weight.fo (revision 0) +++ test/odf/odt/fo_block/font_weight.fo (revision 0) @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + DO PANIEJ + + + Co usty mówisz byś w sercu myśliła, + + Barzo byś mię tym, Pani, zniewoliła. + + Ale kiedy mię swym miłym mianujesz, + + Podobno dawnym zwyczajom folgujesz. + + + + + \ No newline at end of file Index: test/odf/odt/fo_external_graphic/simple.fo =================================================================== --- test/odf/odt/fo_external_graphic/simple.fo (revision 0) +++ test/odf/odt/fo_external_graphic/simple.fo (revision 0) @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + Joad rolled the coat up more tightly. "An old turtle," he said. "Picked + him up on the + road. An old bulldozer. Thought I'd take 'im to my little brother. Kids + like turtles." + + + + + + + + \ No newline at end of file Index: test/odf/odt/fo_external_graphic/simple.odt =================================================================== --- test/odf/odt/fo_external_graphic/simple.odt (revision 0) +++ test/odf/odt/fo_external_graphic/simple.odt (revision 0) @@ -0,0 +1,242 @@ +PK +k�@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPKk�@ META-INF/PKPKk�@META-INF/manifest.xml���j�0 ��} +�{�n�'��w��8J�b�&VJ��sk3Fa��,$��P�^�g�����shc����DZ:������!��y����|PE�]VhdEV��E;@R��Ւt�V��5;v읇���>ޏ�W�З�rE �9Sє@s��w�P�� vbQk#Ap%.���;K�Y��9��A����iV*Kz��e���� +@��� D�<���4y�/��n��PK>;W��PKk�@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PKk�@meta.xml���n�0���=��S�&����F]i���@���lҷ_ckP"�$<�of4�җkSo. $�l�EA�m�张��{�o��{�~��,i��y�S~�ln�{��ILm�^'�DR�i@b�c�����Z�tlʏ�����4g%��q������D�����wV�����.*T�j@�� B�V$�s-�]��wgI�wj�%w����K��i��N5,��UZ��DQ����Č+����� +��D�r�D��t�<�^_T�������������+�Kl�g��;k�h��|����i��h|�ԭ���ִ���m��;�|CkgZk�J� �<�ɋ��CK��? �-񂆫���^�������g��������,�)�|,�^6�+7e��T Q\d�o���W�V�QLU�� +0� +�yӮc#a��5��!��(�ß~�� ���ԍ,:#�+��k�Yt����"�5aUG*Ȁ��~��f��!�)�l��i4�} ��y�g��O�b���o:�PK&�6�&�PK +k�@�<=�E�EPictures/87.jpeg����JFIF��� " !""#"#""&"!!$  / $'),,, 160*5&,,) + + + +)))))))))))))))))))))))))))))))))))))))))))))))))))����"����K +!1AQ"aq�2�#BR��$���345Srs�����Tb�t��CE��������� ?U���\�)j��ڨ�����M�Y��g��S(�,R��W Z�=�[����R�"%*A?�Gc�8/,Ȅ)N�V��o�ސy�Q�IJ�0�`J� �Rv��1,�VRE ��Q'�@+&�r�� ���\�UD\T��R����˷M� +I�51�Ld�*(( ��.9���GJ��3E2]��=���a�f�bW0)�"�’�l��9\؏�`��"�2� +WI��}��u�zKN(JJ��jsK����?�<��XfK��$&��P���e,�Z�F�B\B��=o|.��>T9��VVz�ݏ/R��;W�N��"P�8e;z3���� *����S�( +I;�_w�7� +Ͳ�L��0&z���~D>��K��.��?ɔ����˦���%ĉ*TT�@K�;�p/�z�HJ��CL�> |+P +]V6����<�FJe�T�����ϙ����Y�gK���2R��� +A� v��a��fv_���)* +[ Z�����L�i���L6PX|�'��OJI��T���("��ͺ~X��̔� qԥv�=�o��w�h�ӜuFJ������#����|\�(���Ҩ����m������=�D�{�*��%��z��{�{�:�BD��$(�IJi!n��ၿQ�d*C����Ag˙�_����Q<2@\2���,_K�IA�$8�� +hR�Z�rO�$���.�\�qb�J[K��I�����2�|���D �Xb \�^���nK�%2¸�n) +�� ��a�+�4,��d̈�ePC��e}��� 5��T��D�HS���ᘳ��n��L�)* *%J5Sa���6k''? +R�*IA�� A}�b��/��a�F0jz����� =�p�KvuRd�\d�) + ˆ�8anW�c�a��91a�B|!* }��, ﵾx J�YIx�g��K�%L��U���r�ǹ�A)���F�W +�v ����xF��#2��b�9��i(�.��Z�G���g%�2�ʰ�QEB��w=�]�J��K1O��Dd�v��,�ϕ�{�p��RƷwm�~o� ՚d�%�J�Z���>��ߞy�#+(��We��V����_�ω���� �1�� �Rvۘ?��YvF � r��J�P�����o�=�L�EDTT��) X�S��m|�ż��D_���v4����Ǹ�O���?�* T ��%�y�,�KOD���>�R���;����g�f&� +^��5�#��|�Ě2@�_B� + I�5y�`(ֹL����NR�P��nسIeq�J�q���ހv����I�&�� ��0�/�2��8v����S6��A�B\��ב��t����8bE$"�*�x��s{���791�x�0P���ok�aƩ�2�B`ŵT܁����h8�J��3W��+ �9��N��+�\����w +��!��`�x_�2 �d���B��N��lK=�p�,���eJ�Nf�S�� 6�Ǚ��fgP!w~ Az�0�@��o���4��̸��(D�0C�,ﷅ���G33_�J�H +j�-�[���7�}E?�p�����y�u�vu7>���C ��O�q��`錪b��M�1w������'�攸�RAu��'c�-���S�'�D�0DZ<0��,�f����k��h�yj��VPA,\�{��ly���&���Re���ܗ!���X�j|�f,�� o��zko�?'�]�ƛ\��UUF���)�?=��3zK0͕���huq��H�5�vf���|�jV +�˦�:K��l�<��SGfC5�x|R��;���xik`��'�q �n(�E� I+}��a��YߣjJK��@����[�� �Kӳ�H�ݝa$ր�wf7!�����(�&��� [Lp���zIzC���������� +A�5]�p +�[ 3��6��^P���k�6���}0vu�'��E\á-IX5)�{�������c��I(�Ҫ��w��\o��L�C�I��x���:�Z�]���24��R��x�*k H�5z�X +��O3LÀ���*M` �sv��� %���(��*t���7�.[ t<�h�զc��\@��I�M�{0��hs��&!�~(�R)ᤗ[���X��4�a0��?V���� �g{��[�k�972a$��ǭ�~�X{��lHCO�4&���WH�/��ǜ\(�f��������w�q����S[���'��=�&�C•*��V%�o7����>���p�پ���ٶ��� +ym0�e���Y@r:mv��W�iYؓ�T+�����p�����V�1� ���tskn�+(3FL���,�髡6� +#}Q��(��I ���a�A���?�O���[c� t6���TA)!���gZ�f�$�(&�Kv�>ofÝO�"�S $���nK +��ia4PԥF�B�p >}k�ƕ���J�u\&��l[��ȳ�E����0>^�� +5�9P�&ć�X�?����%#�"A TƖ;$3X`���fbo����U����W��XLJ�B!��MEKUه�|��<Ρ��1�0J�`TN����Њ� !P��@P�H���=�@��iU�$��A�� +SlE��fZC;��C>(�� +g;���EOrv�m� �:�x��A�������rp +&5��s���!�O��j��Ѱ�_�x�p���DT��0���|� +�;�he_�f��{a~�ֈ������I����Lg�cȈ�C-��K��]��h=y574aDJi��������]��Vk��.�0R�fv>�`Fj��_��I*���j$� >��3��_MJM&$��B�Z^��!�����,���B���TA-!�,���8�}�'��~��oz���g�u^�L� $�� "�����<�30�x)@) +�Kv�>ol5�Y�ixh�]W ���;.�!Ɩ45)Q�ARY����{Y����aS�$?���0/���އ��q����_�#�c� ��9,�*B���zV�0R}��F�2R�D�R�`�_��o�=��d�ĩf!ڨ��V#�lyIILEU)N�4�P��l�k�y`,��9j QC+-�rO6l9�br�dgҙ� +)��� +vP�ow�f�%�$��VP]�X����˦'(��_�U�eʞ�X0}�m��WS�N�R�%`��J��n6ħ3���!x�@'Q%���Jii)%�f�$j�)C�`���N�9�1��i�� ��؂-�����HA{��i��?0�.�|W#9!���C��v[�� +Nź���"HFI��'�O �n�Pg�e�t�T�LR��Q �܀H�>������F�T��I�~����l[9/�QZaPbd:����6�*:&Eq��Jg�Pᓽ[;sgl_=)!�"�� �P�)/m��>� ����Ԣt�J�R�5?xħ��b�O��\�B�j�Xj��H.�-���e�HL�����Vn����¯lQ�i �J�1�ԃ�@<�$���˲��`�"� +/K�Q%�>彰\y,�D.���z�����?&��tv_�)I��Z�a��p�����Q2��*@EJ�P�tӱI!�>� +dbe��� +��-Ҥ��ɸ8��.���Iꚏ�$xi���qfY'��ȡQ�1T�D.�5�H���g�|9��Z�A�1P��T���gol�ӹnJ�L2��R���Q�?^x"_�L�\4 +|B��R�T�m���Ni����Lb��P��6,�/\&[.��TM5+�j�s�R�v�����u[�WHR�����$����_�e�&P8B](�IrN�s�ezW/��TU +�QH�7d��$��؎a����"gԠ�~�+k]Î���,���rĮlBJ +��rMWd�X>�k U(��6BcB!A���@�ō�ߘ��� +˳4*PFJ��3t����;Y��0�� �b�!u(��˧�,-c��FT�%AN�)�)� �+m���C)Ja�G��TKs%E��d +!+�T����R� ~b�w��|�fY<�l��T���dՈP��MR�w���_֗j����f�9�T3 ��+ G'%��� �´�<>�n��\�w�2�4�V�B�U�z� �ܹ`)��Rr�D���Y)�%�>w�{�dz�K/A��I�V[��l�s`�o,JgJ���N�;(��P��l��?�<��Y�L.%t�tROP���`���v'�G��b���G��~(�n<�1��i3�E1BT�X�@����//�a���n�P'bjw =��h}/1*b*1H +�A[]�X~x:�sqg��ZB +����k6�7��Mh��DTeF � + �.w�b9��L�qF�(�MN��%���`�i�ƚ�����%������l[��X�Ҽ(��M��? v��|��In�))����mP�Һy�)Q��#f9|!Һ*n^pň��*�[������6/�:Bfn,5�)RBi)R�i������!��a� �3�++J)���.���5f�Na�Z#%%��A�;���,�,I.��Y�Jk.�!��b�v{��%�@��@PS3�Ů�n��$��.&��]�W܀�?��]��8��,H�]B�jR��;�����9�f}�-<3D�Wp�wo +����陉�0� B�(* ��;�8�z��{2S}�G� �4���]��o<=պm��1B���@!�}��<ҹ iy"���\��ͷ�3��hI�I�E�R�RS�]\G��`7�1�i�v�F_���j���~I2A��� t�e�RtL��!E ���"�`yo�;A�S�si��H�'İ�s~G �ƧVi��q���җ$�],��Uo|�m�d�q�GJ +SI�I!�����f4�%����C���B�]��t�vc��d����aAT�b\YϗL!���}9�y+!��Wr�&�wv��6����,�,t��/�_�s'�}���hGhj�")���`]��|��Gj:>jy0{� +�T2��veaf"�p�&���ebUq>���V ��9�.�[>�҉����*���B��8�L�r2�UQBԲ�K��V4�{ g{3г�S"G)B +) J«.U�;��`]q�����I0�K(��6���R�� +�ݘ��0��i@P@���:�-a�c�c���#":#�xBUj��) �}��^���r\*��\�[n �9/����M�I�)ȩK� *���n,�{[瀿6�Уə!�P���R�Tk_ t��N\��+TB�) ����%�;?�����-&R�V�`���;��nv���i��BT� +��s����J�6O}�@r�;ە�6{�&��q���eI5���X's��ޗ�]e�Ś� @()�Q`�'6o{`w�_�#�c���v���ݎ�k���CGvsX��ymv� rhSbH���MV�ޚ��w��}��fLQĔ� '����w��!��P� +I�`��{�`/���c�30����8j_�k7�!���36�."�l(� �/��aη���K��*����m�����<Ĩ�>7 j���.=�j�sFL�w1mUj���_�Si���X5xG����g���a&��s��L8���4� +�{��#^ꙹX������)���k �NU/��$����5��3���]��˴XS�B�)@z�'z��Mٽ�� +�L�:2�0��CJ�Y�%���$��vq��f���"��9.��-c��q)w��?��E�z�?*��}�A�DH��F��gz���}���` �i<�Ӏ��t�~'�o��j�H��)��^�X^���K��f�1��t�����"��rƧ�$N�?�++�W�z�b���m�سIgS��Lj��J�ճ�[��f�;���S����T�ȧ�F�u6c|���N�?�� ���z�`�=�}������9��Ɏ#p�\R��ũ �5<��gh��zRq��QHPtq �_�� �Y�sɉ|�Q��h���C��Qo�p��!ff$�#M~ +O[�o�3�|i�?�['��;oW6�S?��[��� DTNJ�����U�-kyu� =}�+8��?Vcf�Aj�}�N�g�<<���F�G����Wfߓ��Vw:�a���\AAK�n>/���w�þ�5dܒ �YUQ +B��d��{��Ü�>�����Cx�%,!����� y���s�U=ψ|X!=T���ϻ~X+C�te�5�*x�}����v���5���x���UA!4 u����Z�~[0`�)�%�_�}���C@A����Ȏ!2��W��T����yb����fu�*E<�ܽT�|Vo|i��{1+"b�K-� !�`�[kOK�^�5�ܩ\��])[5a�!k8��@�ӗ �� +5Q�6��=ٽ�a7f� +'{j1��W�v�l,���0���"'�T�� a��}�g}�oiz�nQP�T +)��7p-~���;�v���;߅���<�|2��#���9�oW&�nۿ�}-0r����� +t76��lg{>��SJ�#x��XH I�mm����4�$[LP��poM^{;���sF�f)��2"�l_��W*_Tٛ�g�va�B|5$%�`��{�m���6�/.^� +���Ͱ�������O��`7ڿT*M(�JY;�gۙ|��S���Q)��]�= `�=��B���zb� ��֒���IH�ɺ��i=n��ʆ�A>�E� +�\CSk�J��($�Kn��l2��2������b��3`7k,Y�Ǔ���� +($:�t�B9����-Cݥ�p���ms�G���Lga)J@B��-q��c���e)9R�!NՀR����1<�S�e�S �UL0�˛��,�ohʉ< p� +Y@S��r��Xc�5���Š���ә8*4Y0�� R� ��� v{���Ėj�� +�i��b<ٷ��1�ԉT�}��U<�b��+�f��J�\HQ!%4���;1~{c�k�4L�: + �$P�K}�[7� +ͳ)�I�b���.���;�y`j��+:e�� �,�A.��<��z��K� )KXH �S_a����N�L�R �i�&���[�������h�J� �@�( �.��Djq�K�U %HYI�K�c�Zg�EMO s% *J.�����]�nm��r��U0H @<�\��ϯ.�����Z�]{7!W6no�Y�;BV](PR��Q{�7=� ����.�w�����s,�9�R�Jjb ��bŶ�0�F�\�q᪒� ��? +-�_ó{`;@kÙqQ +R�`*�I�ߘ?���5�aPs,  +5)�D��ÞgY�J��@��$�\������.]Yt�4�|W�R|B���A�{�8 +���6WZ�,��8Im�.Қ�Nɉ�C�H* �;�M�0�%���\���H�&( 8 �!�|G4��9tdɈJ K? +"�=�w&�}piӕ;6e�!+ +( ���Ob��`�M1�(%��P�����RYl�"S� +I ����,��� +3!�%PJ���gJ�'I"��,N�L�Av.�~j,���0.E��ȭQ��0*! ��.yc��C���#��!@T�������.���T��(njS�/�C=���.S��1�K��R +'�*y��|���U,"R�I +)#gq���, �B���r��\��I��ɐ�&�P r +���\b2�r�G�R�ރ`�9�9.� š�� I���� �!*R����y ���2Tee)���R��XY#��Ge��}#p?�z�����͝��՚j�q����IH I��X�4��>�����Xk�޷ls2�fv�-K0N�t)/䡱n��r3|�^����p�e��rR��N��p.���2�$I���R� ���Y�ˠG��|sB�")�{)�o��\�,ɂ��)�Y��� �}�DZ��Y�)����*�*��pF�o׋�^���`�":B�-B�&�(�-�2ii t��%uR�JʬX>܆��fYfh)� ��I�A!�mg�銡Me�:S��+5x�J<�Q�ͰN�o/�3*�T�E@$$΢���c�S��fQ0��|!$����7���ҙl�EO] +�+t&�i �{;�L���B�R�e���A��l1̲�Y�c""�J��Rif$=���3+B�� +��S [`>��Y�\��%��ût�����!�e)+u#�Y�kQ��-�ۧ�*Wg;�z�k�p��;�O����]=2Bi����K(_p@>CT]=�̭3�S�-���ܚ�_D���B��q)��$y��q˘�`�,�Z^��RT*J�܁�{{aVK�`H�Q�b�0*! ��s˖��_�?���8�r[�����K�4�YEDTE��PI.�����ƃ�s���R��$Ԗk����u�[7�J�҂��>`_���Ne2BE4z%�%�s�[^���' �CPJ���U����y��)��V[����$Ӳ^������C���Q�� +����S؋�;��%�bM�P+0�4��:�k��/�~��q��ˈ���I$��p��|�F��1�"�$%��i)Yf�.,_{�,3�2S1% + b�j��P�@z�犴_5��@�:�����X�<��U1\4�,��c~lY���HF�LU$���Ap�OR���<�#���_�T����_���g�.U=B��j@z��ƫ179y{����aY�xS�1DJ���-�wf�0�_�H�С���J�8m��pL���˄2�ҸD>��~�g�]�d��LȈ�d0LE;��<������r$���\GY u'd�=�ձ��]���M*4X��$�k~f�����꼋5�����n���Jg������x���#7N�Z��a�����b�_�'ם�L��&4(���$��(nb�����]Q��L��Y`!���KY]�'grpe)��.�P��RSf��c3�r,�dbF�n�"��J�v�����X +/f�F4�(�2�U@҂�,~��a�f3I�;Ɋ��b� ��zY�����b��2|�4H&TD\0����LǓcI7':r�W�_�nU͏R,�o�[�V��>�& +� 2�B��pz��\�MD���5E��Ԋ�ة͹�v���[����Ј�)�LB�d,�~�W��9��n$>'� +�L;Xݬ�>�]��}3#$X�CP��\6 �a��>���fn{�"K�HR� +~���8�7/��,���Yo(,���q�tL��)��Do5)� +�����Q'$�0�J�R�U�� �>n��b����˩T�.�It��cԳ�lf�E�žR�8�+�V� <���w� Y�FK�F���aP�@���rn7���{6���ꊃ ++R�֧{�{�����Ϊ���RR����X���Jqyq� +O3�H%%�!�c�� +;7�'`‰ޫHR�Yu��~�� ��q<\.���r��=��I**���H�w6�y���4�S���q�W��џ��m�ϴ<�r48bZ��ZPX���{y�����ѧLt�H��I�,����놺�O.rB���U��1<��NK%4�$Ê��B�$�&���-����'��Z�� ����Ob._�� ?��Ͻ����c鍎�dtm7��T�e(7������gy�`��C�E@!6X�ݽo��5���*�P���n�`߬��?TY.�PA�D�=�}��`��0e�w����=|�g�GOLE� � [�I T9�\?��V�ֱ���Б�*m��|CU���<$�J�� +�����ӧ��#�fgU0QG����Clֵ��5�y=,1��!�)z���no�ڛP.ZS��ԯ[z�b���M�Z���!T��cg�F��vi9y��~��I)�ګu�agf���tE3))"��1&�9;[���W�h���5D( �$9���k�gH�L4%E`���9��� +�uf3^ +��D:|%�;}����{I����!R�S-iSkr��� ]J�e�젿 ����w���Nĉ*)MAHvgf.O�Γ�f���/�Rj��$y��3]�jL�<���C��T��\��kٽ�bZ������a%HAHS�Jp +�-�c�4z�SĒ�P������K�\� �p���.em��0�AM(z����ߞ5Z�2����,�zSP���Ϳ�К�$챊�R�������63�_���3��%0�T�RXs�k�o�kنu91ff����*�Ǜ~xC)�3C��HW�Ra����v�*��a�h:�4�Hp�CI�5,ݘ1�y5����e�At?2� o�Kږ{;.�FX� Q5�)rf{�<8��)��*��O D$�����R��vy�cO�������ȂM텹�i��f&\BI���w�N@p]���Ǯ���a1*f +� %ʔ��O`,7��6��3��& +�<<4�8�����^�utIT4�)k�; ?.g�/�:�sr|u�� +� ���/�lZ�3��$bK������$�G�`��Gg9��yR��$-��*Kŋ��Q�;H�77�\4�* +))wK�Q���}�Ǔ�D(p�E!J+{�!�3o�]�jL�&gŠEJ �P�BC��b���ݥ瓲�w�SԤ��\�ll�n~��gz�Pd;�PI(J����/ �����΢'!*A$���q�(N�}ģ�� +T��n�Z���3ݞ�S��^=J@���)���&��W�,o�;�p�>u���6�z�VE�D:��u9��_�p�A��(�8aTT(@K����oW<���\OL—�\����=?���>�\i.�PA�D�'z_o"�A���i��B��*f����Na�t_��1��'x_�?�;��5,¸k�<,�V�=�����0&83JHIRX�%�ޘ�'p�PIG��Z�r������r3�V�� y�;�K�y�kB0R +�� +!5ܐ1fM�K��Ls .�G�!E^ż����$3 �%��& ���$���q�D�$$ +e���T��G���X +2}un9�0�*p*e5�)k8�<[��z�0^�R�@H'���Yf_#T�nU�rH������r��")I]��9��q��� +���a@3�$�@5�T���Ӛ�[3JҸ xd"�wb-���u_fJ�E4���d���,q����J�!v���`�>x +�v�}ׄ�B�u�`~�����;P��\0Q/_ 0�$ E96Z�3 +mĭ�6�E;8�ߓ�g���*�A_ ��С���~��Ne)73� +^% )H��ܷ���?�e���T +I -��ǟ?�z�&[$��@�$�����]���VY��AS4pʼ.�F�� ��7�Q�5��]2ɀ� �J��\���f����N�(u��BZ����/��h�r��&f�!O�ܤ���v��F��g��"k0II U?t� �m������Xd�]$�W���A#���2]s�ӄ�J�*�1/KR� �l_0�rt�CSZ�'Q�����bsR-��9���'g>��|5.��ʐ�×K�$�C���m� )�IƗ���*����?�~�c-�A|"�] +K� +ȷ˖$�K��X��@:i%��=K��ܾ�9���5.�5� ��J�#��8�����c�aҀ�!pZ�/��S-�cef���y�\�s��)�s +g +F�D��<��m�us��VB +�DU��HJ�O�9n����Z{9���qP���H]'w�x��˳"�S��؂�������#8˲�����d��{T��/��|��yy����4��)�V�>�Rj�|�" ��`! l�n�X!Y>[,U<�ڪ�$x��;9~]lئ˳dTRW�-rP��+���(�r�߿��:��qf}ߖ�Y��\ Ƹk�<>*b�C��n ����2�'q�'E>���כ��/ʑPI��-�Z��`����=^g���(!%I`��{`��6�!�P +�� +)MGw$X��r�g(J�UY$5'bR��]�4,�C1� F�1&��w������O�9�0����,����v��*�̐-�* +g�G�y`�Xp!�>"|I)�J*���� +#�&��\D�����@_��p6k��M��2R�()@�Pf�l�kC`ʴ��^�G1N� F �-����fZ:Rz"fE2��!`[~E����:g`�%a +J�=&�Ŝ��c�źc ��.�I$�`M�/{�{�;0�����^*IKY +I)��6���G(��2�t��z����� ?s�Zo���Mq�*J^��j/o�ľ.�s�QT��J�ݙ�t�7����-�e �w�"�$� ,���� +��]�d��P�Ƽ2Ep�V7b�0T��$���G�) =R�:?v�z#H*DD1"%j�����K��p !K�"��(��VA����X#�ҙ]q��5Dd�7`ۓ��l+�ٲ�?�8�ᘜB/X/S 3?7ۖk}(��h�% +B�=%� ��S�hI��hEU+e(!�V�p�V��f�ry�%@�JS�P%[nb�b�;�;���TJ� +�I�ս/��l"ѽ�Ē�1� %)���N0��{`��rYd4�1� ET�Y6ې�~��� 98�l�U(u$,��=���m��&���$���2 +BV +���ȷ���P���&e��YJ�ӵMv?���4��kDd�> +P�@�v/�|��� H�˸��(�,V��i�[{`]��! +b$D�Q �� 3�I�a���y��8�^�z�ٙ�ܰ +rM='�%kT{�-\Bavs�T΀��2'8�e�R����r>c����0�% +����[������:!H�C��V?�rH,O\��]'�����jp�d(��q���ܲ^JBex�Oh�K*�-�� +4^�\�Uʼn tҐ�f$U@1���|S��9\��1���� + +�5�,��Hc�7*�y|UL��d�O��m��kr�ǹΐ�̔���VԕCe����ګN��n +bPRAIS�H �k���h�2d`�*"V���K�,��a��Y7Jb�x��&��T�Y��m�r|�O*A�0!���m���U��n��`�J��EI*��eY�� �����F*yP�*P +H[���A��_�ӡ%;�{�MW�P�[��o�by�S)���2YP�S>���,9��o�x .��?��[|ۣ��:?F*IQ*VV)�;�� �5�|��$��N��J�*U[���7��_��iI*1���#�y[s�oL +�v|�ӆ8���J +P!U�k%�kC{a�����@����T��b��v8 � +$��!���o�W1�Q/�������]dS30� x�&�T�7 ��96Y����j��%����m1:�'x�c���K`L�g3�L!�EM��urv������u�7�ՅV_{�ғ��� +��$� ��/����o���&]�z�e�ܚ������J�`#�k JyU��̀�UeQ�ɘPT�,�j��?���: %����DZ*t���s��sv�=%7�*uB?��@���Ѭ��6����a�~ �E�0K��,:3w�U���f\e���Ĭx��Y�����0Ǵ=974!p�t��H��(B�� +Jw�č��|59��Ҕ�8|@��0�}�g���a�h�3���+X}b�������Ti �6`#B.�RR�����s6|i5�O13)×.��R\&��׶�[�bZ^,ّI��SXb~�_�Lg4�f����)����U��!�� +��KJ�� *�R� +�Zֶ�[�/��9���0TV�����ݍś׳��f��~(�@�� \�ۿ#�=OpH���Jj�9z���p ;E��K���$1EA4��+�6�ɰ�g+�9D�#�][�����𻳩���Y�����Q�9�r���N�JR���.� C}ݙ�k����gZrnTE����p�O*�Q��,�U=^��)a�ݝ؟<Y�U1@�B�5 N��_�Lw��ϲ �XqDŽ)B�u͹� =��Y�js��%“� �1f��o�;C��G ��;�a�MO`X;6�o� +ZB�>=_Wī�X�]�gwo +-��=}���C� x�Q���n@-{y�o�=?�p�k��>��\"��1{���b +Op;6�-�o�eq�I1�hP +w��k�������/9-k��A5aU����{����}1���B%8`AM��7W}��Z�hK��S��(��&�>�����̾����S3q"&(���voُcv����~�,C+{����?��L��J ���,���m�a��׳P'�(BhIH���ݮ����1�%DHa�T�@ �of�8�%ϡL� � ����ӽ*g� ��h ��� +��R栠.�6ޣ�Cj(�r�$@� +)t�, ��t�{Mk����4(�R3ܟf/��}~�(ɀ�!@$1 �@ +���l�?�-,f�0J�vHJ�V�Jg�_��e3)a�MEK�f�s5�"�/��]�ͺ +�0>��蟆��I��@,_bX�at.�ҩ���4��aowvrg��O@jɉ�(���ZCn�?�f��ja�Ja��P-w�wXs��Z$��IY$% !!�τn\r�rY�8��o�!G�a����]�8Ұ�aʕMJ�Hg����3��*��5M�ۘ/l-���3� PB|5YiPng�����+0 �U�DY�$��t~����0�%4��� P�O���k�i3+��T��\��o\;�Z�� a ��TH$���� +@�J +t%Td�3��{�v�������?^��DLi�����D�;�����W��#�B ��X2�� ��`+[�}#��Q����&vw��͆z�SG�D3 9Y �W����8e��>��(�����jjgg�텚_X&xĆ�I"�,���p��>Xr\�,Y!H5���0�lg�n�����, ������fݠ� ��JRBT�b=l0�S��¬CI+S2@K��D ��O�+�Gc�?Ɗ��O���q� ;*�?����n���?�C�����?�����+vs���W��`2�D�D����/ �����`5y��I�ӣ�N�G�����+��!�����'��v������8��m�?�!�b'�b{*�x������v�V�x���-u���4��]��7����N3����v;������8s��E��:�#��`2��/��� +�����k�E�a�h�V����_�q��_L�L�"冝�|R��_�1�������?��s���?��ǘ���\n�h�I�f?�O�q���q��v��PKk�@ content.xml�WMo�6��W�C.�e9�����&E�����H�"U�����R�,m�T�`O�!�f�{g�����R�hÕ��b�L�\����/�:x���Veg����%H2%-�%�} � +JJ�P��MPk�(j�I$-�$�%�yJ�XjQ!��FVPm�*x���d���t����\nJ-�Q#6���UEU��B������~�ߡ!v�C>�W_A���2Gc���]�xJ�G* +�$9�(�RT`�;�Z(��O���oo�C + +�:� 1p�L4U���V�k � � +�O��+�i�iU��ī���w����#�Jc{j�q�3��(��Z�2�!S�3�T�\�;e���,��2{��y^\�[U +�n�T�G���X�� ��q�]d����K���ŭ�M/�Z۹z64І5��'��f�����U|�y�7��E�W�'��dt��J�� {{�O�����S#񦔛J�c�j��`R�� .л�?�����b|�؃�7/V�_,�s{��i��Z�R|�� 3�{wJ���Cy��Uєh%��@����)�b]I��?I�"jm�D�S�����/MI��QuA:Ү"U_@/�C�j�$�P��\!�*R����N+@�o<5hDL�R��T����s˾u�FI��ٟEW�U7�������m^/ �ҡ=V0-�"~�@��%����"J�;�GЙ +�}�i�u�����+�O^S��6�7HOh_exY�e�cߞS�Z,u_4���PK��P;PKk�@ +styles.xml�][��6�~�_a8� [�/eR�t:HݙL�3�Z��Jdɐ�r�<��b� +���`�ݟ�?`��"�ԅ2)�Bw+�������#�P���/{w� ��񽇱1��#�Y��xO�_>~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +k�@^�2 ''mimetypePKk�@ MMETA-INF/PKk�@>;W���META-INF/manifest.xmlPKk�@������ �settings.xmlPKk�@&�6�&��meta.xmlPK + +k�@�<=�E�E Pictures/87.jpegPKk�@��P; �Ncontent.xmlPKk�@R[��;[ +bSstyles.xmlPK��j \ No newline at end of file Index: test/odf/odt/fo_table/simple.fo =================================================================== --- test/odf/odt/fo_table/simple.fo (revision 0) +++ test/odf/odt/fo_table/simple.fo (revision 0) @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + Joad rolled the coat up more tightly. + "An old turtle," he said. "Picked + him up on the + road. An old + bulldozer. Thought I'd take 'im to my little brother. Kids + like + turtles." + + + + + + + + aa + + + + + bb + + + + + cc + + + + + dd + + + + + + + ff + + + + + gg + + + + + hh + + + + + ii + + + + + + + jj + + + + + kk + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: test/odf/odt/fo_table/simple.odt =================================================================== --- test/odf/odt/fo_table/simple.odt (revision 0) +++ test/odf/odt/fo_table/simple.odt (revision 0) @@ -0,0 +1,69 @@ +PK +m�@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPKm�@ META-INF/PKPKm�@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPKm�@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PKm�@meta.xml�����0��}����@VۍE��jO��R�p�@��&d߾�jP"�$<�73���뵩7�� ��(6� A�����{����2Q��LE�5�u؀&�ۡC����� +Κ}�I�QLaNPXX���,�h����aq&R�f��-x�*oܪ]��|YJ49 ��g�[�P��:�B�@P�*�D ��rK�k?$�?Kz�S/�/|UuX��Mku�a�Fz�zкl%)��a�}�[;�4���L�L7�0�O��)�{@�۽�� ����7շ�A�vǻ��n��_���%v�3Z˟�Ft� +1OiF�4�'4�O�V�2٬ }k��[Y����� �a�7m�n�݄w�������a�Z0��xA��{���e����_�h ��n�z�Xj�lt�֌>�� ������z��h!��������G�V�Q�8ӌ��J�� +��yӮc#a��5 �!O�$ +��0I�q��-N�o�R7�@MFnV�UԠ��&]g��5�UG*ȁg�}��f��!�)�l�v�6��:���v�{����b���o:� PKr/&�PKm�@ content.xml�Y]o�6}߯ ԇ�L�%'�m$) + �5ð��^)��S�FRV�_�+J��Drզ)�typ��s��')"o�r��D**����"<1�����Ww鼹��B$ ��:Q���Hp +�Qk��$Wk�i~锒�VT�9ΉZ�h- +��B�kPXc�a��*p�-xB��t���q8�c�C�H�]:�����R����Ga�&*ϟ�^�y��jV- <��}.�֔-�d���J�j:W�6=S�w����.� (k�H_FNn�ksS�l$[ r �p��T�� �l��VK�����O4��]����e�%}�����L��dmM[3�ӹfl�� +�e�&4�}jO�滅���#�" \W�j"��B���`j<6ǎJE�������Mfv��M�'��o ����t�آ��`�=6����ks��V#3x�r�t>8�0�+ϬvPF�fZ�vP��_��e$�0�<إ\i�a"��gc�=�� ��n�#��$b�ꢩlgF���=;7%�H +�%E��c# +�#�ȶXҺ:��� +�z�?H��j����tN�AN�R;�I>ݣ�eDc�>`��GNፂ y5{j�np&�j?p�]}zCWફ��ɀ������Ph�@�ƺ���R��)r�l�^�s��V���Y?n0_�/�V��kgO�n!a����5�X�8ڤR�<� +� 8�ڜc�R�B��-f>��^`$�fI�lȮEa[��Ō�pܖJ�dwȫY�;�z�jn~��I��� \��n�ͮ|0T�q��K�^��J�W��_����|yz�C�=��i7Ǘ��y_�V����.��� i%xQh��1��la�tu�?�jK1�)p\_�:��ٲ��~��䡽}�������vW�O��`u���OO����7�a��e���ۅPĻ�K��Յy�R����!�Ј�)��`x�R� �|n �oAlf�q�c�iަk%vcN�G�����Қ��g�h(&���Ai�C!6�d[�8FR0Fb�3�"�5* � I��ہ�f�yˑ`�(�f�gRa�ʟ4�7�yMܨHP��������3t��$ѻ���N���w�Q +�(��;��~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +m�@^�2 ''mimetypePKm�@ MMETA-INF/PKm�@�4�/�u�META-INF/manifest.xmlPKm�@������ �settings.xmlPKm�@r/&��meta.xmlPKm�@)�ƹ��  content.xmlPKm�@R[��;[ +8styles.xmlPK��% \ No newline at end of file Index: test/odf/odt/fo_list_block/simple.odt =================================================================== --- test/odf/odt/fo_list_block/simple.odt (revision 0) +++ test/odf/odt/fo_list_block/simple.odt (revision 0) @@ -0,0 +1,67 @@ +PK +��@^�2 ''mimetypeapplication/vnd.oasis.opendocument.textPK��@ META-INF/PKPK��@META-INF/manifest.xml���j�0 ��} +�{ⵧa���'��8Jg�e+�y�9��c�Bo���Rs�/�8dIþ��dc����|�>���`���Y�Q�(���q MvY� �[R��X��W�Қm @�;��Ǫ���ޏ�W����윩xJ����5\��J]�X���j��|E�F�y����̔s�%n@6o�fd.W�����Yl#��N�PK�4�/�uPK��@ settings.xml�Y]s�:}��"�w�G>���!�7 + �fn߄��od�G���dȤ`Rb��-�J������_1?y�"7^��❀0����{uJW���?�8�D4B ��.)К���.T#{}�R4��H5�A5t���zZ���u�=Y�H��x3��F�<��O�g�(��j�^/۷��I4��U6�+D|sd&d���j��y9��;Y-�]hj^s�����+�O)��؜����x����-j^޼?���6��[��˄�DB{��՗���uy�����0�y�K�WՋ�L?G����>�]^T��/D�Y��kՋz���� � hО11��`�ȁ �9a\A1'w�%q��C8��R̒R$BX@��|��9� r�_���*- �^� �`���]�;;����#]j�/��¸Sј��l������<ؙ)_�4�B�1Ώu�V��/�xD�6!7CI�+ōvX�Q曭V +�SC�h;�H震��s��U�� ��_���d�D�3��a�I6b��a�C ;��eZ�0��4zF�a���AȽT���_�@�����T��N$��m�P�;�2\�Ò�d�D�2e�ѹ�nH���.D?;�$b�8����<���3�n*�1vB)oy�7�Q���݇ZG(^Ux}��h��t�M/L��y+L.��K�,�`�&��j�@�8m$�A�`��<�\@~2�Q��/�g�EuP.j3�� +�+H�B��v3wA�" �B| ���Y#�+��Ej���&_�t܂�.��IE�' _>)��L���"�e� +�+�̮z��Q��v�����m�)=�t����W�T:u��>����;Ԙ�QE�9�oy�����E@� +᳤��×V�\ı�JI�d@m���1���d��|y����,ѩ�[�����'��:X�e���\+y�������a����R�(9��~�,� ++��E٨�������8���5���Au�ވ�M����iEW�� +���� +���mKk�%n�dIbT͛��ZKSTQS�A'G��)UB�+��)^����s�[�+���;Р?���ߘ�0��m�N{�?R���Ҥ�z��쁉����2M�2���"��+�4�曐����M̭��gD�% +yj�tc��Y��Sh��e*1;/Ŏ���t� �^�M�I�`�b(ˉ��6�_ �ڛ�t6���w�孏��]�[��PK������PK��@meta.xml�����0��}����@VݍE��jO��R�p�@��&d߾�jP"�$<�73���뵩7�� ��(6� A�����{����2Q��LE�5�u؀&�ۡC����� +Κ}�I�QLaNPXX���,�h����aq&R�f��-x�*oܪ]��|YJ49 ��g�[�P��:�B�@P�*�D ��rK�k?$�?Kz�S/�/|UuX��Mku�a�Fz�zкl%)��a�}�[;�4���L�L7�0�O��)�{@�۽�� ����7շ�A�vǻ��n��_���%v�3Z˟�Ft� +1OiF�4�'4�O�V�2٬ }k��[Y����� �a�7m�n�݄w�������a�Z0��xA��{���e����_�h ��n�z�Xj�lt�֌>�� ������z��h!��������9C��(f�iF�^%�ӆH�iױ��o��Ƃ��q���0I�q��g�4UZ�F���� +��T�ܤ���&��H9� ��Cpլs2D�5���N�F�_�8ڦ�߫��x��F�~��_PKj%c`%�PK��@ content.xml�W�o�6~�_A�y�L�H�D�] tK�aM��R%q�H�����-S��� +�<8���}:�����J�ӆ+���y���*�XG�~������nU�sʒLѦb��TI ���,#��$D�j5Z&�nI*fKU3yJNXbA!�tFZm�*x���d΋�t��Y:��KRb؀M�Qim�`\7Z̔.pF1� +^��Ǫ��m;kW���1�9J�֫lrd�D�I;�KZ(������G#�\A�T5lk*�PFO. � +���21����^�;��7G�Uy����������w=�Y25:� +��M�2�-uc�~��O��< ��k��\߶�{�����K�=h�"�Ap�"���2}�ך�ԏ��� 9� ռ�����~�?Y��>wE(��.�@."�M������]CyF�G" +�$9�(ع���~td�Tn��sp����56���D���Y�;�O|�l�x_���l��T�q�A��$��"�J�![2D���Q�4C�Ֆ��P�DJ��V��#HCx��8��䕣)�U4��Ё�6Bd� �3�P�$ч �"[�.�f��Hp �(� +�� ӽ�̢'����k ��ꘑ�{X��,�~��ƿ�����[ǂ��o�Ћ�0zua8�3�������s��c��� t�{�axY��zI=�� B5ܓЇ��h +$s���m�'��$7[�ވ��A6 �����xE����p ܉�|:�&��n�1E94���-�3�7ӫ��˂����-�����,@�n\��&V ��-�ض�Ak6E#.�g��JJ �ڕ0����J$�|x�������;�70��2��*�hq{ό6:�˒a˶��)J�͑@;�ҿ��Vev ���T��8 ��������Öa� +��9��;S~�¥Q^�����ɫD�,l�PVN���ɜ) +_�Q�yٲ/x ��1kNir�y�K�7��)IM����?+N��[[�Y[`A͆�~� +E9}<�c�Ə_���Mr!~_3�S^5L� z0p�h��6 �1���D2N[���L�������Gx*�����Iv#����� p0�َ|tӸ���q�BgrYd;��0����2^�sɦ_����~����~��%�2@J�I�"ٳ�`��/�L��Z��B�ztI/m�G7��n�u>�s�q�7�[;����{��4hhB-< ����������\�,$by�g\�U���4��F� N�%�����D�S���G1,.j��D;���(8�3� C���Q�T��!��0��$m�� #�#Q����1�qA� +� +}� p;�dÓ,����h�&%�{D����f�-2�l}�?�>r|���c�H:C��!��2~���x�D<���%N>�+��"ʚ +2`�����Yё8� F��W�pO��\�+�fgs$ȗ��\ޔ����B#qIX�u! �X6~��X�-�!�Lc��nX �S�q�$��o�����`]��0۠��IX �\��)� +�AW��#��S�A���N� $�)y'B�Kҿ�� wFI� .xM���6��*(,��WS�+[�����=�9�6~��y4G&�#�I�����Y�~�a4�(�2y�M�a�qQ�3[�� P�(�pQY����c�kG[�p����ǎ��М��@�lq��3��+L���~��72�*=��\���_=,�01�č��x +�2c{27g=�������;y��b��� 7g�3s�Ԑ�g;��Y���xJ68C�R=2�T�o\��� rf,�>{a'HG��wm>Ȥ�|2�4)]�:NN˓ ͒�_`I�A��-Ow�4�U��O�$��#S�"��DlO� �@/M�Uܱd���$�>Dž� �i���?�f&���O�[��w���$��I�wKҊ5�׌�U�m-����\TS���~�#�-p�;C�j��� -�e��p���g�n`�Q�V� ��Z + 5�к����STɹ����پ"��=�jO~`3‹�*�kO�y��U����XI]�[Ui[�/��Y�'�� � ��l;�a���eX���lN�f���z)��t6�C�e^G�}� 0�E��ɕ�B�koe_��� +����XV�|r��#�!x��U�%�u� +ϼ��Sdz�nQ_�EAO�6�M�(�8�TNRiS��XN�l�C�z@u����5˘�7hvn"�J&� ~ގq�k�Lz�u)$��2U��7�~|�JxD&����hbS4T!C��,�s�7�=N�ɂ:��q*��Rj6�2�j�����ct�ƨ����[����ft}��34F +2*�W��:�S��>��:�[����M�ZK���\<�q+�J�7��O\Up���W��i�{�gv�;ڶ��=Z%�Ϭ��w�K��7�;*M@�����t��@X��aC'�[h����O��0��5���R�~����%£)_�R�cS���`ǝ�] +��٥%��']2n͙���i�0��R�ҏ͍�#XD)KKa�؂�%���9�H�!4G�� ��Z���1��NҞ��x~����$f)}X�q*L��U��l�jf#�VǓcG;��xf�%XП�̯>i�n�#(]Ĉ���ek���\�F���~��W,����?/Vl�����u�`�U �r�\�����],�R9Cp�A`D�R`��rkј���G��f� 0���k����T+ +o��N(sؼ��/�ɒ�`r��j�#]��@Ib㖳ꀞ�w��l\G�9»�YH�?��7�mkâַ�]T�Xc�ү�~&�����A6SP1ue(�_Q:A�ʅnPcbV�3���f-�jvnZ���K�jְ�fǖ�&���a5;7�r�*cWE_�`�޾�s�ߚ0�eXg=֫��Ҳ�jX�Y��յ�i��`Z��Uƶ��L��:<�(��dQ}D=]��2���M���viY�5,�c�z��Zǰ�;7�r�*cWE�1'�Van��ĸ�5'`Q˰.:7� +`ۥe]԰���-�m�kӺ�ܴJb۝m��5|���'�5vR��o]_�Inc>A��Mx����^m��V?��Lj"J� +�~�ׂ���r2b�V|�/j?*��̜_�x�`EZt�5���z ��3۰�*�oM "}�`ita�9 +)������4J�����0���� �o��|� +�r���ejJE�G֔v��I +�ˬ�"�!��)t�����|!��5��;i��s��g!��)�Mv]�OIN4�E�����%YE���� �+�х��boA'Hf���oF�DSƹ�.|�n6�q���A�d=gz� +ᓟq�|���ؠ4�"�y���� z�g�k�~���k�h���k�h�����N�~���Z�~z��&��%͉���,Ƙ��i9��+��`�c-y^�%�ٗ���$�绾��:�I��O�ޛ���z�'׆ޟآd3ɵ;�±3k9v��W/��Gث׍Գ2�[�� ���hU���$nՇ3&�'�ёԋ2�[���YΜw���2�[���J�q=��ͻ��L�V�8s2�ȼ�,:azU&s�^�9Yrd^MV�ȼ.��Uά�n +�N�f�5F�v����� >G��/nV������f��dzzm������|7w��$^ǧt??ύ'�av$r�nW�EG"w�qE^!��0�ݻl<�M�#���ظ"�;�o�'�]|N�}Wm^���]�w��N��d�-͵�#E�_�{�"0t���+E��a绳"0t�3��e+E��d/�"Pt�c���+E��g/;�B�R>���� +�tq�~�� +$ؒ�³#ڣ����/"��֦%e����]cn6��,$����O�<�������L[�o�� ��c�i�8O�93� -|\����ҲG���T���� +L�4Eqi�W���nm��Kˎ+���X-�ťe/� +��Ja}iۣ�f}ע��s�ߣ����t�ܝx�**Z�k�|�VWx���rQ�K��UD��UZ�{��#��r-��A]L�^�庀��6��e܊�mJ�+�\TV�b���.?�[]LZ_�傲lӨ\����0�LP؟:u�g +�٧N�a^x�Ҙ�� �1Q���ԩ+��d��d��Sg��81TF��b.*s�Qi{����J���O���������J�EE�E�����1�EI�xV��W�����!ViK����[����.y�h�-VI��N�*�.y��$TB��:�[H�b��u���Ed��Doa��׉N��=��6� ����u�7���__jh����_�ІT�em����P�dm(b2�6��2�6��2�61B�� � +ywxQ��������$��2Tw� ��.b2��ELw� ��.Cep��� �p���E���>��7�u���`���l��䐹���`���4�a�/��YS0�I~/�Qõھuܓ �,�a�$�C�� г =(T���:wKdz��~��i%�/L/ndSΐ�k0�4� +a��Jz�X�����[pQKKh�0�H�^�c�yk9���12yX�*�ى�e�������SrOg򌴷��17ד%�I��|��$$�MUFۃ���~N/����i~� 2@��~�a.�D�#r���pq-ڤȤm��g���0��R��s�.k=��5�kM����!7��o>�С^�'8�s�u���h�F���*B�vظ/�)+)�X�e�2�j_�r��7�3y��2��R����2��7��7'w�0j�qxvh�lH��4�ק�K��mH���ƗgC�$�JkI�c���!&�A�T�e��u4m�4M�r_��=�:��⇸��f>"�m����|~�^��m�̯����������j�OWj�&�������'�R�i?�K:�$��B~���WU1�\�;φ/�����DC��8�HYK �~���)�\��%�,���d1)I�PKR[��;[PK + +��@^�2 ''mimetypePK��@ MMETA-INF/PK��@�4�/�u�META-INF/manifest.xmlPK��@������ �settings.xmlPK��@j%c`%��meta.xmlPK��@�,!� + content.xmlPK��@R[��;[ +D +styles.xmlPK��$ \ No newline at end of file Index: test/odf/odt/fo_list_block/simple.fo =================================================================== --- test/odf/odt/fo_list_block/simple.fo (revision 0) +++ test/odf/odt/fo_list_block/simple.fo (revision 0) @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + Joad rolled the coat up more tightly. + "An old turtle," he said. "Picked + him up on the + road. An old + bulldozer. Thought I'd take 'im to my little brother. Kids + like + turtles." + + + + + + + + item1 + + + + + + + + item2 + + + + + + + + item3 + + + + + + + \ No newline at end of file