You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-commits@xmlgraphics.apache.org by ca...@apache.org on 2011/01/11 00:14:59 UTC
svn commit: r1057411 - in /xmlgraphics/batik/trunk: CHANGES
sources/org/apache/batik/svggen/font/SVGFont.java
Author: cam
Date: Mon Jan 10 23:14:58 2011
New Revision: 1057411
URL: http://svn.apache.org/viewvc?rev=1057411&view=rev
Log:
Ensure kerning pairs get converted into <hkern> elements even if the
characters do not have names.
Modified:
xmlgraphics/batik/trunk/CHANGES
xmlgraphics/batik/trunk/sources/org/apache/batik/svggen/font/SVGFont.java
Modified: xmlgraphics/batik/trunk/CHANGES
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/CHANGES?rev=1057411&r1=1057410&r2=1057411&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/CHANGES (original)
+++ xmlgraphics/batik/trunk/CHANGES Mon Jan 10 23:14:58 2011
@@ -62,6 +62,8 @@ Bug fixing is an on-going task, so it is
same script interpreter.
* Exporting 256 color indexed PNG files in Squiggle now works.
* Avoid an NPE in ttf2svg when resolving substitutions for Arabic script.
+ * ttf2svg now correctly writes out kerning pairs for characters that have
+ no name.
5. Misc
Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/svggen/font/SVGFont.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/sources/org/apache/batik/svggen/font/SVGFont.java?rev=1057411&r1=1057410&r2=1057411&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/svggen/font/SVGFont.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/svggen/font/SVGFont.java Mon Jan 10 23:14:58 2011
@@ -448,11 +448,14 @@ public class SVGFont implements XMLConst
// sb.append("<glyph unicode=\"").append(code).append("\"");
// Glyph name
- sb.append(XML_SPACE).append(SVG_GLYPH_NAME_ATTRIBUTE).append(XML_EQUAL_QUOT)
- // sb.append(" glyph-name=\"")
- .append(font.getPostTable().getGlyphName(glyphIndex))
- // .append("\"");
- .append(XML_CHAR_QUOT);
+ String glyphName = font.getPostTable().getGlyphName(glyphIndex);
+ if (glyphName != null) {
+ sb.append(XML_SPACE).append(SVG_GLYPH_NAME_ATTRIBUTE).append(XML_EQUAL_QUOT)
+ // sb.append(" glyph-name=\"")
+ .append(glyphName)
+ // .append("\"");
+ .append(XML_CHAR_QUOT);
+ }
}
if (horiz_advance_x != defaultHorizAdvanceX) {
sb.append(XML_SPACE).append(SVG_HORIZ_ADV_X_ATTRIBUTE).append(XML_EQUAL_QUOT)
@@ -584,16 +587,39 @@ public class SVGFont implements XMLConst
}
protected static String getKerningPairAsSVG(KerningPair kp, PostTable post) {
+ String leftGlyphName = post.getGlyphName(kp.getLeft());
+ String rightGlyphName = post.getGlyphName(kp.getRight());
+
StringBuffer sb = new StringBuffer();
- // sb.append("<hkern g1=\"");
+ // sb.append("<hkern ");
sb.append(XML_OPEN_TAG_START).append(SVG_HKERN_TAG).append(XML_SPACE);
- sb.append(SVG_G1_ATTRIBUTE).append(XML_EQUAL_QUOT);
- sb.append(post.getGlyphName(kp.getLeft()));
- // sb.append("\" g2=\"");
- sb.append(XML_CHAR_QUOT).append(XML_SPACE).append(SVG_G2_ATTRIBUTE).append(XML_EQUAL_QUOT);
+ if (leftGlyphName == null) {
+ sb.append(SVG_U1_ATTRIBUTE).append(XML_EQUAL_QUOT);
+
+ sb.append(kp.getLeft());
+ } else {
+ // sb.append("g1=\"");
+ sb.append(SVG_G1_ATTRIBUTE).append(XML_EQUAL_QUOT);
+
+ sb.append(leftGlyphName);
+ }
+
+ // sb.append("\" ");
+ sb.append(XML_CHAR_QUOT).append(XML_SPACE);
+
+ if (rightGlyphName == null) {
+ // sb.append("u2=\"");
+ sb.append(SVG_U2_ATTRIBUTE).append(XML_EQUAL_QUOT);
+
+ sb.append(kp.getRight());
+ } else {
+ // sb.append("g2=\"");
+ sb.append(SVG_G2_ATTRIBUTE).append(XML_EQUAL_QUOT);
+
+ sb.append(rightGlyphName);
+ }
- sb.append(post.getGlyphName(kp.getRight()));
// sb.append("\" k=\"");
sb.append(XML_CHAR_QUOT).append(XML_SPACE).append(SVG_K_ATTRIBUTE).append(XML_EQUAL_QUOT);