Toon posts:

[PHP] wordwrap mogelijk met TTF in GD? *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik kan succesvol een tekst uitlezen uit een
MySQL database, maar wil deze netjes via GD met
een TrueType font wegschrijven in een .PNG bestandje.

Ik heb alles al werken, maar wil alleen nog een
soort wordwrap.

Heeft iemand een ideetje?

B.v.d.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Mischien kun je je string het beste exploden op de spatie zodat je een array met woorden krijgt. Met fontmetrics (oid, geen id hoe het bij GD heet) kun je vervolgens opvragen hoe breed het woord in pixels is. Als je het nu woord voor woord op je plaatje zet kun je bijhouden hoe breed de regel tot nu toe is (wel ff opletten dat je er zelf weer spaties tussen zet ;) ) Waneer de breedte van de al gezette woorden plus de breedte van het nieuwe woord (plus de spatie) breder is dan het gebied waar de text in moet komen, begin je gewoon weer op de volgende regel.

Deze manier heeft 1 zwak punt. Een te lang woord wordt niet afgebroken (hypernation), maar om dat voor elkaar te krijgen ben je een stuk langer bezig :)..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je zou de tekst door php's wordwrap functie kunnen halen en vervolgens op de \n exploden/splitten en dan per regel afdrukken.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op woensdag 06 februari 2002 10:19 schreef ACM het volgende:
Je zou de tekst door php's wordwrap functie kunnen halen en vervolgens op de \n exploden/splitten en dan per regel afdrukken.
Nadeel hiervan is dat er op het aantal letters gewrapt wordt, en niet op de breedte in pixels (en bij TTF is dat vaak niet hetzelfde :) )

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • TheMrH
  • Registratie: April 2000
  • Laatst online: 01-09 22:45
Het meest voor de hand liggend is dan dus :
code:
1
2
3
4
5
6
splitten op spaties
zolang niet op
    zolang breedte(regel+woord)
      regel += volgend woord
    /zolang
/zolang

Mooi taaltje he?!

The box said 'requires Windows 95 or better', so I installed Linux...


Verwijderd

Topicstarter
Op woensdag 06 februari 2002 19:58 schreef TheMrH het volgende:
Het meest voor de hand liggend is dan dus :
code:
1
2
3
4
5
6
splitten op spaties
zolang niet op
    zolang breedte(regel+woord)
      regel += volgend woord
    /zolang
/zolang

Mooi taaltje he?!
I got the picture.
Was er zelf al mee bezig, maar was aan het
zoeken naar een wat elegantere manier ;)
Toch bedankt.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

met de ttfbox-size die je kan opvragen en wat loopjes moet je er uit kunnen komen :)

eventueel reken je 1 malig alle breedtes uit voor een bepaald font+size en gooi je dat in een array.

Klaar voor een nieuwe uitdaging.


Verwijderd

Topicstarter
Op zondag 10 februari 2002 11:54 schreef chem het volgende:
met de ttfbox-size die je kan opvragen en wat loopjes moet je er uit kunnen komen :)

eventueel reken je 1 malig alle breedtes uit voor een bepaald font+size en gooi je dat in een array.
He.. stom van me.. dat had ik nog niet bedacht zo.
Dat is best elegant, dus dit gaat em worden :)
Thanks.

Verwijderd

Op zondag 10 februari 2002 11:54 schreef chem het volgende:
eventueel reken je 1 malig alle breedtes uit voor een bepaald font+size en gooi je dat in een array.
Het hangt af van het font of dit gaat werken. De letterafstand kan namelijk afhankelijk zijn van de gebruikte letters.

bijvoorbeeld de letters TA kunnen dichter op elkaar staan dan TT of AA.

Ik weet niet of dit ook het geval kan zijn met TTF in GD, maar het is een mogelijkheid waar je misschien rekening mee moet houden.
Pagina: 1