2012-06-18 24 views
5

tôi là tạo ra máy phát điện của các tài liệu pdf trong Ruby on Rails với Tôm đá quý và tôi đã đưa ra vấn đề mà khi tôi có ký tự Trung Quốc, Nhật Bản và Cyrillic chúng được hiển thị không chính xác. Tôi googled ra rằng đó là vì "khi tôi tạo phông chữ tôi cần phải chỉ định, văn bản pdf nên được hiển thị với".Bất kỳ phông chữ nào để tạo pdf sẽ xử lý tiếng Trung, Cyrillic ...?

Đây không phải là vấn đề, nhưng thực tế là tài liệu của tôi sẽ bao gồm tất cả các ký tự có thể khác nhau mà gTLD supports.

Câu hỏi 1:

Bạn có biết bất kỳ font chữ để tạo ra các văn bản pdf mà sẽ bao gồm càng nhiều càng tốt chars (Châu Á, Châu Âu, biểu tượng, ...)? Lý tưởng nhất là tất cả các ký tự mà gTLD hỗ trợ.

Tôi biết rằng Tôm theo mặc định bao gồm gkai00mp.ttf nhưng tập trung của nó đối với ký tự Trung Quốc và tôi đang tìm kiếm sự thừa để bao gồm tất cả (Giống như Pokemon, đã để đón tất cả, tôi biết tôi yêu cầu quá nhiều nhưng vẫn ...)

Một vấn đề khác là khi khách hàng mở tài liệu này:

Câu hỏi 2

là pdf được tạo ra bởi Tôm bao gồm phông chữ của tôi trong pdf tệp, vì vậy khi các máy tính khác mở nó, phông chữ sẽ có mặt? Đây có phải là tiêu chuẩn mặc định không? Hoặc tôi cần đảm bảo/ép buộc chức năng này?

+0

Vui lòng [không đăng qua] (http://superuser.com/questions/438257/pdf-fonts-that-include-all-possible-gtld-chars). Tôi biết câu hỏi của bạn ở đây hơi khác một chút, nhưng về bản chất, đó là điều tương tự. Tốt nhất là giải quyết vấn đề này ở gốc - đó là, Ruby và Prawn. – slhck

+0

@slhck, đó là cùng một câu hỏi nhưng tôi không muốn nghe câu trả lời hình thành các nhóm khác nhau, Ở đây trên SO tôi mong đợi câu trả lời từ các nhà phát triển đã làm việc với Prawn (hoặc bất kỳ chuyển đổi pdf khác) đá quý và có vấn đề tương tự đối phó với thư viện đó, thay vì trên SuperUser, tôi muốn nghe các giải pháp lý thuyết hình thành những người đang làm việc với PDF trong môi trường không lập trình ... Nó chỉ ở đây trên SO Tôi hy vọng chỉ có ít câu trả lời hơn SU. – equivalent8

Trả lời

8

Ok, tôi sẽ tự mình trả lời. Trên SuperUser Tôi đã hỏi câu hỏi tương tự (tập trung vào câu trả lời theo cách lý thuyết hơn) và kết luận chính là trả lời:

Không có phông chữ nào hỗ trợ toàn bộ Unicode.

nhưng may mắn là pdf hỗ trợ phông chữ lùi, và prawn gem nữa.

đây là giải pháp của tôi:

1/thiết lập phông chữ mùa thu-lưng

def fallback_fonts 
    ["dejavu", "times", 'kai', 'action_man'] 
end 

2/cuộc gọi

font("Helvetica", size: 14) do #keyword "Helvetica" is specified in Prawn by default 
    text "址 foo", :fallback_fonts => fallback_fonts 
end 

Bây giờ, ở đây tôi chỉ sử dụng các phông chữ được bao gồm trong Prawn theo mặc định, nhưng theo cách này bạn có thể thêm một số phông chữ với các bộ ký tự khác nhau và chỉ định chúng như là một kiểu chữ quay lại

Ví dụ: Rails gốc của bạn và chỉ bao gồm chúng từ đó

lưu ý trong phông chữ "Kai", tôi chỉ định cùng một phông chữ cho bình thường, in nghiêng, đậm, đậm_italic không có kiểu. Tôi đang làm điều này với mục đích. Từ những gì tôi đã trải nghiệm phông chữ gkai00mp không có ký tự in đậm hoặc ký tự in nghiêng. Vì vậy, khi in nghiêng/in đậm, nó sẽ được in theo kiểu thông thường (tốt hơn là không render).

Nếu tôi không chỉ định phông chữ nghiêng/đậm cho phông chữ (exaple "Kai") ..

font_families.update(
     "kai" => { 
     :normal => { :file => kai, :font => "Kai" } 
     } 
    ) 

.. và bạn cố gắng để làm cho char theo kiểu đó sẽ rơi trở lại để kai ...

text "<b>址 foo</b>", :fallback_fonts => fallback_fonts, :inline_format=>true 

... tôi sẽ nhận được

Prawn::Errors::UnknownFont in Foo 

    is not a known font. 

lưu ý 2: nếu bạn muốn đặt một phi scii chars vào tập tin ruby ​​bạn cần phải đặt mã hóa ở trên cùng của tập tin

# coding: utf-8 

class Foo 
... 
end 

tuy nhiên điều này làm việc mẫu ruby ​​1.9. Ruby nguồn 1.8.x có thể xử lý ASCII chỉ (thêm vào đó trong ruby 1.9 walkthrough by P.C. nhưng trong Rails bạn nên sử dụng i18n (quốc tế)

lưu ý 3

Tôm có tài liệu thực sự tuyệt vời, chỉ cần git clone tôm từ github và kiểm tra ./manuals

2

Trong năm 2014, Google đã phát hành phông chữ Noto (https://www.google.com/get/noto/) và bao gồm hỗ trợ cho tất cả các loại ngôn ngữ.Bạn có thể sử dụng phông chữ ttf, otf hoặc nhúng bộ sưu tập ttc hoàn chỉnh để hỗ trợ ngôn ngữ bạn muốn. Dành cho người Trung Quốc, Nhật Bản và Hàn Quốc, NotoSansCJK hoạt động hoàn hảo.

+0

thú vị, tốt để biết điều này. Tôi không còn làm việc trên dự án câu hỏi này có liên quan đến nhưng lần sau tôi đi qua di động này tôi sẽ cố gắng sử dụng giải pháp của bạn. – equivalent8

Các vấn đề liên quan