设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

怎样让字体能够自动替换?

查看数: 1496 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-5-25 18:42

正文摘要:

问题如图所示: 怎样让这些“□”替换成其他字体下的日文字呢?

回复

长弓巡洋集团 发表于 2015-5-25 19:50:32
本帖最后由 长弓巡洋集团 于 2015-5-25 19:53 编辑

RUBY 代码复制
  1. $_PS0 = {} if $_PS0 == nil  
  2. $_PS0["Draw_Text_DF"] = 20120127.2
  3. module PS0
  4.   module Draw_Text_DF
  5.     DO_PRE_CHECK = true
  6.     Font.default_name = "simhei"
  7.     ENG_FONT = "calibri"#(变为日文字体)
  8.     DO_CHANGE = 0
  9.     DRAW_TYPE = 0
  10.     REG1 = "0-9A-Za-z "  #(在这行写入需要的片假名)               
  11.     REG2 = ";:?!@#%^&*(){}[]=-+_/|,.<>" #(在这行写入需要的平假名)   
  12.     REG3 = "\"\'\$\\"  #(在这行写入需要的特殊符号)   
  13.     REG = /[#{REG1 + (REG2+REG3).gsub!(/./) { "\\" + $& }}]/
  14.   end
  15. end
  16. class Bitmap
  17.   alias old_draw_text draw_text
  18.   def draw_text(*args)
  19.    if self.font.name != Font.default_name && PS0::Draw_Text_DF::DO_CHANGE == 1
  20.     old_draw_text(*args)
  21.   else
  22.      last_font_name = self.font.name
  23.      if args[0].is_a?(Rect)
  24.      rect, str, align = args[0..2]
  25.      x, y, width, height = rect.x, rect.y, rect.width, rect.height
  26.     else
  27.       x, y, width, height, str, align = args[0..5]
  28.     end
  29.     str = str.to_s
  30.     align = 0 if align.nil?
  31.     if PS0::Draw_Text_DF::DO_PRE_CHECK == true
  32.       if str.scan(PS0::Draw_Text_DF::REG).size == 0
  33.         old_draw_text(*args)
  34.       elsif str.scan(PS0::Draw_Text_DF::REG).size == str.size
  35.         change_to_eng_font
  36.         old_draw_text(*args)
  37.       else
  38.         case PS0::Draw_Text_DF::DRAW_TYPE
  39.         when 0 ; draw_text_1by1(x, y, width, height, str, align)
  40.         when 1 ; draw_text_npass(x, y, width, height, str, align)
  41.         end
  42.       end
  43.     else
  44.       case PS0::Draw_Text_DF::DRAW_TYPE
  45.       when 0 ; draw_text_1by1(x, y, width, height, str, align)
  46.       when 1 ; draw_text_npass(x, y, width, height, str, align)
  47.       end
  48.     end
  49.  
  50.     self.font.name = last_font_name
  51.   end
  52.   end
  53.   def draw_text_1by1(x, y, width, height, str, align)
  54.     last_font_name = self.font.name
  55.     ox = 0
  56.     if align == 0
  57.       bx = x
  58.     else
  59.       str1 = str.clone.gsub!(PS0::Draw_Text_DF::REG)            { "" }
  60.       str2 = str.clone.gsub!(/(?!#{PS0::Draw_Text_DF::REG})./)  { "" }
  61.       str_width = text_size(str1).width
  62.       change_to_eng_font
  63.       str_width += text_size(str2).width
  64.       case align
  65.       when 0
  66.         bx = x
  67.       when 1
  68.         bx = x + (width - str_width) / 2
  69.       when 2
  70.         bx = x + (width - str_width)
  71.       end
  72.     end
  73.     str += "\P"
  74.     while (!(c = str.slice!(/./m)).nil?)
  75.       self.font.name = last_font_name
  76.       change_to_eng_font if c.slice(PS0::Draw_Text_DF::REG)
  77.        if c == "\P"
  78.         c = ""
  79.       else
  80.         old_draw_text((bx + ox), y, width, height, c, 0)
  81.         ox += text_size(c).width
  82.       end
  83.     end
  84.   end
  85.   def change_to_eng_font
  86.     self.font.name = PS0::Draw_Text_DF::ENG_FONT
  87.   end
  88. end


看括号里的注释
长弓巡洋集团 发表于 2015-5-25 19:27:38
找一个日文字体粘贴进去(但是中文还有木有就不清楚了)

点评

但是这个要怎么操作呢?我不懂脚本。  发表于 2015-5-25 19:47
请参考中英双字体脚本,把英文字符替换为所有片假字  发表于 2015-5-25 19:45
不是这个意思……我是希望中文能够用一种字体,日文能够自动替换成另一种……  发表于 2015-5-25 19:40
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 05:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表