Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 242832 (4268)

| Suchen
| Zurück zur Übersicht

Autor | Thema: externe schriftart einbinden
Michael Weber
| Datum:20.06.02 11:47 (m.weber@arcor.de) |
Hallo Leute! In einem Programm möchte ich eine bestimmte Schriftart benutzen die wahrscheinlich auf anderen Rechnern nicht installiert ist.Gibt es eine möglichkeit die schriftart aus einem beliebigem Verzeichnis mit Usefont einzulesen? Also nicht aus "C:\WINDOWS\FONTS"
Frank Abbing
| Datum:20.06.02 16:07 |
Hallo, du könntest mit einem Setup-Programm ja den Font auf den Computer des Users kopieren lassen ? Gruß, Frank
Michael Weber
| Datum:20.06.02 17:14 (m.weber@arcor.de) |
Ja diese Möglichkeit wollte ich unbedingt vermeiden.Die meisten von euch haben sich ihr Font Verzeichnis schon zugemüllt mit hunderten von Schriftarten. Am Ende wundert man sich das die Resourcen immer kleiner werden und Windows vieleicht sogar langsamer. Ausserdem wollte ich das Windows Verzeichnis nicht antasten. Ich habe es auch schon mit einem Bitmap und mcopysizedbmp probiert. Das hat aber auch seine nachteile wegen der auflösung unter verschiedenen Bildschirmgrössen . In Borland C hatte man dafür die BGI Fonts. ich dachte das eine möglichkeit gibt sowas auch mit TTF zu machen.
Stefan Schnell
| Datum:21.06.02 09:07 (mail@stschnell.de) |
Hallo Michael, ich bin schon der Meinung, das die von Dir beschriebene Möglichkeit funktioniert. So ähnlich ist es auch bei Adobe Acrobat. Der Font wird mit in das Dokument (PDF) eingebunden. Um ihn allerdings zu verwenden (für die korrekte Anzeige), muss er allerdings eingebunden, sprich installiert, werden. Dies macht Acrobat dann temporär. Ohne Zugriffe auf das Windows-Verzeichnis wirst Du wohl nicht rumkommen. Tschüss Stefan
Frank Abbing
| Datum:21.06.02 12:01 |
Hallo, du könntest den ttf-Font nur während der Dauer deines Programmes zu den Systemfonts kopieren und später wieder löschen. Ich habe ein Beispiel (Assembler) hierfür auf meiner Festplatte, wenn du möchtest, schick ich es dir. Gruß, Frank
Michael Weber
| Datum:21.06.02 12:46 (m.weber@arcor.de) |
Vielen Dank für das Angebot. Aber mit Assembler kenne ich mich nicht so gut aus. Ich hatte in Borland C++ manchmal den Inline Assembler benutzt um die Maus unter DOS zu steuern aber zu mehr hat es mit meinen Kenntnissen nie gereicht. Dieses Push und Pop war mir immer ein Rätsel. Ich musste mich immer darauf verlassen das der Quellcode in Assembler für meine Zwecke passend war, weil ich selbst nichts ändern konnte. Trotzdem hat mich Assembler immer fasziniert weil der Programmablauf sehr schnell war und der Code sehr klein weil man den ganzen Headerkram von Borland weitestgehend weglassen konnte.
Frank Abbing
| Datum:21.06.02 13:56 |
Hallo, Assemblerkenntnisse hin oder her, die API-Aufrufe wirst du aber sicher erkennen, eine Demo-Exe ist auch dabei. Der Font ist als Resource im Programm gespeichert (in Dll würde ja auch gehen) und wird dann in den Systemordner kopiert und angemeldet usw. Überleg's dir. Gruß, Frank
Michael Weber
| Datum:21.06.02 14:25 (m.weber@arcor.de) |
Hallo Frank! Einen versuch wäre es auf alle Fälle wert. Alternativen habe ich bis jetzt auch noch nicht gefunden. Dafür habe ich in meinem Programm noch einen Fehler bemerkt. Nach mehrmaligem Aufruf ist der Speicher plötzlich so voll das Windows mir vorschlägt die popligsten anwendungen zu beenden wil "bedenklich wenig Speicher" zur verfügung steht. Muss man denn Arrays auch wieder mit DISPOSE freigeben? Es wäre nett wenn sich jemand meinen chaotischen Quellcode ansehen könnte.
Frank Abbing
| Datum:21.06.02 15:16 |
Hallo, die Zip-Datei ist unterwegs zu dir. Profanhilfe: "Die neuen Arrays sind, ebenso wie die Bereichsvariablen, global. Der Speicherplatz eines einmal deklarierten Arrays wird erst bei Programmende wieder freigegeben. Wird ein Array ein weiteres Mal mit gleichem Namen und Typ deklariert, kann immer nur auf das zuletzt deklarierte Array zugegriffen werden." Scheint so, als wenn Arrays durchs Profan automatisch freigegeben werden. Wenn du aber mehrere Arrays unter gleichem Namen deklarierst, wird nur der letzte Speicher wieder freigegeben. So habe ich's verstanden (ich benutzte aber lieber Bereiche als Arrays). Gruß, Frank
Bernhard Künzel
| Datum:24.06.02 20:15 (b.kuenzel@chello.at) |
Hallo Michael, habe es früher immer so gemacht, funktioniert aber seit ich WIN98 habe nicht mehr. Die Schrift wird zwar angelegt aber die Message kommt nicht an. Es wird sicher im FORUM jemand wissen wieso das jetzt nicht mehr funktioniert!!!!!!!!!! '########################################################### 'Die Funktion AddFontResource fügt die Schrift-Ressource 'in die Schriftentabelle von Windows ein. 'Die so eingefügte Schrift kann von jeder Anwendung verwendet werden Proc MoveFontEx Parameters Font$ External("GDI32","AddFontResourceA",ADDR(Font$)) If SendMessage($0FFFF,$1D,0,0)'HWND_BROADCAST , WM_FONTCHANGE MessageBox("Die Nachricht WM_FONTCHANGE wurde nicht verarbeitet!","Schrift-Ressource hinzufügen",16) EndIf EndProc Proc RemoveFontEx Parameters Font$ External("GDI32","RemoveFontResourceA",ADDR(Font$)) If SendMessage($0FFFF,$1D,0,0)'HWND_BROADCAST , WM_FONTCHANGE MessageBox("Die Nachricht WM_FONTCHANGE wurde nicht verarbeitet!","Schrift-Ressource entfernen",16) EndIf EndProc Cls MoveFontEx "Pfad\Font.ttf"'hier den gewünschten Font eintragen UseFont "Vinet",60,0,0,0,0 DrawText 20,50,"Probetext für den neuen Font" WaitInput RemoveFontEx "Pfad\Font.ttf"'hier den gewünschten Font eintragen Gruß Bernhard
Bernhard Künzel
| Datum: 17.07.02 21:56 (b.kuenzel@chello.at) |
Hallo, kann mir jemand im Forum sagen wieso das mit der Funktion "AddFontResourceA" nicht funktioniert Gruß Bernhard

| Zurück zur Übersicht