mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-07-25 12:08:21 +02:00
* Lots of work with fonts: Support mappings of various cterm/SyncTERM fonts.
* Load font info from SAUCE * Better work with defaults & theme values
This commit is contained in:
parent
586f3d60b3
commit
5faa11664b
15 changed files with 233 additions and 39 deletions
|
@ -14,6 +14,8 @@ var assert = require('assert');
|
|||
var binary = require('binary');
|
||||
var miscUtil = require('./misc_util.js');
|
||||
|
||||
var _ = require('lodash');
|
||||
|
||||
exports.getFGColorValue = getFGColorValue;
|
||||
exports.getBGColorValue = getBGColorValue;
|
||||
exports.sgr = sgr;
|
||||
|
@ -22,7 +24,7 @@ exports.resetScreen = resetScreen;
|
|||
exports.normal = normal;
|
||||
exports.goHome = goHome;
|
||||
exports.disableVT100LineWrapping = disableVT100LineWrapping;
|
||||
exports.setSyncTermFont = setSyncTermFont;
|
||||
exports.setFont = setFont;
|
||||
exports.fromPipeCode = fromPipeCode;
|
||||
|
||||
|
||||
|
@ -115,6 +117,95 @@ function getBGColorValue(name) {
|
|||
|
||||
// See http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt
|
||||
// :TODO: document
|
||||
// :TODO: Create mappings for aliases... maybe make this a map to values instead
|
||||
var FONT_MAP = {
|
||||
// Codepage 437 English
|
||||
'cp437' : 0,
|
||||
'ibmpc' : 0,
|
||||
'ibm_pc' : 0,
|
||||
'ibm_vga' : 0,
|
||||
'pc' : 0,
|
||||
'cp437_art' : 0,
|
||||
'ibmpcart' : 0,
|
||||
'ibmpc_art' : 0,
|
||||
'ibm_pc_art' : 0,
|
||||
'msdos_art' : 0,
|
||||
'msdosart' : 0,
|
||||
'pc_art' : 0,
|
||||
'pcart' : 0,
|
||||
|
||||
// Codepage 1251 Cyrillic, (swiss)
|
||||
'cp1251-swiss' : 1,
|
||||
|
||||
// Russian koi8-r
|
||||
'koi8_r' : 2,
|
||||
'koi8-r' : 2,
|
||||
'koi8r' : 2,
|
||||
|
||||
// ISO-8859-2 Central European
|
||||
'iso8859_2' : 3,
|
||||
'iso8859-2' : 3,
|
||||
|
||||
// ISO-8859-4 Baltic wide (VGA 9bit mapped)
|
||||
'iso8859_4-baltic9b' : 4,
|
||||
|
||||
// Codepage 866 (c) Russian
|
||||
'cp866-c' : 5,
|
||||
|
||||
'iso8859_9' : 6,
|
||||
'haik8' : 7,
|
||||
'iso8859_8' : 8,
|
||||
'koi8_u' : 9,
|
||||
'iso8859_15-thin' : 10,
|
||||
'iso8859_4' : 11,
|
||||
'koi8_r_b' : 12,
|
||||
'iso8859_4-baltic-wide' : 13,
|
||||
'iso8859_5' : 14,
|
||||
'ARMSCII_8' : 15,
|
||||
'iso8859_15' : 16,
|
||||
'cp850' : 17,
|
||||
'cp850-thin' : 18,
|
||||
'cp885-thin' : 19,
|
||||
'cp1251' : 20,
|
||||
'iso8859_7' : 21,
|
||||
'koi8-r_c' : 22,
|
||||
'iso8859_4-baltic' : 23,
|
||||
'iso8859_1' : 24,
|
||||
'cp866' : 25,
|
||||
'cp437-thin' : 26,
|
||||
'cp866-b' : 27,
|
||||
'cp885' : 28,
|
||||
'cp866_u' : 29,
|
||||
'iso8859_1-thin' : 30,
|
||||
'cp1131' : 31,
|
||||
'c64_upper' : 32,
|
||||
'c64_lower' : 33,
|
||||
'c128_upper' : 34,
|
||||
'c128_lower' : 35,
|
||||
|
||||
'atari' : 36,
|
||||
'atarist' : 36,
|
||||
|
||||
'pot_noodle' : 37,
|
||||
'p0tnoodle' : 37,
|
||||
|
||||
'mo_soul' : 38,
|
||||
'mosoul' : 38,
|
||||
'mO\'sOul' : 38,
|
||||
|
||||
'microknight_plus' : 39,
|
||||
|
||||
'topaz_plus' : 40,
|
||||
'topazplus' : 40,
|
||||
'amiga_topaz_2+' : 40,
|
||||
'topaz2plus' : 40,
|
||||
|
||||
'microknight' : 41,
|
||||
'topaz' : 42,
|
||||
|
||||
};
|
||||
|
||||
|
||||
var SYNC_TERM_FONTS = [
|
||||
'cp437',
|
||||
'cp1251',
|
||||
|
@ -155,8 +246,10 @@ var SYNC_TERM_FONTS = [
|
|||
'atari',
|
||||
'pot_noodle',
|
||||
'mo_soul',
|
||||
'microknight',
|
||||
'topaz'
|
||||
'microknight_plus',
|
||||
'topaz_plus',
|
||||
'microknight',
|
||||
'topaz',
|
||||
];
|
||||
|
||||
// Create methods such as up(), nextLine(),...
|
||||
|
@ -242,7 +335,12 @@ function disableVT100LineWrapping() {
|
|||
return ESC_CSI + '7l';
|
||||
}
|
||||
|
||||
function setSyncTermFont(name, fontPage) {
|
||||
//
|
||||
// See http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt
|
||||
//
|
||||
// :TODO: allow full spec here.
|
||||
/*
|
||||
function setFont(name, fontPage) {
|
||||
fontPage = miscUtil.valueWithDefault(fontPage, 0);
|
||||
|
||||
assert(fontPage === 0 || fontPage === 1); // see spec
|
||||
|
@ -253,6 +351,22 @@ function setSyncTermFont(name, fontPage) {
|
|||
}
|
||||
return '';
|
||||
}
|
||||
*/
|
||||
|
||||
function setFont(name, fontPage) {
|
||||
name = name.toLowerCase().replace(/ /g, '_'); // conform to map
|
||||
|
||||
var p1 = miscUtil.valueWithDefault(fontPage, 0);
|
||||
|
||||
assert(p1 >= 0 && p1 <= 3);
|
||||
|
||||
var p2 = FONT_MAP[name];
|
||||
if(_.isNumber(p2)) {
|
||||
return ESC_CSI + p1 + ';' + p2 + ' D';
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
// Also add:
|
||||
// * fromRenegade(): |<0-23>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue