arabic fonts display in reverse order in dompdf

后端 未结 2 1787
無奈伤痛
無奈伤痛 2021-01-14 14:14

I am using dompdf to convert a html page using dompdf, but it is showing arabic text in reverse order

For eg if text is

ايبنسيالرمس

then it is displ

2条回答
  •  借酒劲吻你
    2021-01-14 14:47

    dompdf does not currently support directionality, so RTL languages will not display correctly in regard to character flow. There is a hack for displaying characters in the correct order, though it does require modification of the dompdf code.

    If you would like to try the modification two steps are required. First, style any text that should display RTL with direction: rtl; text-align: right;. Then, in the file dompdf/include/text_renderer.cls.php add the following lines before each instance of $canvas->text() (or any variant, such as $this->_canvas->text()):

    if (strtolower($style->direction) == 'rtl') {
      preg_match_all('/./us', $text, $ar);
      $text = join('',array_reverse($ar[0]));
    }
    

    (You may have to change the name of the $text variable to match what's used in the code.)

    References:

    • https://github.com/dompdf/dompdf/issues/426
    • https://groups.google.com/d/topic/dompdf/qfWb24ct7Ts/discussion

    Additionally we've seen an issues where characters don't join together as expected when rendering words. This is an issue we haven't had a chance to explore yet.

    References:

    • https://github.com/dompdf/dompdf/issues/712

    Your best option right now for full support of directionality is to use a headless browser, e.g. PhantomJS.

提交回复
热议问题