Какой шрифт использует Блокнот для отображения, например, иврита, когда он утверждает, что использует Lucida Console, но Lucida Console не содержит этих символов?
Курьер Новый имеет символ ивритской буквы алеф
некоторые другие шрифты тоже, такие как Мириам и Дэвид.
Я могу вставить это в блокнот
Lucida Console не имеет персонажа. Карта символов показывает, что Lucida Console не имеет персонажа.
Тем не менее, блокнот отображает его, даже если установлен шрифт Lucida Console
Так какой шрифт использует блокнот?
2 ответа
Windows 7 имеет технологию под названием составной шрифт
используется для описания международных ссылок на шрифты и запасной логики
Это позволяет вам связать виртуальный шрифт из множества шрифтов с ограниченным диапазоном определений символов.
Составной шрифт по умолчанию называется GlobalUserInterface и находится в файле. C:\Windows\Fonts\GlobalUserInterface.CompositeFont
,
Вы можете использовать отличный инструмент BabelMap, чтобы поиграть и понять реализацию Unicode, Composite шрифтов и связанных вещей.
Также проверьте подраздел Font Fallback раздела " Примечания " этой статьи MSDN, чтобы узнать некоторые интересные сведения о том, как создается такой составной шрифт и каковы правила резервирования.
Нахождение шрифта для символа (на основе приведенной выше информации):
- В любом текстовом редакторе / просмотрщике отобразите файл
C:\Windows\Fonts\GlobalUserInterface.CompositeFont
, - В теге
<FontFamily.FamilyMaps>
найти диапазон определения для вашего персонажа. Поиск по тегу
FontFamilyMap
содержащий ваш диапазон в егоUnicode
атрибут и получить шрифт (или список шрифтов), заданный для этого диапазона (он хранится в атрибутеTarget
).
Пример: в случае символа 05D0 диапазон, найденный в файле, равен 0590-05FF (иврит)
и замены шрифтов:"Segoe UI, Tahoma, Arial, Arial Unicode MS, Microsoft Sans Serif, Lucida Sans Unicode"
- Если был только один шрифт, он у вас есть. В противном случае, давайте проверим список по порядку: запустите BabelMap
- Перейдите к данному персонажу
- Переключите переключатели с Composite Font на Single Font
или в качестве альтернативы: перейдите в меню " Шрифты" > " Покрытие шрифтов" и нажмите кнопку " Рассчитать" - Переключитесь на шрифты по порядку, как они появляются в шаге 3. Первый шрифт с отображаемым глифом - это ваш шрифт.
Примечание. Доступно 4 составных файла шрифтов, но я убедился, что подходящий для вашего случая GlobalUserInterface.CompositeFont
,
Этот метод надежен, потому что, просматривая определения, вы делаете то же самое, что и Windows.
Ответ Миро блестящий, я просто напишу немного по-другому
Есть четыре составных файла шрифтов.
Четыре
C:\Windows\Fonts>dir *composite* /s/b
C:\Windows\Fonts\GlobalMonospace.CompositeFont
C:\Windows\Fonts\GlobalSansSerif.CompositeFont
C:\Windows\Fonts\GlobalSerif.CompositeFont
C:\Windows\Fonts\GlobalUserInterface.CompositeFont
C:\Windows\Fonts>
Глядя на них, однажды увидишь, что, например, GlobalMonospace.CompositeFont
имеет 0590-06FF и резервные шрифты, перечисленные, только один, это Courier New, который имеет Алеф. Но Миро решил, что это не составной файл, а тот, который используется GlobalUserInterface.CompositeFont
Откройте этот файл C:\Windows\Fonts\GlobalUserInterface.CompositeFont
Алеф это \u05D0
так что вы должны прокрутить файл вниз, чтобы добраться туда, где я показываю на картинке, но это раздел, чтобы посмотреть
В составном файле шрифтов перечислено семейство шрифтов, которые будут действовать как резервные шрифты для различных диапазонов символов Юникода, включая 0590-06FF
(это диапазон, который включает 05D0/aleph)
<FontFamilyMap
Unicode = "0000-052F, 0590-06FF, 0750-077F, 1D00-1FFF, 2C60-2C7F, FB00-FB0F, FB1D-FBFF"
Target = "Segoe UI, Tahoma, Arial, Arial Unicode MS, Microsoft Sans Serif, Lucida Sans Unicode"
Scale = "1.0"/>
Charmap может достигать FFFF, что достаточно далеко. Charmap показать, что это не segoeUI. Но это в Тахоме.
Babelmap интересен тем, что может отображать символы после FFFF (не обязательно в этом случае), а также может показывать, какие шрифты в вашей системе имеют определенный символ Unicode. Но чтобы увидеть, какой шрифт на практике используется в блокноте, в качестве резервного шрифта, вам нужно проверить этот файл GlobalUserInterface.CompositeFont. Затем найдите в charmap или babelmap первый шрифт с нужным вам символом глифа / юникода.
В Babelmap есть составные шрифты, но я думаю, что они являются пользовательскими, а не теми, которые используются в Windows. Но можно было бы с пользой использовать babelmap для поиска того, какой шрифт имеет символ юникода, или чтобы посмотреть, какие символы находятся внутри шрифта, даже за пределами FFFF.