7

Курьер Новый имеет символ ивритской буквы алеф

некоторые другие шрифты тоже, такие как Мириам и Дэвид.

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

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

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

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

2 ответа2

6

Windows 7 имеет технологию под названием составной шрифт

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

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

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

Вы можете использовать отличный инструмент BabelMap , чтобы поиграть и понять реализацию Unicode, Composite шрифтов и связанных вещей.

Также проверьте подраздел Font Fallback раздела « Примечания » этой статьи 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. Переключить переключатели с Composite Font на Single Font
      или в качестве альтернативы: перейдите в меню « Шрифты» > « Покрытие шрифтов» и нажмите кнопку « Рассчитать»
    4. Переключитесь на шрифты по порядку, как они появляются в шаге 3 . Первый шрифт с отображаемым глифом - это ваш шрифт.

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

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

2

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

Есть четыре составных файла шрифта.

Четыре

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

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

Aleph - это \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 для поиска того, какой шрифт имеет символ Unicode, или чтобы посмотреть, какие символы находятся внутри шрифта, даже за пределами FFFF.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .