[Cuis] Fixed-Width Font

H. Hirzel hannes.hirzel at gmail.com
Sat Jul 25 08:14:38 CDT 2015


I did the StrikeFont exercises in Squeak. So it could be that Squeak
has a BMP file reader which is no longer included in Cuis. A thing to
check....

--HH

On 7/25/15, H. Hirzel <hannes.hirzel at gmail.com> wrote:
> I would try to save the *.bmp file as a *.gif file in Microsoft Paint
> and then try to load it with
>
> ImageReadWriter class>>formFromStream:
>
> HTH
>
> --HH
>
> On 7/24/15, Dan Norton <dnorton at mindspring.com> wrote:
>> On 20 Jul 2015 at 19:33, Juan Vuletich wrote:
>>
>>>
>>> Hi Dan,
>>>
>>> On 7/19/2015 10:13 PM, Dan Norton wrote:
>>>     On 19 Jul 2015 at 10:31, Juan Vuletich wrote:
>>>
>>>     > On 7/18/2015 3:37 PM, Dan Norton wrote:
>>>     > > On 11 Jul 2015 at 13:40, Juan Vuletich wrote:
>>>     > >
>>>     > >> Hi Folks,
>>>     > >>
>>>     > >> It is not too hard to build new StrikeFonts. You need to
>>> build,
>>>     > by
>>>     > >> hand,
>>>     > >> files like the ones in here:
>>>     > >>
>>>     >
>>> https://dl.dropboxusercontent.com/u/13285702/BitmapDejaVuAllSizes.zi
>>>     > >> p
>>>     > >> and learn a bit about stuff like #installDejaVu2 . Maybe it
>>> was
>>>     > with
>>>     > >> this method and the files in this zip that built the
>>> existing
>>>     > >> instances
>>>     > >> of StrikeFont. Not sure.
>>>     > >>
>>>     > > That's intrigueing but I can't reproduce it. Maybe the .bmp
>>> but
>>>     > where did you get the .txt?
>>>     > >
>>>     > >   - Dan
>>>     >
>>>     > I wrote them with a text editor. Check #installDejaVu2 and
>>> really
>>>     > try to
>>>     > understand how StrikeFonts work and how they are built with
>>> this
>>>     > method.
>>>     > Maybe you'll become enlightened.
>>>     >
>>>
>>>     A StrikeFont consists of a characterToGlyphMap, xTable, glyphs,
>>> name, and several
>>>     scalars. StrikeFont class methods create fonts by processing
>>> file pairs assumed to be in the
>>>     "AAFonts" subdirectory. For example:
>>>
>>>     DejaVu Sans Oblique 14.bmp
>>>     DejaVu Sans Oblique 14.txt
>>>
>>>     Is one such pair providing the italic (oblique) style for
>>> 14-point size. There is a pair for every
>>>     font size and style: base, bold, italic, and bold italic.
>>> Therefore a font such as "DejaVu Sans"
>>>     which is available in the size interval 5 to 24 requires 160
>>> files. The file names are stylized
>>>     and encoded in the StrikeFont class methods.
>>>
>>>     Glyphs come from the .bmp file. The .txt file is a string of
>>> numbers; the first three specify
>>>     pointSize, ascent, and descent. The rest of the numbers in the
>>> .txt file are used to form the
>>>     xTable, which is the index into the glyphs for a character. The
>>> characterToGlyphMap is an
>>>     array of 256 entries which map a character's ascii value to the
>>> xTable and thence to the
>>>     glyphs.
>>>
>>>     The bold, italic, and bold italic styles are stashed as
>>> derivatives of the base and not
>>>     selectable from the current menus.
>>>
>>>     StrikeFont is a subclass of AbstractFont, which has class
>>> variables AvailableFonts and
>>>     DefaultFont.
>>>
>>>     If it can't find a file, StrikeFont will loop.
>>>
>>> Great! You got it all.
>>>
>>>     In regard to creating the .bmp and .txt files, you say, " I
>>> wrote them with a text editor."
>>>     Please tell me which text editor you used. None of mine do
>>> that.
>>>
>>> The bmp files can be created with screen capture program, after
>>> entering suitable text in it. Maybe
>>> you need to stitch several pieces together, etc. WRT the txt files,
>>> well, the editor didn't do it for
>>> me. I wrote them. I _typed_ them. Maybe I used some (long lost) code
>>> to look for white columns
>>> separating glyphs, but I'm not really sure. #xTallyPixelValue:orNot:
>>> and friends are great for this
>>> kind of stuff.
>>>
>>> In any case, it will be easier for you, as you want a monospaced
>>> font. Printing something like (32
>>> to: 255) collect: [ :ascii | ascii-32 * 9 ] into the file might be
>>> enough.
>>>
>>> You have all the pieces at hand. it just requires a bit of
>>> patience.
>>>
>>
>> Encouraged by this, I have tried cobbling a fixed-width StrikeFont from
>> Courier New which
>> comes with Windows7. At this point, if some kind of fixed-width smudges
>> would appear then
>> it would be progress. Here's where I am:
>>
>> The immediate problem is an error: 'Unsupported format. Try
>> "Graphics-Files-Additional.pck.st".' which arises when ImageReadWriter
>> class>>formFromStream: examines the .bmp file.
>>
>> Higher in the context, Form class>>fromBinaryStream: has firstByte = 66
>> which I mention
>> because of the way the .bmp file was made. Here is the process I used,
>> from
>> the bottom up:
>>
>> ImageMagick freeware	 produces the glyphs but with something stubbornly
>> prepended. The
>> command line is:
>> 	convert -font \windows\fonts\cour.ttf -pointsize 12
>> label:@characters.txt
>> courier12.bmp
>>
>> Using NotePad, save characters.txt with encoding: UTF-8.
>>
>> Paste the character string onto a NotePad
>>
>> Copy the character string.
>>
>> In a Cuis workspace print:
>> 	str := String new writeStream.
>> 	(32 to: 255) do: [ :n | str nextPut: n asCharacter]
>> 	str contents.
>>
>> Code package and files allegedly for courier strike fonts are attached if
>> you're
>> interested.
>>
>>  - Dan
>>
>>
>




More information about the Cuis mailing list