Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

alle Schriftarten-Namen ermitteln

83 views
Skip to first unread message

danielbarisch

unread,
Feb 11, 2009, 6:16:39 AM2/11/09
to
Hallo NG!

Wie kann ich (unter .NET) am besten die Namen ALLER auf dem Rechner
installierten Schriftarten ermitteln?

Mit "(New System.Drawing.Text.InstalledFontCollection).Families"
erhalte ich anscheinend nur einen Teil der Schriftarten, bestimmte
Schriftarten-Formate werden dabei jedoch anscheinend ignoriert.

Kann man die noch irgendwie anders auslesen?
Stehen die irgendwo in der Registry oder so?

--
Mit freundlichen Grüßen
Daniel Barisch

Christoph Schneegans

unread,
Feb 11, 2009, 6:29:49 AM2/11/09
to
Daniel Barisch schrieb:

> Mit "(New System.Drawing.Text.InstalledFontCollection).Families"
> erhalte ich anscheinend nur einen Teil der Schriftarten, bestimmte
> Schriftarten-Formate werden dabei jedoch anscheinend ignoriert.

Welche? Beachte auch die FontFamily.IsStyleAvailable-Methode.

--
<http://schneegans.de/sv/> · Schema-Validator für XML

danielbarisch

unread,
Feb 11, 2009, 7:04:03 AM2/11/09
to
>> Mit "(New System.Drawing.Text.InstalledFontCollection).Families"
>> erhalte ich anscheinend nur einen Teil der Schriftarten, bestimmte
>> Schriftarten-Formate werden dabei jedoch anscheinend ignoriert.

> Welche?
z.B.
Courier ("Schriftartendatei", *.fon)
Global Monospace ("Composite Font File", *.CompositeFont)
eine Schriftart für's CorporateDesign ("Type 1-Schriftartendatei",
*.pfm)


> Beachte auch die FontFamily.IsStyleAvailable-Methode.
Die nutzt mir ja nix, da die entsprechenden Schriftarten in der
.Families-Auflistung gar nicht enthalten sind.

Kerem Gümrükcü

unread,
Feb 11, 2009, 7:30:27 AM2/11/09
to
Hallo Daniel,

standardmäßig werden alle Fonts auf einem System in dem
Ordner "\Windows\Fonts\" installiert. Du kanst doch alle
Dateien darin ermitteln mit z.B. Directory.GetFiles("C:\Windows\Fonts")
und dann aus jeder dieser Dateien den Names des Fonts ermitteln.
Das wäre die umfangreichste und kompletteste Font-Auflistuung, die
Du bekommen könntest und würdest. Du musst halt noch den Font
Namen aus der Datei ermitteln, was wiederum (meines Wissens nach)
nicht ohne relativ umfagreichem PInvoke geht,...aber vielleicht weis
jemand einen einfacheren Weg,...

Grüße

Kerem

--
--
-----------------------
Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/software/deviceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
-----------------------
"This reply is provided as is, without warranty express or implied."

<Daniel Barisch> schrieb im Newsbeitrag
news:#P3APEEj...@TK2MSFTNGP06.phx.gbl...

Karsten Sosna

unread,
Feb 11, 2009, 7:56:01 AM2/11/09
to
> standardmäßig werden alle Fonts auf einem System in dem
> Ordner "\Windows\Fonts\" installiert. Du kanst doch alle
> Dateien darin ermitteln mit z.B. Directory.GetFiles("C:\Windows\Fonts")
> und dann aus jeder dieser Dateien den Names des Fonts ermitteln.
> Das wäre die umfangreichste und kompletteste Font-Auflistuung, die
> Du bekommen könntest und würdest. Du musst halt noch den Font
> Namen aus der Datei ermitteln, was wiederum (meines Wissens nach)
> nicht ohne relativ umfagreichem PInvoke geht,...aber vielleicht weis
> jemand einen einfacheren Weg,...

BTW.: AFAIK untersützt GDI-Plus nur TTF- und keine FON-Schriftarten. Daher
ist es relativ sinnfrei überhaupt zu versuchen letztere Schriftarten zu
listen, da man sie eh nicht zum "Zeichnen" benutzen kann.
--
Gruß Scotty


danielbarisch

unread,
Feb 11, 2009, 8:47:46 AM2/11/09
to
>> standardmäßig werden alle Fonts auf einem System in dem
>> Ordner "\Windows\Fonts\" installiert. Du kanst doch alle
>> Dateien darin ermitteln mit z.B.
>> Directory.GetFiles("C:\Windows\Fonts")
>> und dann aus jeder dieser Dateien den Names des Fonts ermitteln.
>> [...] was wiederum (meines Wissens nach)

>> nicht ohne relativ umfagreichem PInvoke geht,...

Ja, eben ... da müsste ich mich diesbezüglich erstmal schlau machen.

> BTW.: AFAIK untersützt GDI-Plus nur TTF- und keine FON-Schriftarten.
> Daher ist es relativ sinnfrei überhaupt zu versuchen letztere
> Schriftarten zu listen, da man sie eh nicht zum "Zeichnen" benutzen
> kann.

Wer hat denn gesagt, dass ich damit "Zeichnen" will? Ich brauch
lediglich die Namen, um die innerhalb einer HTML-Seite an ein
ExecCommand('FontName', ...) zu übergeben. In diese HTML-Seite werden
vor der Anzeige in einem .NET-WebBrowser-Steuerelement an die
entsprechende Stelle (HTML-Select) die verfügbaren Schriftarten
"eingeparst".

Gibt es ev. eine Möglichkeit per JavaScript da ran zu kommen?
Oder sonst noch Ideen/Ansätze?

Kerem Gümrükcü

unread,
Feb 11, 2009, 8:59:03 AM2/11/09
to
Hallo Karsten,

meine Antwort bezog sich ja auch nur auf diese Frage,
die anscheinend für Ihn entscheident ist,...

"Wie kann ich (unter .NET) am besten die Namen ALLER auf dem Rechner
installierten Schriftarten ermitteln?"

> BTW.: AFAIK untersützt GDI-Plus nur TTF- und keine FON-Schriftarten. Daher

> ist es relativ sinnfrei überhaupt zu versuchen letztere Schriftarten zu
> listen, da man sie eh nicht zum "Zeichnen" benutzen kann.

Ja, das mag stimmen, aber er es gibt ja noch andere Wege, wie man Text
auf ein Control bringen kann, wie z.B. das Windows GDI API, z.B. das
TextOut,
was auch, am Rande bemerkt, sehr schnell ist. Aber das ist alles dem
Kollegen
überlassen und ich glaube, er hat jetzt genug Informationen erhalten. Die
Kernfrage wäre damit ohnehin beantwortet, d.H wie er an alle installierten
Fonts kommt...

So kann er an die Namen der Fonts in den Dateien kommen, bzw, an
noch mehr informationen die er braucht (da hat sich jemand schon
die Mühe gemacht und es gibt auch ein .NET C# Beispiel!):

http://www.codeproject.com/KB/GDI/fontnamefromfile.aspx

Hier das Beispiel:
http://www.codeproject.com/KB/GDI/fontnamefromfile.aspx?fid=3897&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=934171#xx934171xx

Es gibt aber auch einen Schlüssel in der Registry, der vielleicht
hilft:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

Der Schlüssel existiert unter XP,Vusta und Sieben, keine Ahnung, ob es den
unter
2000 und kleiner gibt,...

Kerem Gümrükcü

unread,
Feb 11, 2009, 9:02:15 AM2/11/09
to
Hallo,

> Wer hat denn gesagt, dass ich damit "Zeichnen" will?

naja, bei so einer Frage gehen wir hier immer vom Zeichnen aus,
zumindest meistens, aber gut, dann solltest Du Dir mein letztes
Posting ansehen, das dürfte Dir dann vollkommen ausreichen,
da ich da noch einiges hineingeschrieben habe, das deinen
Fall ausreichend abdecken sollte,...

Stefan Falz [MVP]

unread,
Feb 11, 2009, 9:26:00 AM2/11/09
to
Hallo Daniel,

Daniel Barisch schrieb:

> Wer hat denn gesagt, dass ich damit "Zeichnen" will? Ich brauch lediglich die Namen, um die innerhalb einer HTML-Seite an ein
> ExecCommand('FontName', ...) zu übergeben. In diese HTML-Seite werden vor der Anzeige in einem .NET-WebBrowser-Steuerelement an
> die entsprechende Stelle (HTML-Select) die verfügbaren Schriftarten "eingeparst".

Dann solltest Du aber beachten, dass die am Client verfügbaren Schriften
nicht zwingend auf anderen Clients, die sich die HTML Seite dann später
mal anschauen, vorhanden sind. Wenn das nicht ein beschränkter Benutzer-
kreis ist, dem man die Schriftarten dann auch installieren kann, solltest
Du gar nicht erst mit sowas hantieren, sondern dich auf die Standard-
schriftarten beschränken.

--
Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

danielbarisch

unread,
Feb 11, 2009, 9:33:30 AM2/11/09
to
Hallo!

> Es gibt aber auch einen Schlüssel in der Registry, der vielleicht
> hilft:
>
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
> NT\CurrentVersion\Fonts

Der Schlüssel enthält zumindest solche wie Courier
("Schriftartendatei", *.fon) und Global Monospace ("Composite Font
File", *.CompositeFont). Allerdings leider nicht "unsere" Schriftart
für's CorporateDesign ("Type 1-Schriftartendatei", *.pfm), wobei das
wirklich ein ziemlich absonderliches Format zu sein scheint.

Da werd ich mir mal das von dir gepostete Beispiel zu Gemüte führen.
Ich hoffe nur, dass das dann auch für die "Type 1-Schriftartendatei"
funktioniert ...

Vielen Dank für die Hilfe!

danielbarisch

unread,
Feb 11, 2009, 10:07:53 AM2/11/09
to
Hallo Stefan!


> Dann solltest Du aber beachten, dass die am Client verfügbaren
> Schriften
> nicht zwingend auf anderen Clients, die sich die HTML Seite dann
> später
> mal anschauen, vorhanden sind.

Dessen bin ich mir durchaus bewusst. Allerdings ist der IE, der dem
WebBrowser-Steuerelement ja zu Grunde liegt, wenigstens so nett ggf.
eine andere Schriftart zu verwenden, anstatt gar nix anzuzeigen.

> Wenn das nicht ein beschränkter Benutzer-
> kreis ist, dem man die Schriftarten dann auch installieren kann,
> solltest
> Du gar nicht erst mit sowas hantieren, sondern dich auf die
> Standard-
> schriftarten beschränken.

Und was sind dann "Standard-Schriftarten"? Für meine Begriffe kann man
doch ggf. jede Schriftart deinstallieren, oder? Und wenn sich der
Kunde für teuer Geld ne "eigene" Schriftart kauft, dann will er die
schließlich auch benutzen können. Ggf. wird's dann eben als PDF
gedruckt, damit es auch wirklich jeder lesen kann.

danielbarisch

unread,
Feb 11, 2009, 10:35:11 AM2/11/09
to
> Da werd ich mir mal das von dir gepostete Beispiel zu Gemüte führen.
> Ich hoffe nur, dass das dann auch für die "Type 1-Schriftartendatei"
> funktioniert ...

Nö, tun sie nicht. Die Beispiele sind soweit ich das überblicke auch
auf TTFs spezialisiert.

Naja, dann muss ich halt ne Möglichkeit einbauen, da noch "manuell"
Einträge in die Schriftarten-Liste aufzunehmen zu können.

Christoph Schneegans

unread,
Feb 11, 2009, 10:44:34 AM2/11/09
to
Daniel Barisch schrieb:

> Allerdings ist der IE, der dem WebBrowser-Steuerelement ja zu
> Grunde liegt, wenigstens so nett ggf. eine andere Schriftart zu
> verwenden, anstatt gar nix anzuzeigen.

Das schaffen andere Browser übrigens auch.

Stefan Falz [MVP]

unread,
Feb 11, 2009, 1:00:33 PM2/11/09
to
Hallo Daniel,

<Daniel Barisch> schrieb:

> Dessen bin ich mir durchaus bewusst. Allerdings ist der IE, der dem WebBrowser-Steuerelement ja zu Grunde liegt, wenigstens so

> nett ggf. eine andere Schriftart zu verwenden, anstatt gar nix anzuzeigen.

Klar. Andere Browser auch, wie Christoph ja schon sagte. Aber das
Erscheinungsbild wirkt mit einer anderen Schriftart, die sich ggfs.
ja komplett unterscheidet (den Browser interessiert das im Allgemeinen
nicht sonderlich und er kennt die andere Schrift ja auch nicht, so
dass er natürlich keine Schrift "aussuchen" kann, die der eigentlich
verwendeten am ehesten entsprechen würde.

> Und was sind dann "Standard-Schriftarten"?

Na die, die auf so gut wie jedem System verfügbar sind. Welche das
sind, da scheiden sich die Geister ein wenig.

> Für meine Begriffe kann man doch ggf. jede Schriftart deinstallieren, oder?

Klar. Aber meist wird man die vom System mitgelieferten Schriftarten
eher nicht löschen.

> Und wenn sich der Kunde für teuer Geld ne "eigene" Schriftart kauft, dann will er die schließlich auch benutzen können.

Aber nur bei sich auf seinem Rechner.

> Ggf. wird's dann eben als PDF gedruckt, damit es auch wirklich jeder lesen kann.

OK, das ist ne Möglichkeit. Die PDFs werden aber sicher nicht kleiner,
wenn man das mit vielen verschiedenen Schriftarten macht.

Karsten Sosna

unread,
Feb 11, 2009, 2:09:26 PM2/11/09
to
> Ggf. wird's dann eben als PDF gedruckt, damit es auch wirklich jeder lesen
> kann.

Trugschluss, nicht jedes PDF-Dokument beinhaltet auch die verwendete(n)
Schriftart(en). Daraus kann dann auch ein Dokument entstehen, das nur aus
Hieroglyphen besteht oder sogar, gar nicht geöffnet werden. Im Normalfall
verhält sich die Darstellung aber so wie die Anzeige eines Browser, es wird
einfach eine "Standardschriftart" verwendet.

Das einzig Sichere ist an dieser Stelle eine Grafik(PNG, TIFF, JPEG etc) zu
erstellen.
--
Gruß Scotty


Herfried K. Wagner [MVP]

unread,
Feb 11, 2009, 5:59:02 PM2/11/09
to
"Karsten Sosna" <k.sosna_NO_AT_SPAM_x-reflex.de> schrieb:

Wenn man die PDF-Datei selbst erstellt, kann man auch die erforderlichen
Schriften einbetten (Schriftlizenzen beachten).

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Kerem Gümrükcü

unread,
Feb 11, 2009, 7:47:59 PM2/11/09
to
Hallo Daniel,

ich habe mich mal damit beschäftigt, wie man zu der Liste mit
den Schriftarten unter JavaScript kommen kann. Da ich mich in
der Vergangenheit serh intensiv mit HTML,DHTML,CSS und
Browser-Scripting/Erweiterung, AddOn-Entwicklung, etc.
beschäftigt habe, ist mir da was noch eingefallen. Zwar ist
das hier eine VB-Only Gruppe (es seie mir bitte verziehen!),
aber vielleicht wird das Dir und ggf. einem Anderen auch helfen.
Ich habe hier ein HTML/DHTML/JavaScript/ActiveX Beispiel
geschrieben, was Dir vielleicht helfen kann. Es läuft aber auf
IE , bzw auf Bowsern, die ActiveX erlauben und auf MS Systemen
laufen. Hier der volle Code (in eine HTMLDatei einfügen!) :

<html>
<head>
<title>Get available Fonts</title>
<script language="javascript" type="text/javascript">

function GetInstalledFonts()
{
// Get available Fonts

if (document.getElementById) {
dhoObject = document.getElementById('dialogHelperObject');
if (dhoObject && dhoObject.fonts) {

var FontsArray = [];
//get fonts
for (index = 0; index < dhoObject.fonts.count; index++) {
FontsArray[index] = dhoObject.fonts(index + 1);
}
//sort fonts
FontsArray.sort();

//insert fonts into select object
for (i = 0; i < FontsArray.length; i++)
{
var FontName = FontsArray[i];
var objOptNew = document.createElement('option');
objOptNew.text = FontName.toString();
objOptNew.value = FontName.toString();
try {
elSel.add(objOptNew, null); //non IE
}
catch (e) {
fontsList.add(objOptNew, 0); // IE
}
}
}
}
}

function fontsList_OnChange()
{
alert(window.fontsList.value);
}

</script>
<style type="text/css">
#fontsList {
height: 11px;
width: 468px;
}
</style>
</head>
<body onload="GetInstalledFonts();">
<object id="dialogHelperObject"
classid="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width=0
height=0></object>
<select id="fontsList" name="fontsList"
onchange="fontsList_OnChange();">
</select>
</body>
</html>


Du hattest ja nach einr evtl. JavaScript Lösung in einer deiner
Rückantworten gefragt,...

Verwendet wird das sog. "Dialog Helper Object":

[Dialog Helper Object]
http://msdn.microsoft.com/en-us/library/ms535238(VS.85).aspx

Und halt etwas DHTML/JavaScript zum dynamischen
Erzeigen/Einfügen von HTML-Elementen,...

danielbarisch

unread,
Feb 12, 2009, 3:43:29 AM2/12/09
to
Hallo Kerem!

> Du hattest ja nach einr evtl. JavaScript Lösung in einer deiner
> Rückantworten gefragt,...
>
> Verwendet wird das sog. "Dialog Helper Object":

Danke für den Tip!

Wenn ich das in eine "normale" HTML-Seite einbaue, dann funktionierts
und liefert mir anscheinend auch alle Schriftarten.

Leider funktioniert der Zugriff auf "dhoObject.fonts" aber nicht mehr
("alert(dhoObject.fonts == null);" wird z.B.
gar nicht erst ausgeführt), wenn ich das in eine Seite einbaue, die im
WebBrowser-Steuerelement aufgerufen wird. Aber da hatte ich glaub ich
schon früher mal Probleme mit ActiveX-Objekten.

Aber wenn's ein ActiveX ist, dann werd mal versuchen, das im .NET zu
instanzieren. Hab ich das richtig verstanden, dass das mit der
IE6-Installation mitkommt?

danielbarisch

unread,
Feb 12, 2009, 4:09:18 AM2/12/09
to

> Aber wenn's ein ActiveX ist, dann werd mal versuchen, das im .NET zu
> instanzieren. Hab ich das richtig verstanden, dass das mit der
> IE6-Installation mitkommt?

Mmh, ich kann's zwar über
"createobject("HtmlDlgSafeHelper.HtmlDlgSafeHelper")" instanzieren,
aber beim Zugriff auf .Fonts gibt's dann irgendwelche absonderlichen
Fehler.

Karsten Sosna

unread,
Feb 12, 2009, 4:28:01 AM2/12/09
to
> Wenn man die PDF-Datei selbst erstellt, kann man auch die erforderlichen
> Schriften einbetten (Schriftlizenzen beachten).

Hallo Herfried,
soweit ich weiß geht das nur beim PDF-Writer, beim PDF-Distiller geht das
nicht. Letzteren benutze ich, weil ich grundsätzlich Probleme bei der
Ausgabe von Visio-Zeichnungen mit dem PDF-Writer habe. Aber das ist glube
ich schon OT.
--
Gruß Scotty


Harald M. Genauck

unread,
Feb 12, 2009, 4:48:08 AM2/12/09
to
Hallo Daniel,

> ...


> Aber wenn's ein ActiveX ist, dann werd mal versuchen, das im .NET zu
> instanzieren. Hab ich das richtig verstanden, dass das mit der
> IE6-Installation mitkommt?

Ich verstehe immer noch nicht so ganz, was Du eigentlich bezwecken
willst.

Willst Du die Schriften des Client-Rechners ermitteln, also dort, wo
der Browser läuft? Dann nützt Dir der Versuch, das "im .NET zu
instanzieren" gar nichts, weil .NET ja auf der Server-Seite läuft und
dabei die auf dem Server installierten Schriften ermittelt werden. Es
sei denn Du hast vor, und bisher verschwiegen, dass Du eine der (noch)
etwas unüblichen Varianten im Sinn hast, bei der auch .NET
client-seitig läuft, etwa Silverlight, .NET-Browser-Controls oder
Browser-Apps.

Die auf dem Client ermittelten Schriften, wie nun auch immer ermittelt,
nützen Dir auf der Server-Seite recht wenig, wenn der Anwender eine
Schrift auswählt, die auf dem Server nicht installiert ist. Denn dann
ist es auch egal, wie Du auf der Server-Seite eine Ausgabe erstellst,
egal, ob als Bild (BMP, JPG, ...) oder als PDF oder XPS oder was auch
immer.

Es wäre vielleicht ganz gut, wenn Du das geplante Szenario einmal kurz
im Zusammenhang beschreiben könntest, erst mal völlig ohne jeden
Gedanken an irgendeine Möglichkeit einer konkreten Implementierung.


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)

Harald M. Genauck

unread,
Feb 12, 2009, 4:58:47 AM2/12/09
to
Hallo Daniel,

>> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
>> NT\CurrentVersion\Fonts

> Der Schlüssel enthält zumindest solche wie Courier
> ("Schriftartendatei", *.fon) und Global Monospace ("Composite Font
> File", *.CompositeFont). Allerdings leider nicht "unsere" Schriftart
> für's CorporateDesign ("Type 1-Schriftartendatei", *.pfm), wobei das
> wirklich ein ziemlich absonderliches Format zu sein scheint.
>
> Da werd ich mir mal das von dir gepostete Beispiel zu Gemüte führen.
> Ich hoffe nur, dass das dann auch für die "Type 1-Schriftartendatei"
> funktioniert ...

Type 1-Schriftartendateien (*.pfm) sind Postscript-Fonts. Diese können
unter Windows gar nicht direkt als Schrift installiert (und verwendet)
werden, sondern nur über den Adobe-Type-Manager. Dieser wird aber bei
einem beliebigen Client nur ganz ganz selten vorhanden sein.

Kerem Gümrükcü

unread,
Feb 12, 2009, 6:24:18 AM2/12/09
to
Hallo Daniel,

> Hab ich das richtig verstanden, dass das mit der IE6-Installation
> mitkommt?


ja, das hast Du richtig verstanden. In dem Link zu der Dokumentation
kannst Du das noch mal in der Remarks Sektion lesen:

"Dialog Helper was introduced in Microsoft Internet Explorer 6"

Kerem Gümrükcü

unread,
Feb 12, 2009, 6:25:26 AM2/12/09
to
Hallo Daniel,

> Mmh, ich kann's zwar über
> "createobject("HtmlDlgSafeHelper.HtmlDlgSafeHelper")" instanzieren, aber
> beim Zugriff auf .Fonts gibt's dann irgendwelche absonderlichen Fehler.

die musst Du schon hier nennen, raten können wir ja nicht.... ;-)

danielbarisch

unread,
Feb 12, 2009, 6:35:38 AM2/12/09
to
Hallo Harald!

>> Aber wenn's ein ActiveX ist, dann werd mal versuchen, das im .NET
>> zu instanzieren. Hab ich das richtig verstanden, dass das mit der
>> IE6-Installation mitkommt?
>
> Ich verstehe immer noch nicht so ganz, was Du eigentlich bezwecken
> willst.
>
> Willst Du die Schriften des Client-Rechners ermitteln, also dort, wo
> der Browser läuft? Dann nützt Dir der Versuch, das "im .NET zu
> instanzieren" gar nichts, weil .NET ja auf der Server-Seite läuft
> und dabei die auf dem Server installierten Schriften ermittelt
> werden. Es sei denn Du hast vor, und bisher verschwiegen, dass Du
> eine der (noch) etwas unüblichen Varianten im Sinn hast, bei der
> auch .NET client-seitig läuft, etwa Silverlight,
> .NET-Browser-Controls oder Browser-Apps.

Hat denn irgendwer irgendwann hier in dem Thread was von ASP.NET oder
ner Web-Anwendung erzählt?

Wir nutzen einfach in einer Windows-Anwendung das
WebBrowser-Steuerelement und da besteht ich auch die Möglichkeit, den
HTML-Code vor der Anzeige in eben diesem noch zu verändern. Wo der
"dynamische" HTML-Code dann her kommt ist doch erstmal egal. Das kann
aus der .NET-Anwendung sein, das kann per JavaScript direkt in der
Seite erfolgen usw.

Ich will einfach nur eine Liste über ALLE Schriftarten haben, die auf
dem Rechner installiert sind, so wie bspw. Word das auch anbietet -
nix weiter. Welche Schriftarten der Nutzer davon verwendet ist doch
ihm überlassen.

danielbarisch

unread,
Feb 12, 2009, 6:35:42 AM2/12/09
to
Hallo Harald!

> Type 1-Schriftartendateien (*.pfm) sind Postscript-Fonts. Diese
> können unter Windows gar nicht direkt als Schrift installiert (und
> verwendet) werden, sondern nur über den Adobe-Type-Manager. Dieser
> wird aber bei einem beliebigen Client nur ganz ganz selten vorhanden
> sein.

Dann ist das bei uns im LAN wohl so geschehen. In Word usw. lässt sich
die Schriftart wunderbar verwenden und was an Kunden rausgeht, geht
als Papier oder PDF raus.

Thorsten Albers

unread,
Feb 12, 2009, 7:45:54 AM2/12/09
to
Daniel Barisch schrieb im Beitrag
<#AlyMZQj...@TK2MSFTNGP06.phx.gbl>...

> Dann ist das bei uns im LAN wohl so geschehen. In Word usw. lässt sich
> die Schriftart wunderbar verwenden und was an Kunden rausgeht, geht
> als Papier oder PDF raus.

Könnte es sein, daß Du da den beliebten Fehler machst, 'Type 1' mit
'Opentype' zu verwechseln? 'Type 1' (*.PFB (@Harald: 'B' <> 'M'!!),
Postscript-Schrift) ist eine vollständige Schriftdefinition, 'Opentype'
(*.TTF, *.OTF, *.TTC) nur eine Ergänzung zu 'TrueType' und 'Type 1'.

--
Thorsten Albers

albers (a) uni-freiburg.de

danielbarisch

unread,
Feb 12, 2009, 10:40:49 AM2/12/09
to

"Thorsten Albers" <alber...@THISuni-freiburg.de> schrieb im
Newsbeitrag news:O5MUZ$QjJHA...@TK2MSFTNGP06.phx.gbl...

Ich hab da ehrlich gesagt keine Ahnung! Ich hab einfach nur
abgeschrieben was mir der Schriftarten-Eigenschaften-Dialog ausgibt.
Und da steht halt "Type 1-Schriftartendatei" und als Datei die
"...PFM", wobei es aber im Windwows\Fonts-Verzeichnis anscheinend
beides gibt, also PFB+PFM.

danielbarisch

unread,
Feb 12, 2009, 10:45:58 AM2/12/09
to
>> Mmh, ich kann's zwar über
>> "createobject("HtmlDlgSafeHelper.HtmlDlgSafeHelper")" instanzieren,
>> aber beim Zugriff auf .Fonts gibt's dann irgendwelche
>> absonderlichen Fehler.
>
> die musst Du schon hier nennen, raten können wir ja nicht.... ;-)

Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben.
Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt
ist.

Harald M. Genauck

unread,
Feb 12, 2009, 11:31:47 AM2/12/09
to
Hallo Daniel,

>> Ich verstehe immer noch nicht so ganz, was Du eigentlich bezwecken
>> willst.
>>
>> Willst Du die Schriften des Client-Rechners ermitteln, also dort, wo
>> der Browser läuft? Dann nützt Dir der Versuch, das "im .NET zu
>> instanzieren" gar nichts, weil .NET ja auf der Server-Seite läuft
>> und dabei die auf dem Server installierten Schriften ermittelt
>> werden. Es sei denn Du hast vor, und bisher verschwiegen, dass Du
>> eine der (noch) etwas unüblichen Varianten im Sinn hast, bei der
>> auch .NET client-seitig läuft, etwa Silverlight,
>> .NET-Browser-Controls oder Browser-Apps.

> Hat denn irgendwer irgendwann hier in dem Thread was von ASP.NET oder
> ner Web-Anwendung erzählt?

Nun ja... hast Du nicht, stimmt. Es liegt aber nahe, davon auszugehen,
wenn nicht explizit ein anderes Szenario vorgestellt wird. Und das
hattest Du bis dahin nicht gemacht. Mein Einwand war sicher nicht böse
gemeint, sondern kam nur in Anbetracht dessen, dass schon so manche
Frage gestellt wurde, wobei dem Fragesteller die Trennung zwischen
Webserver und Client nicht klar war (die Fragen nach MessageBoxen etwa
sind typisch dafür ...).

Aber jetzt ist Dein Szenario ja eindeutig klar und nachvollziehbar.
:-)

Harald M. Genauck

unread,
Feb 12, 2009, 11:28:19 AM2/12/09
to
Hallo Thorsten,

> 'Type 1' (*.PFB (@Harald: 'B' <> 'M'!!),

Ein Postscriptfont besteht üblicherweise aus zwei Dateien, der
PFB-Datei, eine Binärdatei, die die Glyphendaten enthält, und einer
AFM- oder PFM-Datei (letztere als neueres Binärformat), die die
Metricdaten enthält.

Siehe auch (und auch bezüglich "Type 1" u.a.):
http://en.wikipedia.org/wiki/Type_1_and_Type_3_fonts

Thorsten Albers

unread,
Feb 12, 2009, 12:28:56 PM2/12/09
to
Daniel Barisch schrieb im Beitrag
<ebiMGlSj...@TK2MSFTNGP02.phx.gbl>...

> Ich hab da ehrlich gesagt keine Ahnung! Ich hab einfach nur
> abgeschrieben was mir der Schriftarten-Eigenschaften-Dialog ausgibt.
> Und da steht halt "Type 1-Schriftartendatei" und als Datei die
> "...PFM", wobei es aber im Windwows\Fonts-Verzeichnis anscheinend
> beides gibt, also PFB+PFM.

Dann ist es tatsächlich eine 'Type 1'-Schrift, und Deinem System steht
vermutlich, wie Harald schon sagt, der Adobe Type Manager zur Verfügung.

Thorsten Albers

unread,
Feb 12, 2009, 12:31:11 PM2/12/09
to
Harald M. Genauck <hmg.ng.e...@aboutvb.de> schrieb im Beitrag
<#Soj0DTj...@TK2MSFTNGP05.phx.gbl>...

> Ein Postscriptfont besteht üblicherweise aus zwei Dateien, der
> PFB-Datei, eine Binärdatei, die die Glyphendaten enthält, und einer
> AFM- oder PFM-Datei (letztere als neueres Binärformat), die die
> Metricdaten enthält.

Schon klar. Aber wenn man die Dateinamenserweiterung eine
Postscript-Schriftdatei angibt, sollte das wohl eher PFB als PFM sein. Mit
der PFB kann man auch ohne die PFM etwas anfangen, mit der PFM aber nicht
ohne die PFB.

Aber das ist natürlich simpelste H-a-a-r-Spalterei...

Kerem Gümrükcü

unread,
Feb 12, 2009, 1:27:52 PM2/12/09
to
Hallo Daniel,

> Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben.
> Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.

das ist ungewöhnlich, aber ein Zeichen, das in deinem Code,
oder dem Code der Komponenten etwas nicht stimmt. Kannst
Du mal Code posten + .NET Version, OS Version und anderes
für dich wichtig sein könnte mitzuteilen? Hast Du irgendwelchen
Unsafe Code in deinem Program?

danielbarisch

unread,
Feb 13, 2009, 2:36:37 AM2/13/09
to
Hallo Kerem!

>> Es wurde versucht, im geschützten Speicher zu lesen oder zu
>> schreiben. Dies ist häufig ein Hinweis darauf, dass anderer
>> Speicher beschädigt ist.
>
> das ist ungewöhnlich, aber ein Zeichen, das in deinem Code,
> oder dem Code der Komponenten etwas nicht stimmt. Kannst
> Du mal Code posten + .NET Version, OS Version und anderes
> für dich wichtig sein könnte mitzuteilen? Hast Du irgendwelchen
> Unsafe Code in deinem Program?

Da ist nix besonderes:

Als Code, der über das MS ScriptControl ausgeführt wird:
set p = createobject("HtmlDlgSafeHelper.HtmlDlgSafeHelper")
?p.fonts.count
Da kommt ein Fehler, aber ohne Meldung, was aber ggf. auch daran
liegen kann, wie wir das ScriptControl verbastelt haben.

... bzw. wenn ich das im VB-Editor von Excel ausführe:
Automatisierungsfehler: Das aufgerufene Objekt wurde von den Clients
getrennt.

... bzw. das selbe ohne "set" im .NET-Code (dann kommt o.g. Fehler).

Sobald man versucht, auf p.fonts zuzugreifen kommt der Fehler.
Ich hab das auf zwei XP-Rechnern probiert, Grundlage ist .NET 2.0.

0 new messages