[ https://issues.apache.org/jira/browse/BATIK-1112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14511037#comment-14511037 ]
Radu Coravu commented on BATIK-1112: ------------------------------------ +1, for example: {code}<svg xmlns="http://www.w3.org/2000/svg" width="234" height="405" id="svg2" > <g id="layer1"> <text xml:space="preserve" style="-inkscape-font-specification:Sans Bold;font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#244876;fill-opacity:1;stroke:none;font-family:Sans" x="130" y="376.35974" id="text3759"><tspan id="tspan3761" x="130" y="376.35974">L:done</tspan></text> </g> </svg>{code} will not use any style to render the text > CSS style Parser does not handle style names with leading dash > -------------------------------------------------------------- > > Key: BATIK-1112 > URL: https://issues.apache.org/jira/browse/BATIK-1112 > Project: Batik > Issue Type: Bug > Components: CSS > Affects Versions: 1.7 > Reporter: Tony BenBrahim > Priority: Minor > > Consider the following fragment: > {code} > <text > id="text8072" > y="15.697294" > x="1.0898001" > > style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.67250013px;line-height:125%;font-family:'Arial > Unicode MS';-inkscape-font-specification:'Arial Unicode MS, > Normal';fill:#ff0000> > {code} > the style Parser stops parsing with an exception when it encounters > -inkscape-font-specification, which Inkscape adds to every font declaration > and which cannot be removed.The rendered text is then missing any style > attribute specified afterwards, such as color, anchor, alignment, etc... > possible patch that parses styles correctly: > {code} > protected void parseStyleDeclaration(final boolean inSheet) throws > CSSException { > boolean leadingDash = false; > for (;;) { > switch (current) { > case LexicalUnits.EOF: > if (inSheet) { > throw createCSSParseException("eof"); > } > return; > case LexicalUnits.RIGHT_CURLY_BRACE: > if (!inSheet) { > throw > createCSSParseException("eof.expected"); > } > nextIgnoreSpaces(); > return; > case LexicalUnits.SEMI_COLON: > nextIgnoreSpaces(); > continue; > case LexicalUnits.MINUS: > leadingDash = true; > next(); > break; > default: > throw createCSSParseException("identifier"); > case LexicalUnits.IDENTIFIER: > } > final String name = (leadingDash ? "-" : "") + > scanner.getStringValue(); > leadingDash = false; > if (nextIgnoreSpaces() != LexicalUnits.COLON) { > throw createCSSParseException("colon"); > } > nextIgnoreSpaces(); > LexicalUnit exp = null; > try { > exp = parseExpression(false); > } catch (final CSSParseException e) { > reportError(e); > } > if (exp != null) { > boolean important = false; > if (current == LexicalUnits.IMPORTANT_SYMBOL) { > important = true; > nextIgnoreSpaces(); > } > documentHandler.property(name, exp, important); > } > } > } > {code} > workaround: > Create your own parser class that extends org.apache.batik.css.parser.Parser, > overriding parseStyleDeclaration with the code above, and add the following > line your code > {code} > XMLResourceDescriptor.setCSSParserClassName(MyParser.class.getName()); > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: batik-dev-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: batik-dev-h...@xmlgraphics.apache.org