News for hackers. Stuff that matters.
Re:Fonts extracted from BIOSes and VGA ROMs by willis936 on Wednesday May 13, 2020 @08:29AM (#23166173)
Honestly, I would find it extremely limiting if someone was able to copyright 1664 bits of information. Bitmap 8x8 fonts are absolutely trivial. In one afternoon anyone could make every human readable variation.
Re:Fonts extracted from BIOSes and VGA ROMs by willis936 on Wednesday May 13, 2020 @11:14AM (#23167656)
Thinking on it: 1664 bits is 26 * 8 * 8, which is a little low. ASCII uses indices 32 to 127 for visible characters, so this would be 95 * 8 * 8, or 6080 bits. It's still a trivially small amount of information and there are very few ways to make unique English fonts out of it, so I still don't think it should be possible to copyright it.

Looking at the actual IBM_VGA_8x8.bin file: the file size is 1024 bytes (8192 bits). I calculated the entropy of the data to be only 638 bits of information.

MATLAB code:

  fid = fopen('IBM_PC_BIOS_1981-04-24_HALF_8x8.bin','r');
  ibmVga = fread(fid);
  fclose(fid);
  p = histogram(double(ibmVga),255);
  E = -sum(log2(p.Values(p.Values > 0)).*log2(p.Values(p.Values > 0)));
Re:Fonts extracted from BIOSes and VGA ROMs by willis936 on Friday May 15, 2020 @03:21PM (#23196253)
So I went on a bit of a rabbit hole on this one. The above code is wrong. I have since fixed it. It's the same idea with some added terms to normalize for data size.

Word size matters when calculating entropy. Calculating entropy on this file using 2 to 64 bits nets a minimum information of 860 bits using a 64 bit word size. Moving past a 64 bit word size requires rethinking some things. MATLAB doesn't have great support for data sizes greater than 64 bits (and I'm certain the performance impact would be great).

  words = double(unique(X))';
  binEdges = [words-0.5; words+0.5];
  binEdges = unique(binEdges(:));
  P = histcounts(X, binEdges) / M;
  P(P == 0) = [];
  M = numel(X);
  H = -sum(P .* log(P) ./ log(max([nBits, 2]))) / nBits * log2(max([nBits, 2]));
  E = H * M * nBits;
Re:Fonts extracted from BIOSes and VGA ROMs by perl4ever on Thursday May 14, 2020 @07:26PM (#23186925)
Counterpoint, 2^638 is a large number. So a particular 638 bits is very particular.
Re:Fonts extracted from BIOSes and VGA ROMs by willis936 on Friday May 15, 2020 @03:18PM (#23196219)
This is meaningless. Information is information. Specifying a size has virtually no information. The number "638" stored in uint16 has two bits of information using any word size between 8 and 15 bits.
Re:Fonts extracted from BIOSes and VGA ROMs by dTal on Thursday May 14, 2020 @08:15AM (#23178524)
128 bits a reasonable bound for "nontrivial information" (information you'd never arrive at by guessing). 1664 bits is enough to write a short poem.

However I don't think a 1664 bits is an accurate count. You must subtract the information provided by knowing it represents the alphabet, which constrains the number of possibilities to only a few choices per letter - say 2 or 3 bits at most. So a 64-character alphabet is right on the edge of "reasonably nontrivial", due entirely down to the combinatorial complexity of choosing which glyph to use in each case. A single glyph should not be copyrightable.

Re:Fonts extracted from BIOSes and VGA ROMs by kube-system on Wednesday May 13, 2020 @02:24PM (#23169989)
The size of the work doesn't matter. What matters is what it is. This comment is protected by copyright and is 1048 bits of UTF-8.