import org.apache.fop.fo.FObj;
import org.apache.fop.fo.PropertyList;
+import org.apache.fop.fo.expr.PropertyException;
/**
* Property class for the font-family property.
super(propId);
}
+ /**
+ * @see org.apache.fop.fo.properties.PropertyMaker#make(
+ * org.apache.fop.fo.PropertyList,
+ * java.lang.String,
+ * org.apache.fop.fo.FObj)
+ */
+ public Property make(PropertyList propertyList, String value, FObj fo) throws PropertyException {
+ ListProperty prop = new ListProperty();
+ String tmpVal;
+ int startIndex = 0;
+ int commaIndex = value.indexOf(',');
+ int quoteIndex;
+ int aposIndex;
+ char qChar;
+ boolean parsed = false;
+ while (!parsed) {
+ if (commaIndex == -1) {
+ tmpVal = value.substring(startIndex).trim();
+ parsed = true;
+ } else {
+ tmpVal = value.substring(startIndex, commaIndex).trim();
+ startIndex = commaIndex + 1;
+ commaIndex = value.indexOf(',', startIndex);
+ }
+ aposIndex = tmpVal.indexOf('\'');
+ quoteIndex = tmpVal.indexOf('\"');
+ if (aposIndex != -1 || quoteIndex != -1) {
+ qChar = (aposIndex == -1) ? '\"' : '\'';
+ if (tmpVal.lastIndexOf(qChar) != tmpVal.length() - 1) {
+ Property.log.warn("Skipping malformed value for font-family: "
+ + tmpVal + " in \"" + value + "\".");
+ tmpVal = "";
+ } else {
+ tmpVal = tmpVal.substring(1, tmpVal.length() - 1);
+ }
+ }
+ if (!"".equals(tmpVal)) {
+ int dblSpaceIndex = tmpVal.indexOf(" ");
+ while (dblSpaceIndex != -1) {
+ tmpVal = tmpVal.substring(0, dblSpaceIndex)
+ + tmpVal.substring(dblSpaceIndex + 1);
+ dblSpaceIndex = tmpVal.indexOf(" ");
+ }
+ prop.addProperty(new StringProperty(tmpVal));
+ }
+ }
+ return prop;
+ }
+
/**
* @see PropertyMaker#convertProperty
*/
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- $Id$ -->
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:test="http://xmlgraphics.apache.org/fop/test">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="21cm" margin-top="2cm" margin-bottom="2cm" margin-left="2cm" margin-right="2cm">
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="simpleA4">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block font-family="Times New Roman">
+ <test:assert property="font-family" expected="[Times New Roman]"/>
+ Test font-family parsing
+ </fo:block>
+ <fo:block font-family="Helvetica, Times New Roman">
+ <test:assert property="font-family" expected="[Helvetica, Times New Roman]"/>
+ Test font-family parsing
+ </fo:block>
+ <fo:block font-family="Times New Roman, Helvetica">
+ <test:assert property="font-family" expected="[Times New Roman, Helvetica]"/>
+ Test font-family parsing
+ </fo:block>
+ <fo:block font-family="'Times New Roman', serif">
+ <test:assert property="font-family" expected="[Times New Roman, serif]"/>
+ Test font-family parsing
+ </fo:block>
+ <fo:block font-family="'Times New 'Roman, serif">
+ <test:assert property="font-family" expected="[serif]"/>
+ Test malformed font-family parsing
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+</fo:root>