Может CSS выбирать другой стандартный шрифт и размер в зависимости от Языка

Функциональный подход

сначала определяет вспомогательный метод frac, который каким-то образом совпадает с math.modf

>>> def frac(n):
...     i = int(n)
...     f = round((n - int(n)), 4)
...     return (i, f)
... 
>>> frac(53.45)
(53, 0.45) #a tuple

, затем функция для форматирования часы десятичные

>>> def frmt(hour): #you can rewrite it with while if you wish
...     hours, _min = frac(hour)
...     minutes, _sec = frac(_min*60)
...     seconds, _msec = frac(_sec*60)
...     return "%s:%s:%s"%(hours, minutes, seconds)
... 
>>> frmt(72.345)
'72:20:42'
>>> l = [72.345, 72.629, 71.327]
>>> map(frmt, l)
['72:20:42', '72:37:44', '71:19:37']

25
задан Noah 11 February 2009 в 14:31
поделиться

5 ответов

input { font-family: Verdana, Raavi, sans-serif; font-size: 14px;}

Это должно работа в Ваших целях:

  • , Если текст является английским, оба шрифта должны содержать глифы, и Verdana будет предпочтен
  • , Если текст будет панджабским, Verdana не должен содержать глифы, таким образом, браузер должен отступить к Raavi

, я не положителен, если все браузеры будут вести себя правильно, но это - то, что они должны сделать согласно спецификации CSS.

14
ответ дан Miles 15 October 2019 в 15:31
поделиться

Чистое решение CSS могло бы быть столь же легким как:

input[lang=en] {
  font-family:Verdana;
  font-size:12px;
}

input[lang=pa] {
  font-family:Raavi;
  font-size:14px;
}

, Но все еще ваше дело устанавливать lang атрибут входного элемента.

, К сожалению, как с большинством воображение функции CSS, селекторы атрибута не составляют 100%, работающих через массив браузеров сегодня. Ваш лучший выбор, по-моему, состоит в том, чтобы использовать класс на язык и присвоить его входному элементу.

Обновление:

На Ваш запрос, вот пример наивного способа сделать это с ванильным JavaScript. Существуют, конечно, улучшения, которые будут сделаны, но это "работает".

<style type="text/css">
  .lang-en {
    font-family:Verdana;
    font-size:12px;
  }

  .lang-pa {
    font-family:Raavi;
    font-size:14px;
  }
</style>

<form>
  <input type="text" onkeyup="assignLanguage(this);" />
</form>

<script type="text/javascript">
  function assignLanguage(inputElement) {
    var firstGlyph = inputElement.value.charCodeAt(0);

    if((firstGlyph >= 65 && firstGlyph <= 90) || (firstGlyph >= 97 && firstGlyph <= 122)) {
      inputElement.setAttribute('lang', 'en');
      inputElement.setAttribute('xml:lang', 'en');
      inputElement.setAttribute('class', 'lang-en');
    } else {
      inputElement.setAttribute('lang', 'pa');
      inputElement.setAttribute('xml:lang', 'pa');
      inputElement.setAttribute('class', 'lang-pa');
    }
  }
</script>

Этот пример огни после символ был введен. Это затем проверяет, падает ли это между диапазоном, который рассматривают "английским языком", и присваивает атрибуты соответственно. Это устанавливает lang, xml:lang, и class атрибуты.

8
ответ дан Zack The Human 15 October 2019 в 15:31
поделиться

Это - обычная практика при поддержании многоязычных веб-сайтов для использования отдельных файлов CSS для каждого языка. Это желательно, потому что необходимо будет скорректировать больше, чем шрифт. Необходимо будет часто корректировать интервал для соответствия длине строк на языке. Кроме того, Вы, возможно, должны скорректировать часть основного форматирования страницы для создания этого более естественным для пользователей языка.

устойчивый ответ должен интернационализировать а не просто соглашаться на другой шрифт, потому что в конечном счете Вы найдете, что выбор шрифта будет недостаточен.

3
ответ дан Elijah 15 October 2019 в 15:31
поделиться

Как CSS мог знать о входном языке?

я боюсь, что единственное решение состоит в том, чтобы найти шрифт юникода, который довольно ищет оба набора символов. Который совсем не прекрасен, если Ваш удаленный читатель не установил его. Возможно, Arial Unicode MS.

0
ответ дан mouviciel 15 October 2019 в 15:31
поделиться

Единственное надежное решение на данный момент состоит в том, чтобы перечислить шрифты в желаемом порядке, как Miles указал.

, Надо надеяться, (корректное) решение, обозначенное Zack, могло бы правильно поддерживаться большим количеством браузеров.

, Но даже затем это будет Ваша обязанность отметить различные разделы с надлежащим атрибутом Ленга.

Ничто не может надежно обнаружить язык никакого текста.

0
ответ дан Mihai Nita 15 October 2019 в 15:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: