Avatar billede cybergyf Nybegynder
28. august 2001 - 21:34 Der er 4 kommentarer og
1 løsning

Skrifttype bredder

Jeg ville gerne finde ud af, hvordan man kan finde en skrifttypes enkelte tegns bredde i pixels.

Lad mig give et eksempel:
Jeg har typen: Arial
Jeg har skriftstørrelse: 11px
Jeg vil nu gerne vide, fx. hvor bredt et: a, i og O er på skærmen. Altså hvor meget plads de reelt optager (med whitespaces tror jeg).

Jeg skal kunne lave en opslagstabel over skrifttypen Arials skriftbredder ved forskellige størrelser. Det ville også være belejligt med en relation ml. bredde og højdeforhold, men det kan man jo hurtigt selv finde ud af, hvis man ellers kan finde bredden.

Jeg ved godt at skriftsbredden ikke udskrives ens på mac og Pc osv, men det må man jeg prøve at tage højde for senere.
Avatar billede bufferzone Praktikant
28. august 2001 - 22:19 #1
Du er her ude i et grundlæggende problem, nemlig at skriftstørrelserne er proportionale for de flestes vedkommende. Dette betyder at et I fylder mindre end et M i bredden. En skrifttype som courier new er ikke proportional og i pich 10 (eller er det 12? jeg husker det ikke) fylder 80 tegn over en A4 side.
Du skal også være opmærksom på at moderne DTP bruger, at ændre afstanden mellem de enkelte bogstaver, afhængig af hvilke bogstaver, der kommer efter hinnanden. Afstanden mellem er A og et V er mindre end afstanden mellem er T og et P. Dette betyder at skriftbredden variere alt efter hvilke bogstaver der indgår i sætningen.
Konklutionen er at du er nød til at bruge en skrivt som courier new, hvis du vil være sikker på bredden. Courier kandes også skrivemaskineskrift

Hilsen
Kim fra http://www.bufferzone.dk
Avatar billede jakoba Nybegynder
29. august 2001 - 03:39 #2
Avatar billede jakoba Nybegynder
29. august 2001 - 21:31 #3
Avatar billede cybergyf Nybegynder
30. august 2001 - 09:13 #4
Kunne jeg ikke få en kopi af php-filen?

Avatar billede jakoba Nybegynder
30. august 2001 - 16:38 #5
Here you go:
Jeg har også tænkt mig selv at arbejde videre med den. Så får vi se hvems der bliv bedst :-))

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">
<HTML>
<HEAD>
    <TITLE>Måle bredde og højde på en tekst</TITLE>

<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\">
<?php
if ( !isset($fsize) ) $fsize=\"20px\";
if ( !isset($ftype) ) $ftype=\"verdana\";
if ( !isset($ftext) ) $ftext=\"\";
?>

<style>
td.x { font-size:<? echo($fsize); ?>; font-family:<? echo($ftype); ?>; }
</style>

<script language=\'javascript\'> <!--

function fillForm( ) {
    document.typeForm.typeSiz.value=\'<? echo($fsize); ?>\';
    document.typeForm.typeFac.value=\'<? echo($ftype); ?>\';
    document.typeForm.typeTxt.value=\'<? echo($ftext); ?>\';
}; //end fillForm( )

function getForm( frm ) {
    var tx = \"fsize=\" +escape(frm.typeSiz.value) +\'&\'
            +\"ftype=\" +escape(frm.typeFac.value) +\'&\'
            +\"ftext=\" +escape(frm.typeTxt.value);
    return tx;
}; //end getForm( Form object ) -> string

var ns4 = (document.layers)? true: false;

function getXYcoord ( nvn ) {  // find x,y coords for billede
    var elm = document.images[nvn];
    if ( ns4 ) return elm;
    var rd = { x:0 ,y:0 };
    do { rd.x += parseInt( elm.offsetLeft );
        rd.y += parseInt( elm.offsetTop );
        elm = elm.offsetParent;
    } while ( elm );
    return rd
}; //end getXYcoord ( string ) -> object{x,y}

function visBredde( ) {
    var pos1 = getXYcoord( \'bred1\' );
    var pos2 = getXYcoord( \'bred2\' );
    var bred = pos2.x -pos1.x -15;
    document.write( bred );
}; //end visBredde( )

function visHojde( ) {
    var pos1 = getXYcoord( \'hoj1\' );
    var pos2 = getXYcoord( \'hoj2\' );
    var hoj = pos2.y -pos1.y -15;
    document.write( hoj );
}; //end visHojde( )

// --> </script>

</HEAD>
<BODY bgcolor=\'white\' onload=\"fillForm()\">

<form action=\'exp103354.php\' name=\"typeForm\"
      onsubmit=\"location=\'exp103354.php?\'+getForm( this );return false;\">
<table border=1 align=\'left\' bgcolor=#CCFFFF>
<tr><td>Bredde:</td>
    <td><table cellpadding=0 cellspacing=0 border=0>
        <tr><td><img name=\'bred1\' src=\'smil1515.gif\' width=15 height=15 border=0></td>
            <td class=\'x\'><? echo($ftext); ?></td>
            <td><img name=\'bred2\' src=\'smil1515.gif\' width=15 height=15 border=0></td>
      </tr></table></td>
</tr>
<tr><td>Hojde:</td>
    <td><table cellpadding=0 cellspacing=0 border=0>
        <tr><td><img name=\'hoj1\' src=\'smil1515.gif\' width=15 height=15 border=0></td>
        </tr>
        <tr><td class=\'x\'><? echo($ftext); ?></td>
        </tr>
        <tr><td><img name=\'hoj2\' src=\'smil1515.gif\' width=15 height=15 border=0></td>
      </tr></table></td>
</tr>
</table>
Indtast size <input name=\'typeSiz\' type=\'text\' size=4 value=\"\"> og font <input name=\'typeFac\' type=\'text\' value=\"\"><SELECT NAME=\"xxx\" onchange=\"this.form.typeFac.value=this.options[this.selectedIndex].value;\">
<OPTION VALUE=\'\'>-</OPTION>
<option value=\'Allegro BT\'>Allegro BT</option>
<option value=\'arial\'>Arial</option>
<option value=\'BankGothic Md BT\'>BankGothic Md BT</option>
<option value=\'verdana\'>Verdana</option>
<option value=\'Times New Roman\'>Times New Roman</option>
</SELECT><br>
Indtast den tekst der skal måles her:
<input name=\'typeTxt\' type=\'text\' value=\"\"><br>
og klik <input type=\'submit\' value=\"Vis størrelse\"><br clear=\'all\'>
<p>teksten i tabellen er <script>visBredde()</script> pixel bred, og <script>visHojde()</script> pixel høj.

<p align=\'right\'><!-- WebWriter AutoDato -->Opdateret: 29.8.2001<!-- WW -->
</BODY>
</HTML>

mvh JakobA
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
Computerworld tilbyder specialiserede kurser i database-management

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