2012-06-18 9 views
5

Estoy creando un generador de documentos pdf en Ruby on Rails con gamba joya y surgió el problema de que cuando tengo caracteres chinos, japoneses y cirílicos se muestran incorrectamente. Busqué en Google que es porque "cuando estoy generando una fuente, necesito especificar qué tipo de letra debe representarse el texto en pdf con".Cualquier fuente para generar pdf que manejará chino, cirílico ...?

Ahora bien, este no es el problema, pero el hecho de que mis documentos incluirán todos los caracteres posibles diferentes que gTLD supports.

Pregunta 1:

¿Usted sabe cualquier fuente para la generación de documentos PDF que incluyan mayor número posible de caracteres (asiáticos, Europa, símbolos, ...)? Idealmente, todos los caracteres que admite gTLD.

sé que gambas por defecto incluye gkai00mp.ttf pero su centró en caracteres chinos y estoy en busca de admisibilidad para incluir a todos ellos (como Pokemon, tiene que atraparlos a todos, sé que soy pidiendo demasiado, pero aún así ...)

Otra cuestión es cuando el cliente abre este documento:

pregunta 2

es PDF generados por gambas incluyendo mi fuente en pdf archivo, de modo que cuando otras computadoras lo abran, la fuente estará presente? ¿Es esto por defecto estándar? ¿O necesito asegurar/forzar esta funcionalidad?

+0

Por favor [no haga una publicación cruzada] (http://superuser.com/questions/438257/pdf-fonts-that-include-all-possible-gtld-chars). Sé que su pregunta aquí es un poco diferente, pero en esencia, es lo mismo. Sería mejor abordar este problema desde la raíz, es decir, Ruby y Gamba. – slhck

+0

@slhck, es la misma pregunta pero no quiero escuchar las respuestas de diferentes grupos, Aquí en SO espero respuestas de desarrolladores que estuvieran trabajando con Gamba (o cualquier otra conversión de PDF) y tuve un problema similar con esa biblioteca, en lugar de SuperUser, quiero escuchar las soluciones teóricas de personas que trabajan con PDF sin un entorno de programación ... Está aquí en SO. Estoy esperando solo una respuesta menor que en SU. – equivalent8

Respuesta

8

Ok, voy a responderlo solo. En SuperUser pregunté pregunta similar (que se centra en las respuestas de una manera más teórica), y la conclusión principal fue la respuesta que:

No hay ninguna fuente única que soporta el conjunto de Unicode.

pero afortunadamente pdf soporta fuentes de repliegue, y gambas joya también.

aquí está mi solución: sus fuentes

1/set de repliegue

y

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

2/llamada

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

Ahora, aquí estoy usando fuentes que están incluidas en Gamba de forma predeterminada, pero de esta manera puede agregar varias fuentes con diferentes conjuntos de caracteres y simplemente especificarlas como fondo

Por ejemplo, puede colocar las fuentes en algún lugar la raíz de los carriles y sólo les incluyen desde allí

nota en fuente "Kai", estoy especificando mismo tipo de letra para el normal, cursiva, negrita, bold_italic sin labrar. Estoy haciendo esto a propósito. De lo que estaba experimentando gkai00mp fuente no tiene caracteres en negrita o cursiva. Por lo tanto, cuando cursiva cursiva/negrita se imprime, se imprimirá en estilo normal (lo cual es mejor que no renderizar en absoluto).

Si no especifico tipo de letra cursiva/negrita para la fuente (exaple "Kai") ..

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

.. y que intenta representar carbón estilo que va a caer de nuevo a-kai ...

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

... voy a

Prawn::Errors::UnknownFont in Foo 

    is not a known font. 

nota 2: si usted quiere poner no una caracteres SCII a Ruby archivo que necesita para poner la codificación en la parte superior del archivo

# coding: utf-8 

class Foo 
... 
end 

esto, sin embargo funciona forma Ruby 1.9. 1.8.x fuente de rubí puede manejar sólo ASCII (más sobre esto en ruby 1.9 walkthrough by P.C. pero en los carriles que debe utilizar I18n (internacionalización)

nota 3

gambas tiene muy buena documentación, simplemente git gambas clon de GitHub y comprobar ./manuals

2

En 2014 google ha lanzado fuentes Noto (https://www.google.com/get/noto/) y que incluye soportes para todo tipo de idiomas. se puede utilizar RSA, fuentes OTF o incrustar el TTC colección completa para apoyar el idioma que desee. Para chino, japonés y coreano, NotoSansCJK funciona perfectamente.

+0

interesante, es bueno saber esto. Ya no trabajo en el proyecto relacionado con esta pregunta, pero la próxima vez que me encuentre con este portátil, intentaré utilizar tu solución. – equivalent8

Cuestiones relacionadas