#============================================================================== # ○画像フォント Ver1.00 # for RGSS2 # 西瓜 / Space not far # http://muspell.raindrop.jp/ # 文字表示に自作の画像を使うことが出来ます。 # 自分である程度スクリプトを弄れる人向けの素材になっています。 #============================================================================== # System/font.pngを参照して文字を表示します。 # レトロ風のゲームを制作するときに役に立つかもしれません。 # 各種制御文字には対応していません。 # 平仮名と片仮名と一部の記号にしか対応していないので、他に使いたい文字があれば # 適宜付け足してください。 # サンプル画像 → http://muspell.raindrop.jp/rgss/font.png class Bitmap alias snf_draw_text draw_text SNF_X_CRR = 0 # 文字位置補正 SNF_Y_CRR = 4 # 文字位置補正 SNF_FONT_WIDTH = 16 # フォント横幅 SNF_FONT_HEIGHT = 16 # フォント縦幅 SNF_FONT_TABLE = [ 'あ','い','う','え','お', 'か','き','く','け','こ', 'さ','し','す','せ','そ', 'た','ち','つ','て','と', 'な','に','ぬ','ね','の', 'は','ひ','ふ','へ','ほ', 'ま','み','む','め','も', 'や','ゆ','よ','わ','ん', 'ら','り','る','れ','ろ', 'が','ぎ','ぐ','げ','ご', 'ざ','じ','ず','ぜ','ぞ', 'だ','ぢ','づ','で','ど', 'ば','び','ぶ','べ','ぼ', 'ぱ','ぴ','ぷ','ぺ','ぽ', 'ぁ','ぃ','ぅ','ぇ','ぉ', 'っ','ゃ','ゅ','ょ','ゎ', 'ヴ','を','ー','〜','・', 'ア','イ','ウ','エ','オ', 'カ','キ','ク','ケ','コ', 'サ','シ','ス','セ','ソ', 'タ','チ','ツ','テ','ト', 'ナ','ニ','ヌ','ネ','ノ', 'ハ','ヒ','フ','ヘ','ホ', 'マ','ミ','ム','メ','モ', 'ヤ','ユ','ヨ','ワ','ン', 'ラ','リ','ル','レ','ロ', 'ガ','ギ','グ','ゲ','ゴ', 'ザ','ジ','ズ','ゼ','ゾ', 'ダ','ヂ','ヅ','デ','ド', 'バ','ビ','ブ','ベ','ボ', 'パ','ピ','プ','ペ','ポ', 'ァ','ィ','ゥ','ェ','ォ', 'ッ','ャ','ュ','ョ','ヮ', 'ヴ','ヲ','!','?','※', '0','1','2','3','4', '5','6','7','8','9', '0','1','2','3','4', '5','6','7','8','9', '「','」','+','−','×', '÷','%',':','(',')',] if true def draw_text(*args) bitmap = Cache.system("font") align = 0 if args[0].is_a?(Rect) str = *args[1] align = args[2] if args[2] != nil else str = *args[4] align = args[5] if args[5] != nil end return if str == nil return if str == "" if str.is_a?(Float) or str.is_a?(Integer) str = str.to_s end return unless str.is_a?(String) i = 0 length = 0 length = str.length # 文字バイト数 loop do s = str.slice!(/./m) break if s == nil index = SNF_FONT_TABLE.index(s) unless index == nil font_x = (index % 5) * 16 font_y = (index / 5) * 16 rect = Rect.new(font_x, font_y, SNF_FONT_WIDTH, SNF_FONT_HEIGHT) if args[0].is_a?(Rect) #rect型 rect_base = args[0] x = rect_base.x + i * SNF_FONT_WIDTH + SNF_X_CRR y = rect_base.y + SNF_Y_CRR case align when 1 x += (rect_base.width - length * SNF_FONT_WIDTH) / 2 when 2 x += rect_base.width - length * SNF_FONT_WIDTH end blt(x, y, bitmap, rect, 255) else #xy型 x = *args[0] + i * SNF_FONT_WIDTH + SNF_X_CRR y = *args[1] case align when 1 x += (width - length * SNF_FONT_WIDTH) / 2 when 2 x += width - length * SNF_FONT_WIDTH end blt(x, y + SNF_Y_CRR, bitmap, rect, 255) end else end i += 1 end end end end #~ あいうえお #~ かきくけこ #~ さしすせそ #~ たちつてと #~ なにぬねの #~ はひふへほ #~ まみむめも #~ やゆよわん #~ らりるれろ #~ がぎぐげご #~ ざじずぜぞ #~ だぢづでど #~ ばびぶべぼ #~ ぱぴぷぺぽ #~ ぁぃぅぇぉ #~ っゃゅょゎ #~ ヴをー〜・ #~ アイウエオ #~ カキクケコ #~ サシスセソ #~ タチツテト #~ ナニヌネノ #~ ハヒフヘホ #~ マミムメモ #~ ヤユヨワン #~ ラリルレロ #~ ガギグゲゴ #~ ダヂヅデド #~ ザジズゼゾ #~ バビブベボ #~ ァィゥェォ #~ ッャュョヮ #~ ヴヲ!?※ #~ 01234 #~ 56789 #~ 「」+−× #~ ÷%:()