Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 10, 2025 21:12

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 30 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 12, 2006 16:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Du kannst daraus Font-Texturen erzeugen. Oder halt direkt Poly Fonts anzeigen ^^

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 13, 2006 00:56 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die Textur hab ich schon. Es geht jetzt darum die Tex-Koordinaten so zu bestimmen, dass die Buchstaben richtig im Bezug auf die Basislinie positioniert werden.

Die Klasse FontMetrics liefert mir Infos zum Abstand der Grundlinie zur Basislinie.

Das Problem ist jetzt, wie man am einfachsten rausfindet welche Buchstaben bei der Grundlinie beginnen, und welche ganz normal bei der Basislinie beginnen.

Bei den Glyphen bin ich etwas unsicher. Ich weiß nicht ob jedes (ASCII)Zeichen ein Glyph ist, oder mehrere. Das steht ja auch so in der Beschreibung des GlyphVectors. Ich kann damit also relativ wenig anfangen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 13, 2006 05:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo Flash,

falls es mit dem GlyphVector nicht klappt, könntest du es noch mit Font.getLineMetrics probieren.
über LineMetrics.getBaselineOffsets() bekommst du dann ein Array mit den Abständen der einzelnen Zeichen zur Baseline.

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 13, 2006 08:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
So, nochmal nen wenig gesucht und direkt was zu TT Fonts gefunden :) Ist lediglich ne LWJGL Version, nen JOGL Port sollte also nicht so schwer sein.

FontTranslator: http://lwjgl.org/forum/viewtopic.php?t= ... light=font
True Type As Vector: http://lwjgl.org/forum/viewtopic.php?t=1430

Evil

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 13, 2006 21:35 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
das mit der Baseline kommt mir ziemlich mystisch vor. Ich probiers mal aus...mal sehn obs geht.

@E-D: Ich gucks mir mal an.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 14, 2006 15:08 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@dj3hut1: Hast du dir mal die Beschreibung zum BaseLineoffset durchgelesen? Ich glaube das ist irgend was anderes.

Ich beschreib nochmal mein Problem.

Wenn man sich die BoundingBox eines Chars liefern läßt, so bekommt man nur eine Breite und Höhe. Das Problem ist nun aber, dass die Chars bezüglich der Basislinie in Y-Richtung ausgerichtet werden müssen. Die Frage ist nun, wie man diesen Y-Offset ermitteln kann.


Ich brauche quasi einen Baselineoffset für jeden Buchstaben.
Wenn ich sowas versuche ist das Array von getBaseLineOffset immer gleich:
Code:
  1.  
  2. for (int i = 0; i<256; i++)
  3.        {
  4.            LineMetrics lm = font.getLineMetrics(""+(char)i,fontRC);
  5.            float[] yOff = lm.getBaselineOffsets();
  6.  
  7. [...]
  8.  

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 14, 2006 15:33 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Eine Möglichkeit wäre es für jeden Char die Linemetrics abzufragen. Dann holst du dir den Descent Wert und ziehst den von der Baseline ab.

Die sauberste Art ist und bleibt aber der lange Weg über die Glyphs...

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 14, 2006 15:54 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Vermutlich überseh ich dabei was. Kannst du mir mal die 5 Zeilen aufschreiben wie du das für irgendeinen Char machst.

Vermutlich seh ich den Wald vor lauter Bäumen nicht.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 14, 2006 16:32 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Auf der Basis von deinem Code:

Code:
  1.  
  2. for (int i = 0; i<256; i++) {
  3.     LineMetrics lm = font.getLineMetrics(""+(char)i,fontRC);
  4.    
  5.     float yOff = lm.getDescent();   // Descent
  6.    
  7.     [...]
  8. }
  9.  

Bild
Ich hoffe das Bild verdeutlicht das ganze noch ein wenig :)

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 14, 2006 21:02 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Evil-Devil hat geschrieben:
Ich hoffe das Bild verdeutlicht das ganze noch ein wenig :)

*böse Blick*
Bild <-Wiki...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 15, 2006 08:03 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Hey cooles Bild ^^ Im JDK ist nur so nen winziges drin wo man fast nichts erkennt. THX :) Dann hab ich ja den ein oder anderen Fehlwert in meinem Code...

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 15, 2006 11:45 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Das sind übrigens die Werte die TTF_GlyphMetrics.
Ich weiss jetzt nicht ob eure Werte die ihr dann bekommt etwas verändert sind.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 16, 2006 13:16 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
getDescent() hab ich gerade ausprobiert. Der zurückgelieferte Wert ist für alle Buchstaben gleich. D.h. Descent ist nur für den gesamten Font definiert. Anscheinend gilt dies auch für getHeight() und damit wohl für alle LineMetric Eigenschaften.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 19, 2006 18:24 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich habs geschafft!!! Endlich! Juhuuuu...


Weil ich kein Unmensch bin, zeig ich euch sogar wies geht: ;)

Code:
  1.  
  2. for (int i = 0; i < 256; i++)
  3. {
  4.    GlyphVector gv = font.createGlyphVector(fontRC, ""+(char)i);
  5.    GlyphMetrics gm= gv.getGlyphMetrics(0);
  6.  
  7.    float yOff = (float)(gm.getBounds2D().getY() + gm.getBounds2D().getHeight()) * -1;


[...]
}
yOff wird auf die Y-Koordinate des Charquads aufaddiert -> fertig.

So... Jetzt sagt mir mal bitte, ob einer von Euch das gewusst hat, oder ob das wirklich noch keiner gemacht hat. Es war nämlich wirklich nicht ganz einfach zu sehen. Die GlyphBounds sind nämlich anders rum orientiert (Ursprung links oben). Somit ergaben die Koordinaten erst keinen Sinn. Durch zufall hab ich aber gesehen, wie die sich zueinander verhalten. Dadurch bin ich erst auf den Trichter gekommen die miteinander zu verrechnen.

Das war ein Krampf! Wahnsinn!.... :shock:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 21, 2006 13:23 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Mit den Glyphen hab ich es mal versucht aber entnervt aufgegeben. Und sonst nur die Textur über die Metrics erzeugt. Ne Qual sind beide Wege ;)

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 30 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]