[Cuis] Fixed-Width Font

H. Hirzel hannes.hirzel at gmail.com
Sat Jul 25 08:00:45 CDT 2015


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