Как вывести символ рубля в письме?

105
20 февраля 2022, 16:40

Надо вывести символ рубля в письме. Как это правильно сделать? Насколько я понял сторонние шрифты в письма подключать нельзя. Есть юникодный символ, но говорят он на ios не отображается, а надо чтоб везде. Какие варианты?

P.S. Важный момент. Сайт на Битриксе и символ рубля везде берется из настроек валюты. Находил еще в интернете способ пихнуть svg, но в поле для валюты ограничена длина и его туда запихнуть не вышло - обрезался...

Answer 1

Читал в прошлом году разбор этой проблемы с IOS. Она наблюдается только на некоторых шрифтах и в некоторых знаках валют (в т.ч. и рубли).

UPD нашел ссылку на разбор: https://habr.com/ru/company/livetyping/blog/312294/

Используйте для блока в который выводите переменную цены шрифт IOS у которого нет таких проблем, например Helvetica Neue или San Francisco.

Насколько я понял сторонние шрифты в письма подключать нельзя.

Конечно можно: https://dev.1c-bitrix.ru/user_help/settings/settings/mail_events/message_edit.php

Используйте тело письма HTML и подключайте все что вам захочется через теги

<link href="https://fonts.googleapis.com/css?family=Roboto:400,400i,700,700i" rel="stylesheet">

Ещё возможное решение

Битрикс использует форматирование цен следующим образом: https://dev.1c-bitrix.ru/api_help/currency/functions/currencyformat.php

Вы можете убрать форматирование цены в письме. Оставить только само число (float), вывести его и после него через пробел добавить найденный вами SVG, PNG изображение и все что вам придет в голову.

Чтобы само число было не вида 11211.5, а 11 211.5 или например 11 211,5 используйте number_format - https://www.php.net/manual/ru/function.number-format.php

$number = 1234.56
// английский формат (по умолчанию)
$english_format_number = number_format($number);
// 1,235
// французский формат
$nombre_format_francais = number_format($number, 2, ',', ' ');
// 1 234,56

UPD по универсальности.

Большинство почтовых сервисов будут работать с подключенными шрифтами с того же google fonts. Исключения составляют единичные случаи, например почтовые клиенты вроде outlook.

Вот список безопасных шрифтов, которые будут работать везде:

Arial из этого списка поддерживает знак рубля.

font-family: Arial, Helvetica, sans-serif;
font-family: 'Arial Black', Gadget, sans-serif;
font-family: Georgia, serif;
font-family: 'MS Sans Serif', Geneva, sans-serif;
font-family: 'MS Serif', 'New York', sans-serif;
font-family: Tahoma, Geneva, sans-serif;
font-family: 'Times New Roman', Times, serif;
font-family: 'Trebuchet MS', Helvetica, sans-serif;
font-family: Verdana, Geneva, sans-serif;

Своровано отсюда

Для того же outlook можно использовать специальные проверки в коде письма, например:

      <!--[if gte mso 9]><style>sup { font-size: 100% !important; }</style><![endif]--> 

Вот здесь можно найти удобный список всего из CSS что работает, не работает в email верстке. Так, например, для outlook нужно делать табличную верстку, добавляя через проверки table туда, где используется блочная верстка.

https://www.campaignmonitor.com/css/

Answer 2

Попробуй по юникоду U+20BD. Насколько я знаю, он отображается в iOS.

READ ALSO
Как спарсить PDF в string?

Как спарсить PDF в string?

уже перебрал некоторые парсерыв основном они просто возвращают пустой результат

117
получить текущего пользователя в yml symfony4 (easyadmin)

получить текущего пользователя в yml symfony4 (easyadmin)

В общем, почитав мануалы похоже в таком варианте возможности нет, сделал через контроллер (createListQueryBuilder)

89
Открыть одним кликом несколько ссылок в yii2 GridView::widget

Открыть одним кликом несколько ссылок в yii2 GridView::widget

Подскажите, может кто сталкивалсяВыбранные в гриде Checkbox нужно открыть в новой вкладке по одному клику, к примеру по кнопке

80
Получить список файлов из директории database/seed в Laravel?

Получить список файлов из директории database/seed в Laravel?

Есть ли получше способ получить список файлов из директории database/seed, чем этот:

104