FoPer: Tschechische Schriftart nutzen

Hallo

Ich habe ein kleines Problem bezüglich der Anzeige von Tschechischer Schrift mit dem FOP.
OS ist SLES 10 SP2 und die neueste FOP Version.

Also ich fange mal ganz vorne an.
1. Schritt:
Ich habe die ARIALUNI.TTF von einem Windows System aufs Linux kopiert.
2. Schritt:
Aus dem ARIALUNI.TTF habe ich ein metrisches arialuni.xml erzeugt und beide Fonts (.xml und .ttf) im fop font ordner abgespeichert.
3. Schritt:
Die userconfig.xml angepasst, hier ein Auszug:
<font metrics-file="/opt/fop/fonts/arialuni.xml" kerning="yes" embed-file="/opt/fop/fonts/arialuni.ttf">
    <font-triplet name="arialuni" style="normal" weight="normal"/>
    <font-triplet name="ArialMT" style="normal" weight="normal"/>
 </font>

So wenn ich nun die arialuni als Schriftart in der XSL verwenden möchte wird zwar ein arial verwendet (im restliche Dokument wird (FOP)Helvetica verwendet) aber nicht das arialuni denn bestimmte Tschechische Schriftenzeichen werden nicht dargestellt. Irgendwo habe ich mal gelesen, dass wenn man in seiner XSL keine Schrift angibt (wahrscheinlich auch wenn er sie nicht kennt) er eine Standard FOP Schriftart nutzt -->(FOP)Arial

Hier habe ich gelesen dass mit dem FOP sagen muss dass er die userconfig.xml verweden soll. Was verwendet er Standardmäßig? Der Befehl auf dieser Seite ist allerdings für Windows Maschinen.
http://www.cardogis.com/content.asp?pgid=72_69

Dazu sagen muss ich, dass das Linux System nicht von mir Aufgesetzt, Installiert oder Konfiguriert wurde.

  1. Welche Zeichentabelle nutzt überhaupt der Apache FOP?
    Die vom OS oder eine eigene?

    Habe darüber nichts gefunden vlt. liegt da ja noch der Fehler.

    Danke.

    1. Welche Zeichentabelle nutzt überhaupt der Apache FOP?
      Die vom OS oder eine eigene?

      Habe darüber nichts gefunden vlt. liegt da ja noch der Fehler.

      Danke.

      Ok habe gerade ein Zeichen Dezimal angegeben und die Zeichentabellen verglichen.
      In der Latin1 Tabelle stimmt das Zeichen mit der Ausgabe überein in der UTF-8 ist der Dezimalwert ein anderes Zeichen.

      Also benutzt der FOP die Latin1 Zeichentabelle ich möchte aber die UTF-8 Tabelle verwenden. Ich habe jetzt eine Schriftart mit allen Zeichen aber keine passende Zeichentaballe.

      Wenn jetzt jemand wüsste wie man die Zeichentabelle des FOPs ändert wäre mir geholfen.

  2. Hallo,

    Aus dem ARIALUNI.TTF habe ich ein metrisches arialuni.xml erzeugt und beide Fonts (.xml und .ttf) im fop font ordner abgespeichert.

    http://www.cardogis.com/content.asp?pgid=72_69

    Hm... ich weiss nicht von wann dort die Beschreibung ist oder auf welche FOP-Version sie sich bezieht, aber die Seite hat viele Fehler.

    Hoffentlich hast du das ohne die "-enc ansi" Option Konvertiert! Das konvertiert dir nur einen Teil der Schrift, quasi nur iso-8889-1.
    http://forum.de.selfhtml.org/archiv/2007/5/t152792/#m994549

    1. Schritt:
      Die userconfig.xml angepasst, hier ein Auszug:
      <font metrics-file="/opt/fop/fonts/arialuni.xml" kerning="yes" embed-file="/opt/fop/fonts/arialuni.ttf">
         <font-triplet name="arialuni" style="normal" weight="normal"/>
         <font-triplet name="ArialMT" style="normal" weight="normal"/>
      </font>

    Nun ja ... das könnte ein/das Problem sein.
    Die Schriftart, die sich im "ARIALUNI.TTF" befindet, heisst eigentlich "Arial Unicode MS". Ich habe es aber auch nocht nicht Herausgefunden wann FOP sich bequemt den Namen der Schrift bzw. eine Abkürzung davon zu verwenden. Zudem solltest du da nicht zwei verschiedenen Namen verwenden und beide dann auch noch für normal/normal definieren innerhalb einer Schrift.

    ------------------------ aus einer Config-Datei von mir ------------
    <fonts>
       <font metrics-url="arialn.xml" kerning="yes" embed-url="ARIALN.TTF">
             <font-triplet name="ArialNarrow" style="normal" weight="normal"/>
           </font>
       <font metrics-url="arialnb.xml" kerning="yes" embed-url="ARIALNB.TTF">
             <font-triplet name="ArialNarrow" style="normal" weight="bold"/>
           </font>
       <font metrics-url="arialni.xml" kerning="yes" embed-url="ARIALNI.TTF">
             <font-triplet name="ArialNarrow" style="italic" weight="normal"/>
           </font>
       <font metrics-url="arialnbi.xml" kerning="yes" embed-url="ARIALNBI.TTF">
             <font-triplet name="ArialNarrow" style="italic" weight="bold"/>
           </font>
       <font metrics-url="arialbd.xml" kerning="yes" embed-url="arialbd.ttf">
             <font-triplet name="Arial" style="normal" weight="bold"/>
           </font>
          </fonts>
    ------------------------------------

    Hier habe ich gelesen dass mit dem FOP sagen muss dass er die userconfig.xml verweden soll. Was verwendet er Standardmäßig? Der Befehl auf dieser Seite ist allerdings für Windows Maschinen.

    Entweder rufst du die Userconfig beim Start von FOP auf mit der Option -c
    http://xmlgraphics.apache.org/fop/0.95/running.html#fop-script
    Der aufruf ist ja nicht so anders, z.B.: fop.sh -c conf/userconfig.xml meineDatei.fo meineDatei.pdf

    Wenn du FOP in einem Java-Programm verwendest (eingebettet) kannst du das so machen:

    DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
                Configuration cfg = cfgBuilder.build(cl.getResourceAsStream(configfile));
                FopFactory fopFactory = FopFactory.newInstance();
                fopFactory.setUserConfig(cfg);
                fopFactory.setFontBaseURL(verzeichnis);

    Mit FOP 0.95 kannst du Schriften auch automatisch einbinden:
    http://xmlgraphics.apache.org/fop/0.95/fonts.html#autodetect

    Grüße
    Thomas

    1. Hallo

      Danke für die Nachricht.

      Nein ich habe die Datei ohne -enc ansi konvertiert.

      Und zu "Arial Unicode MS":
      Ich habe den namen in meiner arialuni.xml von "Arial Unicode MS" auf "arialuni" geändert.

      Hier steht: http://xmlgraphics.apache.org/fop/0.95/fonts.html
      Dass wenn der FOP die Sprache nicht kenn er auf die FOP Standardschrift times zurückgreift.
      Habe mal die Schriften in Word verglichen...er zeigt im PDF tatsächlich ne times an obwohl ich <font-family="arialuni"> angegeben habe. Wahrscheinlich habe ich beim einbetten noch irgend einen Fehler.

      1. Hallo

        Ich habe die arialuni.xml jetzt nochmal neu generiert. Und folgendes in der userconfig.xml eingetragen.

        <font metrics-file="/opt/fop/fonts/arialuni.xml" kerning="yes" embed-file="/opt/fop/fonts/arialuni.ttf">
        <font-triplet name="ArialUnicodMS" style="normal" weight="normal"/>
        </font>

        Leider keine Änderung. Auch wenn ich die Buchstaben Dezimal angebe. Bis #255 stimmts doch alles was darüber hinaus geht nicht mehr. Diese Zeichen sind dann auch nur bei UTF-8 verfügbar und die FOP Font Times kennt dies ja nicht.

        Also entweder der FOP benutzt die falsche Zeichentabelle oder was wahrscheinlicher ist die eingebettet Schrift funktioniert nicht.

        Thomas hast du die Arial Unicode MS zum laufen gebracht?

        1. Hallo,

          Ich habe die arialuni.xml jetzt nochmal neu generiert. Und folgendes in der userconfig.xml eingetragen.

          <font metrics-file="/opt/fop/fonts/arialuni.xml" kerning="yes" embed-file="/opt/fop/fonts/arialuni.ttf">
          <font-triplet name="ArialUnicodMS" style="normal" weight="normal"/>
          </font>

          Nun muss du in deinem FO (oder XSL-FO) auch diese Schrift in font-family anwenden.
          Analog zum Beispiel-Config vorhin:
          <fo:static-content flow-name="xsl-region-before" font-family="ArialNarrow">

          Thomas hast du die Arial Unicode MS zum laufen gebracht?

          Ja.
          Aber mit fällt, da noch was ein. (weil ich nocht weiss, dass wir die Schrift damals gekauft haben) Wenn ich mich recht erinnere berücksichtig FOP Angaben zur Lizenz in der Schrift ... wenn diese "nicht einbettbar" ist, wird sie auch nicht eingebettet. ...Mal überprüfen:
          ------------------
          Parsing font...
          Reading ARIALUNI.TTF...
          ...
          Creating xml font file...
          Creating CID encoded metrics...
          Writing xml font file to ari_uni.xml...
          This font contains no embedding license restrictions.
          -------------------

          Grüße
          Thomas

          1. Hi

            Hallo,

            »» Ich habe die arialuni.xml jetzt nochmal neu generiert. Und folgendes in der userconfig.xml eingetragen.
            »»
            »» <font metrics-file="/opt/fop/fonts/arialuni.xml" kerning="yes" embed-file="/opt/fop/fonts/arialuni.ttf">
            »» <font-triplet name="ArialUnicodMS" style="normal" weight="normal"/>
            »» </font>
            »»

            Nun muss du in deinem FO (oder XSL-FO) auch diese Schrift in font-family anwenden.
            Analog zum Beispiel-Config vorhin:
            <fo:static-content flow-name="xsl-region-before" font-family="ArialNarrow">

            Warum font-family="ArialNarrow"?!?!

            »» Thomas hast du die Arial Unicode MS zum laufen gebracht?

            Ja.
            Aber mit fällt, da noch was ein. (weil ich nocht weiss, dass wir die Schrift damals gekauft haben) Wenn ich mich recht erinnere berücksichtig FOP Angaben zur Lizenz in der Schrift ... wenn diese "nicht einbettbar" ist, wird sie auch nicht eingebettet. ...Mal überprüfen:

            Parsing font...
            Reading ARIALUNI.TTF...
            ...
            Creating xml font file...
            Creating CID encoded metrics...
            Writing xml font file to ari_uni.xml...
            This font contains no embedding license restrictions.

            Du hast recht...so wird es sein bei der metrischen umwandlung bekomme ich die Meldung This font contains no embedding license restrictions...

            Kam mir zwar spanisch vor hätte jetzt aber nicht damit gerechnet dass dies das Problem ist...

            Kannst du mir eine Schriftart nennen die die Tschechichen Zeichen beinhaltet und ich verwenden kann, am besten für lau? Im Internet finde ich nichts richtiges bzw. seriöses.

            Ist zwar super dass wir das Problem gelöst haben nur stehe ich jetzt leider wieder bei null...hmm

            Grüße
            Thomas

            Danke
            Gruß

            1. Hallo,

              »» Nun muss du in deinem FO (oder XSL-FO) auch diese Schrift in font-family anwenden.
              »» Analog zum Beispiel-Config vorhin:
              »» <fo:static-content flow-name="xsl-region-before" font-family="ArialNarrow">

              Warum font-family="ArialNarrow"?!?!

              Weil ich das in der als Beispiel genannten Konfiguration verwendet habe und weil das der Name war, den FOP beim erstellen der "metrik.xml" als Name dort ausgelesen/eingetragen hat? ;-)

              Kannst du mir eine Schriftart nennen die die Tschechichen Zeichen beinhaltet und ich verwenden kann, am besten für lau? Im Internet finde ich nichts richtiges bzw. seriöses.

              Ist zwar super dass wir das Problem gelöst haben nur stehe ich jetzt leider wieder bei null...hmm

              Fällt mir nicht wirklich was ein, aber vielleicht corefonts:
              http://sourceforge.net/project/showfiles.php?group_id=34153 ansonsten Helvetica, siehe dazu http://en.wikipedia.org/wiki/Arial#Criticism_and_similar_fonts

              Grüße
              Thomas