Nichtdruckbare Zeichen herausfiltern

Hallo Wissende,

ich habe weder VB.NET noch C# noch die geringste Ahnung davon. Also erbitte ich mir eine komplette lauffähige Exe.

Nix unverschämtes, bis auf eine Winzigkeit etwas was man in paar Minuten hinschreiben kann.
Von mir gewünscht wird als Ergebnis der Exe eine Textdatei die für eine der Exe als Parameter mitgegebene Schriftart alle Unicodenummern enthält, die druckbar sind.

Und diese Winzigkeit ist das „druckbar“. Mit Excel-Vba bekam ich das nicht hin, dies pro Zeichen zu ermitteln.

Falls ich mich wieder mal zu unklar ausgedrückt habe, hier eine andere Beschreibung meines Problems.
Ich stelle in Excel in 65536 Zellen alle 65536 Unicodezeichen dar [mit Chrw(x)].
Alle nicht druckbaren Zeichen werden als Quadrat dargestellt. Leider sind das gewaltig viele, so min. 40.000. Deshalb suche ich nach einer Möglichkeit, diese nichtdruckbaren zeichen aus der Liste zu entfernen.

Und da kam ich halt darauf, daß es mir ja locker reicht wenn eine durch euch erstellte exe mir jetzt für z.B. „Arial“ in einer Textdatei nur alle druckbaren Zeichen auflistet.

Einen schönen Sonntag noch
Danke ^ Gruß
Reinhard

Hallo Reinhard,

ich habe weder VB.NET noch C# noch die geringste Ahnung davon.
Also erbitte ich mir eine komplette lauffähige Exe.

Das wird wohl nichts werden!

Nix unverschämtes, bis auf eine Winzigkeit etwas was man in
paar Minuten hinschreiben kann.
Von mir gewünscht wird als Ergebnis der Exe eine Textdatei die
für eine der Exe als Parameter mitgegebene Schriftart alle
Unicodenummern enthält, die druckbar sind.

Und diese Winzigkeit ist das „druckbar“. Mit Excel-Vba bekam
ich das nicht hin, dies pro Zeichen zu ermitteln.

Falls ich mich wieder mal zu unklar ausgedrückt habe, hier
eine andere Beschreibung meines Problems.
Ich stelle in Excel in 65536 Zellen alle 65536 Unicodezeichen
dar [mit Chrw(x)].
Alle nicht druckbaren Zeichen werden als Quadrat dargestellt.
Leider sind das gewaltig viele, so min. 40.000. Deshalb suche
ich nach einer Möglichkeit, diese nichtdruckbaren zeichen aus
der Liste zu entfernen.

Und da kam ich halt darauf, daß es mir ja locker reicht wenn
eine durch euch erstellte exe mir jetzt für z.B. „Arial“ in
einer Textdatei nur alle druckbaren Zeichen auflistet.

Einen schönen Sonntag noch

Ich habe mich mal kundig gemacht und Deine Frage( da ich darauf auch adhock keine Antwort wusste) einen Experten ( MVP) gestellt. Seine Antwort darauf lautet wie folgt.

Hi Alex,
alle Zeichen sind darstell- und druckbar. Wenn ein Kästchen erscheint, dann ist für diesen Unicode-Wert kein Zeichensatz installiert. Also muss die Frage umgekehrt gestellt werden: "Welcher Zeichensatz unterstützt welche Unicode-Werte?". Diese Frage ist an den Bereitsteller des Zeichensatzes zu stellen. Und, da es Zeichensätze wie Sand am Meer gibt, garantiert die Erstelluung einer vollständigen Übersicht eine lebenslange Beschäftigung.

Danke ^ Gruß
Reinhard

MfG Alex

Hallo Alex,

ich habe weder VB.NET noch C# noch die geringste Ahnung davon.
Also erbitte ich mir eine komplette lauffähige Exe.

Das wird wohl nichts werden!

klingt nicht gut :frowning:

Also muss die Frage umgekehrt gestellt werden:
„Welcher Zeichensatz unterstützt welche Unicode-Werte?“. Diese
Frage ist an den Bereitsteller des Zeichensatzes zu stellen.
Und, da es Zeichensätze wie Sand am Meer gibt, garantiert die
Erstelluung einer vollständigen Übersicht eine lebenslange
Beschäftigung.

Na, endlich mal langfristige Beschäftigung :smile:

Danke dir für deine Mühe.
PS: ES fiel mir schon letztens auf, laß bitte den pre-Tag weg bei Texten. Schau dir mal deine Antwort an, da ist die ganze Zeile des MVPs in einer Zeile und so nen breiten Bildschirm hab ich nicht.

Diese breiten Zeilen geschehen oft, auch wenn der Text in der Quelle noch normal aussieht.
Ich kopiere ihn dann hier rein, gehe jeweils ans Ende jeder Zeile und drücke Enter.

Wenn dadurch keine neue leerzeile darunter erscheint, so war das Enter nötig um den Darstellungsfehler zu vermeiden.

Gruß
REinhard

Hallo!
Zwar nicht direkt die gewünschte Anwendung auf dem goldenen Teller, aber Du sollst ja auch noch was zu tun haben :smile:
Diesen Link: http://www.codeproject.com/KB/string/FontGlyphSet.aspx
habe ich bei CodeProject gefunden, es scheint eben schon möglich zu sein, die Glyphen in einem gegebenen Zeichensatz zu finden, für die es keine Darstellung gibt und die daher als „Kästchen“ gezeichnet werden.

Mit der dort gezeigten Klasse kann man vermutlich recht einfach die Ersetzung durchführen.

Gruß,
Martin

Hallo martin,

aber Du sollst ja auch noch was zu tun haben :smile:

habe ich reichlich, a) das Englische b) das Fachliche :smile:

http://www.codeproject.com/KB/string/FontGlyphSet.aspx
habe ich bei CodeProject gefunden,

es scheint eben schon möglich zu sein, die Glyphen in einem :gegebenen Zeichensatz zu finden, für die es keine Darstellung gibt und die daher als „Kästchen“ gezeichnet werden.

Ja, mein Inneres sagt, irgendwie muß das zu machen sein.

Mit der dort gezeigten Klasse kann man vermutlich recht
einfach die Ersetzung durchführen.

*hüstel* „recht einfach“ ist sehr relativ :smile:

Ich sehe es so, wenn ich Excel bitte mir in 65536 Zellen die 65536 Zeichen darzustellen, dann muß EXCEL doch irgendwie (durch auswerten der *.ttf?) die Information bekommen, daß das Zeichen nicht darstellbar ist, also macht es ein Kästchen als Symbol dafür, oder in der ttf stehen da die Bit o.ä. Informationen daß dieses Zeichen dieser Schriftart wie ein Kästchen aussieht.

Ich habe im Hexeditor mir mehrere z.B. ArialX.ttf Dateien angesehen, konnte da leider darin nix auswertbares erkennen.

Leider ist knapp daneben auch vorbei :frowning:
Ich hab in VBA AutoSize von TextBoxen ausgenutzt (k.A. obs das in C gibt, in VB.NET bestimmt), dann in einer Schleife nacheinander jedes der 65536 Zeichen 500-fach in die Textbox schreiben lassen, dann jeweils die Breite der TextBox notiert pro Zeichen.

Das klappte schon gut, aber leider nicht perfekt. Alle zeichen die in meinem entstandenen Liste nicht die Länge 3762,75 hatten waren druckbar, denn Kästchen-Zeichen hatten diese textboxlänge.

Einige, gar nicht viele, haben aber obwohl kein Kästchen dargestellt wird auch die Textboxlänge 3762,75.

Naja, war zumindest ein Versuch.

Ich probier nochmal, naja nicht sehr Hoffnungsfroh, in deinem Link was zu verstehen.
Wenn nicht, *hmmh*, ich habe da so eine Idee, man macht ein Bild des Zeichens und wertet dann der Bildpunkteinformationen aus ob es ein Kästchen ist?

Gruß
Reinhard

Hallo nochmal!
Deine Versuche sind ja sehr kreativ, das muss ich zugeben :smile:
Irgendwie muss in einer TTF-Datei drin stehen, für welche Zeichen die Angabe enthalten ist, wie diese Zeichen zu malen sind (auch wenn ich keine Ahnung zum genauen Aufbau von TTF habe).
Wenn Windows mit einem Font, der letztlich aus einer TTF-Datei geladen wurde, ein Zeichen malen soll, aber feststellt, dass dieser Font die Zeichenanweisungen für dieses Zeichen („Glyphe“) nicht hat, wird ein Kästchen hingemalt.
Wenn Du ganz nach unten gehen willst, kannst Du anfangen, die Formatbeschreibung für TTF Dateien durchzuackern und dann Bitpfriemelei betreiben, um an die nötigen Infos zu kommen.
Oder Du versuchst, eine höhere API zu nutzen, die vom konkreten TTF Format abstrahiert. So hatte ich auch den Artikel verstanden. Per GetFontUnicodeRanges aus der Win32 API lassen sich wohl Bereiche von Unicodezeichen abrufen, für die es entsprechende Glyphen gibt.

Wegen Englischproblemen kann ich leider nicht auf die Schnelle helfen - die meisten relevanten Infos in unserem Metier sind nun mal auf englisch…

Gruß,
Martin