mPDF Open Sans字体无法呈现一些德语字母

时间:2016-05-17 08:57:37

标签: php pdf fonts mpdf

我正在尝试使用德语单词“möchte”生成PDF (字母ö是这里的问题).. 使用我在/ttfonts文件夹中添加的字体(Open Sans)并将其设置为config_fonts.php ..

"open_sans" => array(
    'B' => "OpenSans-Bold.ttf",
    'BI' => "OpenSans-BoldItalic.ttf",
    'EB' => "OpenSans-ExtraBold.ttf",
    'EBI' => "OpenSans-ExtraBoldItalic.ttf",
    'I' => "OpenSans-Italic.ttf",
    'L' => "OpenSans-Light.ttf",
    'LI' => "OpenSans-LightItalic.ttf",
    'R' => "OpenSans-Regular.ttf",
    'SB' => "OpenSans-Semibold.ttf",
    'SBI' => "OpenSans-SemiboldItalic.ttf",
        'useOTL' => 0xFF,
        'useKashida' => 75,
    )

我还阅读https://mpdf.github.io/fonts-languages/fonts-in-mpdf-6-x.html并尝试修改config_lang2fonts.php ..我甚至将其设置为open_sans

$unifont = "open_sans";
return array($coreSuitable ,$unifont);

PS:我下载的字体文件Open Sans已经没有子集了。

但输出仍然不像我预期的那样,它显示: enter image description here

PHP

$mpdf = new mPDF('','A4','','open_sans' , 30 , 12 , 12 , 12 , 10 , 10);

Mark Up

@font-face{
font-family:open_sans;
src: url('mypath/mpdf60/ttfonts/OpenSans-Regular.ttf');
}

我尝试使用mPDF的默认字体,如 dejavusans ,它完美无缺。但我需要的是Open Sans。我错过了mPDF中的配置还是什么?有什么问题?

1 个答案:

答案 0 :(得分:0)

您看到常规o后跟未知字符的事实强烈建议第二个字符是单个非间距分音,在您使用的字体中不可用。

检查DejaVu Sans和Open Sans的字符集证明了我的预感是正确的。 DejaVu Sans 包含' COMBINING DIAERESIS' U+0308: ¨。 OpenSans

对输入文本使用Unicode规范化,将序列o+¨替换为其复合字符ö U+00F6ä U+00E4ü O+00FC也是如此。