Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PostScript-Druck Helvetica unterstrichen - wie? (https://www.delphipraxis.net/94449-postscript-druck-helvetica-unterstrichen-wie.html)

s-off 21. Jun 2007 15:11


PostScript-Druck Helvetica unterstrichen - wie?
 
Hallo,

ich ordne Druckfragen jetzt einfach mal in den Multimediabereich ein; sollte ich hier falsch liegen, bitte bescheid sagen.

Also, folgendes Problem.

Ich stelle gerade unser Drucksystem um, und zwar von PCL auf PostScript.
Unter PCL haben wir schön mit der Schriftart UNIVERS gearbeitet - hier konnte man locker mit PCL-Befehlen den Fettdruck ein- und ausschalten.

Das Pendant zu UNIVERS heisst unter PostScript HELVETICA. Hier ist die Umstellung der Schriftattribute nicht so einfach, sprich hier muss ich den Font direkt mit dem Attribut aufrufen, bspw. so für Fettdruck:
Delphi-Quellcode:
Helvetica-Bold findfont
Tja, für den Fettdruck funktioniert das so auch schön; auch Kursivdruck bekomme ich mit
Delphi-Quellcode:
Helvetica-Oblique findfont
bestens hin.

Nur beim unterstreichen haperts;
Delphi-Quellcode:
Helvetica-Underline findfont
funktioniert leider nicht. Der Interpreter meckert an, dass er diesen Schriftstil nicht finden kann und ersetzt ihn plump durch HELVETICA.

Weiss einfach nicht mehr weiter.

Flocke 21. Jun 2007 15:41

Re: PostScript-Druck Helvetica unterstrichen - wie?
 
Ich kenne mich mit PostScript jetzt nicht 100%-ig aus, aber Unterstrichen ist auf jeden Fall nicht die Eigenschaft einer Schriftart - du erwartest dabei ja auch nicht wirklich ein anderes Schriftbild. Statt dessen ist in jeder Type-1-Schriftart normalerweise die Position und Dicke des Unterstrichs angegeben. Es sollte also entweder die Möglichkeit geben, Unterstreichung ein- und auszuschalten oder du musst den Strich tatsächlich von Hand zeichnen.

Vielleicht druckst du einfach einmal unterstrichenen Text über einen Postscript-Druckertreiber in eine Datei und siehst dir dann an, wie die es machen.

s-off 22. Jun 2007 08:01

Re: PostScript-Druck Helvetica unterstrichen - wie?
 
Huhu,

danke für die Antwort.
Habe leider nichts gefunden, was den Fettdruck dynamisch ein- bzw. ausschalten kann.

Zeichne den Unterstrich nun selber.

kalmi01 22. Jun 2007 13:13

Re: PostScript-Druck Helvetica unterstrichen - wie?
 
Zitat:

Habe leider nichts gefunden, was den Fettdruck dynamisch ein- bzw. ausschalten kann.
gibt es auch nicht, da der von Dir gewünschte Font ja erst zur Laufzeit generiert wird.
Was Du machen kannst wäre:
Delphi-Quellcode:
/Normal /Helvetica findfont 12 scalefont def
/Fett /Helvetica-Bold findfont 12 scalefont def

10 10 moveto
Normal setfont (Dies ist ein ) show
Fett  setfont (fetter ) show
Normal setfont (Text) show
[delphi]

Zitat:

Zeichne den Unterstrich nun selber.
So sieht es die PS-Font-Machinerie auch vor.
Es gibt normalerweise keine unterstrichenen Zeichen.
Die Font-Machinerie liefert lediglich die Position der Baseline, sowie die Strichstärke für Underline.
Malen sollst Du selber.

s-off 22. Jun 2007 15:14

Re: PostScript-Druck Helvetica unterstrichen - wie?
 
Hi,

Zitat:

Zitat von kalmi01
So sieht es die PS-Font-Machinerie auch vor.

ist mir dann nach einiger Sucherei auch plausibel geworden.

Mache es nun so, dass ich mir in meiner Textdruck-Funktion standardmässig den Start- und den Endpunkt des Textes merke.
Dann hole ich mir die benötigten Infos aus der Schriftart, also die Größe der Schrift sowie Position und Stärke des Unterstrichs, passe die Y-Koordinate an und zeichne den Strich drunter; funktioniert super :)

Das mit dem dynamischen Ein- und Ausschalten der Attribute war unter PCL allerdings schon schön. Einmal Schriftart aktivieren, und bequem für jedes Zeichen fett oder nicht fett, wenn gewünscht.

kalmi01 22. Jun 2007 15:36

Re: PostScript-Druck Helvetica unterstrichen - wie?
 
Zitat:

Zitat von s-off
Mache es nun so, dass ich mir in meiner Textdruck-Funktion standardmässig den Start- und den Endpunkt des Textes merke.

Ich weiss nicht wo Du das machst, kannste aber direkt in PostScript.
currentpoint gibt die aktuelle x + y Koordinate auf dem Stack zurück.

Könntest also in Deinem PS-Code die Startkoordinaten merken
Delphi-Quellcode:
/Xs 10 def
/Ys 10 def
dann mit show den text ausgeben und mit
Delphi-Quellcode:
currentpoint
/Xe exch def
/Ye exch def

Xs Ys moveto
Xe Ye linteo
stroke
Endkoordinate holen und Strich zeichnen.
Natürlich vorher die Strichstärke gemäss Font-Machinerie und aktueller Skalierung gesetzt.

Das geht natürlich noch eleganter und kompakter, aber es sollen ja auch "nicht UPN"-ler verstehen :mrgreen:

Zitat:

Das mit dem dynamischen Ein- und Ausschalten der Attribute war unter PCL allerdings schon schön
PCL ist ja auch eine Seitenbeschreibungssprache.
Postscript hingegen ist eine vollständige, ausgewachsene Programmiersprache, mit ausgefeilten Möglichkeiten zur Seitenbeschreibung.
Was in PCL nich drin ist, ist halt nicht drin !
In PostScript kann man sich Fehlendes auch selbst programmieren.

s-off 26. Jun 2007 09:39

Re: PostScript-Druck Helvetica unterstrichen - wie?
 
Hi,

danke nochmal für Deine Antwort; genau das ist der Weg, den ich gehe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz