Ich muss in Latex leider einen speziellen Windows-TTF-Font verwenden, den ich mühevoll eingebunden habe, dem aber bestimmte Ligaturen fehlen, z.B. "fi" Die Ligaturen werden dann zu Löchern im Text, z.B. Raf_nerie statt Raffinerie. Jetzt könnte man jedesmal Raff"|inerie schreiben, aber das ist unpraktisch.
Kann man innerhalb einer Umgebung, in der der Font verwendet wird, bestimmte Ligaturen generell unterdrücken?
Danke!
Globale Aufhebung von Ligaturen
Ja, z.B. mit microtype. Aber eine korrekt installierte Schrift versucht nicht Ligaturen zu benutzen, die gar nicht da sind. Wenn das passiert, ist die tfm-Datei fehlerhaft erstellt worden und sollte besser korrigiert werden.
Ulrike Fischer
www.troubleshooting-tex.de
www.troubleshooting-tex.de
-
- Forum-Meister
- Beiträge: 808
- Registriert: Di 2. Okt 2012, 21:42
- Wohnort: NRW
Hallo Ulrike und Helmut,
danke für Eure Antworten. Da bin ich ja an wahre Experten geraten, vielleicht könnt Ihr mir weiterhelfen. Ich probiers mal:
Das System ist ein MinGW, daheim solls auch mit Linux laufen. Es gibt ttf-Fonts mit Corporate-Identity-Fonts (Firmenname durch xxxxx ersetzt), die ich zu benutzen habe...
Ich habe folgendes Skript laufen lassen - ich weiß, es lässt sich perfektionieren, aber es tut erstmal seinen Zweck:
Dann probiere ich eine LaTeX-Datei aus:
Zuerst fliegt pdflatex raus:
Wenn ich dann aber den Font von Hand erstelle mit
läuft nachher auch das pdflatex und die pdf-Ausgabe sieht gut aus - mit einer Ausnahme: Die Ligatur fehlt und wird durch ein Kästchen ersetzt. Da steht dann also das Wort "Raf_nerie". Wahrscheinlich sollten mich die Warnungen auch stören. Wenn ich eine andere Schriftgröße verwende, ignoriert pdflatex das und verwendet stattdessen den bekannten handerzeugten Font, es ändern sich nur die Buchstabenabstände.
Jetzt die entscheidende Frage: Was mache ich falsch? Was muss ich tun, dass die fehlenden pk-Fonts automatisch erzeugt werden? Was stimmt mit den Ligaturen nicht?
Ganz herzlichen Dank!!
Grüße, hajoe
danke für Eure Antworten. Da bin ich ja an wahre Experten geraten, vielleicht könnt Ihr mir weiterhelfen. Ich probiers mal:
Das System ist ein MinGW, daheim solls auch mit Linux laufen. Es gibt ttf-Fonts mit Corporate-Identity-Fonts (Firmenname durch xxxxx ersetzt), die ich zu benutzen habe...
Ich habe folgendes Skript laufen lassen - ich weiß, es lässt sich perfektionieren, aber es tut erstmal seinen Zweck:
rm ttfonts.map ttf2tfm xxxxxPReg.ttf -q -T T1-WGL4.enc -v ecxxxxx.vpl recxxxxx.tfm >> ttfonts.map ttf2tfm xxxxxPIta.ttf -q -T T1-WGL4.enc -v ecxxxxxi.vpl recxxxxxi.tfm >> ttfonts.map ttf2tfm xxxxxPMed.ttf -q -T T1-WGL4.enc -v ecxxxxxbd.vpl recxxxxxbd.tfm >> ttfonts.map ttf2tfm xxxxxPMed.ttf -q -T T1-WGL4.enc -s .167 -v ecxxxxxbi.vpl recxxxxxbi.tfm >> ttfonts.map ttf2tfm xxxxxPReg.ttf -q -T T1-WGL4.enc -s .167 -v ecxxxxxo.vpl recxxxxxo.tfm >> ttfonts.map ttf2tfm xxxxxPMed.ttf -q -T T1-WGL4.enc -s .167 -v ecxxxxxbdo.vpl recxxxxxbdo.tfm >> ttfonts.map vptovf ecxxxxx.vpl ecxxxxx.vf ecxxxxx.tfm vptovf ecxxxxxi.vpl ecxxxxxi.vf ecxxxxxi.tfm vptovf ecxxxxxbd.vpl ecxxxxxbd.vf ecxxxxxbd.tfm vptovf ecxxxxxbi.vpl ecxxxxxbi.vf ecxxxxxbi.tfm vptovf ecxxxxxo.vpl ecxxxxxo.vf ecxxxxxo.tfm vptovf ecxxxxxbdo.vpl ecxxxxxbdo.vf ecxxxxxbdo.tfm rm -f *.vpl TEXMF="/c/Program Files/MiKTeX 2.9" # Editiere $TEXMF/ttf2tfm/base/ttfonts.map und hänge ttfonts.map an, # sofern nicht schon geschehen cp T1-WGL4.enc "$TEXMF/pdftex/base/" mkdir -p "$TEXMF/fonts/vf/xxxxx/" cp *.vf "$TEXMF/fonts/vf/xxxxx/" mkdir -p "$TEXMF/fonts/tfm/xxxxx/" cp ec*.tfm "$TEXMF/fonts/tfm/xxxxx/" mkdir -p "$TEXMF/fonts/truetype/xxxxx" cp *.ttf "$TEXMF/fonts/truetype/xxxxx"
\documentclass{article} \usepackage{german} \begin{document} \usefont{T1}{xxxxx}{m}{n} Test, ist das der xxxxx-Font? Ligaturtest: Raffinerie \end{document}
Running miktex-makemf.exe... miktex-makemf: The recxxxxx source file could not be found. Running ttf2pk.exe... Running ttf2pk.exe... ttf2pk: ERROR: Cannot find tfm file. miktex-makepk: PK font recxxxxx could not be created. !pdfTeX error: c:\Program Files\MiKTeX 2.9\miktex\bin\pdflatex.exe (file recxxx xx): Font recxxxxx at 600 not found ==> Fatal error occurred, no output PDF file produced!
> ttf2pk -q -n recxxxxx 600 ttf2pk: WARNING: Cannot map character `compwordmark'. ttf2pk: WARNING: Cannot map character `perthousandzero'. ttf2pk: WARNING: Cannot map character `dotlessj'. ttf2pk: WARNING: Cannot map character `ff'. ttf2pk: WARNING: Cannot map character `ffi'. ttf2pk: WARNING: Cannot map character `ffl'. ttf2pk: WARNING: Cannot map character `visualspace'. ttf2pk: WARNING: Cannot map character `Germandbls'.
Jetzt die entscheidende Frage: Was mache ich falsch? Was muss ich tun, dass die fehlenden pk-Fonts automatisch erzeugt werden? Was stimmt mit den Ligaturen nicht?
Ganz herzlichen Dank!!
Grüße, hajoe
-
- Forum-Meister
- Beiträge: 808
- Registriert: Di 2. Okt 2012, 21:42
- Wohnort: NRW
Du irrst Dich: Ich bin kein Experte, wenn es um ttf-Fonts unter pdflatex geht. Das war mir immer zu kompliziert. Aber seit es fontspec gibt, ist das viel einfacher. Man muss das Dokument dann aber mit xetex oder luatex kompilieren. Was passiert denn, wenn Du dieses Minimalbeispiel mit xe-/luatex kompilierst?
Und dann die unterschiedlichen Einstellungen für die Ligaturen durchtestest (s. Anleitung zu fontspec). Löst das Dein Problem vielleicht?
Viele Grüße
Helmut
\documentclass{scrartcl} \usepackage{fontspec} \setmainfont[Scale=1,Mapping=tex-text,Ligatures={Common}]{DeinSpezialfont} \begin{document} Test, ist das der xxxxx-Font? Ligaturtest: Raffinerie \end{document}
Viele Grüße
Helmut
Du solltest lokale Dateien nicht in den Hauptbaum von miktex kopieren, benutze einen lokalen texmf-Baum. Du darfst nicht vergessen die FNDB zu aktualisieren.
Wenn du pdflatex (mit pdf-Output) benutzt, solltest du ttf2pk nicht benötigen. pdflatex kann ttf-Schriften direkt laden. Du musst aber dafür sorgen, dass pdflatex die map-Datei nutzt, z.B. mit \pdfmapfile{=ttfonts.map}.
Die "Cannot map character"-Meldungen bedeuten, dass entweder die Schrift die Glyphen gar nicht hat, oder non-Standardnamen benutzt. Je nachdem muss man die tfm oder die enc-Datei nachbearbeiten.
Wenn die Schrift älter ist, kann es sein, dass auch xelatex nicht völlig zufriedenstellende Ergebnisse liefert. Evtl wäre es dann sinnvoll (wenn die Lizenz es zulässt) die Schrift in type1 oder otf umzuwandeln und ggfs zu korrigieren.
Wenn du pdflatex (mit pdf-Output) benutzt, solltest du ttf2pk nicht benötigen. pdflatex kann ttf-Schriften direkt laden. Du musst aber dafür sorgen, dass pdflatex die map-Datei nutzt, z.B. mit \pdfmapfile{=ttfonts.map}.
Die "Cannot map character"-Meldungen bedeuten, dass entweder die Schrift die Glyphen gar nicht hat, oder non-Standardnamen benutzt. Je nachdem muss man die tfm oder die enc-Datei nachbearbeiten.
Wenn die Schrift älter ist, kann es sein, dass auch xelatex nicht völlig zufriedenstellende Ergebnisse liefert. Evtl wäre es dann sinnvoll (wenn die Lizenz es zulässt) die Schrift in type1 oder otf umzuwandeln und ggfs zu korrigieren.
Ulrike Fischer
www.troubleshooting-tex.de
www.troubleshooting-tex.de