![]() |
Symbol aus "Symbol.ttf" in anderer Schriftart find
Hallo,
bei meinen Versuchen, meinen RTF-Parser zu verbessern, ist mir eine lästige Eigenart von Word untergekommen: Es ist wohl möglich, ein Symbol (z. B. Delta), welches in der Schriftart Symbol definiert ist (Zeichen #68, also eigentlich "D"), so in den Text einzubetten, dass Word behauptet, dieses Zeichen käme eigentlich aus der Schriftart Arial. Arial hat nun aber selbst ein Zeichen Delta (Unicode-Zeichen #916). Gibt es eine Möglichkeit, vom Zeichen #68 in Symbol zum Zeichen #916 in Arial zu gelangen? Gruß xaromz |
Re: Symbol aus "Symbol.ttf" in anderer Schriftart
Hi,
Kleiner Test...
Delphi-Quellcode:
Ohne das +916-68 würde es ABCDEFGHIJKLMNOPQRSTUVWXY werden, und so erhältst du das griechische Alphabet - es ist genau 916-68=848 Zeichen weiter im Unicode-Alphabet.
var
S: WideString; I: Integer; begin SetLength(S, 25); for I := 1 to 25 do S[I] := WideChar(I - 1 + Ord('A') + 916 - 68); MessageBoxW(Handle, PWideChar(S), nil, MB_OK); end; Leider funktioniert
Delphi-Quellcode:
nur von A bis E, dann weicht die Symbol-Reihenfolge leider ab von der richtigen Reihenfolge des griech. Alphabets - es war eben nur für mathematische Formeln gedacht.
inc(MyWideChar, 848);
Ich würde dir eine Ersetzungstabelle empfehlen, z. B. eine Array-Konstante. Warum wird vor dem Sigma nur ein Rechteck angezeigt? Gibt es so einen griech. Buchstaben? Kenn ich nicht. Mfg FAlter |
Re: Symbol aus "Symbol.ttf" in anderer Schriftart
Hallo,
wie ich einem Zeichen den Wert 916-68 hinzufüge ist mir schon klar. Ich möchte aber eher etwas in der Art: Ein Zeichen aus Symbol repräsentiert ein Delta. Welche Nummer in der Schriftart Arial repräsentiert das Delta? Gruß xaromz |
Re: Symbol aus "Symbol.ttf" in anderer Schriftart
Hi,
ich bin mir nicht ganz sicher, ob du den kompletten Text gelesen hast. Daher zitier ich mich mal selbst. Zitat:
Delphi-Quellcode:
Da die Zeichen der Symbol-Schriftart leider nicht in der Reihenfolge des griechischen Alphabets sind.
const
Ersetz: array['A'..'Z'] of WideChar = (#916, #917, #918, #919, #920, ..., #921); Das davor war nur mein Weg der Ideenfindung ;) Mfg FAlter |
Re: Symbol aus "Symbol.ttf" in anderer Schriftart
Hallo,
ich vermute, Du hast mich nicht verstanden. Das Delta war nur ein Beispiel. Ich möchte wissen, welche Nummer ein (beliebiges) Zeichen aus der einen Schriftart in der anderen hat. Da ich vorher weder weiß, welche zwei Schriftarten das sind, noch, welches Zeichen ich benötige, kommt eine einfache Tabelle nicht in Frage. Gruß xaromz |
Re: Symbol aus "Symbol.ttf" in anderer Schriftart
Hi,
Die Unicode-Schriftarten sind alle gleich - was in Arial ein delta ist, ist es auch in Courier New und Verdana und so weiter. Mit einer Ersetzungstabelle könntest du das also von Symbol in alle anderen Schriftarten lösen (sofern diese das griech. Alphabet beinhalten). Nur die Symbol tanzt eben aus der Reihe. Sie ist nicht einmal eine ISO-8859-7-Schriftart mit dem griechischen Alphabet, sondern eben tatsächlich für Symbolzwecke in Formeln o. ä. Vermutlich wirst du also nur die Umwandlung von Symbol benötigen. Ansonsten glaube ich nicht, dass es eine bessere Möglichkeit gibt, da nirgends gespeichert wird, dass C in der Symbol eigentlich ein Gamma ist. Die Schriftart beinhaltet ja lediglich das zugeordnete Symbol, genaugenommen ist es immer noch ein C, nur siehst du ein Gamma, da eine andere Grafik dem C zugeordnet ist. Du könntest natürlich statt einer Konstante auch eine Variable nehmen und z. B. mehrere Ersetzungstabellen in Datei(en) abspeichern, falls du wirklich neben der Symbol noch andere Schriften unterstützen willst, die Zeichen anders als normal interpretieren. Und meinetwegen lass dieses Array von #0 bis #255 gehen oder gar von #0 bis #65535, wenn du es so brauchst. Für andere Lösungen kann ich dir momentan nicht helfen, da fehlen mir die Ideen. Mfg FAlter |
Re: Symbol aus "Symbol.ttf" in anderer Schriftart
Hallo,
eine Ersetzungstabelle kommt wie gesagt nicht in Frage (es geht eben nicht nur um "Symbol"). Aber genauso wie Du vermute ich auch, dass es keinen anderen Weg gibt. Ich habe jetzt notgedrungen das Verhalten von Word nachgebaut (sozusagen eine "Schattenschrift" eingebaut). Funktioniert auch soweit. Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz