- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
<!DOCTYPE html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<canvas id='pixel_canvas'></canvas>
<pre id='text_canvas'></pre>
<script>
'use strict';
function tryFetch() {
const array = arguments[0];
const onError = arguments[arguments.length - 1];
let result = array;
for (let i = 1; i < arguments.length - 1; ++i) {
if (arguments[i] < result.length) {
result = result[arguments[i]];
} else {
return onError;
}
}
return result;
}
function bitmap2tetramap(bitmap) {
let tetramap = []
for (let i = 0; i < bitmap.length; i += 2) {
tetramap.push([]);
for (let j = 0; j < bitmap[i].length; j += 2) {
tetramap[tetramap.length - 1].push(
tryFetch(bitmap, i, j, 0) << 3 |
tryFetch(bitmap, i, j + 1, 0) << 2 |
tryFetch(bitmap, i + 1, j, 0) << 1 |
tryFetch(bitmap, i + 1, j + 1, 0)
);
}
}
return tetramap;
}
function renderTetramap(tetramap) {
const tiles = [
' ', '▗', '▖', '▄',
'▝', '▐', '▞', '▟',
'▘', '▚', '▌', '▙',
'▀', '▜', '▛', '█'
];
return tetramap.map(row => row.map(i => tiles[i]).join('')).join('<br>');
}
function renderBitmap(bitmap) {
return renderTetramap(bitmap2tetramap(bitmap));
}
function rgba2bitmap(rgba, width, height) {
let bitmap = [];
for (let i = 0; i < height; ++i) {
bitmap.push([]);
for (let j = 0; j < width; ++j) {
const currentRGBAElementIndex = (i * width * 4) + j * 4;
const red = rgba[currentRGBAElementIndex];
const green = rgba[currentRGBAElementIndex + 1];
const blue = rgba[currentRGBAElementIndex + 2];
const a = rgba[currentRGBAElementIndex + 3];
bitmap[i].push((red + green + blue + a) / 4 > 0? 1 : 0);
}
}
return bitmap;
}
function renderImageData(imageData) {
return renderBitmap(rgba2bitmap(imageData.data, imageData.width, imageData.height));
}
const ctx = pixel_canvas.getContext("2d");
ctx.font = "16px serif";
ctx.fillText("Какой багор )))", 0, 16);
text_canvas.innerHTML = renderImageData(ctx.getImageData(0, 0, pixel_canvas.width, pixel_canvas.height));
</script>
</body>
HIV 28.05.2020 20:51 # 0
bormand 28.05.2020 20:53 # 0
1023, залогинься.
HIV 28.05.2020 20:55 # 0
HIV 28.05.2020 20:58 # 0
1024-- 28.05.2020 21:29 # 0
Что тут сказать. Тут какая-то шрифтушня, завязанная на ширину. И её потом вставили в моноширинный [code] комментариев ГК, от чего она поехала.
nblXOMAKAKA 28.05.2020 22:21 # +1
1024-- 28.05.2020 22:23 # 0
Ну не пидоры ли?
Ещё и запасным точкам для i и ё закон не писан. Но уже по высоте.
HIV 28.05.2020 22:28 # 0
nblXOMAKAKA 28.05.2020 22:33 # 0
Желательно подобрать набор символов так, чтобы не мешать псевдографику с телетекстом.
HIV 28.05.2020 22:51 # 0
Кстати, зачем пустые точки то отображуются? Вроде как их вообще быть не должно.
bormand 28.05.2020 22:54 # 0
HIV 28.05.2020 23:04 # 0
MAMOHT 28.05.2020 23:06 # 0
bormand 28.05.2020 23:42 # 0
nblXOMAKAKA 29.05.2020 00:04 # 0
Теоретически — да. В UTF-8 первый символ цепочки от непервого отличить можно. Практически — вызубрить нереально.
В настоящий же момент в азбуке Брайля такая же ерунда, какая была в эпоху семи- и восьмибитных кодировок на компах: для каждого языка своя кодовая таблица.
В «Уникоде» символы Брайля представлены без семантики, чисто как графические символы.
Кстати, видел морскую флажковую и семафорную азбуку? Если в азбуке Морзе и в азбуке Брайля латиница и кириллица хотя бы частично транслитерируются друг в друга, то во флажковой и в семафорной азбуке гласной в латинице может соответствовать согласная в кириллице. Вот это полная жопа:
https://ru.wikipedia.org/wiki/Семафорная_азбука
https://ru.wikipedia.org/wiki/Флаги_международного_свода_сигналов
https://ru.wikipedia.org/wiki/Флаги_военно-морского_Свода_сигналов_СССР
guest8 28.05.2020 22:14 # −999
HIV 28.05.2020 22:30 # 0
gost 29.05.2020 00:01 # +1
guest8 29.05.2020 00:54 # −999