Yuriy, вероятнее всего, Вы неверно прописываете путь к шрифту. На Вашей машине библиотека загружает какой-то стандартный шрифт, который с поддержкой кириллицы/юникода, а на хостинге стандартный шрифт без такой поддержки.
Если массивы отсортированы по product_id и количество совпадает (т.е. если гарантирована сочетаемость), то можно в один проход объединить, пройдя самым простым циклом.
Например, указание директории как __DIR__.'/local/modules/dompdf/lib/fonts' выглядит сомнительно. Ведь Вы указали путь относительно файла, в котором разместили код.
Mariik, Вы в своем списке описали 5 методов проверки. Они и должны быть пятью методами, а не одним большим, в котором без 5 строк комментариев ничего не понять.
Вскоре, Вы добавите шестое правило и удалите второе. Но не отразите это в комментарии. Поэтому никто, даже Вы, не поймете, что делает это чудовищное регулярное выражение.
Артём Белоусов: Есть моноширинный и есть пропорциональный. Times — частный случай пропорционального. По правде, я не видел никого, кто использовал бы пропорциональный шрифт в IDE. =)
Рома Зварич: когда Вы работали с full-stack разработчиком, он еще и роль project manager-a на себе тянул. Когда у Вас будет несколько программистов Вам никто не будет говорить о состоянии проекта в целом, Вам самостоятельно придется общаться с разработчиками и самостоятельно понимать на каком все этапе находится.
Попробуйте указать абсолютный пусть без __DIR__.