mirror of
				https://github.com/Swordfish90/cool-retro-term.git
				synced 2025-11-04 00:52:11 +00:00 
			
		
		
		
	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.
This commit is contained in:
		@@ -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 /////////////////////////////////////////////////////////////////
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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) + "%"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user