Lowlevel

Lowlevel => tyndur => Thema gestartet von: T0ast3r am 06. June 2005, 20:38

Titel: Zeichensatz
Beitrag von: T0ast3r am 06. June 2005, 20:38
Hey wie siehts aus mit dem Zeichensatz?
Steht da schon was fest?
Nehmen wir den ASCII, ANSI, Unicode oder einen anderen Zeichensatz?
Titel: Zeichensatz
Beitrag von: T-Head am 07. June 2005, 18:14
Hi,

wir können ja nen eigenen entwickeln!  :lol:

----

Also ich wär für ASCII!  :wink:
Titel: Zeichensatz
Beitrag von: DDR-RAM am 07. June 2005, 18:26
Ich wäre ehrlich gesagt für Unicode. Wobei ich am anfang nur die ersten 128 Zeichen unterstützten würde, der Rest wird ignoriert ^^

MfG
DDR-RAM
Titel: Zeichensatz
Beitrag von: Golum am 07. June 2005, 19:24
Solange es ö kennt bin ich zufrieden ^^
Titel: Zeichensatz
Beitrag von: mastermesh am 07. June 2005, 19:25
Da muss ich ehrlich gesagt zugeben, dass ich in dem Bereich keine Ahnung hab  :?

Unicode scheint sich ja zum Quasi-Standart etabliert zu haben. Wäre deshalb auch für Unicode, wobei mich natürlich jemand eines besseren belehren kann.
Titel: Zeichensatz
Beitrag von: T-Head am 07. June 2005, 19:40
Hi,

ok, Unicode geht auch! S müssen halt diese Zeichen gen:


a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ä ö ü Ä Ö Ü
, ; . : - _ ! " § $ % & / ( ) = ? [ ] { } \ + - * < > # @


und wenn die auch gehn würden, wärs net schlecht:

~ | ² ³ € ' µ

sry wenn ich irgend welche vergessen hab!
Titel: Zeichensatz
Beitrag von: kevin am 07. June 2005, 22:35
Ich wäre ja zumindest noch für:
0 1 2 3 4 5 6 7 8 9

Oder man könnte auch einfach sagen: ASCII plus Umlaute und ß. ;)
Titel: Zeichensatz
Beitrag von: matthieuriolo am 08. June 2005, 12:13
Das erweiterte AscII kennt umlaute ... aber da es nicht einheitlich is doch lieber UniCode ;)
Titel: Zeichensatz
Beitrag von: Svenska am 08. June 2005, 13:52
Ich wäre auch noch fuer etwas:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9
Ä ä Ö ö Ü ü ß Ã… Ã¥ ø æ (jew. mit Grossbuchstaben)
diverse Sonderzeichen, u.a. folgende:
 Â½ § ! " @ # £ ¤ $ % € & / { ( [ ) ] = } + ? \  * ' < > | , ; . : - _ ~ ^ ¨ µ
á Á à À â ã é É è È ë ê ó Ó ò Ò ô õ ... usw (mir persönlich nicht so wichtig)


Wenn etwas fehlt, so ist das nicht vollständig :)
Diese Zeichen gehören in jede Schriftart, um damit auch ausserhalb von Deutschland/Amerika etwas anfangen zu können.
Ich wäre auch fuer Unicode, aber vorerst nur das lateinische Alphabet mit Sonderzeichen, also nichts japanisches/kyrillisches [kann ich eh nicht/nur wenig lesen *g*]

Das erweiterte ASCII ... arbeitet mit Codepages. Oder halt einheitlich unter dem Namen ANSI (ist ja ASCII plus Erweiterung).

Svenska
Titel: Zeichensatz
Beitrag von: T-Head am 08. June 2005, 15:23
Hi,

es dürfen auf jeden Fall nicht nur diese gehn:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9


Denn dann könnt mans ja gleich vergessen, wenn man dann z.B. net mal ne Html Seite erstellen kann!  :wink:

Ich denk, dass man am besten so viel Sonderzeichen wie möglich macht!  :P
Titel: Zeichensatz
Beitrag von: hannibal am 08. June 2005, 17:59
wie waers, wenn man sich einfach eine standard-tastatur hernimmt (einmal deutsch, einmal englisch) und alle zeichen, die darauf abgedruckt sind einfach integriert? :p

kann ja nicht so schwer sein ;)
Titel: Zeichensatz
Beitrag von: DarkThing am 08. June 2005, 19:01
Ich finde der Zeichensatz sollte mit möglichst vielen anderen Betriebssystemen kompatibel bleiben. Also keinen eigenen, sondern Unicode oder ASCII. Weil man heute einfach die ganzen Zeichen braucht würd ich nen Unicode nehmen.
Titel: Zeichensatz
Beitrag von: Svenska am 09. June 2005, 00:02
ASCII nicht als internes System, da kann man der Kompatiblität halber (Unicode ist erstmal die Zukunft) auch Unicode nehmen. ASCII kann ja nachträglich fuer z.B. alte Textdateien etc implementiert werden (bitte auch mit den grafischen CP437-Zeichen *g*)

Nicht zu vergessen sind auch andere Sprachen - Schwedisch, Dänisch, Norwegisch, Finnisch sind noch relativ einfach zu implementieren
(Šå Æ æ Ø ø sowie Ä ä Ö ö Ü ü), bei anderen Sprachen wird das schon etwas schwieriger. Fuer den Anfang halt die Sonderzeichen und das lateinische Alphabet mit ein paar "veränderten" Buchstaben, wie halt zB Umlaute.

Svenska
Titel: Zeichensatz
Beitrag von: DarkThing am 09. June 2005, 14:09
Start->Ausführen: charmap starten
Da gibts die ganzen Zeichen und das sind bei Arial viele. Ne andere Möglichkeit ist es das ganze wie bei Windows laufen zu lassen: Wenn mans aus Deutsch stellt ist ein ö ein ö, wenn mans auf was anderes stellt wird aus dem gleichen Hex-Wert ein anderes Zeichen. Ich glaub das waren die Codepages die das so ermöglichen.

Egal, ich bin auf jeden Fall für Unicode.
Titel: Zeichensatz
Beitrag von: T-Head am 09. June 2005, 14:44
Hi,

wärs auch möglich, dass man wählen kann, welchen Zeichensatz man verwenden möchte?? Oder is dass dann zu Aufwendig??  :?


Auf jeden fall müssen alle Zeichen rein!  :!:


Und dann noch ne frage: Wie sieht es eigentlich mit schriftarten aus, wie macht man das dann? Sind das dann einzelne Bildchen, die z.B. in ein Archiev gepackt werden, oder wie soll das dan gehn? So was hab ich nämlich noch nie gemacht!  :?:
Titel: Zeichensatz
Beitrag von: SSJ7Gohan am 09. June 2005, 15:58
Normalerweise (bei TrueType oder ähnlichen Schriftarten) werden die Fonts als Vektoren gespeichert und dann beim Rendern gerastert. So kann die Font ohne Qualitätsverluste beliebig vergrößert werden. Es gibt aber auch Fonts die einfache Bitmaps sind. Zum Fontrendern könnte man FreeType verwenden, das ist eine Bibliotek dafür, die nur die C stdlib benötigt.
Titel: Zeichensatz
Beitrag von: kevin am 09. June 2005, 17:11
Als erstes kommen auf jeden Fall Bitmapfonts. Danach kann man immer noch weitersehen, was TrueType angeht. Intern wird man die ja bei der Verwendung auch erstmal als Bitmapfonts rendern.
Titel: Zeichensatz
Beitrag von: T-Head am 09. June 2005, 18:23
Hi,
jetz noch eine frage: Wie kann ich solche Fonts erstellen! hab mich nämlich da noch nie drum gekümmert, wie die ganzen SChriftarten gemacht werdenb!  :oops:
Titel: Zeichensatz
Beitrag von: DarkThing am 09. June 2005, 19:10
Bitmap-Fonts werden wie kleine Bilder erstellt. Jedes Zeichen bekommt ein eigenes Bild, das man z.B. in Paint erstellen kann. Diese Bilder werden dann in einer Datei zusammengefasst. Wie man True-Types am besten erstellt weiß ich jetzt auch nicht, aber ich halte es für realisitsch auch Bilder zu erstellen, die dann von nem Prog analysiert werden und in die richtigen Daten umgewandelt werden.
Titel: Zeichensatz
Beitrag von: matthieuriolo am 09. June 2005, 19:41
Und für jede grösse ein eigenes Bild? Skalieren wird ein bisschen schwierig ;)
Titel: Zeichensatz
Beitrag von: kevin am 09. June 2005, 20:38
Ja, Bitmapfonts werden üblicherweise für einige wenige verschiedene Größen erstellt und auf die ist man dann bei der Verwendung halt beschränkt. Es hat schon seine Gründe, warum es andere Systeme gibt...
Titel: Zeichensatz
Beitrag von: SSJ7Gohan am 09. June 2005, 22:26
IMHO wäre es besser, erstmal eine libc zu coden und dann FreeType als Rasterer zu benutzen, das ist portabel, einfacher als Bitmapfonts einzubauen und bis es eine GUI gibt braucht man ja eh keine Fonts da man die Ausgabe im Textmodus machen kann.
Titel: Zeichensatz
Beitrag von: kevin am 09. June 2005, 23:45
Bin mir nicht hundertprozentig sicher, aber macht FreeType wirklich was anderes als Schritarten in Bitmaps zu rendern? Dann wären wir doch wieder bei Bitmapfonts, die man als Grundlage zuerst einbauen könnte.

Davon ist es natürlich auch die Frage, ob man einfach alles von irgendwo zusammenkopieren oder mehr selber machen will. In ersterem Fall bekommt man wohl ganz klar ein "brauchbareres" System (aus Sicht eines Anwenders), im letzteren ist sicher der Lerneffekt höher.
Titel: Zeichensatz
Beitrag von: DarkThing am 10. June 2005, 13:21
Für ne GUI macht TrueType auf jeden Fall Sinn. Aber solang man noch in der Konsole ist geht auch ein Bitmap Font.

----------

Wie werden denn jetzt TrueTypes erstellt? Also ich glaube zu wissen dass da bestimmte Strecken gespeichert werden und Winkel, wie die sich zusammensetzen. Stimmt das und wie werden die Daten generiert?
Titel: Zeichensatz
Beitrag von: Roshl am 10. June 2005, 14:13
Kurze Aufklärung:
Letztlich wird bei Schriften IMMER mit Bitmaps gearbeitet, liegen sie nicht schon als Bitmap vor, werden sie erst noch durch einen Rasterizer geschickt der Bitmaps daraus macht. Truetype definiert seine Schriften durch Bezierkurven, das ist im Prinzip Vektorbasiert, lässt als skalieren ohne Qualitätsverlust zu. Er gibt verschiedene Arten von Bezierkurven, die Einfachste wird durch 3 Punkte definiert. 2 für Anfang und Ende und 1 um die Wölbung festzulegen. Die Kurve startet an den Punkten und nähert sich dem Wölbungspunkt an. Man kann auch mehrere Wölbungspunkte definieren, dadurch wird die Berechnugn denn komplizierter. Der Einfachheit halber zerlegt man alle aber in die einfachste Form, da man Bezierkurven einfach aneinanderlegen kann und trotzdem das selbe Ergebnis rauskommt.

Sollte erstmal reichen^^
Titel: Zeichensatz
Beitrag von: Svenska am 10. June 2005, 14:26
Zitat von: T-Head
wärs auch möglich, dass man wählen kann, welchen Zeichensatz man verwenden möchte?? Oder is dass dann zu Aufwendig??  :?

Bitte keine Zeichensätze/Codepages! Das ist das allerletzte... intern bitte bitte Unicode... der Rest ist nur fuer Kompatiblität wichtig.


Zitat
Auf jeden fall müssen alle Zeichen rein!  :!:
Erstmal das lateinische Alphabet mit Veränderungen, kyrillisch und japanisch/chinesisch muss dann jmd machen, der's kann :D

Svenska
Titel: Zeichensatz
Beitrag von: The-Programmerfish am 10. June 2005, 14:39
Ich kann mich ja ma an nem Klingonischen Zeichensatz versuchen falls wir besuch von ausserhalb der Erde bekommen ^^
Titel: Zeichensatz
Beitrag von: Roshl am 10. June 2005, 14:44
Vergesst nicht das auch Elben unter uns sein könnten...
Ne ma im Ernst, zu Anfang sollte man sich auf etwas festlegen, das dynamische kann später dazugeproggt werden.
Titel: Zeichensatz
Beitrag von: T0ast3r am 10. June 2005, 19:19
@ALL: INFORMATION!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
***************************************************************
Jeder Buchstabe ist im Unicode genau 2 Bytes lang.
ANSI u. ASCII nur 1 Byte.
Das ist der Grund warum Unicode mehr Platz braucht, und deswegen auch chinessche Schriftzeichen unterstützt.
Ich selbst würde vorerst eine ASCII (erweitert) Version machen, dann ev. auch Unicode.
PS: In Windows gibt's (fast) jeden API Aufruf 2mal:
1mal als ANSI/ASCII (sie sind einander sehr ähnlich)
... und 1mal als Unicode (Endung der API: A,B,C....)
Nur mal so zur Info........
Wie gesagt könnte es dann auch mehrere Unterstützten, wenn eben die API verschiedene Zeichensätze unterstützt.
***************************************************************
Titel: Zeichensatz
Beitrag von: MagicTom am 10. June 2005, 20:01
Zitat von: T0ast3r
Jeder Buchstabe ist im Unicode genau 2 Bytes lang.

Das lässt sich pauschal nicht sagen, es gibt auch 4 byte unicode characters...
Titel: Zeichensatz
Beitrag von: DarkThing am 10. June 2005, 20:16
Unter Win fangen die Unicode Funktionen immer mit _w an (steht für Widecharacter). Ich bin auf jeden Fall dafür das System komplett auf Unicode aufzubauen und ASCII nur als Zusatz einzubauen. So hat man später keine Probleme mit anderen Zeichen und ich denke dass bald fast nur noch Unicode verwendet wird (außer wenn MS wieder was eigenes macht).
Titel: Zeichensatz
Beitrag von: DDR-RAM am 10. June 2005, 21:19
Also,

seit windows 2000 oder nt oder was auch immer, verwendet windows intern Unicode. Winapi funktionen gibt es meist in 2 Varianten,
eine mit Suffix A (ASCII/ANSI) und eine mit Suffix W (Wide character/Unicode).
z.B. CreateFileA und CreateFileW

In den c standard libs (evtl. ms spezifisch was jetzt kommt) gibt es 4 verschiedene varianten. z.B.: von strstr
1) strstr, klar ascii
2) wcsstr, unicode
3) _mbsstr, multibyte character set kann ascii oder unicode sein, ist von lokalen einstellungen abhänging
4) _tcsstr, wird je nach einstellung gemappt auf strstr, wcsstr oder _mbsstr

Ich hoffe, ich konnte alle klarheiten beseitigen.
Ich bin immernoch für unicode als internen Zeichensatz.
Das lässt alle Möglichkeiten offen.
Am Anfang lässt man halt jedes zweite byte ungenutzt, bzw. die standardzeichen werden erstmal als balken (z.b.: 䳳 ^^ ) oder gar nicht dargestellt.
Dann gibt es entweder die Möglichkeit, nur unicode zu unterstützen oder auch standard ascii (7 bit) oder halt auch extended ascii und dann halt an Hand der aktuellen codepage in unicode umzuwandeln.
Windoofs macht letzteres und ich würde auch letzteres machen.
standard ascii in unicode umwandeln sollte nicht so problematisch sein.
Und es bringt keine Punkte intern erst irgendwelchen ascii zu verwenden und dann später mal umstellen, weil halt ne menge über strings geht und man dann den kot neuschreiben müsste. ;-)

MfG
DDR-RAM
Titel: Zeichensatz
Beitrag von: elfish_rider am 10. June 2005, 21:35
Also Unicode verwendet mehr als 2^16 Zeichen. Und mit Unicode ist eigentlich nicht die Kodierung gemeint, sondern nur die Buchstaben (die Zahlen zugeordnet sind). Es gibt dann mehrere Kodierungen für diese Unicodes (UTF-7, UTF-8, UTF-16 Little Endian, UTF-16 Big Endian, UTF-32). Also kann man nicht grundsätzlich sagen, Unicode brauche mehr Speicher, das hängt von der Codierung ab.
Titel: Zeichensatz
Beitrag von: DDR-RAM am 10. June 2005, 22:16
ja, also als Kodierung würde ich mal UTF-8 vorschlagen, für die die nichts damit anfangen können:
ein Zeichen wird mit 1 bis 4 Bytes kodiert
us-acsii (7bit) zeichen sind ein Byte breit, sie entsprechen unicode 0x00-0x7F.
0x0080 - 0x07FF werden in 2 Bytes kodiert, das erste byte
sieht so aus 110xxxxx, das zweite so 10xxxxxx, sind 11 variable bits 2^11 = 2048, (0x800 passt also)
0x0800 - 0xFFFF werden in 3 Bytes kodiert, das erste byte
sieht so aus 1110xxxx, das zweite so 10xxxxxx, das dritte so 10xxxxxx
16 variable bits, 2^16 = 65536 (0x10000 passt also ;-) )
0x10000 - 0010FFFF werden in 4 Bytes kodiert, das erste byte
sieht so aus 11110xxx, das zweite/dritte/vierte so 10xxxxxx,
sind 21 variable bits 2^21 = 2 M (^^) (0x1FFFFF, sind als ca. doppelt soviel ;-) )
vorteil ist halt, das man standard-ascii net konvertieren muss (also nur 1 Byte, keine 2). Deshalb allgemein sehr platzsparend.
Durch die Redundanzen, die man leicht erkennt, kann man den Text irgendwo in der anfangen zu lesen. also beschädigte dokumente sind nicht komplett verloren.
Nachteil ist, das man die Textlänge nicht einfach durch die Anzahl der Bytes herausfindet.

MfG
DDR-RAM
Titel: Zeichensatz
Beitrag von: T0ast3r am 16. June 2005, 14:54
Also ich würde (wie bei Windows) 2 Bytes pro Buchstabe nehmen.
dann könnten wir dadurch auch kompatibilität mit Windows-anwendungen führen....
Titel: Zeichensatz
Beitrag von: T-Head am 16. June 2005, 15:12
Hi,

du kannst Win anwendungen aber acuh mit UNICODE Proggen!!
Titel: Zeichensatz
Beitrag von: hannibal am 16. June 2005, 15:15
ich waer ja fuer den ganz normalen ascii-zeichensatz... a-zA-Z0-9 + sonderzeichen .. vorerst mal. da wir einen mikrokernel haben ist die modularisierung sowieso ohneweiters moeglich - und damit ist auch das ersetzen des zeichensatzes keine hexerei. (man koennte auch einfach mehrere gleichzeitig verwenden, je nachdem was die anwendung angemeldet hat verwenden zu wollen)
Titel: Zeichensatz
Beitrag von: Legend am 16. June 2005, 16:15
Zitat von: hannibal
ich waer ja fuer den ganz normalen ascii-zeichensatz... a-zA-Z0-9 + sonderzeichen .. vorerst mal. da wir einen mikrokernel haben ist die modularisierung sowieso ohneweiters moeglich - und damit ist auch das ersetzen des zeichensatzes keine hexerei. (man koennte auch einfach mehrere gleichzeitig verwenden, je nachdem was die anwendung angemeldet hat verwenden zu wollen)


Aber nur wenn du dann entweder wie unter Windows praktische für alles zwei Versionen haben willst oder ausnahmslos später alle Anwendungen durcheinander bringen willst. Der Aufwand den ihr jetzt sparen würdet, würde sich später mindestens genausoschlimm wieder bemerkbar machen.
Titel: Zeichensatz
Beitrag von: n3Ro am 16. June 2005, 18:22
Bei einem Mikrokernel wäre es für das Kerneldesign schnurzpiepegal ob im system unicode oder ascii oder utf8 etc. verwendet wird da er sich sowieso nicht damit rumplagen muss, und das ganze von den Interfaces der einzelnen Serverprozesse abhängt. Aber wir machen ja leider keinen Mikrokernel, sondern AFAIK einen modularisierten Monolithischen Kernel.
Titel: Zeichensatz
Beitrag von: T-Head am 16. June 2005, 19:48
Hi,

ich denk auch, dass wir den Zeichensatz, den wir jetzt beschließen, dann auch nicht mehr ändern, wir könnten ja ne Umfrage machen!
Titel: Zeichensatz
Beitrag von: xormore am 16. June 2005, 20:37
Hi,

ich bin grad frisch angemeldet, aber hab die Entwicklung von LOST ein wenig mitverfolgt und möchte mal ein bisschen meinen Saft dazu geben. Ich fang da gleich mal mit einer Frage an: Wo(zu) braucht man (eine Festlegung auf) einen Zeichensatz im Kernel? Und warum darüber eine Umfrage veranstalten? Läuft das dann so in der Art wie "Was ist deine Lieblingsfarbe"? - "Was ist dein Lieblingszeichensatz?"

LOST wird, soweit ich das verstanden habe, ein OS mit grafischer Oberfläche. Ihr braucht also Fonts, die den von euch festgelegten Zeichensatz umfassen. Wollt ihr die etwa selber machen (eventuell kann man ja auch bestehende konvertieren, aber das sicherlich ähnlich aufwändig) oder was Fertiges nehmen? Ich denke da jetzt mal an FreeType, was ja von mehreren Hobby-OSs zum Fontrendering genutzt wird.

Ich würde vorschlagen den Kernel mit möglichst wenig Zeichenkettenfunktionen zu überladen und intern auch nur mit ASCII zu arbeiten. Darauf aufbauend kann man immer noch UTF-8 nachrüsten, wenn es wirklich nötig sein sollte. Mir fällt dafür allerdings kein wirklicher Grund ein.

xormore
Titel: Zeichensatz
Beitrag von: hannibal am 16. June 2005, 21:26
Zitat von: Legend
Zitat von: hannibal
ich waer ja fuer den ganz normalen ascii-zeichensatz... a-zA-Z0-9 + sonderzeichen .. vorerst mal. da wir einen mikrokernel haben ist die modularisierung sowieso ohneweiters moeglich - und damit ist auch das ersetzen des zeichensatzes keine hexerei. (man koennte auch einfach mehrere gleichzeitig verwenden, je nachdem was die anwendung angemeldet hat verwenden zu wollen)


Aber nur wenn du dann entweder wie unter Windows praktische für alles zwei Versionen haben willst oder ausnahmslos später alle Anwendungen durcheinander bringen willst. Der Aufwand den ihr jetzt sparen würdet, würde sich später mindestens genausoschlimm wieder bemerkbar machen.


ich glaube ihr missversteht hier einiges..

Zitat
aus dem lost-wiki:
Der Kernel ist als Micro- bzw. Nanokernel angelegt.


=> dem kernel is es scheissegal welchen zeichensatz wir haben.
=> die anwendung kann auch verschiedene zeichensaetze verwenden - sofern ein modul/eine lib/whatever vorhanden ist, die die noetigen funktionen mitliefert.

=>  :P