Jump to content

Kako izracunati velicinu fonta tako da ceo tekst stane u polje tabele?


Recommended Posts

Ja sam programer po struci, koji je dosao na ovaj sajt po preporuci.

 

Imam sledeci problem:

 

Moj program treba da odstampa tabelu u kojoj ce biti izlistani podaci iz baze podataka. Korisnik moze izabrati velicinu papira ( A4, A3, A6... shvatate poentu ) i tu nastaje problem.

 

Dimenzije tabele ( i njenih polja ) zavise od dimenzija papira. pa nemogu koristiti istu velicinu fonta za sve vrste.

 

Okruzenje u kojem radim mi ne nudi opciju da proracunam velicinu fonta u zavisnosti od dimenzije polja u tabeli, pa moram naci sam nacin da to uradim.

 

Zato vas pitam sledece:

 

U tipografiji, kako se racuna velicina fonta, tako da ceo tekst stane u polje tabele?

 

DODATAK:

 

Maksimalan broj slova je 50

Link to comment
Share on other sites

Iako iz tvog ugla zvuči kao jednačina, ima tu i promenljivih - koji i kakav font, koliko teksta, kolika je tabela, poravnanje....

 

Možda je dovoljno samo da pripaziš na čitljivost. Za A4 12pt je sasvim ok, 7-8pt za A6, a za A3... sky is a limit ,)

Napravi jedan A4, popuni tekstom, pa ga umanji i uvećaj kao probu.

Link to comment
Share on other sites

Iako iz tvog ugla zvuči kao jednačina, ima tu i promenljivih - koji i kakav font, koliko teksta, kolika je tabela, poravnanje....

 

Možda je dovoljno samo da pripaziš na čitljivost. Za A4 12pt je sasvim ok, 7-8pt za A6, a za A3... sky is a limit ,)

Napravi jedan A4, popuni tekstom, pa ga umanji i uvećaj kao probu.

 

Tip fonta i njegove osobine ( bold, italic... ) mogu da biram po volji;

 

Maksimalan broj slova je 50;

 

Tabela ide preko celog lista ( za sad ), ima 4 kolone a broj redova je nepoznat ( zavisi od broja podataka u bazi ).

 

Dimenzije polja su sledece: sirina = cetvrtina duzine papira; visina desetina visine papira;

 

Sto se tice predloga da popunim A4 tekstom, mislim da je doslo do zabune. Pre pocetka stampanja ja moram podesiti visinu fonta, a to nemogu bez "formule" ili neceg slicnog.

 

Ja mogu testiranjem utvrditi dobru velicinu za A4 format, ali onda program nece raditi za ostale velicine...

 

Ukoliko stampanje uradim u memoriji, kao bitmap, onda ce kvalitet posle skaliranja da opadne ( ne postoji nacin da uradim stampu u memoriji vektorski... ).

 

Ja se izvinjavam ako vam je ovo sve tesko, i imam razumevanja. Ako mogu jos nesto uciniti da pomognem recite.

 

Hvala na pomoci.

Link to comment
Share on other sites

^ Da, to bi matematički bilo tačno, ali bi tako 12pt za A4 umanjeno bilo oko 6pt - a to i nije prijatno za čitanje.

 

Evo i zašto mislim da je proba dobro rešenje:

Na slici je 1:1 prikazan raspon od 8 do 12pt, bold i normal, a ispod toga po 50 širih slovnih karaktera u istim varijacijama.

DZ_1.png

Nadam se da sad možeš da odrediš neke od potrebnih veličina fontova, napravi probu i ako možeš da čitaš - onda radi.

 

Ako neko zna formulu, i ja bih je rado video!

 

p.s.

Možda ti ovako nešto pomogne

Link to comment
Share on other sites

^ Da, to bi matematički bilo tačno, ali bi tako 12pt za A4 umanjeno bilo oko 6pt - a to i nije prijatno za čitanje.

 

Evo i zašto mislim da je proba dobro rešenje:

Na slici je 1:1 prikazan raspon od 8 do 12pt, bold i normal, a ispod toga po 50 širih slovnih karaktera u istim varijacijama.

DZ_1.png

Nadam se da sad možeš da odrediš neke od potrebnih veličina fontova, napravi probu i ako možeš da čitaš - onda radi.

 

Ako neko zna formulu, i ja bih je rado video!

 

p.s.

Možda ti ovako nešto pomogne

 

Matematicki gledano, ako je

A3 = 1.41 * A4

onda je velicina fonta za A3 = 1.41 * 12 = 16,92 sto je ispravno sudeci po mojim testovima. Medjutim, ja sam istrazivao dalje i nasao ovaj sajt koji vrlo dobro dokumentuje matematicke relacije za velicine papira. Problem je sto su Amerikanci resili da "pametuju" sa svojim velicinama koje nemaju veze sa mozgom te mi je predlozena ideja pala u vodu.

 

Ipak, nasao sam formulu koja je bila jako blizu ( nemam stampac tako da rezultate stampanja testiram u MS OneNote2007 i XPS ), nije radila u par slucajeva u XPS...

 

Ukoliko je neko zainteresovan, ja bih mogao sastaviti vrlo brzo mali programcic za Windows koji bi stampao tabelu preko celog papira i pokusao da upise tekst u prvu celiju sa fontom koji se dobije primenom linkovane formule...

 

Na taj nacin bi mogli da isprobamo formulu na delu, umesto na simulacijama jer sumnjam da mozda formula radi kako treba ( u MS One Note2007 sve radi kako treba ) ali je bag sa XPS-om prouzrokovao los rezultat...

Link to comment
Share on other sites

Mozda gresim ali prosta logika mi govori da ako je A3 1,41x linearno veci od A4 onda i visina fonta mora biti 1,41x veca na A3 u odnosu na A4.

A6 je 2x manji (linearno) od A4.

 

Nazalost, Amerikanci imaju svoje mere koje nemaju veze s mozgom ( vidi ovde ) tako da tvoja zamisao nije bas idealna ali svakako vredi probati. Ja sam proverio tvoju zamisao na brzinu i ona radi, ali kao sto rekoh, Amerikanci ruse ovaj plan sa svojim merama...

Link to comment
Share on other sites

koji font? bell centennial jer je napravljen da se "cita" sitno odstampan, a ako ti je komplikovano da racunas, neki neproporcionalni font koji se najbolje "cita" u ovom tvom slucaju.

 

u ovakvoj situaciji, najbolje je da, umesto milimetra i pointa, korisitis ili samo milimetre, ili samo pointe.

niko ti ne zabranjuje da velicinu fonta izrazavas u milimetrima ili velicinu strane u pointima.

kad svedes na istu meru, lakse ces da racunas.

uostalom mozes i font da racunas u pointima, a leding u milimetrima. svejedno je.

Link to comment
Share on other sites

koji font? bell centennial jer je napravljen da se "cita" sitno odstampan, a ako ti je komplikovano da racunas, neki neproporcionalni font koji se najbolje "cita" u ovom tvom slucaju.

 

u ovakvoj situaciji, najbolje je da, umesto milimetra i pointa, korisitis ili samo milimetre, ili samo pointe.

niko ti ne zabranjuje da velicinu fonta izrazavas u milimetrima ili velicinu strane u pointima.

kad svedes na istu meru, lakse ces da racunas.

uostalom mozes i font da racunas u pointima, a leding u milimetrima. svejedno je.

 

 

Sto se tice fonta, ja trenutno koristim MS Sans Serif, ali je to nebitno. Imam slobodu da koristim bilo koji font koji je instaliran na korisnikovoj masini.

 

Nazalost, okruzenje u kojem radim je "smotano" pa cini stvari tezim nego sto treba da budu.

 

Velicina fonta se meri u pikselima, kao i velicina strane.

 

Postoji formula koja pretvara pointe u piksele, a postoji i formula koja pretvara mm u piksele tako da mi nije to problem.

 

Problem je sto korisnik bira velicinu papira, a dimenzije tabele zavise od nje, pa nisam u stanju da prosledim istu velicinu fonta za sve velicine papira, nego ga moram skalirati po potrebi.

 

Da stvar bude gora, jedina formula koju sam dobio do sada kao predlog resenja radi generalno dobro ali u pojedinim slucajevima zakazuje. Mislim da to ima veze sa time sto nije uracunat external i internal leading u jednacinu...

 

Link to comment
Share on other sites

ne znam nista o tvom radnom okruzenju tako da mogu samo da nagadjam...

 

recimo... da uradis resenje za maksimalnu velicinu strane, rasterizujes, a zatim skaliras (umanjis) na zeljenu velicinu?

 

pikseli nemaju ama bas nikakvo znacenje kad je stampa u pitanju. meni piksel moze da bude jedan metar, ili vise ako hocu da napravim reklamu na mesecu.

Link to comment
Share on other sites

ne znam nista o tvom radnom okruzenju tako da mogu samo da nagadjam...

 

recimo... da uradis resenje za maksimalnu velicinu strane, rasterizujes, a zatim skaliras (umanjis) na zeljenu velicinu?

 

pikseli nemaju ama bas nikakvo znacenje kad je stampa u pitanju. meni piksel moze da bude jedan metar, ili vise ako hocu da napravim reklamu na mesecu.

 

Kao sto rekoh ranije, velicina fonta se izrazava preko point-a, tako da mi nije problem merna jedinica. Mogu raditi preko point-a, piksela ili mm, nije problem.

 

Sto se tice rasterizacije, to mi je palo na pamet, ali bitmap gubi na jasnoci kada se skalira pa to moze predstavljati problem... Zato sam hteo da izbegnem takav pristup, te mi je pala na pamet ideja da koristim neku formulu. Sto se formule tice, mislim da je problem u mom okruzenju ( ne uzima u obzir external i internal leading ) pa cu raditi na tome da je poboljsam...

 

Mozda neko uspe da resi ovaj problem do tada na neki drugi nacin.

 

Ako je potrebno da dodam jos informacija, nije problem. Ja sam naveo one podatke koje sam smatrao vaznim sa aspekta tipografije a programski aspekt sam izostavio da ne bih bunio citaoce.

 

Hvala jos jednom na predlogu.

Link to comment
Share on other sites

Čini mi se da treba koristiti ovaj tip fonta http://en.wikipedia.org/wiki/Monospaced_font kako bi mogao da uvek imaš isti odnos karaktera, tek onda možeš imati konstantu koju možeš preračunavati (koliko karaktera staje u određeno polje). Odnos stranica je koren iz 2 (1.41...) pa ti to može služiti kao odnos veličina fonta prema veličini lista. A napraviš jednu priručnu tabelu (do koje ćeš doći brzim eksperimentom) gde ćeš uneti koliko karaktera staje u polje u zavisnosti od broja karaktera tj. veličine fonta.

 

Možda sam promašio suštinu (čitaj: lupio glupost) a možda i pomogne :D

 

 

Pozdrav :)

Link to comment
Share on other sites

Ima par stvari koje su nejasne ovde...

 

- Mislim da nisi shvatio tester-a dobro, ali on je dobro konstatovao da NE POSTOJI korelacija između piksela i mm. To je nešto što sam korisnik može da definiše na svom štampaču. Ali pošto kažeš da ti to nije problem, pretpostavljam da je u tvom radnom okruženju ta korelacija fiksirana na neku vrednost i da korisnik ne može to naknadno da menja...

 

- Vektorski formati su namenjeni da reše problem skaliranja na kakav si ti naišao, zato bi bilo dobro koristiti neki vektorski format za izlaz. PDF, recimo, možeš da napraviš tako što na komp instaliraš Adobe Acrobat ili neki sličan program za manipulaciju PDF-om a ti programi na listu štampača dodaju Adobe PDF kao virtuelni štampač. Ako njega izabereš kao štampač, automatski dobijaš PDF, tj. vektorski format na izlazu. Da li je moguće, da ti kod sebe napraviš koliko god da treba tih PDF-ova pa da ih po potrebi software skalira prilikom štampe? Znači, da software ne generiše otisak svaki put kad neko ode na File > Print, već da ti imaš unapred spremljene PDF-ove sa svog kompa, koje po potrebi skaliraš i puštaš u štampu?

 

- Problem različitih formata (A, B, Letter...) ne verujem da može da se reši drugačije nego da se svaki format tretira zasebno. Što će reći, u modulu za štampu treba da imaš uslov koji ispituje koji konkretan format je izabrao korisnik. Ako je izabrao neki A format, onda koristiš jednu formulu, za B format drugu, Letter treću, itd.

 

- U celoj priči nejasno je šta se dešava sa marginama? Da li su one fiksirane ili korisnik može da ih menja?

 

- BugarskiB je lepo primetio da moraš da koristiš neki monospace font. U protivnom, nikad nećeš znati koliko slova staje u jedan red, pošto se širina slova menja kod fontova koji nisu mono spaced.

 

Pozdrav.

Link to comment
Share on other sites

Ima par stvari koje su nejasne ovde...

 

- Mislim da nisi shvatio tester-a dobro, ali on je dobro konstatovao da NE POSTOJI korelacija između piksela i mm. To je nešto što sam korisnik može da definiše na svom štampaču. Ali pošto kažeš da ti to nije problem, pretpostavljam da je u tvom radnom okruženju ta korelacija fiksirana na neku vrednost i da korisnik ne može to naknadno da menja...

 

- Vektorski formati su namenjeni da reše problem skaliranja na kakav si ti naišao, zato bi bilo dobro koristiti neki vektorski format za izlaz. PDF, recimo, možeš da napraviš tako što na komp instaliraš Adobe Acrobat ili neki sličan program za manipulaciju PDF-om a ti programi na listu štampača dodaju Adobe PDF kao virtuelni štampač. Ako njega izabereš kao štampač, automatski dobijaš PDF, tj. vektorski format na izlazu. Da li je moguće, da ti kod sebe napraviš koliko god da treba tih PDF-ova pa da ih po potrebi software skalira prilikom štampe? Znači, da software ne generiše otisak svaki put kad neko ode na File > Print, već da ti imaš unapred spremljene PDF-ove sa svog kompa, koje po potrebi skaliraš i puštaš u štampu?

 

- Problem različitih formata (A, B, Letter...) ne verujem da može da se reši drugačije nego da se svaki format tretira zasebno. Što će reći, u modulu za štampu treba da imaš uslov koji ispituje koji konkretan format je izabrao korisnik. Ako je izabrao neki A format, onda koristiš jednu formulu, za B format drugu, Letter treću, itd.

 

- U celoj priči nejasno je šta se dešava sa marginama? Da li su one fiksirane ili korisnik može da ih menja?

 

- BugarskiB je lepo primetio da moraš da koristiš neki monospace font. U protivnom, nikad nećeš znati koliko slova staje u jedan red, pošto se širina slova menja kod fontova koji nisu mono spaced.

 

Pozdrav.

 

Sto se tice korelacije izmedju pikslea i mm, korisnik nije u stanju da u mom programu podesava njihov odnos -> velicina fonta se izrazava preko point-a. Funkcije koje koristim crtaju pomocu piksela ali postoji formula koja pretvara point u piksel, tako da se tekst uvek lepo odstampa. U sustini, tvoja pretpostavka je tacna.

 

Sto se margina tice, fiksne su za sada ( ovo je test program ). Sto se tice monospace fonta, pokusao sam na taj nacin i rezultati su dosta bolji. Tekst ne "upada" u polje tabele pri velicini fonta < 6. Samim tim, ako bih resio ovaj problem za izrazito male velicine fonta, izbacio bih potrebu za PDF resenjem koje je predlozeno. Ukoliko ne bih uspeo u tome, ne verujem da bih mogao da primenim resenje sa PDF-om, jer bi to prisiljavalo korisnike da instaliraju Adobe PDF sto je neprofesionalno ( takodje, nije sve na meni da odlucim... ) :(

 

U svakom slucaju hvala na sugestijama.

 

 

Link to comment
Share on other sites

Čini mi se da treba koristiti ovaj tip fonta http://en.wikipedia.org/wiki/Monospaced_font kako bi mogao da uvek imaš isti odnos karaktera, tek onda možeš imati konstantu koju možeš preračunavati (koliko karaktera staje u određeno polje). Odnos stranica je koren iz 2 (1.41...) pa ti to može služiti kao odnos veličina fonta prema veličini lista. A napraviš jednu priručnu tabelu (do koje ćeš doći brzim eksperimentom) gde ćeš uneti koliko karaktera staje u polje u zavisnosti od broja karaktera tj. veličine fonta.

 

Možda sam promašio suštinu (čitaj: lupio glupost) a možda i pomogne :D

 

 

Pozdrav :)

 

Sve je u redu, pokusao sam sa monospace fontom i rezultati su sjajni za fontove > 5 pointa. Sto se tice svetskih standarda za velicinu papira, tu nema problema kao sto si primetio ( odnos je uvek 1 : koren iz 2 ), ali Amerikanci imaju svoj standard koji nema nikakvu logiku, a i prozorce za stampu ima Envelope velicinu papira u opcijama, pa mi i to predstavlja problem...

 

Izgleda mi da cu morati da istrajem sa monospace fontom...

 

Hvala na predlogu!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...