Avatar billede jb00797 Nybegynder
15. april 2007 - 12:45 Der er 10 kommentarer og
1 løsning

Loade .TTF font

Hey

Kan jeg loade en .TTF font in i min applet så je gkan bruge den skrifttype til at skrive med?

Mvh.
Søren
Avatar billede _carsten Nybegynder
15. april 2007 - 15:17 #1
Det kan du godt, pak den i en jar sammen med din applet - eksempel

import java.awt.Font;
import java.awt.FontFormatException;
import java.io.IOException;
import java.io.InputStream;

/**
*
* @author  CFH
*/
public class FontTest extends javax.swing.JFrame {
   
    public FontTest() {
        initComponents();
    }
   
                   
    private void initComponents() {

        label = new javax.swing.JLabel();

        try {
            InputStream is = this.getClass().getResourceAsStream(ttf_font);
            fontStream = Font.createFont(Font.TRUETYPE_FONT, is);
            is.close();
            minFont = fontStream.deriveFont( Font.PLAIN, 18 );
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (FontFormatException ex) {
            ex.printStackTrace();
        }
       
        if(minFont != null)
            label.setFont(minFont);


        getContentPane().setLayout(new java.awt.FlowLayout());

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        label.setText("Dette er min TTF font");
        getContentPane().add(label);

        pack();
    }                     
   

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new FontTest().setVisible(true);
            }
        });
    }
   
               
    private javax.swing.JLabel label;
    private Font fontStream, minFont = null;
   
    private String ttf_font = "Haiku.ttf"; // SKRIV FONTNAVN
}
Avatar billede jb00797 Nybegynder
15. april 2007 - 19:07 #2
Hey det virker, jeg kan nu loade min skrifttype ind i programmet. Jeg bruger det til at skrive på et billede, jeg synes bare ikke kvaliteten er så god.
Sådan her ser det ud hvis jeg skriver på billedet i java.
http://dury.dk/rod/v3/lala.jpg
Hvis jeg skriver på billedet i php, ser det sådan her ud
http://dury.dk/images/pictures/13/283_17-03-07.jpg

Kan jeg gøre noget for at forbedre kvaliteten?
Mvh.
Søren

PS. Carsten læg lige et svar :)
Avatar billede _carsten Nybegynder
15. april 2007 - 20:07 #3
Jeg ved det faktisk ikke, har du prøvet at sætte skriftstørrelsen ned, den er lidt større i java end i php ??

Ellers må vi prøve at bore i det.

Hvordan genererer du billedet ?
Avatar billede jb00797 Nybegynder
15. april 2007 - 20:24 #4
Jeg har prøvet at lave det lidt mindre ja, det hjælper ikke..
Vil gerne have det til at være samme kvalitet, så ville fedt hvis vi kunne kigge lidt på det :)
Jeg henter billedet sådan her:
saveImage = Toolkit.getDefaultToolkit().getImage(new URL("file:///"+(String)files.get(i)));

Jeg gemmer billedet sådan her og skriver på det sådan her:
big = new BufferedImage(600, newH, BufferedImage.TYPE_INT_RGB);
gi = big.getGraphics();
gi.drawImage(saveImage,0,0,600,newH,this);
gi.setFont(duryfont);
gi.drawString("DURY.dk", 10, 30);
gi.dispose();

Mvh.
Søren
Avatar billede _carsten Nybegynder
15. april 2007 - 20:33 #5
Prøv

big = new BufferedImage(600, newH, BufferedImage.TYPE_INT_RGB);
Graphics2D gi = big.createGraphics();
gi.setStroke(new BasicStroke(0.2f);
gi.drawImage(saveImage,0,0,600,newH,this);
gi.setFont(duryfont);
gi.drawString("DURY.dk", 10, 30);
gi.dispose();

Billeder er ikke min stærke side, men prøv ovenstående
Avatar billede jb00797 Nybegynder
15. april 2007 - 20:41 #6
Nej det hjælper desværre ikke :(
Avatar billede _carsten Nybegynder
15. april 2007 - 20:44 #7
:(  prøver om jeg kan finde ud af noget i morgen, har ikke tid til mere i aften.
Avatar billede jb00797 Nybegynder
15. april 2007 - 20:45 #8
Okay, jeg siger også mange tak for hjælpen indtil videre :)
Avatar billede _carsten Nybegynder
15. april 2007 - 21:14 #9
Faldt dog lige over noget her, prøv at leg lidt med RenderingHints.

      Graphics2D g2 = (Graphics2D)g;
    RenderingHints rh = new RenderingHints(
        RenderingHints.KEY_TEXT_ANTIALIASING,
        RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    g2.setRenderingHints(rh);

http://java.sun.com/docs/books/tutorial/2d/advanced/quality.html
Avatar billede jb00797 Nybegynder
15. april 2007 - 21:24 #10
Jeg sad netop lige og læste om det samme, jeg har skrevet det her på koden:
gi.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
gi.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
Så blev det så fint som jeg tror det kan bliver, jeg er ihvertfald tilfreds med det.

Jeg siger endnu engang mange tak :)

Mvh.
Søren
Avatar billede _carsten Nybegynder
15. april 2007 - 21:27 #11
OK :)
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