Author: ltheussl
Date: Sat May 23 13:48:36 2009
New Revision: 777926
URL: http://svn.apache.org/viewvc?rev=777926&view=rev
Log:
Use Symbol font for special characters
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java?rev=777926&r1=777925&r2=777926&view=diff
==============================================================================
---
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java
(original)
+++
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java
Sat May 23 13:48:36 2009
@@ -1551,9 +1551,6 @@
case '&':
buffer.append( "&" );
break;
- case '\u00a9': // copyright
- buffer.append( "©" );
- break;
case '\n':
buffer.append( EOL );
if ( verb )
@@ -1562,13 +1559,38 @@
}
break;
default:
- buffer.append( c );
+ if ( needsSymbolFont( c ) )
+ {
+ // TODO: make font configurable?
+ buffer.append( "<fo:inline font-family=\"Symbol\">"
).append( c ).append( "</fo:inline>" );
+ }
+ else
+ {
+ buffer.append( c );
+ }
}
}
return buffer.toString();
}
+ private static final char UPPER_ALPHA = 0x391;
+ private static final char PIV = 0x3d6;
+ private static final char OLINE = 0x203e;
+ private static final char DIAMS = 0x2666;
+ private static final char EURO = 0x20ac;
+ private static final char TRADE = 0x2122;
+
+ private static boolean needsSymbolFont( char c )
+ {
+ // greek characters and mathematical symbols, except the euro and
trade symbols
+ // symbols I couldn't get to display in any font:
+ // zwnj (0x200C), zwj (0x200D), lrm (0x200E), rlm (0x200F), oline
(0x203E), prime (0x2032),
+ // Prime (0x2033), lceil (0x2038), rceil (0x2039), lfloor (0x203A),
rfloor (0x203B)
+ return ( c >= UPPER_ALPHA && c <= PIV )
+ || ( c >= OLINE && c <= DIAMS && c != EURO && c != TRADE );
+ }
+
/**
* Starts a page sequence.
*