Re: font-base is ignored in 2.1

Chris Bowditch <[email protected]>
Newsgroups gmane.text.xml.fop.user
Message-ID <[email protected]>
Hi Adam,

I believe FOP Base was intentionally removed when FOP IO was reworked in 
the v2.0 release. Which version are you upgrading from?

I seem to recall the developers couldn't think of a use case where Font 
Base would need to differ from wildly from Base, and so Font Base was 
consolidated with Base.

Thanks,

Chris

On 11/03/2016 22:39, Adam Retter wrote:
> It seems that fonts are not being resolved relative to the font-base
> config parameter in 2.1, instead they are being resolved directly by
> the ResourceResolver. This looks like a bug to me, can anyone confirm?
>
> I have a FOP configuration file like this:
>
> <fop version="1.0">
>      <!-- Strict user configuration -->
>      <strict-configuration>true</strict-configuration>
>
>      <!-- Strict FO validation -->
>      <strict-validation>false</strict-validation>
>
>      <!-- Base URL for resolving relative URLs -->
>      <base>./</base>
>
>      <!-- Font Base URL for resolving relative font URLs -->
>      <font-base>http://localhost:8080/exist/apps/tei-simple/resources/fonts/</font-base>
>      <renderers>
>          <renderer mime="application/pdf">
>              <fonts>
>                  <font kerning="yes"
>                      embed-url="Junicode.ttf"
>                      encoding-mode="single-byte">
>                      <font-triplet name="Junicode" style="normal"
> weight="normal"/>
>                  </font>
>                  <font kerning="yes"
>                      embed-url="Junicode-Bold.ttf"
>                      encoding-mode="single-byte">
>                      <font-triplet name="Junicode" style="normal" weight="700"/>
>                  </font>
>                  <font kerning="yes"
>                      embed-url="Junicode-Italic.ttf"
>                      encoding-mode="single-byte">
>                      <font-triplet name="Junicode" style="italic"
> weight="normal"/>
>                  </font>
>                  <font kerning="yes"
>                      embed-url="Junicode-BoldItalic.ttf"
>                      encoding-mode="single-byte">
>                      <font-triplet name="Junicode" style="italic" weight="700"/>
>                  </font>
>              </fonts>
>          </renderer>
>      </renderers>
> </fop>
>
>
> And I instantiate FOP like so:
>
> ResourceResolver resolver =
> ResourceResolverFactory.createSchemeAwareResourceResolverBuilder(ResourceResolverFactory.createDefaultResourceResolver()).build();
> EnvironmentProfile environment =
> EnvironmentalProfileFactory.createDefault(new URI("file:///db"),
> resolver);
> final FopFactoryBuilder = builder = new
> FopFactoryBuilder(environment).setConfiguration(configFile);
> final FopFactory fopFactory = builder.build();
>
> When I run my FO transformation I then get an error like:
>
> Caused by: java.io.FileNotFoundException: /Junicode.ttf (No such file
> or directory)
> at java.io.FileInputStream.open0(Native Method)
> at java.io.FileInputStream.open(FileInputStream.java:195)
> at java.io.FileInputStream.<init>(FileInputStream.java:138)
> at java.io.FileInputStream.<init>(FileInputStream.java:93)
> at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
> at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
> at java.net.URL.openStream(URL.java:1045)
> at org.apache.fop.apps.io.ResourceResolverFactory$NormalResourceResolver.getResource(ResourceResolverFactory.java:224)
> at org.apache.fop.apps.io.ResourceResolverFactory$TempAwareResourceResolver.getResource(ResourceResolverFactory.java:152)
> at org.apache.fop.apps.io.ResourceResolverFactory$DefaultResourceResolver.getResource(ResourceResolverFactory.java:121)
> at org.apache.fop.apps.io.ResourceResolverFactory$SchemeAwareResourceResolver.getResource(ResourceResolverFactory.java:256)
> at org.apache.fop.apps.io.InternalResourceResolver.getResource(InternalResourceResolver.java:92)
> at org.apache.fop.fonts.truetype.OFFontLoader.read(OFFontLoader.java:103)
> at org.apache.fop.fonts.truetype.OFFontLoader.read(OFFontLoader.java:93)
> at org.apache.fop.fonts.FontLoader.getFont(FontLoader.java:124)
> at org.apache.fop.fonts.FontLoader.loadFont(FontLoader.java:108)
> at org.apache.fop.fonts.LazyFont.load(LazyFont.java:116)
>
>
> When I look through the FOP 2.1 code-base I see that the `font-base`
> only seems to be read in FontManagerConfigurator#configure, however
> that code-path is never executed when I run my app.
>
> Any thoughts?
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.