ปัญหาการพิมพ์ด้วย Hindi Unicode บน Windows และ Ubuntu ทั้งคู่

ฉันกำลังทำงานกับข้อความภาษาฮินดีในรูปแบบ pdf แม้ว่าข้อความภาษาฮินดีจะถูกสร้างขึ้น แต่กลับแสดงเป็น Matras ที่วางผิดที่ สมมติว่าฉันมีคำเช่น 'ज़िन्दगी' แต่มันแสดงเป็น

ป้อนคำอธิบายรูปภาพที่นี่

ถ้าฉันคัดลอกข้อความนี้และวางบน Libre Office Writer ข้อความจะพิมพ์ถูกต้อง ฉันลองใช้แบบอักษรเกือบสองแบบด้วย tcpdf Arial Unicode MS และ Lohit_hi

$tcpdf->SetFont('arialuni', 'B', 15, 'false');
$html = nl2br($result['Song']['hindi']);
$tcpdf->writeHTMLCell(0, 20, 20, 25, $html);

เหตุใดจึงแสดงตัวละครแต่วางตำแหน่งผิดที่


person Sankalp    schedule 01.09.2013    source แหล่งที่มา


คำตอบ (3)


ถ้าฉันคัดลอกและวาง 'ज़िन्दगी' ลงใน microsoft word ตามค่าเริ่มต้น มันจะแสดงดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

จริงๆ แล้วมันเป็นสตริงอักขระ Unicode ที่เหมือนกันทุกประการ (นั่นคือ िन ตามด้วย virama ตามด้วย द) แต่จะแสดงผลในรูปแบบที่แตกต่างกัน ขึ้นอยู่กับแบบอักษร ฟอนต์ Unicode มีตรรกะที่ซับซ้อนในการตัดสินใจว่าจะแทนที่สตริงอักขระบางตัวเป็นสัญลักษณ์อื่นเมื่อใด และฟอนต์ที่ PDF ของคุณใช้ไม่รองรับการแทนที่ที่คุณต้องการ

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

person joshua.paling    schedule 02.09.2013
comment
ขอบคุณสำหรับข้อมูล. ฉันชัดเจนว่าปัญหาการเรนเดอร์ คุณช่วยอธิบายให้ฉันชัดเจนว่า tcpdf รองรับแบบอักษรภาษาฮินดีตัวใด ฉันได้ลองทั้ง Arial Unicode MS เช่นกัน Lohiti HIndi แต่ในทั้งสองกรณีปัญหาการเรนเดอร์ยังคงอยู่ - person Sankalp; 02.09.2013
comment
ฉันไม่ได้ใช้ tcpdf ดังนั้นฉันจึงไม่สามารถให้อะไรได้มากกว่าที่มีให้ที่นี่: tcpdf org/fonts.php - person joshua.paling; 02.09.2013
comment
สวัสดีโจชัว - แค่ชี้แจง: คำแรกคือซินดากิ และคำที่สองคือซานีดากิ คุณหมายถึงว่าทั้งสองคำมี ZNDG แต่การตีความของสระนั้นขึ้นอยู่กับแบบอักษรที่เลือก - person Jay Sheth; 26.09.2013
comment
เจย์ ใช่ มันเป็นสตริงอักขระยูนิโค้ดที่เหมือนกันทุกประการ เช่น ज แล้วก็ ़ि แล้วก็ न แล้วก็ ् ฯลฯ ฟอนต์จะไม่เปลี่ยนลำดับของอักขระแต่อย่างใด แต่จะเปลี่ยนวิธีการแสดงผลร่วมกัน - person joshua.paling; 27.09.2013
comment
เราประสบปัญหาเดียวกัน mpdf1.com/mpdf/index.php?page=Download ทำงานให้เรา - person abksharma; 07.12.2013

ทำไมคุณไม่ใช้ writeHTML() แทน writeHTMLCell() ? ปัญหาของคุณมีความสัมพันธ์กับเซลล์อย่างเห็นได้ชัด ดูเหมือนว่าความสูงของบรรทัดไม่ถูกต้องหรือมีการตั้งค่าแอตทริบิวต์ CSS สำหรับการทำซ้ำพื้นหลัง (ควรเป็น background-repeat:none; ) writeHTML() จะป้องกันสิ่งนี้

person Hexodus    schedule 21.09.2013
comment
มันเป็นไปไม่ได้. ฉันได้ลองทั้งสองแล้ว มีปัญหาการแสดงผลเดียวกัน - person Sankalp; 25.09.2013

ฉันไม่เชื่อว่า TCPDF สามารถเรนเดอร์สคริปต์ภาษาฮินดีได้อย่างถูกต้อง แบบอักษรเพียงอย่างเดียวไม่เพียงพอที่จะเรนเดอร์สคริปต์ที่ซับซ้อน ข้อความอ้างอิงต่อไปนี้เป็นข้อความที่ตัดตอนมาจากเธรดความคิดเห็นเกี่ยวกับการแสดงข้อความ Saurashtra ใน TCPDF สิ่งนี้น่าจะใช้ได้กับภาษาฮินดีเช่นกัน มาลายาลัมและคุชราตไม่สามารถเรนเดอร์ใน TCPDF ได้เท่าที่ฉันรู้

[Re: การเรนเดอร์ข้อความ Saurashtra ใน TCPDF] [...] สำหรับ TCPDF ฟอนต์ประเภทจริงจะต้องถูกแปลงเป็นรูปแบบ afm ก่อน จากนั้นสำหรับแต่ละสคริปต์ กฎการกำกับเสียงหรือการควบจะถูกนำไปใช้ใน tcpdf เอง [...] แบบอักษรไม่เพียงพอสำหรับการเรนเดอร์ กลไกการสร้างรูปร่างยังจำเป็นสำหรับสคริปต์ที่ซับซ้อนในการตีความกฎการสร้างสัญลักษณ์ นี่คือสิ่งที่ PyPDFLib พยายามแก้ไขโดยใช้ Pango สำหรับการเรนเดอร์สคริปต์และ Cairo สำหรับกราฟิก Santosh -- ความคิดเห็นเกี่ยวกับการสร้างระบบนิเวศของภาษาใหม่- สุรัสตราเป็นตัวอย่าง

ตัวอย่างของ mPDF ดูเหมือนจะสาธิตภาษาฮินดีเชิงฟังก์ชัน ตามที่อ้างอิงในคำตอบสำหรับคำถามนี้ : ภาษาฮินดีแสดงไม่ถูกต้องบน tcpdf

person EPB    schedule 27.09.2013