Autor Thema: Zeichensatz  (Gelesen 26578 mal)

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #20 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...
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #21 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.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #22 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.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #23 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?

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #24 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^^
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #25 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

The-Programmerfish

  • Beiträge: 434
    • Profil anzeigen
Gespeichert
« Antwort #26 am: 10. June 2005, 14:39 »
Ich kann mich ja ma an nem Klingonischen Zeichensatz versuchen falls wir besuch von ausserhalb der Erde bekommen ^^
<- Verhasst, Verdammt, Vergöttert

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #27 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.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

T0ast3r

  • Gast
Gespeichert
« Antwort #28 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.
***************************************************************

MagicTom

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« Antwort #29 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...

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #30 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).

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #31 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

elfish_rider

  • Beiträge: 293
    • Profil anzeigen
Gespeichert
« Antwort #32 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.

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #33 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

T0ast3r

  • Gast
Gespeichert
« Antwort #34 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....

T-Head

  • Beiträge: 157
    • Profil anzeigen
    • http://www.t-head.de.vu/
Gespeichert
« Antwort #35 am: 16. June 2005, 15:12 »
Hi,

du kannst Win anwendungen aber acuh mit UNICODE Proggen!!

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #36 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)
\\o
o//
\o/

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #37 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.
*post*

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #38 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.
Agieren statt Konsumieren!

T-Head

  • Beiträge: 157
    • Profil anzeigen
    • http://www.t-head.de.vu/
Gespeichert
« Antwort #39 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!

 

Einloggen