สวัสดีค่ะท่านผู้มาเยือน!  ลงชื่อเข้าใข้งาน สมัครสมาชิก

Post Reply 
 
Thread Rating:
  • 2 Votes - 4.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
RGSS3 สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง
03-10-2013, 09:14 PM (โพสต์นี้ถูกแก้ไขครั้งสุดท้ายเมื่อ: 03-11-2013 11:55 AM โดย admannon.)
โพสต์: #1
Exclamation สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง
Message Thai Vovel and Outline Fix

สคริปต์เขียนโดย : Admannon (เขียนเองนะครับ)


รายละเอียด :
เป็นสคริปต์แก้สระลอยในภาษาไทย และแก้ตัวอักษรแหว่งได้ด้วย (ถ้าไม่แก้ จะไม่เห็นไม้เอกเลยล่ะ)

สกรีนช๊อต :
ก่อนใช้
[ภาพ: 119untitled.jpg]

หลังใช้
[ภาพ: 18untitled2.jpg]

ลองแบบผสมดูบ้าง
[ภาพ: 120untitled.jpg]

เห็นความแตกต่างหรือยัง Cereal Guy

วิธีการใช้งาน :
ในสคริปต์นี้ใส่ล่าง Materials ก่อน Main
#==============================================================================​
# ** Message Thai Vovel and Outline Fix
#------------------------------------------------------------------------------
#  By : Admannon
#======================================================================​========

#=====================================================================​=========
# ** Window Base
#==========================================================================​====
class Window_Base < Window
  @@thai_vovel = "ัิีึื่้๊๋็์ุูํฺ"
  #--------------------------------------------------------------------------
  # * Preconvert Control Characters
  #--------------------------------------------------------------------------
  alias thai_fix_convert_escape_characters convert_escape_characters unless $@
  def convert_escape_characters(text)
    result = thai_fix_convert_escape_characters(text).clone
    result.gsub!(/ำ/) { "ํา" }
    result
  end
  #--------------------------------------------------------------------------
  # * Normal Character Processing
  #--------------------------------------------------------------------------
  def process_normal_character(c, pos)
    text_width = text_size©.width
    draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)
    pos[:x] += text_width unless @@thai_vovel.include?©
  end
end

#======================================================================​========
# ** Bitmap
#========================================================================​======
class Bitmap
  alias outline_fix_draw_text draw_text unless $@
  def draw_text(*args)
    s = text_size("  ").width
    a = args.size - (args[args.size - 1].is_a?(String) ? 1 : 2)
    args[a] = "  " + args[a].to_s
    if args[0].is_a?(Rect)
      args[0].x -= s
      args[0].width += s
    else
      args[0] -= s
      args[2] += s
    end
    outline_fix_draw_text(*args)
  end
end

ข้อตกลงการนำไปใช้งาน :
สคริปต์นี้ยังมีบัคอยู่บ้าง แนะนำกันได้นะครับ
และที่สำคัญ
Puking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking Rainbow

ใครเครดิตถึงผมด้วยนะครับ ผมขอล่ะ

Puking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking RainbowPuking Rainbow


ค้นหาโพสต์ทั้งหมดของสมาชิกผู้นี้
Like Post อ้างอิงข้อความนี้ตอนตอบกระทู้ internet explorer new windows 8
[-] The following 13 users Like admannon's post:
clashlucifer (06-22-2015), Mikichan (07-19-2016), Mysticphoenix (08-12-2013), Neoz Kaho (07-29-2014), OngkrubG (07-29-2014), oRaMeNo (04-21-2015), pomza2000 (03-10-2013), sanakakung (02-12-2014), sharifyasan (03-12-2013), shogun (05-09-2015), slost (10-21-2013), splendith (05-08-2015), นิราจ (08-12-2013)
03-10-2013, 10:47 PM
โพสต์: #2
RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง
;w; ลองพิมพ์ประโยดผสมไทยคำอังกฤษคำหรือยังนะ

ค้นหาโพสต์ทั้งหมดของสมาชิกผู้นี้
Like Post อ้างอิงข้อความนี้ตอนตอบกระทู้ chrome windows xp
[-] The following 1 user Likes hengmana's post:
TheMoo2000 (03-10-2013)
03-11-2013, 11:56 AM
โพสต์: #3
RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง
#hengmana
ลองแล้วนะครับ ขอบคุณที่แนะนำครับผม
ค้นหาโพสต์ทั้งหมดของสมาชิกผู้นี้
Like Post อ้างอิงข้อความนี้ตอนตอบกระทู้ internet explorer new windows 8
08-12-2013, 02:11 PM (โพสต์นี้ถูกแก้ไขครั้งสุดท้ายเมื่อ: 08-12-2013 02:14 PM โดย Mysticphoenix.)
โพสต์: #4
RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง
tips สำหรับคนที่ใช้สคริปไม่ได้ เป็นเพราะวงเล็บ+c มันกลายเป็นสัญลักษณ์ copyright

ฉะนั้นให้หาสัญลักษณ์ © แล้วแก้เป็นเป็น
Code:
(c)
แทนซะ ทุกจุดเลย

[ภาพ: webboard%20signature1_zpskhtut2jg.png]
การทำอาหารที่อร่อยที่สุด และเดือดร้อนชาวบ้านมากที่สุด กำลังจะเริ่มขึ้น
ค้นหาโพสต์ทั้งหมดของสมาชิกผู้นี้
Like Post อ้างอิงข้อความนี้ตอนตอบกระทู้ chrome windows 7
[-] The following 4 users Like Mysticphoenix's post:
jojo741963 (01-11-2014), Mikichan (07-19-2016), OngkrubG (07-30-2014), slost (10-21-2013)
03-07-2014, 08:27 PM
โพสต์: #5
RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง
ขอเสริมเกี่ยวกับเรื่องการจัด Font ให้โอเคนะครับ
ต้องอธิบายก่อนว่า ฟอนต์แต่ละตัวจะมีการเขียนโปรแกรมไว้ภายในฟอนต์ (ในสมัยนี้นะครับ) เพื่อทำการ เปลี่ยนตัวอักษรหนึ่ง เป็นอีกอักษรหนึ่งเมื่อตรงตามเงื่อนไขที่ตั้งไว้ อย่างเช่นของต่างประเทศก็จะมีตัว fi fl ffi ffl ของเขาหรืออื่นๆ ครับ เรียกว่า Ligature
[ภาพ: 149px-Ligature_drawing.svg.png]
ที่ต้องทำแบบนี้เพื่อความอ่านง่ายและดูถูกต้องตามหลักภาษาครับ ส่วนภาษาไทยก็จะมีใช้ในส่วนของสระด้านบนและด้านล่างครับ
[ภาพ: font%20ligature.png]
จากประโยค "พี่ฎูนู๋เป่าปี่" นะครับ ด้านซ้ายคือปิด Ligature ด้านขวาคือเปิด จะพบลักษณะการขยับอยู่ดังนี้
คำว่า "พี่" ต้องขยับไม่เอกขึ้นทางด้านบน
คำว่า "ฎู" ต้องขยับสระอูลงอีกเพื่อไม่ให้ซ้อนไปกับตัว ฎ
คำว่า "นู๋" เป็นการจัดแบบปกติ
คำว่า "เป่า" ต้องขยับไม้เอกหลบซ้ายมา
คำว่า "ปี่" ก็ขยับมาทั้งสระอีและไม้เอกครับ
ทีนี้ การขยับของแต่ละฟอนต์มันก็ไม่เท่ากันหรือไม่เหมือนกัน แต่ถ้าจะให้ไปลงลึกถึงรหัสของแต่ละฟอนต์ก็คงเป็นไปไม่ได้เพราะแต่ละฟอนต์ไม่ได้ใช้มา​ตรฐานในการกำหนดรหัสอักขระเดียวกัน และนี่คือทางแก้เบื้อต้นที่พอจะทำในทางโปรแกรมมิ่งได้ครับ
1. การขยับวรรณยุกต์ขึ้น คำนวณจากความสูงของสระอิอีอึอื แล้วบวกให้เลื่อนขึ้นไปด้านบน
2. การขยับสระต่ำลง คำนวณจาก ความสูงปกติของตัวอักษรอื่น เทียบกับความสูงของ ฎ ฏ และบวกให้เลื่อนลงด้านล่าง
3. การขยับไปด้านซ้าย อันนี้ต้องขึ้นอยู่กับดวง คือโดยปกติแล้วขนาดของ ง ป ญ ทั้งสามตัวนี้จะมีขนาดไม่เท่ากัน ให้เทียบขนาดจาก ง ให้วางสระเสมือนวางอยู่บนตัว ง แล้วมันจะขยับซ้ายมาเอง (แต่ก็ขึ้นอยู่กับดวง เพราะบางฟอนต์เขากันหน้า กันหลังตัวอักษรไม่เท่ากัน)
4. ในกรณี ญ ฐ ตามหลักต้องตัดเชิง(ขีดข้างใต้)ออก แต่ในกรณีนี้ไม่สามารถทำได้ อนุโลมให้ขยับลงแบบ ฎ ฏ ได้
5. แนะนำให้เขียนดักฟอนต์แบบเก่า และแบบใหม่ไว้นะครับ เพราะฟอนต์แบบเก่าเขาจะเรียงสระมาลอย ส่วนสระแบบใหม่เขาจะวางไว้เสมอกันครับ (เลยมีทั้งสระลอย และ สระจมนั่นเอง)
แต่ในตอนนี้เองเจ้าไมโครซอฟก็ออกฝีเจอร์ในการทำของพวกนี้มามากมายซึ่งจะได้รับพัฒนาใ​นอนาคตแน่นอน ซึ่งก็ไม่แน่นอนว่า RM รุ่นต่อๆ ไปจะรองรับฟีเจอร์ Ligature อยู่ไหม แต่อย่างไรก็อยากให้พัฒนาไว้กันเผื่อภาษาไทยไว้ฮะ
ถ้ามีโอกาสทำลองเอาตัวอย่างผมและวิธีแก้ที่ผมยกมาให้ดูนี่พัฒนาต่อนะครับ
เข้าสู่เว็บไซต์ของสมาชิกผู้นี้ ค้นหาโพสต์ทั้งหมดของสมาชิกผู้นี้
Like Post อ้างอิงข้อความนี้ตอนตอบกระทู้ firefox windows 8
[-] The following 3 users Like TheMoo2000's post:
dreamknight (04-19-2017), Kuntana (03-07-2014), slost (03-18-2014)
04-13-2017, 10:16 AM (โพสต์นี้ถูกแก้ไขครั้งสุดท้ายเมื่อ: 04-13-2017 02:32 PM โดย admannon.)
โพสต์: #6
RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง
หลังจากที่ลองแก้ใน RMMV ตามกระทู้ นี้ แล้ว เลยลองแก้ใน RPGVXAce ดู ตามนี้

#==============================================================================​
# ** Message Thai Vovel and Outline Fix
#------------------------------------------------------------------------------
#  By : Admannon
#======================================================================​========

#=====================================================================​=========
# ** Window Base
#==========================================================================​====
class Window_Base < Window
  @@thai_vovel = "ัิีึื่้๊๋็์ุูํฺ"
  #--------------------------------------------------------------------------
  # * Preconvert Control Characters
  #--------------------------------------------------------------------------
  alias thai_fix_convert_escape_characters convert_escape_characters unless $@
  def convert_escape_characters(text)
    result = thai_fix_convert_escape_characters(text).clone
    result.gsub!(/([#{@@thai_vovel}])ำ/) {"ํ\1า"}
    result.gsub(/ำ/) { "ํา" }
  end
  #--------------------------------------------------------------------------
  # * Normal Character Processing
  #--------------------------------------------------------------------------
  @@character_stack = " "
  def process_normal_character(c, pos)
    if @@thai_vovel.include?( c )
      @@character_stack += c
    else
      text_width = text_size(@@character_stack).width
      draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], @@character_stack)
      pos[:x] += text_width
      @@character_stack = c
    end
  end
end

#======================================================================​========
# ** Bitmap
#========================================================================​======
class Bitmap
  alias outline_fix_draw_text draw_text unless $@
  def draw_text(*args)
    s = text_size("  ").width
    a = args.size - (args[args.size - 1].is_a?(String) ? 1 : 2)
    args[a] = "  " + args[a].to_s
    if args[0].is_a?(Rect)
      args[0].x -= s
      args[0].width += s
    else
      args[0] -= s
      args[2] += s
    end
    outline_fix_draw_text(*args)
  end
end

ปล. ลองเอาไปใช้ได้นะ แต่ยังไม่ Edit ตัวเก่า เพราะไม่ได้เขียนผ่าน RPGVXAce โดยตรง
ค้นหาโพสต์ทั้งหมดของสมาชิกผู้นี้
Like Post อ้างอิงข้อความนี้ตอนตอบกระทู้ edge windows 10
[-] The following 2 users Like admannon's post:
Mysticphoenix (04-19-2017), sora (04-13-2017)
04-19-2017, 01:17 PM
โพสต์: #7
RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง
ขอบคุณคับ มีทางเลือกใหม่แล้วเรา

[ภาพ: webboard%20signature1_zpskhtut2jg.png]
การทำอาหารที่อร่อยที่สุด และเดือดร้อนชาวบ้านมากที่สุด กำลังจะเริ่มขึ้น
ค้นหาโพสต์ทั้งหมดของสมาชิกผู้นี้
Like Post อ้างอิงข้อความนี้ตอนตอบกระทู้ chrome windows 7
Post Reply 


ข้ามไปบอร์ด:


User(s) browsing this thread: 1 Guest(s)

Download Opera - A faster and more secure Web browser.