title: Unicode characters not converting from pptx to png
body: <p>I have written a program to convert PPTX to PNG. All the conversion happens fine only issue is where ever there is UNICODE character in PPTX file - it converts that to a junk character. Here is the code. I tried to add fonts but that did not help. This is what PPTX contains - "<strong>/ˌinəˈvāSHən/</strong>". It converts letters i, n, v, a, S, H, n fine but not others. </p>
  
  <pre><code>    FileInputStream is = new FileInputStream(strTempPath);
      XMLSlideShow pptx = new XMLSlideShow(is);
      is.close();
      double zoom = 2; // magnify it by 2
      AffineTransform at = new AffineTransform();
      at.setToScale(zoom, zoom);
      Dimension pgsize = pptx.getPageSize();             
      XSLFSlide[] slide = pptx.getSlides();
  
      }              
      // BufferedImage img = new BufferedImage((int)Math.ceil(pgsize.width*zoom), (int)Math.ceil(pgsize.height*zoom), BufferedImage.TYPE_INT_RGB);
      BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB);
      Graphics2D graphics = img.createGraphics();
      //graphics.setTransform(at);                
      graphics.setPaint(Color.white);
      graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
      slide[iPageNo].draw(graphics);             
      // FileOutputStream output = new ByteArrayOutputStream("C:/Temp/aspose/word/slide-" + (10 + 1) + ".png");        
      output = new ByteArrayOutputStream();
      javax.imageio.ImageIO.write(img, "png", output);
  </code></pre>
  
  <p>This is how I am trying to add fonts but still did not convert.</p>
  
  <pre><code>        Font customFont = Font.createFont(Font.TRUETYPE_FONT, new File("/usr/share/fonts/GEInspRg.ttf")).deriveFont(12f);
          GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
          //register the font
          ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("/usr/share/fonts/GEInspRg.ttf")));
          graphics.setFont(customFont);
  </code></pre>
  
  <hr>
  
  <p>Here is the code I have: also given in the original question: And my test PPTX contains this word - /ˌinəˈvāSHən/ in addition to other English letter words. </p>
  
  <pre><code>package foo;
  
  import java.awt.Dimension; 
  import java.awt.Graphics2D;
  import java.awt.geom.AffineTransform;
  import java.awt.geom.Rectangle2D;
  import java.awt.image.BufferedImage;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import org.apache.poi.xslf.usermodel.XMLSlideShow;
  import org.apache.poi.xslf.usermodel.XSLFSlide;
  
  public class PPTXToPNG {
  
  public static void main(String[] args) throws Exception {
  
      FileInputStream is = new FileInputStream("C:/Temp/PPTXToImage/unicode_test.pptx");      
  
      XMLSlideShow ppt = new XMLSlideShow(is);
      is.close();
      double zoom = 2;
      AffineTransform at = new AffineTransform();
      at.setToScale(zoom, zoom);
      Dimension pgsize = ppt.getPageSize();
      XSLFSlide[] slide = ppt.getSlides();
  
      BufferedImage img = new BufferedImage((int)Math.ceil(pgsize.width*zoom),
              (int)Math.ceil(pgsize.height*zoom), BufferedImage.TYPE_INT_RGB);
      Graphics2D graphics = img.createGraphics();
  
      graphics.setTransform(at);
      graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
  
      // Draw first page in the PPTX. First page starts at 0 position
      slide[0].draw(graphics);
  
      FileOutputStream out = new FileOutputStream("C:/Temp/PPTXToImage/ConvertedSlide.png");  
      javax.imageio.ImageIO.write(img, "png", out);
      out.close();
      System.out.println("DONE");
  
     }
  }
  </code></pre>