AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Symbol aus "Symbol.ttf" in anderer Schriftart finden
Thema durchsuchen
Ansicht
Themen-Optionen

Symbol aus "Symbol.ttf" in anderer Schriftart finden

Ein Thema von xaromz · begonnen am 23. Jul 2007 · letzter Beitrag vom 23. Jul 2007
Antwort Antwort
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#1

Symbol aus "Symbol.ttf" in anderer Schriftart find

  Alt 23. Jul 2007, 10:55
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Symbol aus "Symbol.ttf" in anderer Schriftart

  Alt 23. Jul 2007, 11:18
Hi,

Kleiner Test...

Delphi-Quellcode:
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;
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.

Leider funktioniert

inc(MyWideChar, 848); 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.

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
Felix Alter
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Symbol aus "Symbol.ttf" in anderer Schriftart

  Alt 23. Jul 2007, 11:24
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Symbol aus "Symbol.ttf" in anderer Schriftart

  Alt 23. Jul 2007, 11:34
Hi,

ich bin mir nicht ganz sicher, ob du den kompletten Text gelesen hast. Daher zitier ich mich mal selbst.

Zitat von FAlter:
Ich würde dir eine Ersetzungstabelle empfehlen, z. B. eine Array-Konstante.
Damit meine ich sowas in der Art:

Delphi-Quellcode:
const
  Ersetz: array['A'..'Z'] of WideChar =
    (#916, #917, #918, #919, #920, ..., #921);
Da die Zeichen der Symbol-Schriftart leider nicht in der Reihenfolge des griechischen Alphabets sind.

Das davor war nur mein Weg der Ideenfindung

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Symbol aus "Symbol.ttf" in anderer Schriftart

  Alt 23. Jul 2007, 12:08
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Symbol aus "Symbol.ttf" in anderer Schriftart

  Alt 23. Jul 2007, 12:52
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
Felix Alter
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Symbol aus "Symbol.ttf" in anderer Schriftart

  Alt 23. Jul 2007, 13:24
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz