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. *