From 6ff63d7c3c073cff824e58d6b187dd2a36daabf42af2da4615528f934279fa87 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Tue, 22 Jan 2019 23:15:06 +0000 Subject: [PATCH] - Expand font scaling notes and separate out to extra file OBS-URL: https://build.opensuse.org/package/show/M17N:fonts/int10h-oldschoolpc-fonts?expand=0&rev=3 --- int10h-oldschoolpc-fonts.changes | 6 +++++ int10h-oldschoolpc-fonts.spec | 18 +++++++------ ratio.txt | 44 ++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 ratio.txt diff --git a/int10h-oldschoolpc-fonts.changes b/int10h-oldschoolpc-fonts.changes index 547c9c9..054d9e3 100644 --- a/int10h-oldschoolpc-fonts.changes +++ b/int10h-oldschoolpc-fonts.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Jan 22 23:14:06 UTC 2019 - Jan Engelhardt + +- Expand font scaling notes and separate out to extra file + (there is a lot to talk about). + ------------------------------------------------------------------- Fri Oct 28 17:09:15 UTC 2016 - jengelh@inai.de diff --git a/int10h-oldschoolpc-fonts.spec b/int10h-oldschoolpc-fonts.spec index 3f260cb..9480732 100644 --- a/int10h-oldschoolpc-fonts.spec +++ b/int10h-oldschoolpc-fonts.spec @@ -1,7 +1,7 @@ # # spec file for package int10h-oldschoolpc-fonts # -# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -22,9 +22,10 @@ Release: 0 Summary: Remakes of old computer hardware fonts License: CC-BY-SA-4.0 Group: System/X11/Fonts -Url: http://int10h.org/oldschool-pc-fonts/ +URL: http://int10h.org/oldschool-pc-fonts/ Source: http://int10h.org/oldschool-pc-fonts/download/ultimate_oldschool_pc_font_pack_v1.0.zip +Source8: ratio.txt BuildRequires: fontpackages-devel BuildRequires: unzip %reconfigure_fonts_prereq @@ -32,18 +33,19 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildArch: noarch %description -This fontpack contains pixel-accurate remakes of various type styles +This fontpack contains remakes of various type styles from text-mode era PCs — in modern Unicode-compatible TrueType form (plus straight bitmap versions). The main focus is on hardware character sets: the kind that's located in a ROM and shown by default when working in text (or graphics) mode. -[These fonts are not corrected for the different pixel ratios used by -the eponymous historic hardware; you need to manually do this with e.g. -`xterm -fa "ATI 8x16:matrix=1 0 0 1.35"`] +[ Classic hardware text mode stretches the fonts to fit the screen! +To recreate the same visuals of that, a stretch factor must be +applied. For details, see ratio.txt inside the package. ] %prep %setup -Tcqa0 +cp "%_sourcedir/ratio.txt" . %build iconv -f cp437 -t utf-8 readme.txt @@ -58,7 +60,7 @@ install -pm 0644 */*.ttf "$c/" %files %defattr(-, root,root) -%doc readme.txt license.txt +%doc readme.txt license.txt ratio.txt %_ttfontsdir/ %changelog diff --git a/ratio.txt b/ratio.txt new file mode 100644 index 0000000..a5f3428 --- /dev/null +++ b/ratio.txt @@ -0,0 +1,44 @@ +In classic IBM PC text mode, the graphics card stretches the font +such that it fills the screen. + +A 9x16 font over 80x25 columns is displayed as a 720x400 image. +Assuming a 4:3 monitor as typically was present in the days, this +leads to a pixel aspect ratio of 20:27. + + Font size Image size aspect decimal inverse + ------------------------------------------------------------ + 8x8 640x200 5:12 0.42 2.40 + 8x14 640x350 35:48 0.73 1.37 + 8x16 640x400 5:6 0.83 1.20 + 9x16 720x400 20:27 0.74 1.35 + +To faithfully recreate the same visual look as such a monitor would +show, this aspect ratio needs to be applied when making use of the +font. + +For cool-retro-term, there is a "Font Width" slider in the settings; +set it to 74%, 83%, or whatever is necessary. (Notice the pattern of +the "decimal" column of our table.) + +For xterm, a fontconfig matrix can be specified like so: + + xterm -fa "Px437 ATI 9x16:matrix=0.74 0 0 1" + xterm -fa "Px437 ATI 9x16:matrix=1 0 0 1.35" + +One can either horizontally compress the glyphs, or vertically +stretch them to get to the result. The compress/stretch action +influences how many characters will be visible in a fullscreen +setting, so the basic font size may need to be adjusted. + + xterm -fa "Px437 ATI 9x16:size=32:matrix=0.74 0 0 1" + xterm -fa "Px437 ATI 9x16:size=24:matrix=1 0 0 1.35" + +produce an equivalent result. + +Extra caveat: When using a matrix, you should also specify the -fd +parameter *and* specify the same matrix inside the -fd font +specification. Otherwise, CJK characters will be rendered in a +different size than the main characters. For a stretching matrix like +1/1.35, not specifying -fd and, as a result, having smaller CJK chars +is not as bad a problem as having bigger truncated CJK chars with a +compressing matrix like 0.74/1.