admannon   03-10-2013, 09:14 PM
#1
Message Thai Vovel and Outline Fix

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


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

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

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

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

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

วิธีการใช้งาน :
ในสคริปต์นี้ใส่ล่าง Materials ก่อน Main

Code:
#==============================================================================
# ** 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(c).width
    draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)
    pos[:x] += text_width unless @@thai_vovel.include?(c)
  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


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

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

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


This post was last modified: 09-12-2024, 06:35 PM by OP_Jum_RPG.
hengmana   03-10-2013, 10:47 PM
#2
;w; ลองพิมพ์ประโยดผสมไทยคำอังกฤษคำหรือยังนะ
admannon   03-11-2013, 11:56 AM
#3
#hengmana
ลองแล้วนะครับ ขอบคุณที่แนะนำครับผม
Mysticphoenix   08-12-2013, 02:11 PM
#4
tips สำหรับคนที่ใช้สคริปไม่ได้ เป็นเพราะวงเล็บ+c มันกลายเป็นสัญลักษณ์ copyright

ฉะนั้นให้หาสัญลักษณ์ © แล้วแก้เป็นเป็น
Code:
(c)
แทนซะ ทุกจุดเลย
This post was last modified: 08-12-2013, 02:14 PM by Mysticphoenix.

[Image: webboard%20signature1_zpskhtut2jg.png]
การทำอาหารที่อร่อยที่สุด และเดือดร้อนชาวบ้านมากที่สุด กำลังจะเริ่มขึ้น
TheMoo2000   03-07-2014, 08:27 PM
#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 อยู่ไหม แต่อย่างไรก็อยากให้พัฒนาไว้กันเผื่อภาษาไทยไว้ฮะ
ถ้ามีโอกาสทำลองเอาตัวอย่างผมและวิธีแก้ที่ผมยกมาให้ดูนี่พัฒนาต่อนะครับ
admannon   04-13-2017, 10:16 AM
#6
หลังจากที่ลองแก้ใน RMMV ตามกระทู้ นี้ แล้ว เลยลองแก้ใน RPGVXAce ดู ตามนี้

https://gist.github.com/admannon/07eb77c...192b0f1dc6
This post was last modified: 10-20-2017, 11:52 AM by admannon. Edit Reason: ไปโพสตัว code ใน github แล้วนะ
Mysticphoenix   04-19-2017, 01:17 PM
#7
ขอบคุณคับ มีทางเลือกใหม่แล้วเรา

[Image: webboard%20signature1_zpskhtut2jg.png]
การทำอาหารที่อร่อยที่สุด และเดือดร้อนชาวบ้านมากที่สุด กำลังจะเริ่มขึ้น
  
Users browsing this thread: 5 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.