5

Иногда, когда я копирую и вставляю текст в Блокнот, он вставляет текст с шрифтом и размером по умолчанию для Блокнота, однако вторая половина вставленной строки будет на несколько размеров меньше шрифта. Я озадачен тем, почему это происходит.

Я задавался вопросом, возможно, это был какой-то тип скрытого форматирования, который копировался в Блокнот, но я считаю, что Блокнот лишает форматирования. Впоследствии я взял тот же текст и попытался скопировать и вставить его в строки URL-адресов и CMD-запросы для удаления любого потенциального форматирования (даже если это был незашифрованный текст, скопированный из Интернета), а затем снова вставил его в Блокнот, но это все еще оставляет это явление ,

Кроме того, при изменении размера окна «Блокнот» будет изменено, какая часть строки имеет размер по умолчанию и уменьшается, как показано на скриншоте, размещенном ниже.

Три окна фактически являются одним и тем же окном «Блокнот», каждое из которых имеет разное изменение размера и результирующее изменение размера текста.

2 ответа2

7

У меня были те же проблемы с блокнотом. Загрузка файла и анализ его содержимого в двоичном виде показали причину: строка, которая начинается с маленьких букв шрифта, содержит метку порядка байтов "EF BB BF" (см. Https://en.wikipedia.org/wiki/Byte_order_mark).

Что делать: каким-то образом эта отметка сохраняется даже при сохранении файла. Некоторое редактирование заставит Блокнот распознавать Юникод и сообщит вам, что он будет потерян, если вы сохраните текст. Вы также можете перейти к самому началу и удалить невидимого "персонажа", нажав клавишу "Удалить". (Шрифт снова станет большим в одно мгновение.)

Как это произошло (в моем случае): я создавал текстовые файлы с маркерами Unicode, а затем текстовые строки сортировались и сохранялись снова. Метка порядка байтов стала частью строки текста, которая была помещена в конец файла (невидимая метка испортила порядок сортировки), и в середине текста эта метка просто вызывает этот эффект.

5

Чтобы фактически объяснить проблему, Уве упоминает: то, что вы видите здесь, это замена шрифтов, выполненная Windows. Если отображаемый текст не содержит символа в выбранном вами шрифте, Windows попытается найти его там, где он есть. Это наиболее полезно для использования, скажем, китайского или арабского текста в латинском тексте, потому что в Windows есть специальные шрифты для определенных сценариев, и ни один шрифт в любом случае не может содержать каждый сценарий¹.

Уве упоминает метку порядка байтов, хотя она не должна появляться в своем воплощении UTF-8. Например, в текстовом файле UTF-16 это выглядит иначе. Обычно U+FEFF не должен появляться в середине текстового потока, а только в начале, но это просто пробел нулевой ширины, поэтому, как правило, он не причиняет никакого вреда, если это иногда случается. Но Блокнот здесь просто встречает символ, которого у выбранного шрифта нет². Таким образом, найден другой, содержащий его, и, поскольку символы вокруг него хорошо вписываются в выбранный тогда шрифт, он имеет определенную заразность.

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

Конечно, в этих случаях довольно легко понять почему.


1 Ограничение формата шрифта для одного, а затем обычная проблема того, как стили латинского шрифта (например, с засечками, без засечек, рукописные и т.д.) Отображаются в соответствующий скрипт - обычно бесполезно даже пытаться использовать большинство шрифтов. Таким образом, большинство шрифтов содержат по крайней мере латинский, греческий и кириллический, потому что они довольно похожи по стилю, но за исключением того, что редко делается.

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

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