Unterbinden der Kantenglättung von Schrift
Hallo Gast,
im Zuge eines Retroprojektes, an dem ich aktuell bastele, bemerkte ich, dass der XP auch Bitmap-Fonts auf ihrer Standardgröße ein Anti-Aliasing aufzwingt. Der Effekt ist zwar nicht allzu merklich, aber da ich mich in Sachen Farb(modi)restriktionen möglichst an Vorgaben halten will, wurmt es mich doch ein wenig.

Daher nun meine Frage: Ist es möglich, die Kantenglättung von Text via Script zu unterbinden?
Wenn Du etwas im Ermel [sic!] hast, oder dich gar des Scriptens erbarmst, freue ich mich dem Schnitzel ähnlich.
Je nach Aufwand revanchiere ich mich selbstverständlich adäquatest - vom feuchten Händedruck bis zum Creditseintrag ist wirklich alles möglich. ;)
P.S.: Anbei die verwendete Schriftart.
im Zuge eines Retroprojektes, an dem ich aktuell bastele, bemerkte ich, dass der XP auch Bitmap-Fonts auf ihrer Standardgröße ein Anti-Aliasing aufzwingt. Der Effekt ist zwar nicht allzu merklich, aber da ich mich in Sachen Farb(modi)restriktionen möglichst an Vorgaben halten will, wurmt es mich doch ein wenig.

Daher nun meine Frage: Ist es möglich, die Kantenglättung von Text via Script zu unterbinden?
Wenn Du etwas im Ermel [sic!] hast, oder dich gar des Scriptens erbarmst, freue ich mich dem Schnitzel ähnlich.
Je nach Aufwand revanchiere ich mich selbstverständlich adäquatest - vom feuchten Händedruck bis zum Creditseintrag ist wirklich alles möglich. ;)
Gruß, Shabz
P.S.: Anbei die verwendete Schriftart.
„Albrecht Dürer, geboren 1471, gestorben 1530.
Der Nürnberger Maler, der ganz Europa faszinierte; mit seinem scharfen Auge, seiner Meisterschaft in Linienführung und Plastizität, sowie seiner Leihwagenfirma.“
Der Nürnberger Maler, der ganz Europa faszinierte; mit seinem scharfen Auge, seiner Meisterschaft in Linienführung und Plastizität, sowie seiner Leihwagenfirma.“
Hallo Shab.
Möglichkeit 1) Du zeichnest den Text immer vorher auf eine Hilfsbitmap und lässt da dann ein Schwellenwert drüberlaufen, der je nachdem den Pixel voll deckend korrigiert oder transparent macht. Anschließend kopierst Du die Hilfsbitmap auf deine Zielbitmap.
Möglichkeit 2) Du findest heraus, wie die RGSS Font Struktur auf "C-Ebene" im Speicher aussieht (vergleiche RGSS Bitmaps im Speicher). Du kannst dich da dann reintricksen und wenn Du Glück hast, liegt da eine LOGFONT structure in der Du den lfQuality-Wert modifizieren kannst. Aber mit Fonts habe ich lange nichtmehr gearbeitet (bzw. auf C++ Ebene gäb's einfach eine Funktion SetTextRenderingHint mit der Du das Zeichnen auf Aliased setzen kannst), da kann ich dir ad hoc keine fertige Lösung bieten.
Möglichkeit 3) Du guckst, ob man das Font File vielleicht so anpassen kann, das es kein AntiAlias mehr unterstützt. (Ob das so funktioniert weiß ich nicht, hab nur in Erinnerung, dass das nicht von allen Schriften unterstützt wird.)
Möglichkeit 1) Du zeichnest den Text immer vorher auf eine Hilfsbitmap und lässt da dann ein Schwellenwert drüberlaufen, der je nachdem den Pixel voll deckend korrigiert oder transparent macht. Anschließend kopierst Du die Hilfsbitmap auf deine Zielbitmap.
Möglichkeit 2) Du findest heraus, wie die RGSS Font Struktur auf "C-Ebene" im Speicher aussieht (vergleiche RGSS Bitmaps im Speicher). Du kannst dich da dann reintricksen und wenn Du Glück hast, liegt da eine LOGFONT structure in der Du den lfQuality-Wert modifizieren kannst. Aber mit Fonts habe ich lange nichtmehr gearbeitet (bzw. auf C++ Ebene gäb's einfach eine Funktion SetTextRenderingHint mit der Du das Zeichnen auf Aliased setzen kannst), da kann ich dir ad hoc keine fertige Lösung bieten.
Möglichkeit 3) Du guckst, ob man das Font File vielleicht so anpassen kann, das es kein AntiAlias mehr unterstützt. (Ob das so funktioniert weiß ich nicht, hab nur in Erinnerung, dass das nicht von allen Schriften unterstützt wird.)
Das große Scientia Wiki zur Spielentwicklung 
Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs
Musik von Shabraxxx für euch
Guide zu den Audioformaten
Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.
Hallo Playm,
danke für die Antwort, und willkommen zurück. ;)
Möglichkeit eins (favorisiert, da einfach klingend) und zwei scheiden vermutlich aufgrund meiner Rubin-Unkenntnis aus (sprich das müsste mir wohl Playm jemand anderes basteln); Möglichkeit drei ist auszuschließen, es handelt sich um eine Bitmap-Font, die sich in anderen Anwendungen auf ihrer Standardgröße (Vielfache von 18) auch korrekterweise ohne Kantenglättung darstellen lässt.
danke für die Antwort, und willkommen zurück. ;)
Möglichkeit eins (favorisiert, da einfach klingend) und zwei scheiden vermutlich aufgrund meiner Rubin-Unkenntnis aus (sprich das müsste mir wohl Playm jemand anderes basteln); Möglichkeit drei ist auszuschließen, es handelt sich um eine Bitmap-Font, die sich in anderen Anwendungen auf ihrer Standardgröße (Vielfache von 18) auch korrekterweise ohne Kantenglättung darstellen lässt.
Gruß, Shabz
„Albrecht Dürer, geboren 1471, gestorben 1530.
Der Nürnberger Maler, der ganz Europa faszinierte; mit seinem scharfen Auge, seiner Meisterschaft in Linienführung und Plastizität, sowie seiner Leihwagenfirma.“
Der Nürnberger Maler, der ganz Europa faszinierte; mit seinem scharfen Auge, seiner Meisterschaft in Linienführung und Plastizität, sowie seiner Leihwagenfirma.“
Hm, ich habe hier mal eben was geschrieben, was funktionieren könnte ( habe es mit Arial, statt deinem Font ausprobiert )
Und zum testen hier mal ein angepasstes PlayTime Fenster:
Wenn dir das schon reicht und das mit deinem Font gut aussieht, kann ich das nochmal sauber aufbereiten.
Möglichkeit 2 klingt eigentlich spannend und interessant, aber aktuell fehlt mir die Zeit dazu.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# Nur für Tests. Es werden keine Nutzungsrechte eingeräumt. class Color #-------------------------------------------------------------------------- # * Bestimme den Unterschied zwischen zwei Farben anhand ihrer Farbwerte # 0 bei identische Farben # Immer 255 wenn mit was anderem als einer Farbe verglichen wird #-------------------------------------------------------------------------- def difference( color ) return 255 unless color.kind_of?( Color ) diff = (red - color.red).abs diff+= (green - color.green).abs diff+= (blue - color.blue).abs diff+= (alpha - color.alpha).abs diff / 4 end end class Window_Base #-------------------------------------------------------------------------- # * Schwellenwert #-------------------------------------------------------------------------- Alias_Trashold = 32 # something between 0 and 255 #-------------------------------------------------------------------------- # * Entferne beim Zeichnen die Kantenglättung #-------------------------------------------------------------------------- def draw_text_aliased( *args ) temp = Bitmap.new( contents.width, contents.height ) temp.draw_text( *args ) for x in 0...contents.width for y in 0...contents.height pixel = temp.get_pixel( x, y ) next if pixel.alpha.zero? if contents.font.color.difference( pixel ) < Alias_Trashold temp.set_pixel( x, y, contents.font.color ) else temp.set_pixel( x, y, Color.new(0,0,0,0) ) end end end contents.blt( 0, 0, temp, temp.rect ) nil end end |
zum Lesen den Text mit der Maus markieren
Und zum testen hier mal ein angepasstes PlayTime Fenster:
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#============================================================================== # ** Window_PlayTime Testanpassung #------------------------------------------------------------------------------ # Als neues Skript über Main einfügen #============================================================================== class Window_PlayTime < Window_Base #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = system_color draw_text_aliased(4, 0, 120, 32, "Play Time") @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color draw_text_aliased(4, 32, 120, 32, text, 2) end end |
zum Lesen den Text mit der Maus markieren
Wenn dir das schon reicht und das mit deinem Font gut aussieht, kann ich das nochmal sauber aufbereiten.
Möglichkeit 2 klingt eigentlich spannend und interessant, aber aktuell fehlt mir die Zeit dazu.
Das große Scientia Wiki zur Spielentwicklung 
Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs
Musik von Shabraxxx für euch
Guide zu den Audioformaten
Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.
Hallo Playm,
ein dickes Danke – in einem Testprojekt funktioniert es einwandfrei.
Ich bräuchte diese Funktion nun explizit im Message- und Choice-Window, aber da mir Playm jemand in Bälde ja ohnehin ein sehr kleines CMS mit abgeänderten Versionen eben dieser bastelt [Zitierung benötigt], hat das vermutlich noch Zeit, nicht, dass es da zu Inkompatibilität kommt.
ein dickes Danke – in einem Testprojekt funktioniert es einwandfrei.
Ich bräuchte diese Funktion nun explizit im Message- und Choice-Window, aber da mir Playm jemand in Bälde ja ohnehin ein sehr kleines CMS mit abgeänderten Versionen eben dieser bastelt [Zitierung benötigt], hat das vermutlich noch Zeit, nicht, dass es da zu Inkompatibilität kommt.
Gruß und Danke, Shabz
„Albrecht Dürer, geboren 1471, gestorben 1530.
Der Nürnberger Maler, der ganz Europa faszinierte; mit seinem scharfen Auge, seiner Meisterschaft in Linienführung und Plastizität, sowie seiner Leihwagenfirma.“
Der Nürnberger Maler, der ganz Europa faszinierte; mit seinem scharfen Auge, seiner Meisterschaft in Linienführung und Plastizität, sowie seiner Leihwagenfirma.“
Gern geschehen.
Nur aus Interesse: Welchen Schwellenwert hast Du als subjektiv besten empfunden? Hatte angenommen der würde um die 128 herum liegen, aber tatsächlich macht sich bei einer "normalen" Schriftart ein Wert zwischen 0 und 64 am Besten.
Wenn akut kein Bedarf besteht, arbeite ich dass dann nicht weiter aus. Tatsächlich halte ich das Skript für kantigen Text für nichts, was einen breiten Nutzen hat.
Nur aus Interesse: Welchen Schwellenwert hast Du als subjektiv besten empfunden? Hatte angenommen der würde um die 128 herum liegen, aber tatsächlich macht sich bei einer "normalen" Schriftart ein Wert zwischen 0 und 64 am Besten.
Wenn akut kein Bedarf besteht, arbeite ich dass dann nicht weiter aus. Tatsächlich halte ich das Skript für kantigen Text für nichts, was einen breiten Nutzen hat.
Das große Scientia Wiki zur Spielentwicklung 
Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs
Musik von Shabraxxx für euch
Guide zu den Audioformaten
Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.
Hallo Playm,
es hat mit den 32 perfekt funktioniert.
es hat mit den 32 perfekt funktioniert.
Gruß, Shabz
„Albrecht Dürer, geboren 1471, gestorben 1530.
Der Nürnberger Maler, der ganz Europa faszinierte; mit seinem scharfen Auge, seiner Meisterschaft in Linienführung und Plastizität, sowie seiner Leihwagenfirma.“
Der Nürnberger Maler, der ganz Europa faszinierte; mit seinem scharfen Auge, seiner Meisterschaft in Linienführung und Plastizität, sowie seiner Leihwagenfirma.“
Ganz so einfach ist das leider nicht. Das RGSS verwendet nämlich immer GGO_GRAY8_BITMAP (AA).Möglichkeit 2) Du findest heraus, wie die RGSS Font Struktur auf "C-Ebene" im Speicher aussieht (vergleiche RGSS Bitmaps im Speicher). Du kannst dich da dann reintricksen und wenn Du Glück hast, liegt da eine LOGFONT structure in der Du den lfQuality-Wert modifizieren kannst. Aber mit Fonts habe ich lange nichtmehr gearbeitet (bzw. auf C++ Ebene gäb's einfach eine Funktion SetTextRenderingHint mit der Du das Zeichnen auf Aliased setzen kannst), da kann ich dir ad hoc keine fertige Lösung bieten.
Frohes Neues, Cremno. o/
Lange nichtmehr gesehen.
Könntest Du noch mehr dazu schreiben? Mein Interesse ist geweckt.
Lange nichtmehr gesehen.
Könntest Du noch mehr dazu schreiben? Mein Interesse ist geweckt.
Das große Scientia Wiki zur Spielentwicklung 
Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs
Musik von Shabraxxx für euch
Guide zu den Audioformaten
Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.
Wie lautet die Funktion mit welcher GGO_GRAY8_BITMAP verwendet wird?
Mehr als a Allgäuer ka a Mensch it wera.
Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren
Ähnliche Themen
-
Taverne zum philosophischen Phönix »-
Assoziationskette
(22. Juni 2007, 10:00)
-
Taverne zum philosophischen Phönix »-
Assoziationskette
(22. Juni 2007, 10:00)
-
Hilfe, Feedback & Vorschläge »-
Fragen, Fehler, Kritik und Anregungen - RPG Studio [V6.4]
(24. Dezember 2008, 05:07)
-
Skript-Anfragen »-
Spezielle Schrift im Titelbildschirm
(17. Januar 2009, 23:28)
-
Skript-Anfragen »-
Spezielle Schrift im Titelbildschirm
(17. Januar 2009, 23:28)
