Какой шрифт использует Блокнот для отображения, например, иврита, когда он заявляет, что использует Lucida Console, но в Lucida Console этих символов нет?

Какой шрифт использует Блокнот для отображения, например, иврита, когда он заявляет, что использует Lucida Console, но в Lucida Console этих символов нет?

Courier New имеет символ \u05D0 еврейская буква алеф

То же самое делают и некоторые другие шрифты, например, Miriam и David.

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

Я могу вставить это в блокнот.

Lucida Console не имеет персонажа. Карта персонажей показывает, что Lucida Console не имеет персонажа.

Но блокнот отображает его даже если установлен шрифт Lucida Console

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

Так какой же шрифт использует Блокнот?

решение1

В Windows 7 есть технология, которая называетсясоставной шрифт

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

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

Составной шрифт по умолчанию называетсяГлобальныйпользовательскийинтерфейси находится в файле
C:\Windows\Fonts\GlobalUserInterface.CompositeFont.

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

Также проверьтеРезервный шрифтподразделЗамечанияраздел этогоСтатья MSDNузнать интересную информацию о том, как создается такой составной шрифт и каковы правила отката.


Поиск шрифта для символа (на основе вышеуказанной информации):

  1. В любом текстовом редакторе/просмотрщике откройте файл
    C:\Windows\Fonts\GlobalUserInterface.CompositeFont.
  2. В теге <FontFamily.FamilyMaps>найдите диапазон определений для вашего персонажа.
  3. Найдите тег FontFamilyMap, содержащий ваш диапазон в его Unicodeатрибуте, и получите шрифт (или список шрифтов), указанный для этого диапазона (он хранится в атрибуте Target).
    Пример:в случае характера05D0диапазон, найденный в файле,0590-05FF(иврит)
    и варианты замены шрифтов:
    "Segoe UI, Tahoma, Arial, Arial Unicode MS, Microsoft Sans Serif, Lucida Sans Unicode"

    1. Если был только один шрифт, он у вас есть. В противном случае, давайте проверим список по порядку: запустите BabelMap
    2. Перейти к указанному символу
    3. Переключить радиокнопки сСоставной шрифткОдин шрифт
      или альтернативно: перейти в менюШрифты>Покрытие шрифта...и нажмитеРассчитатькнопка
    4. Переключайтесь на шрифты в том порядке, в котором они указаны на шаге.3. Первый шрифт, в котором отображается глиф, — это ваш шрифт.

Примечание:Доступно 4 файла составных шрифтов, но я проверил, что в вашем случае правильным является GlobalUserInterface.CompositeFont.

Этот метод надежен, поскольку при поиске по определениям вы делаете то же самое, что и Windows.

решение2

Ответ Миро блестящий, я просто напишу его немного по-другому.

Существует четыре файла составных шрифтов.

Эти четыре -

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, который имеет Aleph. Но Миро определил, что это не тот композитный файл, который используется, и что тот, который используется, этоGlobalUserInterface.CompositeFont

Открыть этот файл C:\Windows\Fonts\GlobalUserInterface.CompositeFont

Алеф - это \u05D0то, что вам придется прокрутить файл вниз, чтобы добраться до того места, которое я показываю на картинке, но это раздел, на который нужно обратить внимание.

В составном файле шрифтов перечислено семейство шрифтов, которые можно использовать в качестве резервных шрифтов для различных диапазонов символов Unicode, включая 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. Но он есть в Tahoma.

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

Babelmap интересен тем, что может показывать символы после FFFF (в данном случае это не обязательно), а также может показывать, какие шрифты в вашей системе имеют определенный символ unicode. Но чтобы увидеть, какой шрифт на самом деле используется на практике блокнотом в качестве резервного шрифта, вам нужно проверить файл GlobalUserInterface.CompositeFont. Затем найдите в charmap или babelmap первый шрифт с нужным вам символом глифа/unicode.

Babelmap имеет составные шрифты, но я думаю, что они пользовательские, а не конкретно те, которые использует Windows. Но можно было бы с пользой использовать babelmap для поиска шрифта, содержащего символ Unicode, или для просмотра символов в шрифте, даже за пределами FFFF.

Связанный контент