Thread Rating:
  • 2 Vote(s) - 4.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
RGSS3 สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง
#1
Exclamation 
Message Thai Vovel and Outline Fix

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


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

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

หลังใช้
[Image: 18untitled2.jpg]

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

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

วิธีการใช้งาน :
ในสคริปต์นี้ใส่ล่าง Materials ก่อน Main
[shcode=rails]
#==============================================================================
# ** 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
[/shcode]

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

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

/puke/puke/puke/puke/puke/puke/puke/puke/puke/puke/puke


[-] The following 13 users say Thank You to admannon for this post:
  • clashlucifer, Mikichan, Mysticphoenix, Neoz Kaho, OngkrubG, oRaMeNo, pomza2000, sanakakung, sharifyasan, shogun, slost, splendith, นิราจ
Reply
#2
;w; ลองพิมพ์ประโยดผสมไทยคำอังกฤษคำหรือยังนะ
[-] The following 1 user says Thank You to hengmana for this post:
  • TheMoo2000
Reply
#3
#hengmana
ลองแล้วนะครับ ขอบคุณที่แนะนำครับผม
Reply
#4
tips สำหรับคนที่ใช้สคริปไม่ได้ เป็นเพราะวงเล็บ+c มันกลายเป็นสัญลักษณ์ copyright

ฉะนั้นให้หาสัญลักษณ์ © แล้วแก้เป็นเป็น
Code:
(c)
แทนซะ ทุกจุดเลย
[Image: webboard%20signature1_zpskhtut2jg.png]
การทำอาหารที่อร่อยที่สุด และเดือดร้อนชาวบ้านมากที่สุด กำลังจะเริ่มขึ้น
[-] The following 4 users say Thank You to Mysticphoenix for this post:
  • jojo741963, Mikichan, OngkrubG, slost
Reply
#5
ขอเสริมเกี่ยวกับเรื่องการจัด Font ให้โอเคนะครับ
ต้องอธิบายก่อนว่า ฟอนต์แต่ละตัวจะมีการเขียนโปรแกรมไว้ภายในฟอนต์ (ในสมัยนี้นะครับ) เพื่อทำการ เปลี่ยนตัวอักษรหนึ่ง เป็นอีกอักษรหนึ่งเมื่อตรงตามเงื่อนไขที่ตั้งไว้ อย่างเช่นของต่างประเทศก็จะมีตัว fi fl ffi ffl ของเขาหรืออื่นๆ ครับ เรียกว่า Ligature
[Image: 149px-Ligature_drawing.svg.png]
ที่ต้องทำแบบนี้เพื่อความอ่านง่ายและดูถูกต้องตามหลักภาษาครับ ส่วนภาษาไทยก็จะมีใช้ในส่วนของสระด้านบนและด้านล่างครับ
[Image: font%20ligature.png]
จากประโยค "พี่ฎูนู๋เป่าปี่" นะครับ ด้านซ้ายคือปิด Ligature ด้านขวาคือเปิด จะพบลักษณะการขยับอยู่ดังนี้
คำว่า "พี่" ต้องขยับไม่เอกขึ้นทางด้านบน
คำว่า "ฎู" ต้องขยับสระอูลงอีกเพื่อไม่ให้ซ้อนไปกับตัว ฎ
คำว่า "นู๋" เป็นการจัดแบบปกติ
คำว่า "เป่า" ต้องขยับไม้เอกหลบซ้ายมา
คำว่า "ปี่" ก็ขยับมาทั้งสระอีและไม้เอกครับ
ทีนี้ การขยับของแต่ละฟอนต์มันก็ไม่เท่ากันหรือไม่เหมือนกัน แต่ถ้าจะให้ไปลงลึกถึงรหัสของแต่ละฟอนต์ก็คงเป็นไปไม่ได้เพราะแต่ละฟอนต์ไม่ได้ใช้มาตรฐานในการกำหนดรหัสอักขระเดียวกัน และนี่คือทางแก้เบื้อต้นที่พอจะทำในทางโปรแกรมมิ่งได้ครับ
1. การขยับวรรณยุกต์ขึ้น คำนวณจากความสูงของสระอิอีอึอื แล้วบวกให้เลื่อนขึ้นไปด้านบน
2. การขยับสระต่ำลง คำนวณจาก ความสูงปกติของตัวอักษรอื่น เทียบกับความสูงของ ฎ ฏ และบวกให้เลื่อนลงด้านล่าง
3. การขยับไปด้านซ้าย อันนี้ต้องขึ้นอยู่กับดวง คือโดยปกติแล้วขนาดของ ง ป ญ ทั้งสามตัวนี้จะมีขนาดไม่เท่ากัน ให้เทียบขนาดจาก ง ให้วางสระเสมือนวางอยู่บนตัว ง แล้วมันจะขยับซ้ายมาเอง (แต่ก็ขึ้นอยู่กับดวง เพราะบางฟอนต์เขากันหน้า กันหลังตัวอักษรไม่เท่ากัน)
4. ในกรณี ญ ฐ ตามหลักต้องตัดเชิง(ขีดข้างใต้)ออก แต่ในกรณีนี้ไม่สามารถทำได้ อนุโลมให้ขยับลงแบบ ฎ ฏ ได้
5. แนะนำให้เขียนดักฟอนต์แบบเก่า และแบบใหม่ไว้นะครับ เพราะฟอนต์แบบเก่าเขาจะเรียงสระมาลอย ส่วนสระแบบใหม่เขาจะวางไว้เสมอกันครับ (เลยมีทั้งสระลอย และ สระจมนั่นเอง)
แต่ในตอนนี้เองเจ้าไมโครซอฟก็ออกฝีเจอร์ในการทำของพวกนี้มามากมายซึ่งจะได้รับพัฒนาในอนาคตแน่นอน ซึ่งก็ไม่แน่นอนว่า RM รุ่นต่อๆ ไปจะรองรับฟีเจอร์ Ligature อยู่ไหม แต่อย่างไรก็อยากให้พัฒนาไว้กันเผื่อภาษาไทยไว้ฮะ
ถ้ามีโอกาสทำลองเอาตัวอย่างผมและวิธีแก้ที่ผมยกมาให้ดูนี่พัฒนาต่อนะครับ
[-] The following 3 users say Thank You to TheMoo2000 for this post:
  • dreamknight, [IRPG] Kuntana, slost
Reply
#6
หลังจากที่ลองแก้ใน RMMV ตามกระทู้ นี้ แล้ว เลยลองแก้ใน RPGVXAce ดู ตามนี้

https://gist.github.com/admannon/07eb77c...192b0f1dc6
[-] The following 1 user says Thank You to admannon for this post:
  • Mysticphoenix
Reply
#7
ขอบคุณคับ มีทางเลือกใหม่แล้วเรา
[Image: webboard%20signature1_zpskhtut2jg.png]
การทำอาหารที่อร่อยที่สุด และเดือดร้อนชาวบ้านมากที่สุด กำลังจะเริ่มขึ้น
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)