สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง - Printable Version +- irpg Community (https://irpg.in.th) +-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html) +--- Forum: RGSS and JS Showcase (https://irpg.in.th/forum-26.html) +--- Thread: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง (/thread-1066.html) |
สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง - admannon - 03-10-2013 Message Thai Vovel and Outline Fix สคริปต์เขียนโดย : Admannon (เขียนเองนะครับ) รายละเอียด : เป็นสคริปต์แก้สระลอยในภาษาไทย และแก้ตัวอักษรแหว่งได้ด้วย (ถ้าไม่แก้ จะไม่เห็นไม้เอกเลยล่ะ) สกรีนช๊อต : ก่อนใช้ หลังใช้ ลองแบบผสมดูบ้าง เห็นความแตกต่างหรือยัง /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 RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง - hengmana - 03-10-2013 ;w; ลองพิมพ์ประโยดผสมไทยคำอังกฤษคำหรือยังนะ RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง - admannon - 03-11-2013 #hengmana ลองแล้วนะครับ ขอบคุณที่แนะนำครับผม RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง - Mysticphoenix - 08-12-2013 tips สำหรับคนที่ใช้สคริปไม่ได้ เป็นเพราะวงเล็บ+c มันกลายเป็นสัญลักษณ์ copyright ฉะนั้นให้หาสัญลักษณ์ © แล้วแก้เป็นเป็น Code: (c) RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง - TheMoo2000 - 03-07-2014 ขอเสริมเกี่ยวกับเรื่องการจัด Font ให้โอเคนะครับ ต้องอธิบายก่อนว่า ฟอนต์แต่ละตัวจะมีการเขียนโปรแกรมไว้ภายในฟอนต์ (ในสมัยนี้นะครับ) เพื่อทำการ เปลี่ยนตัวอักษรหนึ่ง เป็นอีกอักษรหนึ่งเมื่อตรงตามเงื่อนไขที่ตั้งไว้ อย่างเช่นของต่างประเทศก็จะมีตัว fi fl ffi ffl ของเขาหรืออื่นๆ ครับ เรียกว่า Ligature ที่ต้องทำแบบนี้เพื่อความอ่านง่ายและดูถูกต้องตามหลักภาษาครับ ส่วนภาษาไทยก็จะมีใช้ในส่วนของสระด้านบนและด้านล่างครับ จากประโยค "พี่ฎูนู๋เป่าปี่" นะครับ ด้านซ้ายคือปิด Ligature ด้านขวาคือเปิด จะพบลักษณะการขยับอยู่ดังนี้ คำว่า "พี่" ต้องขยับไม่เอกขึ้นทางด้านบน คำว่า "ฎู" ต้องขยับสระอูลงอีกเพื่อไม่ให้ซ้อนไปกับตัว ฎ คำว่า "นู๋" เป็นการจัดแบบปกติ คำว่า "เป่า" ต้องขยับไม้เอกหลบซ้ายมา คำว่า "ปี่" ก็ขยับมาทั้งสระอีและไม้เอกครับ ทีนี้ การขยับของแต่ละฟอนต์มันก็ไม่เท่ากันหรือไม่เหมือนกัน แต่ถ้าจะให้ไปลงลึกถึงรหัสของแต่ละฟอนต์ก็คงเป็นไปไม่ได้เพราะแต่ละฟอนต์ไม่ได้ใช้มาตรฐานในการกำหนดรหัสอักขระเดียวกัน และนี่คือทางแก้เบื้อต้นที่พอจะทำในทางโปรแกรมมิ่งได้ครับ 1. การขยับวรรณยุกต์ขึ้น คำนวณจากความสูงของสระอิอีอึอื แล้วบวกให้เลื่อนขึ้นไปด้านบน 2. การขยับสระต่ำลง คำนวณจาก ความสูงปกติของตัวอักษรอื่น เทียบกับความสูงของ ฎ ฏ และบวกให้เลื่อนลงด้านล่าง 3. การขยับไปด้านซ้าย อันนี้ต้องขึ้นอยู่กับดวง คือโดยปกติแล้วขนาดของ ง ป ญ ทั้งสามตัวนี้จะมีขนาดไม่เท่ากัน ให้เทียบขนาดจาก ง ให้วางสระเสมือนวางอยู่บนตัว ง แล้วมันจะขยับซ้ายมาเอง (แต่ก็ขึ้นอยู่กับดวง เพราะบางฟอนต์เขากันหน้า กันหลังตัวอักษรไม่เท่ากัน) 4. ในกรณี ญ ฐ ตามหลักต้องตัดเชิง(ขีดข้างใต้)ออก แต่ในกรณีนี้ไม่สามารถทำได้ อนุโลมให้ขยับลงแบบ ฎ ฏ ได้ 5. แนะนำให้เขียนดักฟอนต์แบบเก่า และแบบใหม่ไว้นะครับ เพราะฟอนต์แบบเก่าเขาจะเรียงสระมาลอย ส่วนสระแบบใหม่เขาจะวางไว้เสมอกันครับ (เลยมีทั้งสระลอย และ สระจมนั่นเอง) แต่ในตอนนี้เองเจ้าไมโครซอฟก็ออกฝีเจอร์ในการทำของพวกนี้มามากมายซึ่งจะได้รับพัฒนาในอนาคตแน่นอน ซึ่งก็ไม่แน่นอนว่า RM รุ่นต่อๆ ไปจะรองรับฟีเจอร์ Ligature อยู่ไหม แต่อย่างไรก็อยากให้พัฒนาไว้กันเผื่อภาษาไทยไว้ฮะ ถ้ามีโอกาสทำลองเอาตัวอย่างผมและวิธีแก้ที่ผมยกมาให้ดูนี่พัฒนาต่อนะครับ RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง - admannon - 04-13-2017 หลังจากที่ลองแก้ใน RMMV ตามกระทู้ นี้ แล้ว เลยลองแก้ใน RPGVXAce ดู ตามนี้ https://gist.github.com/admannon/07eb77c1d59a1a3df6264d192b0f1dc6 RE: สคริปต์แก้สระลอย + แก้ตัวอักษรแหว่ง - Mysticphoenix - 04-19-2017 ขอบคุณคับ มีทางเลือกใหม่แล้วเรา |