Поддержка браузера и обходные пути для знака турецкой лиры

Так Турция недавно решила создать новый знак для своей лиры:

введите здесь описание изображения

Unicode 6.2 (выпущен в сентябре 2012 г.) добавил это в свой репертуар как U+20BA ₺ TURKISH LIRA SIGN, и Меня попросили начать использовать его в веб-приложении, которое я создаю. Проблема в том, что никто пока не поддерживает это (за исключением, по-видимому, Windows 8), и это не отображается как обычный квадрат, вопросительный знак или шестнадцатеричный блок, а всевозможные другие случайные вещи. Обычно надежный fileformat.info считает, что он должен выглядеть как это:

введите здесь описание изображения

... то же самое я получаю и в OS X. Charbase получает это тоже неправильно, но по-другому:

введите здесь описание изображения

Практический вопрос: есть ли разумный способ обойти это? Самая большая сложность заключается в том, что символ должен быть разрешен в произвольном, редактируемом пользователем тексте, поэтому любые решения, основанные на изображениях, исключены.

И теоретический вопрос: насколько я понимаю, у U+20BA никогда не было назначенного символа, так откуда же берутся эти странные символы? Я не получаю тех же проблем с U+20B9 ₹ INDIAN RUPEE SIGN, который почти такой же новый и плохо поддерживается, но, по крайней мере, более изящно терпит неудачу.


person lambshaanxy    schedule 02.01.2013    source источник
comment
fileformat.info теперь правильно отображает символ   -  person digitalfrost    schedule 20.10.2015


Ответы (3)


В настоящее время лучше всего использовать шрифт Google Source Sans Pro. . Он содержит ТУРЕЦКУЮ ЛИРУ в своем латинском подмножестве. Таким образом, вы можете использовать, например.

<link rel=stylesheet href=
"http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700,400italic,700italic&amp;subset=latin,latin-ext">
<style>
body { font-family: Source Sans Pro; }
</style>

Однако это означает, что вам следует рассмотреть возможность использования Source Sans Pro в качестве общего шрифта. На это есть две причины. Предположим, что вы объявляете font-family: Arial, Source Sans Pro, например. Во-первых, IE 9 не может отображать ТУРЕЦКУЮ ЛИРУ (на самом деле он не очень хорошо использует шрифты). Во-вторых, в браузерах, которые технически используют шрифты нормально, выражение вроде «₺50» (число, которому предшествует ТУРЕЦКАЯ ЛИРА) будет выглядеть странно, поскольку цифры намного выше знака валюты. Причина в том, что в Source Sans Pro ТУРЕЦКАЯ ЛИРА была разработана так, чтобы соответствовать высоте цифр в этом шрифте, а в Arial цифры меньше по высоте.

В качестве альтернативы вы можете использовать изображение ТУРЕЦКОЙ ЛИРЫ относительно большого размера и использовать элемент img для его встраивания со свойством height, установленным в em единицах, чтобы масштабировать его до размера шрифта. Причина большого размера заключается в том, что изображения обычно хорошо масштабируются вниз, но не так хорошо вверх. В моем Руководстве по использованию специальных символов в HTML я предлагаю использовать height: 0.8em для символов, встроенных в изображения, но точные размеры действительно зависят от дизайна символа и изображения и от того, как они должны соотноситься с символами в шрифте. Обычный принцип заключается в том, чтобы символы валюты, такие как «$», «£» и «€», занимали ту же высоту, что и цифры (в частности, «цифры подкладки» или «цифры в верхнем регистре», которые есть в большинстве шрифтов по умолчанию; В Source Sans Pro тоже есть «цифры в старом стиле», но их нужно выбирать с помощью CSS).

Чтобы представить ситуацию в перспективе, ТУРЕЦКАЯ ЛИРА — это новейший символ в Unicode, добавленный в сентябре прошлого года, и обычно проходит около десяти или более лет с момента принятия символа в Unicode до его общедоступности в шрифтах.

P.S. Это проблема со шрифтом, а не с браузером, хотя некоторые браузеры (IE) по-прежнему испытывают трудности с подбором символов из разных шрифтов.

person Jukka K. Korpela    schedule 02.01.2013
comment
В остальном звучит очень хорошо, но как вы пришли к выводу, что Source Sans Pro поддерживает лиру? Я получаю X, когда пытаюсь просмотреть строку U + 20BA ₺ ЗНАК ТУРЕЦКОЙ ЛИРЫ в предварительном просмотре веб-шрифтов Google. Кроме того, как отмечалось выше, изображения не подходят для нас, поскольку символы будут использоваться в редактируемых пользователем текстовых областях. - person lambshaanxy; 03.01.2013
comment
@jpatokal, просто проверив с помощью <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro' rel='stylesheet' type='text/css'>. - person Jukka K. Korpela; 03.01.2013
comment
Ага! Разобрался, нужно указать subset=latin-ext:<link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro&subset=latin,latin-ext' rel='stylesheet' type='text/css'> - person lambshaanxy; 04.01.2013
comment
...ja terveisia Melbournesta Tampereelle ex-oppilaaltanne silloisessa TKK:ssa, maailma on pieni ;) - person lambshaanxy; 04.01.2013
comment
@jpatokal, правильно, ТУРЕЦКАЯ ЛИРА находится в подмножестве latin-ext. Виноват. Я тестировал на компьютере с установленным в системе Source Sans Pro (как версия, содержащая latin-ext). По этой причине я тоже ошибся насчет наличия ТУРЕЦКОЙ ЛИРЫ, выделенной курсивом и жирным шрифтом — там она тоже есть. Я исправил свой ответ и добавил пример кода. - person Jukka K. Korpela; 04.01.2013
comment
@JukkaK.Korpela P.S. Это проблема со шрифтом, а не с браузером, хотя некоторые браузеры (IE) по-прежнему испытывают трудности с подбором символов из разных шрифтов. Что именно вы имеете в виду? Со временем мы собираемся использовать этот шрифт, но в чем причина того, что он не работает в IE7, но работает в Firefox? - person Magnilex; 05.07.2013
comment
@Magnilex, ошибка IE, о которой я говорил, относится к ситуациям, когда основной шрифт не содержит символа, и браузер должен попытаться получить его из другого шрифта. Это не должно быть проблемой, если вы укажете загружаемый шрифт (первым в списке font-family), он будет использоваться браузером и содержит нужный символ. - person Jukka K. Korpela; 05.07.2013

Вы можете доставить свой собственный шрифт через Интернет через: https://developer.mozilla.org/en-US/docs/CSS/@font-face и создайте собственный шрифт через http://fontforge.org/

Если вы используете XML и ваши требования не запрещают это, вы можете использовать сущности для определения некоторой разметки, которая на данный момент включает в себя разметку изображения (и может быть заменена символом Unicode позже), или сделать что-то подобное в HTML через < href="https://github.com/brettz9/js-css-entities" rel="nofollow">JS или CSS.

person Brett Zamir    schedule 02.01.2013

Я думаю, что "ничего не делать" - лучшая идея. Если браузер/шрифты пользователя не поддерживают это, то пользователю необходимо выполнить обновление. Все, что вы делаете на стороне сервера, будет хаком (хотя доставка шрифта через CSS — неплохая идея). Если ваше приложение поддерживает произвольный Unicode в тексте, предоставленном пользователем, в конечном итоге ваше приложение станет совместимым, так как старые браузеры и устройства будут заменены более новыми.

Объяснить это своему начальству — сложная задача.

person artbristol    schedule 02.01.2013