Hello there!
In spite of text-transform non-recommended status and i18n issues I
believe fop can rely on java i18n support and implement this property
using toUpperCase()/toLowerCase() stuff.
Here is suggested patch.
--
Oleg Tkachenko
Multiconn International, Israel
Index: fop-cvs/xml-fop/src/codegen/foproperties.xml
===================================================================
RCS file: /home/cvspublic/xml-fop/src/codegen/foproperties.xml,v
retrieving revision 1.25.2.4
diff -u -r1.25.2.4 foproperties.xml
--- fop-cvs/xml-fop/src/codegen/foproperties.xml 1 Jul 2002 19:11:54 -0000
1.25.2.4
+++ fop-cvs/xml-fop/src/codegen/foproperties.xml 21 Jul 2002 19:45:07 -0000
@@ -1266,7 +1266,13 @@
<property>
<name>text-transform</name>
<inherited>true</inherited>
- <datatype>ToBeImplemented</datatype>
+ <datatype>Enum</datatype>
+ <enumeration>
+ <value const="NONE">none</value>
+ <value const="CAPITALIZE">capitalize</value>
+ <value const="UPPERCASE">uppercase</value>
+ <value const="LOWERCASE">lowercase</value>
+ </enumeration>
<default>none</default>
</property>
<property>
Index: fop-cvs/xml-fop/src/org/apache/fop/fo/FOText.java
===================================================================
RCS file: /home/cvspublic/xml-fop/src/org/apache/fop/fo/FOText.java,v
retrieving revision 1.24.2.3
diff -u -r1.24.2.3 FOText.java
--- fop-cvs/xml-fop/src/org/apache/fop/fo/FOText.java 6 Jul 2002 19:05:29 -0000
1.24.2.3
+++ fop-cvs/xml-fop/src/org/apache/fop/fo/FOText.java 21 Jul 2002 19:45:09 -0000
@@ -44,7 +44,31 @@
super(parent);
this.length = b.length();
this.ca = new char[this.length];
- b.getChars(0,length,ca,0);
+ switch (parent.properties.get("text-transform").getEnum()) {
+ case TextTransform.UPPERCASE:
+ (b.toString().toUpperCase()).getChars(0,length,ca,0);
+ break;
+ case TextTransform.LOWERCASE:
+ (b.toString().toLowerCase()).getChars(0,length,ca,0);
+ break;
+ case TextTransform.CAPITALIZE:
+ boolean isFirst = true;
+ for (int i=0; i<length; i++) {
+ char c = b.charAt(i);
+ if (!Character.isLetter(c))
+ isFirst = true;
+ else if (isFirst) {
+ c = Character.toUpperCase(c);
+ isFirst = false;
+ }
+ else
+ c = Character.toLowerCase(c);
+ ca[i] = c;
+ }
+ break;
+ default:
+ b.getChars(0,length,ca,0);
+ }
}
public void setUnderlined(boolean ul) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]