Fonts über einen Pointer laden C++



  • Hallo

    Ich habe eine Frage ob mir da jemand helfen kann.
    Da ich mich mit c++ nicht so auskenne.Ich möchte unter linux ein ean.ttf
    zeichensatz in mein programm einbinden.Ich breuchte also eine Procedure in c++
    .Übergebe der Procedur den Pointer vom zeichensatz und bekomme den Pointer des geladenen zeichensatz zurück.
    Ich brauche das weil die sprache in der ich code das nicht unterstützt.

    DANKE !!

    mfg Dristar



  • Du willst in Deiner Anwendung einen Truetype-Font laden? Welches GUI-Framework verwendest Du denn?



  • @nman

    Danke für die schnelle Antwort !! Was ist ein "GUI-Framework" ? 😕
    Denn C++ code werde ich mit Anjuta zu einer objektdatei Kompilieren und
    dann wird das ganze in einer PureBasic lib umgewandelt.Damit ich sie nutzen
    kann.

    ja möchte eine Truetype-Font von Windows "EAN.ttf" laden

    mfg Dristar





  • @daHa

    ah Danke.Das ist viel c code 😮 .
    Mir fehlen noch ein paar datein :qwidget.h,kmainwindow.h ... usw.
    Welche pakete muss ich mit yum noch installieren ? das ich alle
    C/C++ sachen habe.

    mfg Dristar



  • Fonts, Barcodes und auch die Dateien qwidget.h, kmainwindow.h haben mit Standard C/C++ rein garnichts zu tun. Bei den letzteren handelt es sich um Bibliotheken für GUIs, genauergesagt das Qt Framework resp. den KDE-Desktop. Es gibt in C++ auch keinen "Pointer auf ein Font", sondern höchstens eine Font-Klasse des entsprechenden Frameworks, die man dann ohne Umwege meist auch nur mit diesem Framework verwenden kann.

    Du solltest Dir also zuerst klar werden, wofür und wie (und vor allem, wo) Du Dein Font benutzen möchtest, bevor Du Dir Gedanken machst wie Du es lädst. Wenn Du nämlich mit einer Qt-Klasse ein Font lädst und später garkein Qt benutzen kannst, weil das eigentlich nur eine Konsolenapplikation ist die ein Bitmap erstellen soll, hast Du schneller als Dir lieb ist ein Problem.

    EDIT:
    Wenn Du kbarcode ausprobieren möchtest, brauchst Du vermutlich (so Du die KDE-Bibliotheken schon installiert hast) die Pakete kdelibs-dev(el) und qt-dev(el), je nach Distribution



  • Hallo Dristar

    Also du hast leider das Problem nicht ganz einleuchtend beschrieben:

    Übergebe der Procedur den Pointer vom zeichensatz und bekomme den Pointer des geladenen zeichensatz zurück

    Außerdem hört es sich bei dir so an als würdes du zwischen C und C++ nicht unterscheiden, also C oder C++ ?

    Aber ich wenn meine Vermutung stimmt willst du einfach einen Font laden der als ttf-Datei im z.B Programm-Verzeichnis liegt, so wie es z.B SDL_ttf-Library tut. Stimmts ?

    Das von dir erwähnte Pure-Basic verwendet Gtk, es wäre also am einfachsten eine Gtk-Funktion zu verwenden, leider hat Gtk solche funktion nicht.
    Die entsprechnden Gtk-Funktionen gdk_font_load in gtk1.2 oder pango_font_description_from_string in gtk2.x laden nur Fonts die auf dem System installiert sind(es sei denn ich habe ganze zeit was übersehen).
    Ob und wie man eine andere Library mit (z.B die SDL_ttf) mit Gtk verwenden könnte weiss ich nicht.

    Also wäre es nicht am einfachsten den Font auf demSystem zu installieren und dann mit Gtk-Funktionen laden ?



  • @LordJaxom

    Dank dir für die Info.Ich werde mir das mit C/C++ genauer anschauen.Das Programm
    kbarcode macht mich ganz neugierig 🙂

    @Marcin

    Genau !!! 😃 Du hast aus meiner Stümperhaften Beschreibung rausgelesen
    was ich machen will.Ich wolte nach @LordJaxon Antwort nochmal genauer
    Beschreiben.Also ich habe die TrueType schrift installiert , ich kann sie auch
    in allen Anwendung benutzen.Weil das in PureBasic LoadFont() ein bug hat.
    Wolte ich über C eine saubere PB-library erstellen.Um den Zeichensatz auch zu nutzen.

    EDIT:
    Ich habe mal die google angeschmissen !! Er läd den zeichensatz aber ich kann ihn nicht sehen.Vieleicht ist der zeichensatz zu klein ? gibt es da auch ein befehl in welcher grösse er sein soll ?



  • Und wie hast du es geladen ?
    Ist der String den man an gdk_font_load über gibt richtig, etwa so:

    GdkFont *font1 = gdk_font_load("-*-Courier-*-*-*--*-320-*-*-*-*-iso8859-1");		
    GdkFont *font2 = gdk_font_load("-*-Albany AMT-*-*-*--*-140-*-*-*-*-iso8859-1");
    


  • @Marcin

    Ich habe das so gemacht wie in der font.dir steht.Der unterstrich bei load_ ist
    normal bei PureBasic

    FontID4=gdk_fontset_load_("-misc-ean-medium-r-normal--0-0-0-0-p-0-iso10646-1")
    

    mfg Dristar



  • In welcher Größe der Font sein soll steht schon in dieser Zeichenkette.
    Du kannst es hösten abfragen wie groß die geladene Schriftart ist:
    http://developer.gnome.org/doc/API/gdk/gdk-fonts.html

    Ansonsten versuch zu einen anderen Font laden um sich zu vergewissern das gdk_load_font auch mit purebasic funktioniert.

    Und kann man sich diesen Font irgendwo herunterladen ?



  • @Marcin

    Also ich habe jetzt eine anderen schrift geladen die auch eine andere ISO hat und da geht es.
    Nur mit den iso10646 zeichensätzen zeigt er bei den andern auch nichts an 😞 .
    Ich kann dir die schrift per e-mail schicken.Weist du ob es eine möglichkeit gibt
    zeichensätze in eine andere ISO zu konvertieren ?.Wenn nicht !! hast du vieleicht
    einen EAN font den ich runterladen kann ?

    dank dir

    mfg Dristar



  • Ich muss leider auf alle Fragen nein antworten.
    Ich habe leider nicht mal eine Vorstellung ob sich eine Kodierung in eine andere automatisch umwandeln lässt.
    Und ich weiss es nicht wo man einen ean-Font herunterladen kann.
    Soweit ich weiss enthalten ean-Fonts Strichcode.
    Da einzige was ich in der Richtung finden konnte heisst "code 39"
    Und man kann es hier finden:http://www.adams1.com/pub/russadam/fonts.html

    Meine Email-Adresse ist: marc.in (ät) kielnet.net
    Wenn du mir den Font zuschickst kann ich versuchen heraus zu bekommen warum die Schrift nicht angezeigt wird.
    Obwohl es nach einem ziemlich großem Problem anhört wenn die Schrift wirklich geladen wurde und richtige Zeichen-Codes benutzt wurden.



  • Also aus irgendeinem Grund, den ich leider nicht kenne, kann gdk_load_font den Font bei mir nicht laden.
    Bist du dir sicher das es bei dir geladen wird ?
    Rückgabewert überprüft, keine Fehlermeldungen zu Laufzeit des Programs.

    Jeden falls kann ich diesen Font mit gtk1.2 nicht benutzen, gtk2.0 hat anscheinend kein Problem damit. Der Font wird geladen und statt Zahlen erscheint Strichcode.

    Wäre es für dich Problematisch auf gtk2.0 zu wechseln ?
    Das besagte PureBasic kann doch auch Gtk2.0 benutzen ohne das man irgendwas in Quellcode ändern muss.



  • @Marcin

    Danke !! ich werde es mal probieren

    mfg Dristar


Log in to reply