ปัญหาการเรียงพิมพ์อักษรไทย

การเรียงพิมพ์อักษรไทยในระบบคอมพิวเตอร์ปัจจุบันเน้นรูปมากกว่าเสียง ซึ่งสืบทอดมาจากการเรียงพิมพ์ในเครื่องพิมพ์ดีดที่แยกอักขระเป็นตัว ๆ แล้วกดแป้นไปตามลำดับ แต่ถึงกระนั้นก็ยังทำให้เกิดปัญหาบางประการอยู่บ่อยครั้ง

เสียงสระหนึ่งเสียงในภาษาไทยมีรูปแบบหลากหลาย โดยใช้อักษรไทยหลายตัวประกอบเข้าด้วยกัน เช่นสระเอีย ประกอบด้วย ไม้หน้า พินทุ์อี (พินทุ์อิ+ฝนทอง) และตัวยอ, สระเออ ก็มีทั้งรูปแบบ เออ เอิง เอย เป็นต้น จึงต้องกดแป้นตามรูปที่ปรากฏ ไม่สามารถเรียงพิมพ์ได้เหมือนอักษรตระกูลพราหมีส่วนใหญ่ที่ใช้ในอินเดีย เช่นอักษรเทวนาครี อักษรทมิฬเป็นต้น ที่จัดเสียงสระหนึ่งเสียงเป็นอักขระหนึ่งตัว และกำหนดให้สระต้องวางไว้หลังพยัญชนะเสมอในคอมพิวเตอร์

การกดแป้นตามรูปที่ปรากฏนำไปสู่ปัญหาการค้นคืนและการเรียงลำดับระเบียนที่เป็นภาษาไทย เนื่องจากคำไทยจำนวนมากขึ้นต้นด้วยรูปสระหน้า เ, แ, โ, ใ, ไ แต่ดัชนีตัวจริงคือพยัญชนะที่อยู่ถัดไป การค้นคืนระเบียนที่ขึ้นต้นด้วย "ส" จะไม่มีผลลัพธ์ เส, แส, โส, ใส, ไส ออกมาด้วยทำให้ต้องระบุเงื่อนไขเพิ่มเติม และไม่สามารถค้นคืนตามเสียงอ่านได้เพราะเสียงสระมีหลายรูปดังกล่าว การเรียงลำดับก็เช่นกัน การไม่คำนึงถึงดัชนีพยัญชนะที่แท้จริงทำให้ผลของการเรียงลำดับออกมาไม่ถูกต้องเท่าที่ควร

การกดแป้นตามรูปที่ปรากฏอาจทำให้เกิดปัญหาการกดแป้นผิดลำดับ อันจะส่งผลให้อักขระถูกจัดวางผิดลำดับไปด้วย สิ่งที่เห็นได้ชัดคือสระอำ สระแอ และคำที่มีรูปสระบนหรือล่างพร้อมด้วยวรรณยุกต์

สระอำประกอบด้วยนิคหิตและลากข้าง หากกดแป้นนิคหิตตามด้วยลากข้าง หรือกดแป้นสระอำในเครื่องพิมพ์ดีดก็จะได้สระอำเหมือนกัน แต่คอมพิวเตอร์ไม่ถือว่าเหมือนกันเพราะมีรหัสสำหรับสระอำอยู่แล้ว นอกจากนี้คำที่สะกดด้วยสระอำอาจมีวรรณยุกต์เช่นคำว่า น้ำ หากกดแยกรูปจะต้องกดนิคหิต ไม้โท และลากข้าง ในขณะที่กดรวมรูปจะต้องกดไม้โทตามด้วยสระอำ ซึ่งเป็นวิธีการที่สืบทอดจากเครื่องพิมพ์ดีด หากกดสระอำก่อน ไม้โทจะไปปรากฏอยู่เหนือลากข้างซึ่งผิด การกดแป้นด้วยลำดับที่แตกต่างกันจะส่งผลไปสู่การค้นคืนและการเรียงลำดับต่างกันดังที่ได้กล่าวแล้ว

สระแอประกอบด้วยไม้หน้าสองรูป สืบทอดมาจากเครื่องพิมพ์ดีดเช่นเดียวกัน ถ้ากดไม้หน้าสองครั้งจะทำให้เกิดช่องไฟห่างกันจึงต้องมีแป้นสระแอโดยเฉพาะ เมื่อมาเป็นระบบคอมพิวเตอร์ สระแอก็เป็นรหัสอักขระอีกตัวหนึ่งแยกออกจากไม้หน้า (สระเอ) แต่ถึงกระนั้นหลายคนก็นิยมกดแป้นไม้หน้าสองครั้งอยู่ดี

คำที่มีรูปสระบนหรือล่างพร้อมด้วยวรรณยุกต์มีจำนวนมากในภาษาไทย การกดสระหรือวรรณยุกต์ใดก่อนก็ตามในเครื่องพิมพ์ดีดให้ผลไม่แตกต่างกัน แต่ในระบบคอมพิวเตอร์ไม่เป็นเช่นนั้น มาตรฐานยูนิโคด กำหนดให้วรรณยุกต์ (ไม้เอก ไม้โท ไม้ตรี ไม้จัตวา) มีค่าคลาสการผสานแบบบัญญัติ (canonical combining class) เท่ากับ 107, รูปสระบนมีค่าคลาสฯ เท่ากับ 0 (รุ่นปัจจุบัน) และรูปสระล่างมีค่าคลาสฯ เท่ากับ 103 และมาตรฐานยูนิโคดกำหนดให้ใส่อักขระทับซ้อนกันโดยมีค่าคลาสฯ จากน้อยไปหามาก ดังนั้นรูปสระบนหรือล่างจึงต้องใส่ก่อนวรรณยุกต์เสมอ แต่การกำหนดเช่นนี้ทำให้อักขระที่มีค่าคลาสฯ เท่ากันสามารถใส่ซ้อนลงไปได้เรื่อย ๆ ก่อให้เกิดปัญหาสระหรือวรรณยุกต์ซ้อนขึ้นอีก เช่นการใส่ไม้โทได้มากกว่าหนึ่งครั้ง

อย่างไรก็ดี โปรแกรมประมวลคำสมัยใหม่มีคุณลักษณะช่วยแก้ปัญหาการกดแป้นผิดลำดับข้างต้น โดยแก้ไขลำดับและอักขระให้ถูกต้องโดยอัตโนมัติ แต่สิ่งนี้ก็อาจทำให้ผู้ใช้กดแป้นผิดลำดับเป็นนิสัย ความผิดพลาดจะปรากฏให้เห็นเมื่อผู้ใช้ใช้โปรแกรมอื่นที่ไม่มีคุณลักษณะนี้

ปัญหาหลักของสระฤๅและสระฦๅอยู่ที่ลากข้างยาว โดยพื้นฐาน ฤๅ และ ฦๅ เป็นรูปสระทั้งตัว ไม่ได้เกิดจากการประกอบ ฤ และ ฦ เข้ากับลากข้างยาว เครื่องพิมพ์ดีดไม่มีแป้นสำหรับสระสองตัวนี้โดยเฉพาะหรือแม้กระทั่งลากข้างยาว แต่สามารถประสม ฤ และ ฦ เข้ากับลากข้างธรรมดา (สระอา) เป็น "ฤ‌า" กับ "ฦ‌า" โดยอนุโลมว่าเป็น ฤๅ กับ ฦๅ ตามลำดับ การเรียงพิมพ์ด้วยแท่นพิมพ์แบบกดก็ใช้ลากข้างธรรมดาเพราะสะดวกกว่า คอมพิวเตอร์ก็ไม่มีแป้นสำหรับสระสองตัวนี้โดยเฉพาะเช่นกัน ถ้าเทียบกับภาษาตระกูลพราหมีส่วนใหญ่จะมีรหัสสำหรับ ฤ, ฤๅ, ฦ, ฦๅ แยกกันทั้งหมด แต่ก็มีแป้นสำหรับลากข้างยาวบนปุ่มเลขอารบิก 1 ให้ประสมได้และถือลากข้างยาวเป็นรหัสอักขระอีกตัวหนึ่ง กลายเป็นว่า ฤๅ และ ฦๅ ต้องใช้อักขระถึงสองตัวประกอบขึ้นมา แต่ถึงกระนั้นหลายคนก็ยังไม่เข้าใจถึงความแตกต่างระหว่างลากข้างธรรมดาหรือลากข้างยาว และยังคงใช้ลากข้างธรรมดาต่อไป

วรรณยุกต์และทัณฑฆาตลอย หรือที่เรียกกันติดปากว่า "ปัญหาสระลอย" แต่ความจริงมันไม่ใช่สระ คือการปรากฏของวรรณยุกต์และทัณฑฆาตที่ห่างจากตัวหนังสือระดับบรรทัดสูงกว่าปกติ ตัวพิมพ์วรรณยุกต์และทัณฑฆาตของเครื่องพิมพ์ดีดได้เผื่อที่ว่างไว้สำหรับพิมพ์รูปสระบน ก็อาจลดที่ว่างนี้ได้โดยปรับลูกบิดขึ้นหนึ่งบิดแต่ก็ไม่สะดวกเพราะต้องทำทุกครั้งที่จะพิมพ์ การเรียงพิมพ์ในแท่นพิมพ์แบบกดใช้วิธีการแยกตัวพิมพ์วรรณยุกต์เดี่ยว ๆ กับตัวพิมพ์รูปสระบน+วรรณยุกต์ ทำให้มีตัวพิมพ์จำนวนมากและใช้เวลาเลือกด้วยมือมากขึ้น

การเรียงพิมพ์ในคอมพิวเตอร์ยุคแรก ๆ วางวรรณยุกต์และทัณฑฆาตในแบบอักษรโดยแยกเป็นอักขระรูปแบบต่ำและรูปแบบสูง (มีรูปแบบเยื้องหลบหางพยัญชนะด้วย) แต่ก็ทำให้สิ้นเปลืองรหัสแอสกีไปถึงสองแถว คอมพิวเตอร์ยุคหลังได้นำตรรกะการเรียงพิมพ์ในแบบอักษรมาใช้ ซึ่งอักขระรูปแบบต่ำและรูปแบบสูงจะถูกวางไว้ในพื้นที่ใช้ส่วนตัว (private use area) ของรหัสยูนิโคด

พยัญชนะ ฐ และ ญ แบบไม่มีเชิง ( และ ตามลำดับ) ในบางกรณีจำเป็นต้องใช้ เช่น ฐ และ ญ ที่สะกดด้วยสระอุหรือสระอู หรือเติมพินทุ จำเป็นต้องตัดเชิงอักษรออกเพื่อให้สามารถเติมสระเหล่านั้นได้ หรือการพิมพ์ภาษาบาลีที่ต้องตัดเชิงของ ฐ และ ญ ออกทุก ๆ แห่ง โดยปกติเครื่องพิมพ์ดีดไม่สามารถทำได้เพราะเมื่อกดแป้น ฐ และ ญ เชิงอักษรก็จะติดไปด้วยกัน หากกดแป้นรูปสระล่างตามก็จะดำจนมองเห็นไม่ชัดเจน ก็อาจแก้ได้โดยปรับลูกบิดขึ้นหนึ่งบิดหรือใช้ยางลบลบเชิงออกแล้วค่อยพิมพ์สระตาม แต่วิธีการนี้ไม่สะดวกหากมีจุดที่ต้องแก้ไขเป็นจำนวนมาก การเรียงพิมพ์ในแท่นพิมพ์แบบกดใช้วิธีเฉือนเชิงอักษรออกจากตัวพิมพ์ทิ้งไป หรือวิธีการอื่นที่ทำให้เชิงอักษรพิมพ์ไม่ติด

การเรียงพิมพ์ในคอมพิวเตอร์กระทำโดยวาง ฐ และ ญ แบบไม่มีเชิงไว้ในรหัสอักขระอีกสองช่องแยกต่างหากจากพยัญชนะปกติ ตรรกะของคอมพิวเตอร์นั้นเมื่อเติมรูปสระล่างให้กับ ฐ และ ญ จะเรียกใช้รูปแบบที่ไม่มีเชิงโดยอัตโนมัติอาทิ ฐุ, ฐู, ฐฺ, ญุ, ญู, ญฺ แต่กรณีอื่นที่นอกเหนือจากนี้ ในยุคแรกสามารถเรียกใช้ และ ได้เองจากรหัสแอสกีที่วางอยู่นั้น ยุคต่อมาก็วางไว้บนพื้นที่ใช้ส่วนตัว (private use area) แต่ถึงกระนั้นแบบอักษรบางแบบได้นำตรรกะการเรียงพิมพ์มาใช้ โดยไม่ได้กำหนดรหัสให้กับอักขระสองตัวนี้ ทำให้การเรียกใช้ทั่วไปเช่นบนเว็บเพจยังคงมีปัญหามองไม่เห็นตัวอักษร