Schriftartdarstellung auf Druckern

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
linus
Beiträge: 22
Registriert: Di 19. Okt 2010, 17:23
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Kaiserstuhl

Schriftartdarstellung auf Druckern

Beitrag von linus »

Hallo Zusammen,

ich will für die Druckerausgabe die Schriftart einstellen. Dazu habe ich ins Projekt das Package Printer4Lazarus eingebunden. Die generelle Druckeransteuerung funktioniert (also .BeginPage, .NewPage, X- und Y-Auflösung, etc.) gut.

Allerdings wird offensichtlich die Veränderung der Schriftart bei Zuweisung eines anderen Schriftartnamens nicht korrekt umgesetzt:

z.B. Printer.Canvas.Font.Name := 'Comic Sans MS';

führt einfach zur Ausgabe einer serifenlosen Schrift. Interessanterweise funktioniert das Ganze für TPaintBox aber richtig, d.h. die Schriftartdarstellung auf dem Monitor (habe ich als Vorschau implementiert) wird von TPaintBox.Canvas korrekt umgesetzt!

Ich habe auch versucht, einen eigenen TFont zu erzeugen und diesen per .Assign() an den Drucker-Canvas weiterzugeben - leider mit dem selben Null-Resultat.

Hat irgendjemand eine Ahnung, wie man das Problem lösen kann? Was ist der Unterschied zwischen einem Drucker-Canvas und einem sonstigen Canvas???

Lazarus-Version 0.9.28.2, OS Suse Linux 11.3, Drucker ist egal, habe Epson/HP/Brother u.a. versucht.

Linus.
Wer mehr denkt hat mehr vom Hirn...

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Schriftartdarstellung auf Druckern

Beitrag von theo »

linus hat geschrieben: Hat irgendjemand eine Ahnung, wie man das Problem lösen kann? Was ist der Unterschied zwischen einem Drucker-Canvas und einem sonstigen Canvas???
Ich glaube, das geht nicht.
Unter Linux wird ein Postscript Document erstellt und an den Drucker gesandt. Andere Fonts als die eingebauten sind afaik nicht ladbar (also nur Times, Helvetica, Courier,Symbol).

Was der Unterschied zu einem sonstigen Canvas ist, kannst du in der Unit PostScriptCanvas nachschauen.

Möglicherweise gibt es Lösungen, aber die sind mir nicht bekannt.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Schriftartdarstellung auf Druckern

Beitrag von Socke »

theo hat geschrieben:Möglicherweise gibt es Lösungen, aber die sind mir nicht bekannt.
Ich könnte mir spontan vorstellen, dass man das Problem nicht löst sondern umgeht. Kann man denn Bitmaps auf den Drucker-Canvas kopieren?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Schriftartdarstellung auf Druckern

Beitrag von theo »

Socke hat geschrieben:
theo hat geschrieben:Möglicherweise gibt es Lösungen, aber die sind mir nicht bekannt.
Ich könnte mir spontan vorstellen, dass man das Problem nicht löst sondern umgeht. Kann man denn Bitmaps auf den Drucker-Canvas kopieren?
Kann man wahrsch. schon, die Frage ist aber, ob die Auflösung für saubere Schrift ausreicht.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Schriftartdarstellung auf Druckern

Beitrag von Socke »

theo hat geschrieben:Kann man wahrsch. schon, die Frage ist aber, ob die Auflösung für saubere Schrift ausreicht.
Wie groß soll die denn sein? 4611686014132421 Pixel (Höhe x Breite) sollte doch wirklich ausreichen...
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

linus
Beiträge: 22
Registriert: Di 19. Okt 2010, 17:23
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Kaiserstuhl

Re: Schriftartdarstellung auf Druckern

Beitrag von linus »

theo hat geschrieben:Ich glaube, das geht nicht.
Unter Linux wird ein Postscript Document erstellt und an den Drucker gesandt. Andere Fonts als die eingebauten sind afaik nicht ladbar (also nur Times, Helvetica, Courier,Symbol).

Was der Unterschied zu einem sonstigen Canvas ist, kannst du in der Unit PostScriptCanvas nachschauen.
OK Theo - soweit alles klar, habe die genannte Unit durchgesehen.

Aber wie machen das dann andere Anwendungen (OO)? Die drucken i.d.R. doch auch über Postscript oder nicht? Der Vorschlag, die Text-Elemente auf einen TGraphic-Nachfahren zu "malen" und dann von dort aus auf den Drucker-Canvas zu kopieren geht sicher, schließlich kann man ja jede x-beliebige Grafik auf den Drucker-Canvas aufbringen. Und dann kann das arme Postscript natürlich nicht mehr anders, als das Schriftbild als Grafik an den Drucker zu übermitteln, weil es jetzt nicht mehr erkennen kann, daß das mal eine Schrift war.

Im Übrigen bin ich mit dem Druckresultat durchaus zufrieden und die implementierten Schriften reichen mir für den Moment völlig aus, ich würde das nur gerne verstehen.
Wer mehr denkt hat mehr vom Hirn...

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Schriftartdarstellung auf Druckern

Beitrag von theo »

linus hat geschrieben:ich würde das nur gerne verstehen.
Ich glaube es hat einfach keiner das Font-Embedding programmiert im postscriptcanvas.
Wahrscheinlich weil es schwierig ist und es niemand so dringend gebraucht hat.
Freiwillige vor! ;-)

S.a: http://bugs.freepascal.org/view.php?id=9705" onclick="window.open(this.href);return false;

Antworten