another embedded svg font issue

View: New views
4 Messages — Rating Filter:   Alert me  

another embedded svg font issue

by Koen Martens-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi list,

I'm having some problems with fonts in SVG and PDF output. The weird thing is, it
works correctly on one machine, but fails on all my other machines.

What am I trying to accomplish? I have an svg file, that I want to convert to PDF. We
used batik before, but ended up with rasterized text (ie. you could not copy+paste the
text out of the pdf). A quick test run with FOP showed that it did make the text
selectable, instead of rendering the text as graphics. The fo file i'm using is below
for reference.

As you can see, i'm first writing out 'test (10) abductii' in font-family AbductionII
(some weird font i used because it looks totally different from any standard font and
even i as a non designer can pick that out from the standard fonts :). Then i'm
embedding the svg. Inside the svg we find some text nodes that also use the AbducionII
font-family.

Now, I've configured the ttf file that contains AbductII in X, as well as in a custom
config for FOP. I then run the fo file through FOP and check the result.

In all cases, the test text 'test (10) abductii' is rendered correctly. However, the
text in the svg is only rendered correctly on my desktop. I've tried on 4 different
systems, in all cases using the exact same fop-0.95 binary download.

desktop:
IcedTea Runtime Environment (build 1.7.0-Mandriva-19.202.56.2mdv2008.0)
IcedTea 64-Bit Server VM (build 11.0-b05, mixed mode)
Mandriva linux

laptop:
java version "1.6.0_0"
OpenJDK  Runtime Environment (build 1.6.0_0-b11)
OpenJDK 64-Bit Server VM (build 1.6.0_0-b11, mixed mode)
debian

server:
java version "1.4.2-p7"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-p7-root_25_dec_2005_15_17)
Java HotSpot(TM) Client VM (build 1.4.2-p7-root_25_dec_2005_15_17, mixed mode)
FreeBSD 7.x

server:
java version "1.6.0_07"
Diablo Java(TM) SE Runtime Environment (build 1.6.0_07-b02)
Diablo Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode)
FreeBSD 7.x

So only on the desktop do i get the result i'm after, in all other cases, only the test
text put directly in the fo file renders ok, the svg text renders with a standard font
(although spaced as if it was rendered in the wider AbductionII font).

Now, i'm aware that to render svg, fop uses batik as well. And that there is some step
in between batik and fop's pdf output, that maps fonts used in batik output to something
configured in FOP. Perhaps this mapping is failing for some reason on all machines except
the desktop machine? Would the java version (and thus presumably the awt implementation)
be a relevant thing? What can I do to further debug this problem??

Btw, using batik-1.7's rasterizer, i can render the svg to pdf with the right font, however
then i'm back to my original problem that the text is not selectable.

Any hints would be greatly appreciated!!

Thanks,

Koen


<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="first"
          margin-right="1.5cm"
          margin-left="1.5cm"
          margin-bottom="2cm"
          margin-top="1cm"
          page-height="21cm"
          page-width="29.7cm">
      <fo:region-body margin-top="1cm"/>
      <fo:region-before extent="1cm"/>
      <fo:region-after extent="1.5cm"/>
    </fo:simple-page-master>
  </fo:layout-master-set>

  <fo:page-sequence master-reference="first">
    <fo:flow flow-name="xsl-region-body">
       <fo:block font-family="AbductionII">test (10) abductii</fo:block>
      <fo:block>
          <fo:external-graphic src="file:test.svg"  content-width="scale-to-fit" content-height="scale-to-fit" width="26.7cm" scaling="un
iform"/>
      </fo:block>
    </fo:flow>
  </fo:page-sequence>
</fo:root>


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@...
For additional commands, e-mail: fop-users-help@...


Re: another embedded svg font issue

by Jeremias Maerki-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Yes, that's tricky business. You have to use the font name under which
it is provided by the operating system because Batik uses AWT/Java2D for
font handling. If your font is the one I found, then you need to
use "Abduction II" (notice the space). "AbductionII" works because FOP
als registers the font internally using the PostScript name, but the
same is not true in AWT/Java2D.

You can find out the family names of your fonts using the following
code:

        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        String[] fontFamilies = env.getAvailableFontFamilyNames();
        for (int i = 0, c = fontFamilies.length; i < c; i++) {
            System.out.println(fontFamilies[i]);
        }

In FOP Trunk, there's also a little command-line tool that helps with
problems like this. See:
http://xmlgraphics.apache.org/fop/trunk/fonts.html#font-list

HTH

On 21.10.2009 17:20:56 Koen Martens wrote:

> Hi list,
>
> I'm having some problems with fonts in SVG and PDF output. The weird thing is, it
> works correctly on one machine, but fails on all my other machines.
>
> What am I trying to accomplish? I have an svg file, that I want to convert to PDF. We
> used batik before, but ended up with rasterized text (ie. you could not copy+paste the
> text out of the pdf). A quick test run with FOP showed that it did make the text
> selectable, instead of rendering the text as graphics. The fo file i'm using is below
> for reference.
>
> As you can see, i'm first writing out 'test (10) abductii' in font-family AbductionII
> (some weird font i used because it looks totally different from any standard font and
> even i as a non designer can pick that out from the standard fonts :). Then i'm
> embedding the svg. Inside the svg we find some text nodes that also use the AbducionII
> font-family.
>
> Now, I've configured the ttf file that contains AbductII in X, as well as in a custom
> config for FOP. I then run the fo file through FOP and check the result.
>
> In all cases, the test text 'test (10) abductii' is rendered correctly. However, the
> text in the svg is only rendered correctly on my desktop. I've tried on 4 different
> systems, in all cases using the exact same fop-0.95 binary download.
>
> desktop:
> IcedTea Runtime Environment (build 1.7.0-Mandriva-19.202.56.2mdv2008.0)
> IcedTea 64-Bit Server VM (build 11.0-b05, mixed mode)
> Mandriva linux
>
> laptop:
> java version "1.6.0_0"
> OpenJDK  Runtime Environment (build 1.6.0_0-b11)
> OpenJDK 64-Bit Server VM (build 1.6.0_0-b11, mixed mode)
> debian
>
> server:
> java version "1.4.2-p7"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-p7-root_25_dec_2005_15_17)
> Java HotSpot(TM) Client VM (build 1.4.2-p7-root_25_dec_2005_15_17, mixed mode)
> FreeBSD 7.x
>
> server:
> java version "1.6.0_07"
> Diablo Java(TM) SE Runtime Environment (build 1.6.0_07-b02)
> Diablo Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode)
> FreeBSD 7.x
>
> So only on the desktop do i get the result i'm after, in all other cases, only the test
> text put directly in the fo file renders ok, the svg text renders with a standard font
> (although spaced as if it was rendered in the wider AbductionII font).
>
> Now, i'm aware that to render svg, fop uses batik as well. And that there is some step
> in between batik and fop's pdf output, that maps fonts used in batik output to something
> configured in FOP. Perhaps this mapping is failing for some reason on all machines except
> the desktop machine? Would the java version (and thus presumably the awt implementation)
> be a relevant thing? What can I do to further debug this problem??
>
> Btw, using batik-1.7's rasterizer, i can render the svg to pdf with the right font, however
> then i'm back to my original problem that the text is not selectable.
>
> Any hints would be greatly appreciated!!
>
> Thanks,
>
> Koen
>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink">
>   <fo:layout-master-set>
>     <fo:simple-page-master master-name="first"
>           margin-right="1.5cm"
>           margin-left="1.5cm"
>           margin-bottom="2cm"
>           margin-top="1cm"
>           page-height="21cm"
>           page-width="29.7cm">
>       <fo:region-body margin-top="1cm"/>
>       <fo:region-before extent="1cm"/>
>       <fo:region-after extent="1.5cm"/>
>     </fo:simple-page-master>
>   </fo:layout-master-set>
>
>   <fo:page-sequence master-reference="first">
>     <fo:flow flow-name="xsl-region-body">
>        <fo:block font-family="AbductionII">test (10) abductii</fo:block>
>       <fo:block>
>           <fo:external-graphic src="file:test.svg"  content-width="scale-to-fit" content-height="scale-to-fit" width="26.7cm" scaling="un
> iform"/>
>       </fo:block>
>     </fo:flow>
>   </fo:page-sequence>
> </fo:root>
>



Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@...
For additional commands, e-mail: fop-users-help@...


Re: another embedded svg font issue

by Koen Martens-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Jeremias,

Thanks, that was the missing bit of information I needed! It works
beautifully now, you can't imagine how happy you have made me :)

How did you figure out what name to use (and what the PS name is)? Is
there some nifty program that shows .ttf meta-data or something?

Gr,

Koen

On Thu, Oct 22, 2009 at 09:54:20AM +0200, Jeremias Maerki wrote:

> Yes, that's tricky business. You have to use the font name under which
> it is provided by the operating system because Batik uses AWT/Java2D for
> font handling. If your font is the one I found, then you need to
> use "Abduction II" (notice the space). "AbductionII" works because FOP
> als registers the font internally using the PostScript name, but the
> same is not true in AWT/Java2D.
>
> You can find out the family names of your fonts using the following
> code:
>
>         GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
>         String[] fontFamilies = env.getAvailableFontFamilyNames();
>         for (int i = 0, c = fontFamilies.length; i < c; i++) {
>             System.out.println(fontFamilies[i]);
>         }
>
> In FOP Trunk, there's also a little command-line tool that helps with
> problems like this. See:
> http://xmlgraphics.apache.org/fop/trunk/fonts.html#font-list
>
> HTH
>
> On 21.10.2009 17:20:56 Koen Martens wrote:
> > Hi list,
> >
> > I'm having some problems with fonts in SVG and PDF output. The weird thing is, it
> > works correctly on one machine, but fails on all my other machines.
> >
> > What am I trying to accomplish? I have an svg file, that I want to convert to PDF. We
> > used batik before, but ended up with rasterized text (ie. you could not copy+paste the
> > text out of the pdf). A quick test run with FOP showed that it did make the text
> > selectable, instead of rendering the text as graphics. The fo file i'm using is below
> > for reference.
> >
> > As you can see, i'm first writing out 'test (10) abductii' in font-family AbductionII
> > (some weird font i used because it looks totally different from any standard font and
> > even i as a non designer can pick that out from the standard fonts :). Then i'm
> > embedding the svg. Inside the svg we find some text nodes that also use the AbducionII
> > font-family.
> >
> > Now, I've configured the ttf file that contains AbductII in X, as well as in a custom
> > config for FOP. I then run the fo file through FOP and check the result.
> >
> > In all cases, the test text 'test (10) abductii' is rendered correctly. However, the
> > text in the svg is only rendered correctly on my desktop. I've tried on 4 different
> > systems, in all cases using the exact same fop-0.95 binary download.
> >
> > desktop:
> > IcedTea Runtime Environment (build 1.7.0-Mandriva-19.202.56.2mdv2008.0)
> > IcedTea 64-Bit Server VM (build 11.0-b05, mixed mode)
> > Mandriva linux
> >
> > laptop:
> > java version "1.6.0_0"
> > OpenJDK  Runtime Environment (build 1.6.0_0-b11)
> > OpenJDK 64-Bit Server VM (build 1.6.0_0-b11, mixed mode)
> > debian
> >
> > server:
> > java version "1.4.2-p7"
> > Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-p7-root_25_dec_2005_15_17)
> > Java HotSpot(TM) Client VM (build 1.4.2-p7-root_25_dec_2005_15_17, mixed mode)
> > FreeBSD 7.x
> >
> > server:
> > java version "1.6.0_07"
> > Diablo Java(TM) SE Runtime Environment (build 1.6.0_07-b02)
> > Diablo Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode)
> > FreeBSD 7.x
> >
> > So only on the desktop do i get the result i'm after, in all other cases, only the test
> > text put directly in the fo file renders ok, the svg text renders with a standard font
> > (although spaced as if it was rendered in the wider AbductionII font).
> >
> > Now, i'm aware that to render svg, fop uses batik as well. And that there is some step
> > in between batik and fop's pdf output, that maps fonts used in batik output to something
> > configured in FOP. Perhaps this mapping is failing for some reason on all machines except
> > the desktop machine? Would the java version (and thus presumably the awt implementation)
> > be a relevant thing? What can I do to further debug this problem??
> >
> > Btw, using batik-1.7's rasterizer, i can render the svg to pdf with the right font, however
> > then i'm back to my original problem that the text is not selectable.
> >
> > Any hints would be greatly appreciated!!
> >
> > Thanks,
> >
> > Koen
> >
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink">
> >   <fo:layout-master-set>
> >     <fo:simple-page-master master-name="first"
> >           margin-right="1.5cm"
> >           margin-left="1.5cm"
> >           margin-bottom="2cm"
> >           margin-top="1cm"
> >           page-height="21cm"
> >           page-width="29.7cm">
> >       <fo:region-body margin-top="1cm"/>
> >       <fo:region-before extent="1cm"/>
> >       <fo:region-after extent="1.5cm"/>
> >     </fo:simple-page-master>
> >   </fo:layout-master-set>
> >
> >   <fo:page-sequence master-reference="first">
> >     <fo:flow flow-name="xsl-region-body">
> >        <fo:block font-family="AbductionII">test (10) abductii</fo:block>
> >       <fo:block>
> >           <fo:external-graphic src="file:test.svg"  content-width="scale-to-fit" content-height="scale-to-fit" width="26.7cm" scaling="un
> > iform"/>
> >       </fo:block>
> >     </fo:flow>
> >   </fo:page-sequence>
> > </fo:root>
> >
>
>
>
> Jeremias Maerki
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@...
> For additional commands, e-mail: fop-users-help@...
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@...
For additional commands, e-mail: fop-users-help@...


Re: another embedded svg font issue

by Jeremias Maerki-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Koen, I can read binary. ;-) No seriously, I've done a lot of hacking
around fonts so you learn a few things. Then there's the double-click on
a TTF file on Windows, or simply a good Hex-Editor to look at this stuff.
There are lots of font-related tools on the net, too. Finally, there's
increasing the log level for "org.apache.fop.fonts" or simply firing up
a Java debugger. Glad I could help.

On 22.10.2009 14:12:21 Koen Martens wrote:

> Hi Jeremias,
>
> Thanks, that was the missing bit of information I needed! It works
> beautifully now, you can't imagine how happy you have made me :)
>
> How did you figure out what name to use (and what the PS name is)? Is
> there some nifty program that shows .ttf meta-data or something?
>
> Gr,
>
> Koen
>
> On Thu, Oct 22, 2009 at 09:54:20AM +0200, Jeremias Maerki wrote:
> > Yes, that's tricky business. You have to use the font name under which
> > it is provided by the operating system because Batik uses AWT/Java2D for
> > font handling. If your font is the one I found, then you need to
> > use "Abduction II" (notice the space). "AbductionII" works because FOP
> > als registers the font internally using the PostScript name, but the
> > same is not true in AWT/Java2D.
> >
> > You can find out the family names of your fonts using the following
> > code:
> >
> >         GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
> >         String[] fontFamilies = env.getAvailableFontFamilyNames();
> >         for (int i = 0, c = fontFamilies.length; i < c; i++) {
> >             System.out.println(fontFamilies[i]);
> >         }
> >
> > In FOP Trunk, there's also a little command-line tool that helps with
> > problems like this. See:
> > http://xmlgraphics.apache.org/fop/trunk/fonts.html#font-list
> >
> > HTH
> >
> > On 21.10.2009 17:20:56 Koen Martens wrote:
> > > Hi list,
> > >
> > > I'm having some problems with fonts in SVG and PDF output. The weird thing is, it
> > > works correctly on one machine, but fails on all my other machines.
> > >
> > > What am I trying to accomplish? I have an svg file, that I want to convert to PDF. We
> > > used batik before, but ended up with rasterized text (ie. you could not copy+paste the
> > > text out of the pdf). A quick test run with FOP showed that it did make the text
> > > selectable, instead of rendering the text as graphics. The fo file i'm using is below
> > > for reference.
> > >
> > > As you can see, i'm first writing out 'test (10) abductii' in font-family AbductionII
> > > (some weird font i used because it looks totally different from any standard font and
> > > even i as a non designer can pick that out from the standard fonts :). Then i'm
> > > embedding the svg. Inside the svg we find some text nodes that also use the AbducionII
> > > font-family.
> > >
> > > Now, I've configured the ttf file that contains AbductII in X, as well as in a custom
> > > config for FOP. I then run the fo file through FOP and check the result.
> > >
> > > In all cases, the test text 'test (10) abductii' is rendered correctly. However, the
> > > text in the svg is only rendered correctly on my desktop. I've tried on 4 different
> > > systems, in all cases using the exact same fop-0.95 binary download.
> > >
> > > desktop:
> > > IcedTea Runtime Environment (build 1.7.0-Mandriva-19.202.56.2mdv2008.0)
> > > IcedTea 64-Bit Server VM (build 11.0-b05, mixed mode)
> > > Mandriva linux
> > >
> > > laptop:
> > > java version "1.6.0_0"
> > > OpenJDK  Runtime Environment (build 1.6.0_0-b11)
> > > OpenJDK 64-Bit Server VM (build 1.6.0_0-b11, mixed mode)
> > > debian
> > >
> > > server:
> > > java version "1.4.2-p7"
> > > Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-p7-root_25_dec_2005_15_17)
> > > Java HotSpot(TM) Client VM (build 1.4.2-p7-root_25_dec_2005_15_17, mixed mode)
> > > FreeBSD 7.x
> > >
> > > server:
> > > java version "1.6.0_07"
> > > Diablo Java(TM) SE Runtime Environment (build 1.6.0_07-b02)
> > > Diablo Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode)
> > > FreeBSD 7.x
> > >
> > > So only on the desktop do i get the result i'm after, in all other cases, only the test
> > > text put directly in the fo file renders ok, the svg text renders with a standard font
> > > (although spaced as if it was rendered in the wider AbductionII font).
> > >
> > > Now, i'm aware that to render svg, fop uses batik as well. And that there is some step
> > > in between batik and fop's pdf output, that maps fonts used in batik output to something
> > > configured in FOP. Perhaps this mapping is failing for some reason on all machines except
> > > the desktop machine? Would the java version (and thus presumably the awt implementation)
> > > be a relevant thing? What can I do to further debug this problem??
> > >
> > > Btw, using batik-1.7's rasterizer, i can render the svg to pdf with the right font, however
> > > then i'm back to my original problem that the text is not selectable.
> > >
> > > Any hints would be greatly appreciated!!
> > >
> > > Thanks,
> > >
> > > Koen
> > >
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink">
> > >   <fo:layout-master-set>
> > >     <fo:simple-page-master master-name="first"
> > >           margin-right="1.5cm"
> > >           margin-left="1.5cm"
> > >           margin-bottom="2cm"
> > >           margin-top="1cm"
> > >           page-height="21cm"
> > >           page-width="29.7cm">
> > >       <fo:region-body margin-top="1cm"/>
> > >       <fo:region-before extent="1cm"/>
> > >       <fo:region-after extent="1.5cm"/>
> > >     </fo:simple-page-master>
> > >   </fo:layout-master-set>
> > >
> > >   <fo:page-sequence master-reference="first">
> > >     <fo:flow flow-name="xsl-region-body">
> > >        <fo:block font-family="AbductionII">test (10) abductii</fo:block>
> > >       <fo:block>
> > >           <fo:external-graphic src="file:test.svg"  content-width="scale-to-fit" content-height="scale-to-fit" width="26.7cm" scaling="un
> > > iform"/>
> > >       </fo:block>
> > >     </fo:flow>
> > >   </fo:page-sequence>
> > > </fo:root>
> > >
> >
> >
> >
> > Jeremias Maerki
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: fop-users-unsubscribe@...
> > For additional commands, e-mail: fop-users-help@...
> >
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@...
> For additional commands, e-mail: fop-users-help@...




Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@...
For additional commands, e-mail: fop-users-help@...