- ตัวพิมพ์อาหรับบนเว็บเป็น ปัญหาโครงสร้างพื้นฐานของการเรนเดอร์ ที่พัวพันทั้งการเชื่อมอักษร ข้อความสองทิศทาง การจัดการตัวเลขและเครื่องหมายวรรคตอน รวมถึงการจัดบรรทัด จึงยากจะมองเป็นแค่บั๊ก CSS ธรรมดา
- การเรียงพิมพ์อาหรับแบบดั้งเดิมทำการจัดชิดขอบสองด้านด้วย kashida โดยยืดเส้นภายในตัวอักษร ไม่ใช่เพิ่มช่องว่างระหว่างคำ แต่
text-align: justifyในเบราว์เซอร์สมัยใหม่มักเพิ่มช่องว่างระหว่างคำเป็นหลัก - อักษรอาหรับหนึ่งโค้ดพอยต์ที่เก็บไว้สามารถเปลี่ยนเป็นรูปเดี่ยว รูปต้น รูปกลาง หรือรูปท้ายตามบริบท และหากไม่มีฟีเจอร์ OpenType กับ shaping engine ก็จะถูกเรนเดอร์เป็นตัวอักษรที่แยกออกจากกัน
- Arabic Presentation Forms, ระบบตัวเลข, อัลกอริทึมสองทิศทาง UAX #9 และอักขระควบคุมที่มองไม่เห็นใน Unicode นำไปสู่ปัญหาจริงในผลิตภัณฑ์ เช่น ค้นหาไม่เจอ หมายเลขโทรศัพท์กลับด้าน หรือเคอร์เซอร์เคลื่อนที่สับสน
- แม้จะมีฐานสำคัญอย่าง HarfBuzz, Amiri และ W3C Arabic Layout Requirements แล้ว แต่การจัดย่อหน้าอาหรับและการใช้
jstfในเบราว์เซอร์ยังคงเป็นช่องว่างของการพัฒนา
จุดเริ่มต้น: ปัญหาการเรียงพิมพ์อาหรับที่ดูเหมือนเป็น “บั๊ก CSS”
- ย่อหน้าอาหรับที่มีเนื้อหาแบบผสมในแดชบอร์ดสำหรับลูกค้าไม่ได้ถูกเรนเดอร์ให้ชิดขอบสองด้านเหมือนแบบดีไซน์ และขอบซ้ายก็ดูไม่เรียบ
- เวอร์ชันที่เป็นอักษรละตินในบล็อกเดียวกันดู “โอเค” แต่ในอาหรับ บรรทัดเริ่มจากขวา จึงเกิดขอบที่ไม่เรียบบนฝั่งซ้าย
- แม้จะใช้
text-align: justifyก็ยังไม่สามารถยืดเส้นภายในคำเพื่อเติมบรรทัดให้เหมือนรูปแบบที่ทีมดีไซน์อนุมัติได้ - ผลิตภัณฑ์เดียวกันนี้ก็เคยมีปัญหาอาหรับซ้ำๆ มาก่อน เช่น ชื่อใน PDF ถูกแยกตัวอักษร การทำดัชนีค้นหาล้มเหลว และปัญหาโค้ดพอยต์ Unicode แบบเก่า
- แก่นของปัญหาไม่ใช่ข้อบกพร่องในสไตล์ชีตใดสไตล์ชีตหนึ่ง แต่คือ สภาพของตัวพิมพ์อาหรับบนเว็บ
ปัญหาที่ประเพณีการคัดลอกต้นฉบับเคยแก้ไว้แล้ว
- ประเพณีการคัดลอกอาหรับแบบดั้งเดิมจัดบรรทัดชิดสองด้านด้วยการยืดเส้นเชื่อมภายในรูปอักษร ไม่ใช่เพิ่มช่องว่างระหว่างคำ
- วิธีนี้เรียกว่า taṭwīl หรือในศัพท์เทคนิคสมัยใหม่คือ kashida ซึ่งเป็นการยืดเส้นเชื่อมระหว่างคู่อักษรบางคู่ให้ยาวขึ้น
- หน้าที่จัดอย่างดีของอักษร Naskh ในศตวรรษที่ 17 ทำให้ระยะขอบสองด้านตรงกัน โดยไม่ต้องเพิ่มช่องว่างระหว่างคำ และให้ผิวสัมผัสที่แน่นและสม่ำเสมอ
- al-khaṭṭ al-mansūb ที่ Ibn Muqla วางระบบไว้ ทำให้รูปอักษรเป็นแบบแผนผ่านจุดรูปสี่เหลี่ยมข้าวหลามตัดจากปลายปากกากก ความสูงของ alif และสัดส่วนของส่วนโค้ง
- ในประเพณีนี้ การจัดบรรทัดไม่ใช่ปัญหาการกระจายช่องว่าง แต่เป็น ปัญหาการทำ shaping ที่ต้องเลือกทั้งรูปอักษรและ glyph ทดแทน
หนึ่งตัวอักษร สี่รูปแบบ
- อาหรับเป็นอักษรที่เชื่อมต่อกันแบบลายมือเสมอ และไม่มีการแยกแบบตัวพิมพ์บล็อกระหว่างตัวพิมพ์กับลายมือ
- ตัวอักษรแต่ละตัวจะเปลี่ยนเป็นรูปเดี่ยว รูปต้น รูปกลาง หรือรูปท้ายตามอักษรข้างเคียง และมีอักษรหกตัวที่ไม่เชื่อมต่อไปข้างหน้า ทำให้การไหลภายในคำขาดตอน
- Unicode เก็บอักษรเชิงนามธรรม ฟอนต์ให้ glyph ตามตำแหน่ง และ shaping engine จะใช้ฟีเจอร์ OpenType อย่าง
isol,init,medi,fina,rlig,mark,mkmk - คำอย่าง
محمدถูกเก็บเป็นสี่โค้ดพอยต์ แต่ตอนเรนเดอร์จะผ่านการเลือก glyph หลายตัวและการค้นหา OpenType จนเห็นเป็นเส้นต่อเนื่องเดียว - หากไม่มี shaping engine อย่าง HarfBuzz หรือเครื่องมือสร้าง PDF ไม่ผ่านขั้นตอนนี้ โค้ดพอยต์เดียวกันก็จะถูกเรนเดอร์เป็นตัวเดี่ยวที่แยกจากกัน
ฟอสซิลของ Unicode: Arabic Presentation Forms
- โค้ดเพจ 8 บิตในยุค DOS และ Windows แรกๆ ไม่ได้เข้ารหัสอักษรเชิงนามธรรม แต่เข้ารหัส รูปแบบของตัวอักษรเอง เช่น รูปต้นหรือรูปกลาง เป็นอักขระแยก
- Unicode รับสิ่งนี้ไว้เพื่อความเข้ากันได้แบบไปกลับ และยังคงเก็บไว้ในบล็อก Arabic Presentation Forms ตั้งแต่ U+FB50 ถึง U+FEFF
- เอกสารใหม่ไม่ควรมีโค้ดพอยต์เหล่านี้ แต่ตัวดึงข้อความจาก PDF ก็ยังอาจส่งออกมันได้แม้ในปัจจุบัน
- หากชื่อเดียวกันถูกเก็บแยกกันด้วย Unicode สมัยใหม่กับ Presentation Forms แม้จะแสดงผลเหมือนกันบนหน้าจอ แต่การเทียบสตริงและการค้นหาจะถือว่าต่างกัน
- การทำ normalization แบบ NFKC สามารถพับ Presentation Forms กลับเป็นอักษรเชิงนามธรรมเพื่อลดการค้นหาที่พลาดไปได้
ซอฟต์แวร์ที่ข้าม shaping และการประมวลผลสองทิศทาง
- ซอฟต์แวร์ที่ข้าม shaping engine และอัลกอริทึมสองทิศทางจะวาดตัวอักษรทีละตัวในรูปเดี่ยวและจัดบรรทัดจากซ้ายไปขวา
- ผลลัพธ์ลักษณะนี้เป็นสิ่งที่ผู้อ่านอาหรับพบเจอจริงบนป้ายร้าน บัตรขึ้นเครื่อง ลายน้ำ และข้อความอาหรับในหนังเก่าๆ
- Photoshop รุ่นเก่า, matplotlib ที่ตั้งค่าเริ่มต้น, ตัวสร้าง PDF หลายตัวบน npm และเครื่องพิมพ์ใบเสร็จ ล้วนสร้างปัญหาแบบนี้ได้
- วิธีอ้อมยอดนิยมใน Python อย่าง
arabic_reshaperและpython-bidiจะใช้บล็อก Presentation Forms เพื่อฝังรูปที่ถูก shape ล่วงหน้าไว้ในสตริง - วิธีอ้อมนี้คือการย้ายงานที่ควรเป็นหน้าที่ของ renderer มาใส่ในสตริงก่อนเวลา และสะท้อนข้อบกพร่องของ text stack โดยตรง
ปัญหาตัวเลขสามแบบและเครื่องหมายวรรคตอน
- ตัวเลข 0–9 ที่โลกเรียกว่า “Arabic numerals” ไม่ใช่รูปตัวเลขที่ผู้อ่านอาหรับส่วนใหญ่ใช้ในชีวิตประจำวัน
- อียิปต์ ซูดาน เลแวนต์ อิรัก และภูมิภาคอ่าว ใช้ ARABIC-INDIC DIGITS
٠١٢٣٤٥٦٧٨٩ของ Unicode - ภูมิภาคมักห์เร็บใช้ glyph ของเลขละติน ส่วนอิหร่าน อัฟกานิสถาน และปากีสถาน ใช้ EXTENDED ARABIC-INDIC DIGITS
۰۱۲۳۴۵۶۷۸۹ - ใน UAX #9 ตัวเลขไม่ถูกมองเป็นอักขระชนิด strong แต่เป็น weak character และจะถูกจัดประเภทใหม่เป็นเลขยุโรปหรือเลขอาหรับตามทิศทางของอักขระ strong ก่อนหน้า
- หมายเลขโทรศัพท์อย่าง
010-1234-5678หลังคำอาหรับอาจกลับลำดับบนหน้าจอเป็น5678-1234-010เพราะเครื่องหมายขีดถูกมองเป็นอักขระกลาง - วิธีแก้ที่แพลตฟอร์มให้มาคือการครอบหมายเลขด้วย
หรือ<bdi>เพื่อแยกทิศทางของมันออกมา - ตัวคั่นทศนิยมและหลักพันในโลกอาหรับคือ U+066B
٫และ U+066C٬โดย ASCII.และ,ดูคล้ายกันมาก แต่มีโค้ดพอยต์และคุณสมบัติด้านสองทิศทางต่างกัน
การอ้อมและการลดทอนจากงานพิมพ์สู่เว็บ
- Kitāb Ṣalāt al-Sawāʿī ที่พิมพ์ใน Fano ปี 1514 เป็นหนังสืออาหรับตัวเรียงเคลื่อนย้ายได้เล่มแรก และแสดงให้เห็นปัญหาการแยกการเชื่อมอักษรกับตำแหน่งจุดที่ผิดพลาด
- Qurʾān ของ Paganini ที่ Venice ปี 1537 ล้มเหลวในเชิงพาณิชย์เพราะซ้อนทั้งข้อผิดพลาดด้านการเรียงพิมพ์และความผิดในเนื้อหา โดยสำเนาหนึ่งถูกค้นพบในหอสมุดอารามแห่งหนึ่งใน Venice เมื่อปี 1987
- เรื่องเล่าว่า Ottoman ห้ามการพิมพ์นั้นมีปัญหาตรงที่ไม่มีต้นฉบับพระราชกฤษฎีกาของ Bayezid II และ Selim I เหลืออยู่ และต้องอาศัยบันทึกของนักเดินทางยุโรป
- Bulaq Press ใน Cairo ก่อตั้งโดย Muhammad Ali ในปี 1820 และยกระดับคุณภาพตัวพิมพ์โลหะอาหรับด้วยชิ้นส่วนตัวพิมพ์หลายร้อยชิ้นและความอดทนอย่างมาก
- Cairo Qurʾān ปี 1924 ผลิตด้วยตัวพิมพ์โลหะที่ Amiria Press และมีส่วนช่วยทำให้ข้อความและมาตรฐานตัวพิมพ์ในศตวรรษที่ 20 เป็นแบบแผนมากขึ้น
- ช่วงปลายทศวรรษ 1950 Kamel Mrowa และ Linotype สร้าง Simplified Arabic เพื่อให้พอดีกับเครื่องเรียงพิมพ์นิตยสาร 90 ช่อง โดยรวมรูปต้นเข้ากับรูปกลาง รูปท้ายเข้ากับรูปเดี่ยว และลดจำนวน ligature
- Simplified Arabic ทำให้การผลิตหนังสือพิมพ์มีต้นทุนต่ำและเร็วขึ้น และครองห้องข่าวภาษาอาหรับภายในเวลาเพียงหนึ่งชั่วอายุคน
kashida ที่เว็บยังวาดไม่ได้
- ร่างแรกของ CSS Text Module Level 3 เคยมีค่า
text-justifyเป็น kashida และ Internet Explorer 5.5 ก็เคยทำมันได้ตั้งแต่ปี 2000 - IE 5.5 ยังมีพร็อพเพอร์ตี
text-kashida-spaceแต่เมื่อเบราว์เซอร์อื่นไม่ทำตาม ค่านี้จึงหลุดออกจากสเปก text-align: justifyใน Chrome, Firefox และ Safari ปัจจุบันทำงานกับอาหรับโดยเพิ่มช่องว่างระหว่างคำ- issue เรื่องการจัดย่อหน้าอาหรับใน CSS Working Group เปิดค้างอย่างน้อยตั้งแต่ปี 2015 และงาน W3C Arabic Layout Requirements ก็เริ่มในปีเดียวกัน
- การจัดบรรทัดด้วย kashida ต้องให้ shaping และ layout ต่อรองกันซ้ำในระดับบรรทัด เพราะ glyph ที่ยืดแล้วทำให้ความกว้างเปลี่ยน และความกว้างที่เปลี่ยนก็ไปเปลี่ยนการตัดบรรทัดกับระยะที่ต้องยืดอีกที
- OpenType มีตาราง
jstfมาตั้งแต่ยุค 1990 เพื่อให้ฟอนต์บอกลำดับความสำคัญสำหรับการจัดย่อหน้าได้ แต่ shaping engine แทบไม่อ่าน และผู้สร้างฟอนต์ก็แทบไม่ใส่มา - Microsoft Word และ InDesign Middle East Edition มีการจัดย่อหน้าด้วย kashida แต่ชุด renderer ของเบราว์เซอร์ที่ผู้คนใช้อ่านมากที่สุดยังยืดตัวอักษรแบบนี้ไม่ได้
แฮ็ก Tatweel และปัญหา ligature กับสระกำกับ
- วิธีอ้อมที่พบได้บ่อยบนเว็บคือแทรกอักขระ U+0640 TATWEEL ลงในข้อความเอง เพื่อให้ดูเหมือนเส้นที่ถูกยืด
- Tatweel เปลี่ยนเนื้อหาจริงของข้อความ จึงทำให้เกิดปัญหากับการค้นหา การคัดลอกวาง โปรแกรมอ่านหน้าจอ และการ reflow ของคอลัมน์
- เส้นที่ Tatweel วาดไม่ใช่ kashida ที่วางตามกฎของฟอนต์และตัวอักษร แต่เป็นขีดแบบเครื่องพิมพ์ดีดที่ผู้เขียนเดาเอาเอง
- ligature ใน OpenType แบ่งเป็น
rlig,liga,dligและหาก ligature บังคับอย่างlām-alifพังลง มันไม่ได้แค่ดูไม่สวย แต่ถือว่าผิด - หากใส่ U+200C ZERO WIDTH NON-JOINER ระหว่างตัวอักษร แม้อักษรที่เก็บไว้จะยังเหมือนเดิม แต่การเรนเดอร์จะถูกบังคับให้แต่ละตัวเป็นรูปเดี่ยว
- Safari ไม่สนใจ
"rlig" 0,"liga" 0ดังนั้นเดโมปิด ligature บังคับจึงไม่ส่งผล - Amiri เป็นฟอนต์ Naskh ที่ Khaled Hosny ปล่อยภายใต้ SIL Open Font License ในปี 2011 และหลังการเขียนใหม่เป็นเวอร์ชัน 1.0 ในปี 2022 ก็รองรับ kashida แบบเส้นโค้งและการซ้อนสระกำกับที่ละเอียดขึ้น
- คอมโพเนนต์การ์ดที่ใช้
line-height: 1ร่วมกับoverflow: hiddenอาจตัดสระกำกับด้านบนของข้อความอาหรับที่ใส่เครื่องหมายสระครบถ้วน
อัลกอริทึมสองทิศทางและเคอร์เซอร์ที่โกหก
- หมายเลขเวอร์ชัน identifier ภาษาอังกฤษ URL และคำภาษาฝรั่งเศสภายในย่อหน้าอาหรับ จะเรียกใช้งาน UAX #9 หรือ Unicode Bidirectional Algorithm
- อักษรอาหรับเป็นอักขระ strong แบบขวาไปซ้าย อักษรละตินเป็นอักขระ strong แบบซ้ายไปขวา ตัวเลขเป็นอักขระ weak ที่ตามบริบท และช่องว่างกับเครื่องหมายวรรคตอนเป็นอักขระกลาง
- อัลกอริทึมจะกำหนด direction class ให้แต่ละอักขระ ตีความอักขระ weak และ neutral เป็นขั้นๆ จากนั้นกำหนด embedding level และกลับลำดับ run ที่อยู่ในระดับเดียวกัน
- เพราะลำดับที่เห็นบนจอกับลำดับเชิงตรรกะในหน่วยความจำต่างกัน การเลื่อนเคอร์เซอร์ การคลิกเมาส์ และการเลือกข้อความ จึงต้องแปลระหว่างสองลำดับนี้ตลอดเวลา
- ที่ขอบเขตของ run จะมีตำแหน่งเคอร์เซอร์ที่ถูกต้องได้สองแบบ คือ logical position และ visual position และ Chrome, Firefox, Qt, Outlook อาจจัดการสิ่งนี้ต่างกัน
- การเขียนข้อความผสมอาหรับ-อังกฤษยังคงเป็นประสบการณ์ที่มีต้นทุนด้านการรับรู้สูงโดยปริยายใน editor, email client และแอปแชตหลักๆ แม้จะถึงปี 2026 แล้วก็ตาม
- ช่วงอย่าง
الصفحات 10-20อาจดูเหมือน “20 ถึง 10” เพราะกฎ W2 และการจัดการขีดแบบ neutral และแก้ได้ด้วยการใส่ U+200E LEFT-TO-RIGHT MARK ไว้ข้างหน้า
ฐานที่ใช้งานได้และช่องว่างที่ยังเหลือ
- Khaled Hosny สร้าง Amiri เขียนเครื่องมือบรรทัดคำสั่ง HarfBuzz
hb-shapeและยังเป็นผู้ดูแลร่วมของ HarfBuzz - Behdad Esfahbod เขียนหลายส่วนของ HarfBuzz ก่อน Hosny และมีส่วนต่อ shaping engine ที่ทำให้เบราว์เซอร์ปัจจุบันวาดอักษรอาหรับได้ถูกต้อง
- Brill ว่าจ้าง John Hudson ให้ออกแบบฟอนต์ Brill เพื่อรวมอักษรถอดเสียงทั้งหมดที่ต้องใช้ในแค็ตตาล็อก Semitics และเผยแพร่ฟรีสำหรับการใช้งานไม่เชิงพาณิชย์ในปี 2011
- Sakhr AX-170 เป็นคอมพิวเตอร์ MSX จากซาอุดี-คูเวตราวปี 1984 ที่แสดงผลอาหรับจาก ROM และรองรับ identifier ใน Arabic BASIC ที่เขียนจากขวาไปซ้าย
- HarfBuzz, Amiri, Scheherazade, การรองรับ Presentation Forms ใน GNU Unifont, Noto Arabic และเอกสาร W3C Arabic Layout ล้วนพึ่งพาความพยายามของคนไม่กี่คน องค์กรไม่กี่แห่ง และอาสาสมัครจำนวนมาก
- ผู้ผลิตเบราว์เซอร์รับ HarfBuzz มาใช้หลังมันถูกทำเสร็จแบบโอเพนซอร์สและฟรี แต่แทบไม่ได้มีส่วนกับ layout loop ที่จะทำให้รูปแบบการจัดบรรทัดแบบประเพณีคัดลอกต้นฉบับเกิดขึ้นบนหน้าจอ
- ช่องว่างที่ยังเหลือคืออัลกอริทึมที่เข้าใจกันดีแล้วซึ่งต้องมีการลงมือทำใน layout engine บางตัว และขอบซ้ายที่ไม่เรียบในแดชบอร์ดลูกค้าก็คือรูปธรรมที่ผู้ใช้มองเห็นได้ของการขาดการลงทุนนี้
1 ความคิดเห็น
ความคิดเห็นจาก Lobste.rs
เป็นบทความที่ยอดเยี่ยมมาก
และฉันชอบที่ตัวอักษร
﷽นี้เป็น โค้ดพอยต์เดียว จริง ๆ ลองคัดลอกดูก็น่าทึ่งดีว่ากันว่ามันมีความหมายว่า “ด้วยพระนามของอัลลอฮ์ ผู้ทรงกรุณาปรานี ผู้ทรงเมตตาเสมอ”
﷽ประโยคนี้ในบทความมีความเป็นกวีมาก“อนุสาวรีย์จากยุคที่ไม่มีใครไว้ใจเรนเดอริงเอนจิน จนต้องฝังการเรนเดอร์ไว้ในเอนโค้ดดิง ราวกับแมลงวันที่กำลังสวดถูกเก็บรักษาไว้ชั่วนิรันดร์ในอำพัน”
ฉันสนุกกับการไล่อ่านบรรณานุกรมจากลิงก์ Wikipedia ที่อ้างถึงตรงนี้: https://lobste.rs/c/dq2ucz
สรุปก็คือ อักขระนี้ได้เข้าไปอยู่ใน Unicode เพราะมันมีอยู่ใน code page ของปากีสถาน และที่มันอยู่ในนั้นก็เพราะมีข้อกำหนดทางกฎหมายว่าต้องใส่วลีดังกล่าวในเอกสารทางกฎหมาย ภาษา Urdu เป็นภาษาในตระกูลอินโด-ยูโรเปียน ดังนั้นด้วยเทคโนโลยีในยุคนั้น การสลับไปใช้ code page ภาษาอาหรับเหมือน “เรียกออกไปข้างนอก” เพื่อพิมพ์ Basmallah คงทำได้ยาก
น่าเสียดายที่ไม่ใช่ทุกคอมเมนต์จะแสดงให้เห็นข้อดีของชุมชนนั้น
เมตา: นี่เป็นอีกตัวอย่างชั้นเยี่ยมว่าบทความแบบนี้ควรมี แท็ก
typographyบน lobste.rs แท็กมีไว้ใช้สำหรับ การกรอง เป็นหลัก
คุณสมบัติ
text-justifyของ IE นี่เอง สมัยนั้นมีของน่าสนใจเยอะมาก ยังมีtext-justify: newspaperด้วย หลายสิบปีต่อมาบางคนอธิบายว่ามันเป็น Knuth-Plass หรืออะไรทำนองนั้น แต่ฉันไม่เชื่อว่าเป็นแบบนั้นจริงhttps://mediumwell.com/wp-content/uploads/… แสดงให้เห็นว่าพฤติกรรมที่ในเวลานั้นอ้างว่าเป็น
text-justify: newspaperไปสอดคล้องกับtext-justify: inter-characterในสเปกปัจจุบันอย่างไรIE มีฟีเจอร์เจ๋ง ๆ มากมายตั้งแต่ค่อนข้างเนิ่น ๆ จริง ๆ และเบราว์เซอร์อื่น ๆ ก็ปล่อยฟีเจอร์แบบนั้นไว้ในตะกร้า “ยากเกินไป” สุดท้ายบางอย่างก็ไม่เคยกลับมาเลย หรือไม่ก็กลับมาอีกทีหลังผ่านไป 15 ปีหรือ 30 ปี Firefox ได้
text-justify: inter-characterในปี 2017, Chromium เพิ่ง implement ส่วนนั้นเมื่อไม่กี่เดือนก่อน, ส่วน Safari ยังไม่มีจนถึงตอนนี้เป็นบทความที่ยอดเยี่ยมและให้ความรู้มาก สิ่งที่ชอบเป็นพิเศษคือ ภูมิหลังทางประวัติศาสตร์ ที่ช่วยให้บริบทกว้างขึ้นกับเรื่องทั้งหมด
ในฐานะคนที่มีทั้งวุฒิด้านประวัติศาสตร์และประสบการณ์ทำงานสาย IT นี่เป็นบทความที่โดนใจทั้งสองความสนใจอย่างสมบูรณ์แบบ
มีบางอย่างในบทความที่ทำให้ ตัวจับสัญญาณ LLM ของฉันดังขึ้น ซึ่งน่าเสียดาย เพราะมันมีความลึกและพูดถึงส่วนที่เอกสารในสแตกเทคโนโลยีปัจจุบันยังไม่ค่อยครอบคลุม
ตัวอย่างของช่วงที่อ่านแล้วให้ความรู้สึกแบบ LLM คือส่วนนี้ และทั้งบทความก็มีโทนแบบนั้นอยู่เรื่อย ๆ:
“เหตุผลที่ไม่มีเบราว์เซอร์ใดรองรับสิ่งนี้เป็นเหตุผลเชิงโครงสร้าง และในฐานะอุปสรรค โครงสร้างนั้นก็ค่อนข้างงดงาม การจัดย่อหน้าแบบ Latin ปฏิบัติต่อข้อความที่ผ่านการ shaping แล้วว่าเป็นของตายตัว วัดคำ เทพื้นที่ที่เหลือลงในช่องไฟ แล้วก็จบ shaping กับ layout อยู่กันคนละกล่อง และทุก text stack ที่ใช้งานอยู่ก็ถูกออกแบบบนฐานของการแยกส่วนนี้ Kashida justification เปิดกล่องนั้นออก”
อยากถาม @lr0 ว่าเนื้อหาหลักของบทความนี้ถูกสร้าง ปรับแต่ง หรือแปลด้วย LLM หรือไม่ ถ้าใช่ อาจจะดีกว่าถ้าปรับระดับการควบคุมที่ LLM มีต่อผลลัพธ์สุดท้าย บล็อกโพสต์ก่อน ๆ อย่างเช่น https://lr0.org/blog/p/gpt/ และ https://lr0.org/blog/p/linux_new_users/ ให้ความรู้สึกเป็นมนุษย์มากกว่ามาก