Including Liberation .ttf fonts in a grails war?

2020-03-30 16:09发布

问题:

How do I package the liberation fonts with my grails war? The fonts may not be available on the servers I'm deploying to, and I need the fonts for my reporting system.

How do I include the fonts in the war such that they're on the classpath and available to the JVM?

回答1:

If you're using them for jasper-reports explicitly, then you can just do this.

grails-app/conf/jasperreports_extension.properties

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.liberationsans=jasper_fonts.xml

grails-app/conf/jasper_fonts.xml

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <fontFamily name="Liberation Sans">
        <normal>lib/fonts/liberation-fonts-ttf-1.07.0/LiberationSans-Regular.ttf</normal>
        <bold>lib/fonts/liberation-fonts-ttf-1.07.0/LiberationSans-Bold.ttf</bold>
        <italic>lib/fonts/liberation-fonts-ttf-1.07.0/LiberationSans-Italic.ttf</italic>
        <boldItalic>lib/fonts/liberation-fonts-ttf-1.07.0/LiberationSans-BoldItalic.ttf</boldItalic>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
        <exportFonts>
            <export key="net.sf.jasperreports.html">'Liberation Sans', Arial, Helvetica, sans-serif</export>
            <export key="net.sf.jasperreports.xhtml">'Liberation Sans', Arial, Helvetica, sans-serif</export>
        </exportFonts>
    </fontFamily>
</fontFamilies>

Modify as appropriate for your TTF font. Make sure you note the <exportFonts> element, so your HTML reports don't break.