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);