修复 Windows 上的 Unicode 问题 7
Fixing Unicode issues on Windows 7
我有渲染 ANSI 艺术的库 ansidec。我在 Windows 7 上有渲染问题(所有浏览器都存在 Unicode 错误)。
这是演示:
https://codepen.io/jcubic/pen/ZVdJOd
我有这样的代码来解决一些字符比 m
宽和比行高高的问题:
var output = document.getElementById('output');
var format_ansi = ansi.format(function(styles, color, background, text) {
var style = [];
if (color) {
style.push('color:' + color);
}
if (background) {
style.push('background:' + background);
}
if (styles.bold) {
style.push('font-weight:bold');
}
if (styles.italic) {
style.push('font-style:italic');
}
if (styles.underline) {
styles.push('text-decoration:underline');
}
text = Array.from(text).map(function(chr) {
return '<span class="chr">' + chr + '</span>';
}).join('');
return '<span style="' + style.join(';') + '">' + text + '</span>';
});
function format(str) {
output.innerHTML = format_ansi(str);
}
var url = 'https://cdn.jsdelivr.net/gh/jcubic/ansidec@master/example/unix.ans';
fetch(url).then((res) => res.text()).then(format);
document.querySelector('#file').addEventListener('change', function(event) {
var reader = new FileReader();
reader.onload = function(event) {
format(event.target.result);
};
reader.readAsText(event.target.files[0]);
});
span {
display: inline-block;
}
.chr {
max-width: 1ch;
overflow: hidden;
}
pre {
line-height: 1em;
}
<input id="file" type="file" />
<pre id="output" style="background: black"></pre>
<script src="https://unpkg.com/ansidec@0.2.1/dist/ascidec.min.js"></script>
我将每个字符包装在 span 中并设置最大宽度(如果由于 ch 单元错误,它当然无法在 IE 上正常工作)。
问题是图形顶部的黑色 space(黑色 space 从顶部第二条线下方)和鼻子下方不在 Linux.[=21 上的白线=]
和GNU/Linux差不多,线高了一点。我只想知道为什么那条黑线 space 和那条白线以及如何修复它们(在 Chrome/Windows 7 上测试)。
我尝试在跨度上设置 overflow: hidden;
,这会为每行提供黑色 spaces,如果我删除 line-height
仍然会发生这种情况。如何让它在 Windows 7 上看起来和在 Linux 上一样?这可能吗?
如果我设置显示:内联黑色 spaces 消失但宽度不再有效。
我想我已经解决了我将每一行包装在 div:
中的问题
function format(str) {
output.innerHTML = format_ansi(str).split(/\n/).map(function(line) {
return '<div>' + line + '</div>';
}).join('')
}
并添加了这个 css:
div {
max-height: 1em;
}
我有渲染 ANSI 艺术的库 ansidec。我在 Windows 7 上有渲染问题(所有浏览器都存在 Unicode 错误)。
这是演示:
https://codepen.io/jcubic/pen/ZVdJOd
我有这样的代码来解决一些字符比 m
宽和比行高高的问题:
var output = document.getElementById('output');
var format_ansi = ansi.format(function(styles, color, background, text) {
var style = [];
if (color) {
style.push('color:' + color);
}
if (background) {
style.push('background:' + background);
}
if (styles.bold) {
style.push('font-weight:bold');
}
if (styles.italic) {
style.push('font-style:italic');
}
if (styles.underline) {
styles.push('text-decoration:underline');
}
text = Array.from(text).map(function(chr) {
return '<span class="chr">' + chr + '</span>';
}).join('');
return '<span style="' + style.join(';') + '">' + text + '</span>';
});
function format(str) {
output.innerHTML = format_ansi(str);
}
var url = 'https://cdn.jsdelivr.net/gh/jcubic/ansidec@master/example/unix.ans';
fetch(url).then((res) => res.text()).then(format);
document.querySelector('#file').addEventListener('change', function(event) {
var reader = new FileReader();
reader.onload = function(event) {
format(event.target.result);
};
reader.readAsText(event.target.files[0]);
});
span {
display: inline-block;
}
.chr {
max-width: 1ch;
overflow: hidden;
}
pre {
line-height: 1em;
}
<input id="file" type="file" />
<pre id="output" style="background: black"></pre>
<script src="https://unpkg.com/ansidec@0.2.1/dist/ascidec.min.js"></script>
我将每个字符包装在 span 中并设置最大宽度(如果由于 ch 单元错误,它当然无法在 IE 上正常工作)。
问题是图形顶部的黑色 space(黑色 space 从顶部第二条线下方)和鼻子下方不在 Linux.[=21 上的白线=]
和GNU/Linux差不多,线高了一点。我只想知道为什么那条黑线 space 和那条白线以及如何修复它们(在 Chrome/Windows 7 上测试)。
我尝试在跨度上设置 overflow: hidden;
,这会为每行提供黑色 spaces,如果我删除 line-height
仍然会发生这种情况。如何让它在 Windows 7 上看起来和在 Linux 上一样?这可能吗?
如果我设置显示:内联黑色 spaces 消失但宽度不再有效。
我想我已经解决了我将每一行包装在 div:
中的问题function format(str) {
output.innerHTML = format_ansi(str).split(/\n/).map(function(line) {
return '<div>' + line + '</div>';
}).join('')
}
并添加了这个 css:
div {
max-height: 1em;
}