Почему моноширинные шрифты дают линии разной ширины? - PullRequest
0 голосов
/ 23 апреля 2020

Я ищу шрифт, который покрывает многоязычную плоскость Basi c (BMP) (от U + 0000 до U + FFFF) с фиксированной шириной на символ. Чтобы проверить это, я сделал демонстрационную страницу HTML со всеми 65536 символами, представленными в строках по 64 символа с использованием моноширинных шрифтов:

var text = "";
for (var i = 0; i < 65536; ++i) {
  if (i % 64 === 0) {
    text += "U+"+("0000"+(i+0 ).toString(16)).slice(-4) + "~";
    text += "U+"+("0000"+(i+64).toString(16)).slice(-4) + ":"; 
  }
  text += String.fromCharCode(i);
  if (i % 64 === 63) {
    text += "|\n";
  }
};
var pre = document.createElement("pre");
pre.innerText = text;
document.body.appendChild(pred);

Но, вопреки моим ожиданиям, ширина каждой строки не был постоянным Например, это результат с monospace:

monospace

Это результат с courier new:

courier new

Четный unifont имеет строки различной ширины:

unifont

Почему эти шрифты приводят к строкам с разной шириной, если они моноширинные? Есть ли какой-либо шрифт, предназначенный для представления каждого из символов на BMP?

...