Hi Maxime, a while ago I had the same issue, and ultimately decided to use the HanaMin fonts (cf. here http://www.fonts.jp/hanazono/). The ttf is so large it is split into two files, best configure them in a configuration file you feed to FOP, like this:
<!-- HanaMinA Regular --> <font kerning="yes" embed-url="HanaMin/HanaMinA.ttf"> <font-triplet name="HanaMinA" style="normal" weight="normal"/> </font> <font kerning="yes" embed-url="HanaMin/HanaMinA.ttf"> <font-triplet name="HanaMinA" style="normal" weight="bold"/> </font> <font kerning="yes" embed-url="HanaMin/HanaMinA.ttf"> <font-triplet name="HanaMinA" style="italic" weight="normal"/> </font> <font kerning="yes" embed-url="HanaMin/HanaMinA.ttf"> <font-triplet name="HanaMinA" style="italic" weight="bold"/> </font> ... >From Java, you can source such configuration file using DefaultConfiguration conf = (DefaultConfiguration) new DefaultConfigurationBuilder().buildFromFile(f); For more on configuration, check here: https://xmlgraphics.apache.org/fop/1.1/configuration.html If you are rendering SVG images, I found registering the font with the graphics envoronment to be the best option: GraphicsEnvironment lge = GraphicsEnvironment.getLocalGraphicsEnvironment(); for (File fontFile : myGetFontFilesTtf()) { try { Font font = Font.createFont(Font.TRUETYPE_FONT, fontFile); if (!lge.registerFont(font)) { LOGGER.warn("Font registration unsuccessful: " + fontFile.getAbsolutePath()); } else {...} ...} } Best regards, Robert