Unicode-Zeichen einfügen - Einzelne Zeichen werden ignoriert

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
Zodiac
**
Beiträge: 39
Registriert: Mi, 22.02.2006 00:57
Wohnort: Hamburg

Unicode-Zeichen einfügen - Einzelne Zeichen werden ignoriert

Beitrag von Zodiac »

Hallo!

Ich habe nach einer Möglichkeit gesucht Unicode-Zeichen in ein Dokument einzufügen (um z.B. typografische Zeichen per Tastatur bzw. Icon einzufügen). Da bin ich auf folgendes Makro gestossen:
http://codesnippets.services.openoffice ... acter.snip

Allerdings hat Writer nach dem Einfügen quasi noch eine Markierung versucht. Wenn man also den Cursor per Taste nach links bewegt hat, wurde Text markiert. Nach dem Lesen des c't-Artikels Text-Dirigent, 16/06, S. 194 habe ich das Makro dann mal umprogrammiert und etwas ausführlicher deutsch kommentiert. Hier ist es:

Code: Alles auswählen

Sub insertUnicode
' Original hier:
' http://codesnippets.services.openoffice.org/Writer/Writer.InsertUnicodeCharacter.snip
' Abgewandelt von Torsten Landsiedel nach Lesen des ct-Artikels 16/06 - S. 194 ff
' Stand: Version 1.0 vom 06.10.2006

Dim objDokument As Object
Dim objText As Object
Dim objViewCursor As Object
Dim Character as String

' Dokument definieren
objDokument = GlobalScope.ThisComponent

' Text definieren
objText = objDokument.Text

' sichtbaren Cursor - Position holen
objViewCursor = objDokument.CurrentController.getViewCursor()

' Zeichen in Hexadezimal wird per clng in long-Wert umgewandelt
' chr macht aus dem long-Wert einen String
Character = chr(clng("&H2026"))

' Oben definiertes Zeichen an Cursorposition einfügen und dabei nicht überschreiben.
objText.insertString(objViewCursor, Character, false)

End Sub
Nun aber meine Frage:
Das Unicode-Zeichen bekomme ich ja über Einfügen - Sonderzeichen heraus. Aber da stehen längst nicht alle drin. Und noch schlimmer: Wenn sie nicht drin stehen, lassen sie sich auch meist nicht darstellen. Ich kenne mich mit diesem internationalen Zeichensatz-Unicode-Kram noch nicht so aus. Aber wenn z.B. im Unicode 2009 ein schmales Leerzeichen ist (Laut OOo-Wiki über Leerzeichen), wieso kann ich es dann nicht darstellen? Da kommt bei mir immer ein kleines Quadrat bei raus.

Oder die hier im Beispiel verwendet Ellipse (Auslasszeichen, drei Punkte nebeneinander) ist über ALT+0133 (Nummernblock!) zu erreichen, oder aber Unicode 2026. Eine Zuordnung Dezimal - Hexadezimal ist das also nicht. Beim geschützen Leerzeichen klappt es (00A0 Hex und 160 Dez).

So richtig schlau werde ich nicht daraus...
Hat jemand eine Idee?
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Beitrag von Karolus »

Hallo
Du brauchst einfach nur einen (oder mehrere) Fonts, die die entsprechenden Unicode-zeichen enthalten auf deinem System. Google mal nach 'Code2000' .

Gruß Karo
Benutzeravatar
Zodiac
**
Beiträge: 39
Registriert: Mi, 22.02.2006 00:57
Wohnort: Hamburg

Beitrag von Zodiac »

Vielen Dank für den Tipp!
Antworten