PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Weiße Kästchen" aus PDF Dokument entfernen



feuervogel
26-11-2009, 20:32
Hallo,

ich bin ein großer Fan von Unicode und mag generell Schrift. Also habe ich gedacht, ich erstelle mir ein Poster aus vielen lustigen Zeichen. Das Ergebnis siehe im Anhang.

Wie man sieht, können einige Zeichen trotz Arial Unicode nicht dargestellt werden bzw. sind nicht vorhanden. Und ja, ich erstelle das automatisiert.

Nun meine Frage: Gibt es irgendeine Möglichkeit die "weißen Kästchen" da rauszufiltern? Ich find das schließlich nicht allzu schön.

Ich hab schon mit pdftotext hantiert und versucht das einmal hin- und dann wieder zurück zu verwandeln, aber da bleiben dann nur die lateinischen Buchstaben übrig.

P.S.: Wenn ich hier mehr als 100KB hochladen könnte, wäre es etwas deutlicher zu sehen.

localghost
26-11-2009, 20:40
Welche Zeichen werden denn bei dir nicht dargestellt? Bei mir (openSUSE, KDE 4.3.3, Okular 0.9.3) werden alle Zeichen angezeigt. Scheint ein Problem deines Viewers zu sein.


MfG
Thorsten¹

feuervogel
26-11-2009, 21:31
hmmm...also mit xpdf werden die kästchen (zu sehen mit evince) auch nicht als kästchen dargestellt. trotzdem hässlich.

ich hab mal nen screenshot angehängt. (der datei auf A4 reduziert)

localghost
26-11-2009, 21:45
Bei allen mir (zur Zeit) zur Verfügung stehenden Viewern keine Kästchen. Aber unsichtbare Zeichen.

u_fischer
27-11-2009, 10:27
"Arial Unicode" klingt nach xelatex. Wie bei solchen Schriften, fehlende Glyphen dargestellt wird, hängt von der Schrift ab. Du kannst aber vorher testen, ob ein Zeichen existiert:


\documentclass[10pt]{article}
\usepackage{fontspec}
\setmainfont{Arial}
\usepackage{ifthen}
\begin{document}
a \char3000

\ifthenelse{\equal{\the\XeTeXcharglyph97}{0}}
{(fehlt)}{\char97}
\ifthenelse{\equal{\the\XeTeXcharglyph3000}{0}}
{(fehlt)}{\char3000}


\ifnum\XeTeXcharglyph97=0 fehlt \else \char97\fi,
\ifnum\XeTeXcharglyph3000=0 fehlt \else \char3000\fi
\end{document}

feuervogel
03-12-2009, 00:24
wow, dass es eine latex-lösung gibt, hätte ich nicht gedacht.

ich habe nun eine lösung mit python implementiert. ich hab für jedes zeichen aus dem unicode-standard eine kleine grafik erzeugt und das zeichen mit einer bestimmten schriftart reingeschrieben. danach habe ich die md5-sums gezählt -- und eigentlich darf ja keine checksum zwei mal vorkommen. also habe ich alle dateien gelöscht, deren checksum mehrmals vorkommt. funktioniert super :-)

feuervogel
03-12-2009, 01:09
eine kleinigkeit gibts aber noch zu meckern. meine zeile mit dem latex-code sieht nun so aus:


s = '\ifthenelse{\equal{\\the\XeTeXcharglyph%i}{0}}{}{ \char%i } \n' % (i, i)

hier wird einfach nur die unicode-nr mit einer zählervariable ersetzt. problem ist, wenn ich das so schreibe: {\char%i} schreibt er mir alles hintereinander in eine zeile, ohne umzubrechen. mache ich also ein leerzeichen aber keinen umbruch dahinter, meckert xelatex, dass die einzelne zeile da zu lang sei.

also füge ich ein \n ein, was aber zur folge hat, dass im dokument mehrere \n hinterinander stehen, die dann mehrere leerzeichen erzeugen und das wiederum führt zu großen zwischenräumen innerhalb des pdf-dokuments, was unschön aussieht.

u_fischer
03-12-2009, 09:59
Warum nicht {\char%i\ } oder {\char%i{} }? (Und wieso hat "\\the" zwei Backslash?)