dompdf não exibindo alguns caracteres latinos

Estou usando a última versão dompdf 0.6 estável, mas não consigo exibir alguns caracteres latinos, vejo que a documentação é agora lucrativa.

Até agora estou tentando usar a fonte Open Sans, até mesmo converti isso em formato afm, mas ainda é exibida alguma canvas? Em vez dos nossos caracteres latinos č, ć, đ, ž ‘.

Font é baixado como ttf e a definição da fonte é adicionada ao arquivo dompdf_font_family_cache.dist.php da seguinte maneira:

'open sans' => array ( 'normal' => $rootDir . '/lib/fonts/OpenSans', ), 

A saída de conteúdo html para o navegador torna esses caracteres bem. Existe alguma solução oficial, porque load_font.php está ausente ou deve atualizar para 0.7-beta e usar @ font-face em vez disso?

Codificação de caracteres

A codificação padrão de um documento PDF é o Windows ANSI (1) . Esta codificação fornece suporte de conjunto de caracteres limitado que não inclui os caracteres especificados na pergunta (č, ć, đ, ž). Assim, enquanto o texto é tecnicamente codificado latin, a codificação específica que aceita esses caracteres ( ISO-8859-5 ) não é a mesma que a fornecida por padrão nos documentos PDF ( Windows-1252 , também conhecido como ANSI do Windows, que é muito ISO -8859-1 ).

Métricas de fonts

Com a questão de codificação de caracteres em mente, você tomou a abordagem certa para adicionar suporte para seus personagens, carregando uma fonte . Os meios pelos quais você o fez, no entanto, não receberão os resultados esperados. dompdf (ao usar o backend do CPDF) utiliza métricas de fonts para determinar como se pode delinear o texto de um documento. As métricas de fonts são de duas formas, AFM (Adobe Font Metrics) e UFM (Unicode Font Metrics). Esses dois formulários correspondem às duas encodificações possíveis suportadas por dompdf, Windows ANSI e Unicode. O fato de suas métricas de fonte estarem no formato AFM indica que dompdf é que a fonte é codificada como ANSI do Windows.

Carregando Fontes

Embora você possa modificar o arquivo dompdf_font_family_cache.dist.php, não é recomendado. Uma vez que esse arquivo está incluído como parte da distribuição, todas as atualizações que você executa podem sobregravar o arquivo. Ao usar qualquer um dos methods de carregamento de fonte suportados, o dompdf criará um arquivo chamado dompdf_font_family_cache.php para armazenar informações de nome / localização para suas fonts personalizadas. Se você quiser ajustar suas informações de fonte personalizadas, faria isso neste arquivo. Este arquivo normalmente é armazenado ao lado dos arquivos TTF e AFM associados às fonts personalizadas (não necessariamente no diretório dompdf / lib / fonts … dependendo da sua configuração).

Eu recomendaria contra a edição manual dompdf_font_family_cache.php. Em vez disso, eu usaria as regras CSS @font-face para definir e carregar fonts se, por nenhum outro motivo, facilidade de uso. Se você está inclinado a usar uma ferramenta de linha de comando para pré-carregar suas fonts, o script load_font.php ainda está incluído nas versões 0.6.x do dompdf (não sabe por que você pensa o contrário). Se quiser mover para 0.7.0, você pode encontrar uma versão atualizada do script load_font.php no projeto dompdf-utils .

Por último, se você continuar tendo problemas, você sempre pode tentar usar uma das fonts do DejaVu incluídas (disponível começando com dompdf 0.6.0).


(1) OK, sim, existem algumas encodificações possíveis. Mas na maior parte você pode considerar o Windows ANSI como o padrão.