Как заставить браузеры загружать японские шрифты для текста CJK вместо китайских шрифтов - PullRequest
1 голос
/ 27 июня 2011

У меня есть документ XHTML1.1 со смешанным текстом на английском и японском языках с индикаторами набора символов lang = "jp" и xml: lang = "jp" в открывающем теге для элемента html. Фактический контент кодируется в UTF-8, и это также указывается в типе контента:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="jp" lang="jp">
<head>
    <title>Test page</title>
    <meta http-equiv="Content-Type"
      content="application/xhtml+xml; charset=utf-8"/>
</head>
<body><div>今</div><div>込</div></body></html> 

В спецификациях XML / HTML говорится, что атрибут "lang" наследуется, поэтому содержимое должно отображаться с использованием шрифта, поддерживающего японский, однако вместо этого я вижу, что используются шрифты, предназначенные для китайского, а не японского (Японские «кандзи» на самом деле во многих случаях слегка различаются между двумя языками и сильно различаются для нескольких общих символов).

Например, в приведенном выше коде верхняя часть первого символа должна быть ˄ с - под ним. Если вместо этого используется китайский шрифт, этот символ неизменно будет выглядеть как ˄ с `снизу. Кроме того, второй символ должен иметь форму, которая выглядит как 7 \, но когда используется китайский шрифт, он чаще будет выглядеть как лямбда, λ. Ни одна из них не является правильной печатной / экранной формой на японском языке.

Вопрос: есть ли способ заставить браузеры выбирать японские шрифты для текста CJK без написания правила CSS, содержащего сто одно имя шрифта, в надежде, что хотя бы один из них будет соответствовать тому, что установлен пользователем

(Поскольку минимальные шрифты CJK располагаются в пределах> 4 МБ, а полные - около 15 ~ 20 МБ, полагаться на объявление @ font-face, чтобы гарантировать, что правильный шрифт загружается, явно не может быть и речи).

ответы на комментарии

Yuji: все текущие версии современных браузеров. Если ответ зависит от платформы и браузера, это действительно просто; для того, чтобы он работал везде, ясно, что они мне понадобятся =)

deceze: к сожалению, браузеры не говорят, какой шрифт они использовали, если нет явного правила CSS, которое бы указывало им, какой шрифт выбрать. Обращаясь к вычисленному стилю с использованием getComputedStyle(document.getElementById("elementid")).getPropertyValue("font-family"), Chrome сообщает, что он использует «Times New Roman», а это не так, потому что в этом шрифте нет глифов CJK. Firefox еще менее полезен, сообщая, что он использует шрифт «засечек», который является не шрифтом, а общей меткой категории ...

2015 г. редактировать

Четыре года спустя этот вопрос по-прежнему получает отклики, поэтому обратите внимание на две вещи:

  1. XHTML1.1 уже вышел в 2011 году, сейчас это мертвая технология. XML является промежуточным форматом, и если контент должен быть размещен в Интернете, единственный правильный способ сделать это - XSLT-контент в реальном HTML (Конечно, если вы работаете с XML, вы уже знаете, что XML не является формат представления, и у вас уже есть листы XSLT, которые превращают ваши DTD-совместимые данные в обычный текст, HTML, PDF и т. д.)
  2. Услуги хостинга веб-шрифтов поддерживают поднаборы , так что веб-сайты могут использовать шрифты, которые содержат только контуры и правила композиции для символов, используемых на странице.

2019 edit

Кто-то указал, что атрибут lang должен быть ja, а не jp. Хотя XHTML является полностью мертвой технологией почти десять лет спустя после публикации, это все еще правильная информация.

1 Ответ

0 голосов
/ 27 июня 2011

Что ж, если ничего не поможет, я бы явно указал общие японские шрифты в CSS.Посмотрите, какие шрифты доступны на каких платформах, и создайте стек шрифтов.

По сути, просто выберите шрифты по старинке и посмотрите, решит ли это проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...