PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LaTeX, Chess FSS -- und Java...



Beren77
27-12-2009, 22:29
Hi Leute,

ich bastele gerade an einer Anwendung in Java, die Schachstellungen als .pdf erzeugt.

Dazu habe ich bislang pdflatex benutzt und das funktioniert auch "ganz gut". Da ich aber mehr Flexibilität haben wollte, bin ich jetzt doch dazu übergegangen, die pdf-Dateien "direkt" zu erzeugen (mit iText).

Mein Problem ist nun folgendes: Ich habe die pfb von SkakNew-Diagram. Diese kann ich direkt in Java einbinden und in der LSBC4-Encoding benutzen.
Um also, z.B. einen schwarzen König auf einem schwarzen Feld zu erzeugen (wohlgemerkt: schwarz, bzw. grau; nicht schwarz schraffiert!), kann ich dann einfach die Zeichen "1" und "k" an der gleichen Stelle ausgeben.

Das funktioniert bislang aber _nur_ mit SkakNew. Wenn ich mir die Schriftart Alfonso ansehe (http://www.cam.ctan.org/tex-archive/macros/latex/contrib/chessfss/chessfonts_gallery.pdf erstes Beispiel), dann sind die Buchstaben dort völlig anders verteilt, _und_ ich bekomme auch keine LSBC4-Encoding.

Die Frage also auf den Punkt gebracht:
Wie kann ich die Schriftart x (aus obigem pdf-Dokument) so in eine PFB umwandeln, dass ich sie genau so wie die SkakNew benutzen kann?

Es gibt einen Fontkonvertierungsalgorithmus in der Anleitung zu ChessFss; dort wird auch beschrieben, wie ich die PFB nach der Konvertierung über FontMaps innerhalb von LaTeX so ummappen kann, dass ChessFss sie benutzen kann --- aber das funktioniert eben nur in LaTeX.

Muss ich mir also für jede Font die passenden Buchstabenkombination für Feld+Figur heraussuchen?
Wie bekomme ich denn dann die "richtigen" inversen Felder (ich muss gestehen, dass ich das Encoding von Chessfonts nie so richtig verstanden habe; vielleicht ist da mein Problem).

Ideen? Links, die mir weiterhelfen könnten?
Danke schon mal im Voraus!
Viele Grüße,
Beren

u_fischer
28-12-2009, 08:59
Du kannst Alfonso nicht mit LSBC4 benutzen. Die Kodierungen mit einem "C" im Namen benötigen alle spezielle Zeichen, im Falle von LSBC4 ein Feld mit einem "Loch" für die Figur und Alfonso hat die einfach nicht. Abgesehen von Lucena, mit dem LSBC4 geht, ist die einzige freie Schrift, die alle "Goodies" hat, SkakNew. Du müsstest also erst die neuen Zeichen erzeugen (Ulrich Dirr weiß, wie das geht) und in Alfonso einfügen. Wenn du eine erweiterte Schrift hast, kann ich die nötigen .enc und .fd-Dateien für LaTeX erzeugen. Das geht schnell.

Beren77
28-12-2009, 10:49
Aha... So ist das also...

Das heißt dann auch, dass Du das Bild "rechts unten" auf Seite 2 für die Alfonso-Schriftart in einer LSB-Encoding gemacht hast, richtig? Die hat dann eben den Nachteil, dass die weißen Figuren durchgängig weiß (oder in Deinem Beispiel rot) sind und eben keinen schwarzen Rand haben.

Tja. Für mein Java-Programm kann ich das Problem "lösen", indem ich die Bitmaps der jeweiligen Font in einer festen Größe erstelle (sprich: Ich baue die Felder mit "Loch" in Gimp oder so).
Aber wenn mir jemand sagen kann, wie ich die "Lochfelder" in eine Font einbaue, dann mache ich das auch gerne (so das nicht zu aufwändig ist ;)).
Dann haben wir wenigstens alle was davon.
Aber bevor ich mich in das Abenteuer stürze:
Wieso gibt's denn die LSBC4-Encoding nicht für jede Schriftart? Braucht die niemand? Und: Gibt es außer den Lochfeldern noch mehr Sonderzeichen, die gemacht werden müssen?

Grüße,
Philipp

u_fischer
28-12-2009, 11:52
Das heißt dann auch, dass Du das Bild "rechts unten" auf Seite 2 für die Alfonso-Schriftart in einer LSB-Encoding gemacht hast, richtig?

Ja.


Aber wenn mir jemand sagen kann, wie ich die "Lochfelder" in eine Font einbaue, dann mache ich das auch gerne (so das nicht zu aufwändig ist.

Nun, du brauchst ein Schriftbearbeitungsprogramm (z.B. fontforge), dann musst du ein Zeichen auswählen, z.B. weißer König auf schwarzem Feld und die Figur innendrin löschen. Das neue Zeichen speicherst du auf irgendeiner freien Position. Ich habe kein fontforge, kann dir daher keine Einzelheiten sagen. Aber sehr schwer dürfte es nicht sein. Ob du das Ergebnis veröffentlichen darfst, weiß ich auch nicht (soweit ich mich erinnere ist der Autor von alfonso verschollen.


Wieso gibt's denn die LSBC4-Encoding nicht für jede Schriftart?

Nun, die meisten Schriften sind halt relativ simple Freeware-Schriften. Und ich habe außerdem gewisse Zweifel, dass Nutzer von Wordpad oder so überhaupt in der Lage wären, Zeichen "übereinander zu drucken", also solche Spezialzeichen zu nutzen.


Gibt es außer den Lochfeldern noch mehr Sonderzeichen, die gemacht werden müssen?

Es gibt noch die sogenannten "Piecemasken". Umrisse der Figuren, die man dahinter legen kann, um ihnen einen farbigen Hintergrund zu geben.

Es gibt übrigens noch alphadia, das hat auch diverse Sonderzeichen. (Ich müsste die Schrift mal in die Gallerie einbauen).