Avatar billede susrn Nybegynder
15. juni 2003 - 13:50 Der er 7 kommentarer og
1 løsning

bredden af tegn

Jeg er ved at lave en print funktion der skal kunne tilpasse font størrelsen efter hvor mange tegn der skal printes (for at tilpasse til en side ). Er der nogen der kender bredden af tegn i times new roman ?
Avatar billede arne_v Ekspert
15. juni 2003 - 14:02 #1
Jeg garanterer ikke for at det virker på din printer, men jeg har
brugt følgende med success:

// width of Times/Courier font in normal/bold/italic typeface
double charwidth[256][6] = { 3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            4.896,6.66,5.04,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            9.996,12.0,9.996,7.2,7.2,7.2,
                            9.336,9.996,9.336,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.768,6.84,8.1,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            6.768,6.84,8.1,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.336,3.336,3.336,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            3.336,3.996,3.996,7.2,7.2,7.2,
                            3.336,3.996,3.996,7.2,7.2,7.2,
                            6.768,6.84,8.1,7.2,7.2,7.2,
                            6.768,6.84,8.1,7.2,7.2,7.2,
                            6.768,6.84,8.1,7.2,7.2,7.2,
                            5.328,6.0,6.0,7.2,7.2,7.2,
                            11.052,11.16,11.04,7.2,7.2,7.2,
                            8.664,8.664,7.332,7.2,7.2,7.2,
                            8.004,8.004,7.332,7.2,7.2,7.2,
                            8.004,8.664,8.004,7.2,7.2,7.2,
                            8.664,8.664,8.664,7.2,7.2,7.2,
                            7.332,8.004,7.332,7.2,7.2,7.2,
                            6.672,7.332,7.332,7.2,7.2,7.2,
                            8.664,9.336,8.664,7.2,7.2,7.2,
                            8.664,9.336,8.664,7.2,7.2,7.2,
                            3.996,4.668,3.996,7.2,7.2,7.2,
                            4.668,6.0,5.328,7.2,7.2,7.2,
                            8.664,9.336,8.004,7.2,7.2,7.2,
                            7.332,8.004,6.672,7.2,7.2,7.2,
                            10.668,11.328,9.996,7.2,7.2,7.2,
                            8.664,8.664,8.004,7.2,7.2,7.2,
                            8.664,9.336,8.664,7.2,7.2,7.2,
                            6.672,7.332,7.332,7.2,7.2,7.2,
                            8.664,9.336,8.664,7.2,7.2,7.2,
                            8.004,8.664,7.332,7.2,7.2,7.2,
                            6.672,6.672,6.0,7.2,7.2,7.2,
                            7.332,8.004,6.672,7.2,7.2,7.2,
                            8.664,8.664,8.664,7.2,7.2,7.2,
                            8.664,8.664,7.332,7.2,7.2,7.2,
                            11.328,12.0,9.996,7.2,7.2,7.2,
                            8.664,8.664,7.332,7.2,7.2,7.2,
                            8.664,8.664,6.672,7.2,7.2,7.2,
                            7.332,8.004,6.672,7.2,7.2,7.2,
                            3.996,3.996,4.668,7.2,7.2,7.2,
                            3.336,3.336,3.336,7.2,7.2,7.2,
                            3.996,3.996,4.668,7.2,7.2,7.2,
                            5.628,6.972,5.064,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            5.328,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            5.328,5.328,5.328,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            5.328,5.328,5.328,7.2,7.2,7.2,
                            3.996,3.996,3.336,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            3.336,3.336,3.336,7.2,7.2,7.2,
                            3.336,3.996,3.336,7.2,7.2,7.2,
                            6.0,6.672,5.328,7.2,7.2,7.2,
                            3.336,3.336,3.336,7.2,7.2,7.2,
                            9.336,9.996,8.664,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            3.996,5.328,4.668,7.2,7.2,7.2,
                            4.668,4.668,4.668,7.2,7.2,7.2,
                            3.336,3.996,3.336,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            6.0,6.0,5.328,7.2,7.2,7.2,
                            8.664,8.664,8.004,7.2,7.2,7.2,
                            6.0,6.0,5.328,7.2,7.2,7.2,
                            6.0,6.0,5.328,7.2,7.2,7.2,
                            5.328,5.328,4.668,7.2,7.2,7.2,
                            5.76,4.728,4.8,7.2,7.2,7.2,
                            2.4,2.64,3.3,7.2,7.2,7.2,
                            5.76,4.728,4.8,7.2,7.2,7.2,
                            6.492,6.24,6.492,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.336,3.336,3.336,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.996,3.996,4.668,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            2.4,2.64,3.3,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            9.12,8.964,9.12,7.2,7.2,7.2,
                            3.312,3.6,3.312,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.768,6.84,8.1,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            9.12,8.964,9.12,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            4.8,4.8,4.8,7.2,7.2,7.2,
                            6.768,6.84,8.1,7.2,7.2,7.2,
                            3.6,3.6,3.6,7.2,7.2,7.2,
                            3.6,3.6,3.6,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            5.436,6.48,6.276,7.2,7.2,7.2,
                            3.0,3.0,3.0,7.2,7.2,7.2,
                            3.996,3.996,3.996,7.2,7.2,7.2,
                            3.6,3.6,3.6,7.2,7.2,7.2,
                            3.72,3.96,3.72,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            9.0,9.0,9.0,7.2,7.2,7.2,
                            9.0,9.0,9.0,7.2,7.2,7.2,
                            9.0,9.0,9.0,7.2,7.2,7.2,
                            5.328,6.0,6.0,7.2,7.2,7.2,
                            8.664,8.664,7.332,7.2,7.2,7.2,
                            8.664,8.664,7.332,7.2,7.2,7.2,
                            8.664,8.664,7.332,7.2,7.2,7.2,
                            8.664,8.664,7.332,7.2,7.2,7.2,
                            8.664,8.664,7.332,7.2,7.2,7.2,
                            8.664,8.664,7.332,7.2,7.2,7.2,
                            10.668,12.0,10.668,7.2,7.2,7.2,
                            8.004,8.664,8.004,7.2,7.2,7.2,
                            7.332,8.004,7.332,7.2,7.2,7.2,
                            7.332,8.004,7.332,7.2,7.2,7.2,
                            7.332,8.004,7.332,7.2,7.2,7.2,
                            7.332,8.004,7.332,7.2,7.2,7.2,
                            3.996,4.668,3.996,7.2,7.2,7.2,
                            3.996,4.668,3.996,7.2,7.2,7.2,
                            3.996,4.668,3.996,7.2,7.2,7.2,
                            3.996,4.668,3.996,7.2,7.2,7.2,
                            8.664,8.664,8.664,7.2,7.2,7.2,
                            8.664,8.664,8.004,7.2,7.2,7.2,
                            8.664,9.336,8.664,7.2,7.2,7.2,
                            8.664,9.336,8.664,7.2,7.2,7.2,
                            8.664,9.336,8.664,7.2,7.2,7.2,
                            8.664,9.336,8.664,7.2,7.2,7.2,
                            8.664,9.336,8.664,7.2,7.2,7.2,
                            6.768,6.84,8.1,7.2,7.2,7.2,
                            8.664,9.336,8.664,7.2,7.2,7.2,
                            8.664,8.664,8.664,7.2,7.2,7.2,
                            8.664,8.664,8.664,7.2,7.2,7.2,
                            8.664,8.664,8.664,7.2,7.2,7.2,
                            8.664,8.664,8.664,7.2,7.2,7.2,
                            8.664,8.664,6.672,7.2,7.2,7.2,
                            6.672,7.332,7.332,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            5.328,6.0,6.0,7.2,7.2,7.2,
                            5.328,6.0,6.0,7.2,7.2,7.2,
                            5.328,6.0,6.0,7.2,7.2,7.2,
                            5.328,6.0,6.0,7.2,7.2,7.2,
                            5.328,6.0,6.0,7.2,7.2,7.2,
                            5.328,6.0,6.0,7.2,7.2,7.2,
                            8.004,8.664,8.004,7.2,7.2,7.2,
                            5.328,5.328,5.328,7.2,7.2,7.2,
                            5.328,5.328,5.328,7.2,7.2,7.2,
                            5.328,5.328,5.328,7.2,7.2,7.2,
                            5.328,5.328,5.328,7.2,7.2,7.2,
                            5.328,5.328,5.328,7.2,7.2,7.2,
                            3.336,3.336,3.336,7.2,7.2,7.2,
                            3.336,3.336,3.336,7.2,7.2,7.2,
                            3.336,3.336,3.336,7.2,7.2,7.2,
                            3.336,3.336,3.336,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.768,6.84,8.1,7.2,7.2,7.2,
                            6.0,6.0,6.0,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            6.0,6.0,5.328,7.2,7.2,7.2,
                            6.0,6.672,6.0,7.2,7.2,7.2,
                            6.0,6.0,5.328,7.2,7.2,7.2};

Times, Times Bold, Times Italic, Courier, Courier Bold, Courier Italic

IsoLatin1 encoding
Avatar billede susrn Nybegynder
15. juni 2003 - 14:32 #2
Afhænger str af printeren, er der ikke en standard?
Tager du bredden af hvert enkelt tegn? og hvilken størrelse er dine værdier da til, 8, 10, 12..?
Jeg havde håbet på at kunne bruge en gennemsnitsværdi da jeg ikke kender tegnene der skal printes, men jeg kan selvfølgelig beregne den ud fra dine værdier.
Avatar billede arne_v Ekspert
15. juni 2003 - 15:03 #3
Courier er en mono-space font d.v.s. at alle tegn er lige
brede.

Det er Times ikke. Og jeg tror ikke at brug af et gennemsnit er godt
nok. Der er fr stor forskel på i og W.

Det burde være standard. Men jeg garaneter ikke.
Avatar billede arne_v Ekspert
15. juni 2003 - 15:04 #4
Størrelsen er 1/72 inch for 12 point.
Avatar billede susrn Nybegynder
15. juni 2003 - 15:27 #5
Har du regnet frem til 1/72? Jeg skal også bruge for 6, 7, 8, 9, .. ,14.
Avatar billede arne_v Ekspert
15. juni 2003 - 15:32 #6
1/72 inch er måle stokken

Hvs du skal bruge bredden af et 'A' i Times 10 point, så
bruger du ('A'=65, Times=0 altså første kolonne):

charwidth[65][0]*10/12.0 så har du berdden af 'A' i inch.

Så kan du /25.4 for at få det i millimeter.
Avatar billede tam Nybegynder
15. juni 2003 - 19:55 #7
Hvis du koder under Windows og printer derfra bruger du jo GDI, hvor du har et HDC, til at printe.
Du kan bruge GetTextExtentPoint32() til at finde bredden af en given text´på et bestemt HDC.
Avatar billede segmose Nybegynder
16. juni 2003 - 09:08 #8
Du kan prøve at se om der er en function/method TextWidth/TextHeight på din compiler, og alt efter hvad den returnerer skal der så ganges/divideres med passende værdier.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester