我正在使用ruby、prawn和prawnto动态生成包含其他语言文本的pdf。我似乎无法获得任何包含非英语字符的语言文本。它不会抛出任何errors...just,显示的是一堆破折号而不是字符。对虾在其主页上吹嘘UTF-8支持,所以我不明白为什么这是一个问题。我使用的是ruby 1.8.6 (引擎)。
发布于 2010-01-21 08:20:24
要使Unicode正常工作,您需要加载具有所需字符的TTF字体。
默认的Helvetica字体只支持ASCII (外加一些额外的)。
发布于 2013-07-29 13:20:53
下面是一个使用unicode的对虾示例。从这里下载字体。http://www.siyabas.lk/files/iskpota.ttf
#!/bin/env ruby
# encoding: utf-8
require 'prawn'
pdf = Prawn::Document.new
pdf.font_families.update("Iskoola Potha Unicode"=>{:normal =>"fonts/iskpota.ttf"})
pdf.font "Iskoola Potha Unicode"
pdf.text "යුනිකෝඩ් වනාහි …"
pdf.move_down 10
pdf.text "
පරිගණක මූලිකව අංක මගින් එහි කටයුතු සිදු කරයි.
ඒවා වචන හා අක්ෂරවලට නොයෙකුත් අංක නියම කොට ඒ අංක ගබඩා කිරීම මගින් වචන
හා අකුරුද ගබඩා කර ගනී. යුනිකෝඩ් ක්රමය සොයා ගැනීමට පෙර මෙසේ අකුරුවලට අංක
නියම කිරීමට කේතන පද්ධති ඉතා විශාල ගණනක් පැවතුනි. උදාහරණයක් ලෙස යුරෝපීය
සංගමයට පමණක් ඔවුන්ගේ භාෂා කේතන ක්රම රාශියක් අවශ්ය විය. එසේම එක් භාෂාවක් වන
ඉංග්රීසි භාෂාව සඳහා එහි සියලු අක්ෂර, විරාම ලකුණු සහ තාක්ෂණික සංකේත සඳහා එක්
කේතන ක්රමයක් නොසෑහුනි. තවද මෙම කේනත ක්රම එකිනෙක හා ගැටුනි. එනම් වෙනස්
කේතන ක්රම 2කට එකම අංකය වෙනස් අක්ෂර දෙකකට හෝ වෙනස් අංක දෙකක් එකම
අක්ෂරයකට යෙදිය හැක. වෙනස් කේතන ක්රම භාවිතයේදී ඕනෑම පරිගණකයක්
(විශේෂයෙන්ම සර්වර් පරිගණක) වෙනස් කේතන ක්රම කීපයක් සමග ක්රියා කළ යුතු වේ;
එහෙයින් දත්ත වෙනස් කේතන ක්රම හෝ පරිගණක පද්ධති හරහා ගමන් ගැනීමේදී කේතන
ක්රමවල වෙනස හේතුවෙන් එමදත්ත විනාශ වීමට හෝ අපවිත්ර වීමට ඉඩ ඇත."
pdf.stroke_horizontal_rule
pdf.render_file "sinhala.pdf"https://stackoverflow.com/questions/2104814
复制相似问题