From 94131a24adb3b8bab8e293a78cc05d3ab68ab3f2 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 12 Dec 2014 01:38:32 +0100 Subject: [PATCH] Improvement: all fonts now have a custom default width, this allows to have more uniform sizes across fonts and different rasterizations. Small tweaks in font sizes. --- app/qml/ApplicationSettings.qml | 19 ++++++++++--------- app/qml/FontPixels.qml | 5 +++++ app/qml/FontScanlines.qml | 5 +++++ app/qml/Fonts.qml | 17 +++++++++++++---- app/qml/PreprocessedTerminal.qml | 6 ++---- app/qml/SettingsTerminalTab.qml | 6 +++++- 6 files changed, 40 insertions(+), 18 deletions(-) diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index d3153f3..8316a8a 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -102,7 +102,13 @@ Item{ // FONTS ////////////////////////////////////////////////////////////////// - signal terminalFontChanged(string fontSource, int pixelSize, int lineSpacing, real screenScaling) + property real fontScaling: 1.0 + property real fontWidth: 1.0 + + property var fontIndexes: [0,0,0] + property var fontlist: fontManager.item.fontlist + + signal terminalFontChanged(string fontSource, int pixelSize, int lineSpacing, real screenScaling, real fontWidth) Loader{ id: fontManager @@ -119,8 +125,8 @@ Item{ onLoaded: handleFontChanged() } - property real fontScaling: 1.0 onFontScalingChanged: handleFontChanged(); + onFontWidthChanged: handleFontChanged(); function incrementScaling(){ fontScaling = Math.min(fontScaling + 0.05, 2.50); @@ -132,12 +138,6 @@ Item{ handleFontChanged(); } - property real fontWidth: 1.0 - onFontWidthChanged: handleFontChanged(); - - property var fontIndexes: [0,0,0] - property var fontlist: fontManager.item.fontlist - function handleFontChanged(){ if(!fontManager.item) return; fontManager.item.selectedFontIndex = fontIndexes[rasterization]; @@ -147,8 +147,9 @@ Item{ var pixelSize = fontManager.item.pixelSize; var lineSpacing = fontManager.item.lineSpacing; var screenScaling = fontManager.item.screenScaling; + var fontWidth = fontManager.item.defaultFontWidth * appSettings.fontWidth; - terminalFontChanged(fontSource, pixelSize, lineSpacing, screenScaling); + terminalFontChanged(fontSource, pixelSize, lineSpacing, screenScaling, fontWidth); } // FRAMES ///////////////////////////////////////////////////////////////// diff --git a/app/qml/FontPixels.qml b/app/qml/FontPixels.qml index 9f5143f..973e376 100644 --- a/app/qml/FontPixels.qml +++ b/app/qml/FontPixels.qml @@ -29,6 +29,7 @@ Item{ property int pixelSize: _font.pixelSize property int lineSpacing: _font.lineSpacing property real screenScaling: scaling * _font.baseScaling + property real defaultFontWidth: fontlist.get(selectedFontIndex).fontWidth ListModel{ id: fontlist @@ -38,6 +39,7 @@ Item{ lineSpacing: 2 pixelSize: 8 baseScaling: 4.0 + fontWidth: 0.8 } ListElement{ text: "Apple ][ (1977)" @@ -45,6 +47,7 @@ Item{ lineSpacing: 2 pixelSize: 8 baseScaling: 4.0 + fontWidth: 0.9 } ListElement{ text: "Atari 400-800 (1979)" @@ -52,6 +55,7 @@ Item{ lineSpacing: 3 pixelSize: 8 baseScaling: 4.0 + fontWidth: 0.8 } ListElement{ text: "Commodore 64 (1982)" @@ -59,6 +63,7 @@ Item{ lineSpacing: 3 pixelSize: 8 baseScaling: 4.0 + fontWidth: 0.8 } } } diff --git a/app/qml/FontScanlines.qml b/app/qml/FontScanlines.qml index 9f5143f..ef018d5 100644 --- a/app/qml/FontScanlines.qml +++ b/app/qml/FontScanlines.qml @@ -29,6 +29,7 @@ Item{ property int pixelSize: _font.pixelSize property int lineSpacing: _font.lineSpacing property real screenScaling: scaling * _font.baseScaling + property real defaultFontWidth: fontlist.get(selectedFontIndex).fontWidth ListModel{ id: fontlist @@ -38,6 +39,7 @@ Item{ lineSpacing: 2 pixelSize: 8 baseScaling: 4.0 + fontWidth: 0.7 } ListElement{ text: "Apple ][ (1977)" @@ -45,6 +47,7 @@ Item{ lineSpacing: 2 pixelSize: 8 baseScaling: 4.0 + fontWidth: 0.8 } ListElement{ text: "Atari 400-800 (1979)" @@ -52,6 +55,7 @@ Item{ lineSpacing: 3 pixelSize: 8 baseScaling: 4.0 + fontWidth: 0.7 } ListElement{ text: "Commodore 64 (1982)" @@ -59,6 +63,7 @@ Item{ lineSpacing: 3 pixelSize: 8 baseScaling: 4.0 + fontWidth: 0.7 } } } diff --git a/app/qml/Fonts.qml b/app/qml/Fonts.qml index 4b99bde..72285d9 100644 --- a/app/qml/Fonts.qml +++ b/app/qml/Fonts.qml @@ -29,6 +29,7 @@ Item{ property int pixelSize: _font.pixelSize * scaling property int lineSpacing: pixelSize * _font.lineSpacing property real screenScaling: 1.0 + property real defaultFontWidth: fontlist.get(selectedFontIndex).fontWidth //In this configuration lineSpacing is proportional to pixelSize. @@ -39,48 +40,56 @@ Item{ source: "fonts/modern-terminus/TerminusTTF-Bold-4.38.2.ttf" lineSpacing: 0.2 pixelSize: 35 + fontWidth: 1.0 } ListElement{ text: "Commodore PET (1977)" source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf" lineSpacing: 0.2 - pixelSize: 24 + pixelSize: 26 + fontWidth: 0.7 } ListElement{ text: "Apple ][ (1977)" source: "fonts/1977-apple2/PrintChar21.ttf" lineSpacing: 0.2 - pixelSize: 24 + pixelSize: 26 + fontWidth: 0.8 } ListElement{ text: "Atari 400-800 (1979)" source: "fonts/1979-atari-400-800/ATARI400800_original.TTF" lineSpacing: 0.3 - pixelSize: 24 + pixelSize: 26 + fontWidth: 0.7 } ListElement{ text: "Commodore 64 (1982)" source: "fonts/1982-commodore64/C64_User_Mono_v1.0-STYLE.ttf" lineSpacing: 0.3 - pixelSize: 24 + pixelSize: 26 + fontWidth: 0.7 } ListElement{ text: "Atari ST (1985)" source: "fonts/1985-atari-st/AtariST8x16SystemFont.ttf" lineSpacing: 0.2 pixelSize: 32 + fontWidth: 1.0 } ListElement{ text: "IBM DOS (1985)" source: "fonts/1985-ibm-pc-vga/Perfect DOS VGA 437.ttf" lineSpacing: 0.2 pixelSize: 32 + fontWidth: 1.0 } ListElement{ text: "IBM 3278 (1971)" source: "fonts/1971-ibm-3278/3270Medium.ttf" lineSpacing: 0.2 pixelSize: 32 + fontWidth: 1.0 } } } diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 3375e30..ec5092e 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -105,14 +105,12 @@ Item{ FontLoader{ id: fontLoader } - function handleFontChange(fontSource, pixelSize, lineSpacing, screenScaling){ + function handleFontChange(fontSource, pixelSize, lineSpacing, screenScaling, fontWidth){ fontLoader.source = fontSource; font.pixelSize = pixelSize; font.family = fontLoader.name; - var fontWidth = 1.0 / appSettings.fontWidth; - - width = Qt.binding(function() {return Math.floor(fontWidth * terminalContainer.width / screenScaling);}); + width = Qt.binding(function() {return Math.floor(terminalContainer.width / (screenScaling * fontWidth));}); height = Qt.binding(function() {return Math.floor(terminalContainer.height / screenScaling);}); scaleTexture = Math.max(Math.round(screenScaling / appSettings.scanline_quality), 1.0); diff --git a/app/qml/SettingsTerminalTab.qml b/app/qml/SettingsTerminalTab.qml index 7eb98a3..6305f20 100644 --- a/app/qml/SettingsTerminalTab.qml +++ b/app/qml/SettingsTerminalTab.qml @@ -93,7 +93,11 @@ Tab{ onValueChanged: appSettings.fontWidth = value; value: appSettings.fontWidth stepSize: 0.05 - Component.onCompleted: minimumValue = 0.5 //Without this value gets set to 0.5 + Component.onCompleted: { + // This is needed to avoid unnecessary chnaged events. + minimumValue = 0.5; + maximumValue = 1.5; + } } Text{ text: Math.round(widthChanger.value * 100) + "%"