mirror of https://github.com/huashengdun/webssh
Support custom font family
parent
bc493dc672
commit
b2ba79d27f
|
@ -43,6 +43,8 @@ jQuery(function($){
|
||||||
title_element = document.querySelector('title'),
|
title_element = document.querySelector('title'),
|
||||||
form_id = '#connect',
|
form_id = '#connect',
|
||||||
debug = document.querySelector(form_id).noValidate,
|
debug = document.querySelector(form_id).noValidate,
|
||||||
|
custom_font = document.fonts.values().next().value,
|
||||||
|
default_fonts,
|
||||||
DISCONNECTED = 0,
|
DISCONNECTED = 0,
|
||||||
CONNECTING = 1,
|
CONNECTING = 1,
|
||||||
CONNECTED = 2,
|
CONNECTED = 2,
|
||||||
|
@ -168,6 +170,48 @@ jQuery(function($){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function custom_font_is_loaded() {
|
||||||
|
if (!custom_font) {
|
||||||
|
console.log('No custom font specified.');
|
||||||
|
} else {
|
||||||
|
console.log('Status of custom font ' + custom_font.family + ': ' + custom_font.status);
|
||||||
|
if (custom_font.status === 'loaded') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (custom_font.status === 'unloaded') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_font_family(term) {
|
||||||
|
if (term.font_family_updated) {
|
||||||
|
console.log('Already using custom font family');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!default_fonts) {
|
||||||
|
default_fonts = term.getOption('fontFamily');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (custom_font_is_loaded()) {
|
||||||
|
var new_fonts = custom_font.family + ', ' + default_fonts;
|
||||||
|
term.setOption('fontFamily', new_fonts);
|
||||||
|
term.font_family_updated = true;
|
||||||
|
console.log('Using custom font family ' + new_fonts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function reset_font_family(term) {
|
||||||
|
if (default_fonts) {
|
||||||
|
term.setOption('fontFamily', default_fonts);
|
||||||
|
term.font_family_updated = false;
|
||||||
|
console.log('Using default font family ' + default_fonts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function format_geometry(cols, rows) {
|
function format_geometry(cols, rows) {
|
||||||
return JSON.stringify({'cols': cols, 'rows': rows});
|
return JSON.stringify({'cols': cols, 'rows': rows});
|
||||||
}
|
}
|
||||||
|
@ -393,6 +437,14 @@ jQuery(function($){
|
||||||
set_backgound_color(term, color);
|
set_backgound_color(term, color);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
wssh.custom_font = function() {
|
||||||
|
update_font_family(term);
|
||||||
|
};
|
||||||
|
|
||||||
|
wssh.default_font = function() {
|
||||||
|
reset_font_family(term);
|
||||||
|
};
|
||||||
|
|
||||||
term.on_resize = function(cols, rows) {
|
term.on_resize = function(cols, rows) {
|
||||||
if (cols !== this.cols || rows !== this.rows) {
|
if (cols !== this.cols || rows !== this.rows) {
|
||||||
console.log('Resizing terminal to geometry: ' + format_geometry(cols, rows));
|
console.log('Resizing terminal to geometry: ' + format_geometry(cols, rows));
|
||||||
|
@ -409,6 +461,7 @@ jQuery(function($){
|
||||||
sock.onopen = function() {
|
sock.onopen = function() {
|
||||||
term.open(terminal);
|
term.open(terminal);
|
||||||
toggle_fullscreen(term);
|
toggle_fullscreen(term);
|
||||||
|
update_font_family(term);
|
||||||
term.focus();
|
term.focus();
|
||||||
state = CONNECTED;
|
state = CONNECTED;
|
||||||
title_element.text = url_opts_data.title || default_title;
|
title_element.text = url_opts_data.title || default_title;
|
||||||
|
@ -681,6 +734,13 @@ jQuery(function($){
|
||||||
window.Terminal.applyAddon(window.fullscreen);
|
window.Terminal.applyAddon(window.fullscreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
document.fonts.ready.then(
|
||||||
|
function () {
|
||||||
|
if (custom_font_is_loaded() === false) {
|
||||||
|
document.body.style.fontFamily = custom_font.family;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
restore_items(fields);
|
restore_items(fields);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue