Thanks for getting back to me Chris,

Okay that makes sense to me then, and I was able to work with custom
resolvers to get around the issue I have.

However, you still have references in both your code and documentation
to <font-base>, so it is not obvious that this has been removed!
Perhaps a little clean-up is in order ;-)

On 21 March 2016 at 11:19, Chris Bowditch <bowditch_ch...@hotmail.com> wrote:
> 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?
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
>



-- 
Adam Retter

skype: adam.retter
tweet: adamretter
http://www.adamretter.org.uk

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org

Reply via email to