[ Impressum ]

LiveCode und MacRoman unter Mac OS X

www.Rozek.de > LiveCode > MacRoman
Apple ist schon immer seine eigenen Wege gegangen. Schmerzlich bewußt werden einem diese Sonderwege auch heute noch bei so grundlegenden Details wie Tastaturbelegungen und Zeichensätzen.

So verwendet LiveCode [1] (vermutlich aus Gründen der Rückwärtskompatibilität) immer noch den Zeichensatz MacRoman [2] für die Eingabe und Anzeige von Texten - obwohl Mac OS X inzwischen UTF-8 als Standardkodierung einsetzt.

LiveCode verwendet von Haus aus 8-Bit Zeichensätze

Ohne weitere besondere Vorkehrungen wie z.B.

set the useUnicode to true

verwendet LiveCode intern einen 8-Bit Zeichensatz (dies gilt für alle Plattformen, nicht nur für Mac OS X) - was der Einstellung

set the useUnicode to false

entspricht. In der Praxis bedeutet dies, daß die Funktionen

put CharToNum("A")

und

put NumToChar(65)

jeweils Codes im Bereich 0…255 erwarten bzw. ausgeben - Sie können dies recht einfach in der LiveCode "Message Box" überprüfen, indem Sie die jeweilige Ausgabe der folgenden Kommandos miteinander vergleichen:

set the useUnicode to false; set the UnicodeText of field "Results" of card "Single Line" of stack "Message Box" to numtochar(1071)

versus

set the useUnicode to true; set the UnicodeText of field "Results" of card "Single Line" of stack "Message Box" to numtochar(1071)

Nur im zweiten Fall erhalten Sie ein umgekehrtes R aus dem kyrillischen Zeichenbereich ("Я").

Weil diese Einstellung für die folgenden Experimente wesentlich ist, wird sie in den gezeigten Kommandos und Skripten der Sicherheit halber wiederholt - üblicherweise reicht es allerdings aus, das Kommando

set the useUnicode to false

einmalig auf der Kommandozeile der "Message Box" einzugeben, um die Unicode-Verwendung dauerhaft auszuschalten.

LiveCode verwendet von Haus aus MacRoman unter Mac OS X

Um den voreingestellten Zeichensatz zu erkennen, muß man alle möglichen Codes im Bereich 0…255 (die nicht durch Steuerzeichen belegt sind) ausgeben - der Einfachheit halber mithilfe eines kleinen LiveCode Skriptes.

Auch hier ist die "Message Box" wieder hilfreich. Damit Sie aber auch in den "Genuß" aller ausgegebenen Zeichen kommen (und nicht nur "Platzhalter" sehen müssen), empfiehlt es sich, vor der Skript-Ausführung auf eine Schrift umzuschalten, die alle ausgegebenen Zeichen kennt:

set the TextFont of field "Results" of card "Single Line" of stack "Message Box" to "Monaco"

Nach Begutachtung der Skript-Ausgabe können Sie diese Einstellung wieder rückgängig machen:

set the TextFont of field "Results" of card "Single Line" of stack "Message Box" to empty

Mithilfe des folgenden Skriptes können Sie jetzt verifizieren, daß LiveCode von Haus aus den Zeichensatz MacRoman für die Ausgabe verwendet - wenngleich nur auf Mac-Rechnern:

--------------------------------------------------------------------------------
-- showMacRoman displays a MacRoman character table (on Macs only!) --
--------------------------------------------------------------------------------

command showMacRoman
set the useUnicode to false

put empty into msg
put " |-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F | " & LF after msg
put "---+------------------------------------------------+---" & LF after msg
put "0- | | 0-" & LF after msg
put "1- | | 1-" & LF after msg

repeat with Row = 2 to 15
put format("%1X- |", Row) after msg # start new table row

repeat with Col = 0 to 15
local CharCode; put Row*16 + Col into CharCode
if (CharCode > 31) and (CharCode <> 127) then # is character printable?
put " " & NumToChar(CharCode) & " " after msg # show printable character
else
put " " after msg # skip non-printable characters
end if
end repeat

put format("| %1X-", Row) & LF after msg # end table row
end repeat


put "---+------------------------------------------------+---" & LF after msg
put " |-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F | " & LF after msg
end showMacRoman

Der gezeigte Quelltext kann z.B. als "Stack Script" eines neuen LiveCode Stack eingegeben (Speichern nicht vergessen!) und von der Message Box aus aufgerufen werden:

showMacRoman

liefert folgende Ausgabe:

|-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F |
---+------------------------------------------------+---
0- | | 0-
1- | | 1-
2- | ! " # $ % & ' ( ) * + , - . / | 2-
3- | 0 1 2 3 4 5 6 7 8 9 : ; < = > ? | 3-
4- | @ A B C D E F G H I J K L M N O | 4-
5- | P Q R S T U V W X Y Z [ \ ] ^ _ | 5-
6- | ` a b c d e f g h i j k l m n o | 6-
7- | p q r s t u v w x y z { | } ~ | 7-
8- | Ä Å Ç É Ñ Ö Ü á à â ä ã å ç é è | 8-
9- | ê ë í ì î ï ñ ó ò ô ö õ ú ù û ü | 9-
A- | † ° ¢ £ § • ¶ ß ® © ™ ´ ¨ ≠ Æ Ø | A-
B- | ∞ ± ≤ ≥ ¥ µ ∂ ∑ ∏ π ∫ ª º Ω æ ø | B-
C- | ¿ ¡ ¬ √ ƒ ≈ ∆ « » … À Ã Õ Œ œ | C-
D- | – — “ ” ‘ ’ ÷ ◊ ÿ Ÿ ⁄ € ‹ › fi fl | D-
E- | ‡ · ‚ „ ‰ Â Ê Á Ë È Í Î Ï Ì Ó Ô | E-
F- |  Ò Ú Û Ù ı ˆ ˜ ¯ ˘ ˙ ˚ ¸ ˝ ˛ ˇ | F-
---+------------------------------------------------+---
|-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F |


Auch für die Eingabe von Texten wird MacRoman verwendet - auf diese Weise lassen sich die bekannten Tastenkombinationen auf Macs auch unter LiveCode nutzen: so können Sie z.B. mithilfe der Kombination

Shift-Alt-k bzw. Shift-Alt-+

ein Apple-Logo eingeben. Dessen Code ermitteln Sie einfach über die Kommandozeile der "Message Box" mithilfe von

set the useUnicode to false; put CharToNum("")

Das Ergebnis lautet:

240

Wenn Sie die Gegenprobe mit dem kyrillischen Zeichen aus einem früheren Kommando versuchen:

set the useUnicode to false; put CharToNum("Я")

erhalten Sie

63

statt der ursprünglichen 1071 - und

set the useUnicode to false; put NumtoChar(63)

liefert natürlich nicht mehr das kyrillische Zeichen sondern stattdessen lediglich ein

?

Literaturhinweise

[1]
(RunRev Ltd.)
LiveCode | Create apps for multiple platforms. Quickly. Easily. Free
LiveCode ist eine (dem legendären HyperCard von Apple) nachempfundene Entwicklungsumgebung sowohl für stationäre (Windows, Linux, MacOS X) als auch für mobile (IOS, Android) Anwendungen. Ein visueller Editor ermöglicht den schnellen Entwurf von Bedienoberflächen, die der englischen Sprache nachempfundene Programmiersprache erlaubt auch Nicht-Programmierprofis die Entwicklung professioneller Anwendungen und das Konzept der "Modifikation am laufenden Programm" vereinfacht Test und Fehlerbehebung.
[2]
(Wikipedia)
Macintosh Roman
Von der Web-Seite: "Mac OS Roman (auch Macintosh Roman, kurz MacRoman) ist der von Mac OS verwendete 8-Bit-Zeichensatz für Westeuropa und Amerika. [...]"