[Pkg-fonts-bugs] Bug#255569: Solved!

Jan Willem Stumpel jstumpel at planet.nl
Sun Jul 9 15:02:48 UTC 2006


Christian Perrier wrote:

> What I actually don't like in this fix is that it cannot be a
> patch that applies to the fonts source...

It can. Just take the .sfd files for all FreeMono variants and
change all occurrences of Width: 0 to Width: 600 (version cvs-5
did this only for characters whose width is not equal to 600 and
*not* equal to 0). It seems that really *all* characters must have
the same width, in order for a font to be recognised as
monospaced. Let fontforge generate new ttf files. The isFixedPitch
entry in the "post" table will now be *automatically* set to 1, so
ftinfo will give the correct result.

>From the fontforge FAQ
(http://fontforge.sourceforge.net/faq.html#monospace):

"How do I mark a font as monospaced?
    You don't. Just insure that all the glyphs in the font have
    the same width and then FontForge will automatically mark it
    as monospaced for you. [..]

    When I say "all glyphs" I really mean all glyphs. Even glyphs
    which unicode says should be 0 width must have the same width
    as everything else. MicroSoft suggests that GPOS be used to do
    accent combination (etc.) and then change the advance width on
    any marks (accents) to be 0."

I found that the characters which have Width: 0 in the present
version (the combining accents) do not suffer from having their
width changed from 0 to 600. They still work as combining accents
if they are *single* accents. *Multiple* combined accents
sometimes give problems, so MicroSoft's suggestion may be useful.
But multiple combined accents are a problem anyhow, and they also
do not work 100% correctly with Courier New. I think this problem
can be postponed for the moment.

I might also be a good idea to use fontforge to change the "IBM
family" of the font to "SS typewriter" (element -> font info ->
OS/2 -> IBM family). I do not know if this attribute is used by
any programs, but it seems that all other monospaced fonts have
this set. It can also be set in the .sfd file by inserting a line

OS2FamilyClass: 1285

after the line with OS2StrikeYPos.

Unfortunately, no luck yet (i.e. recognition as monospaced by KDE)
with the same treatment on Luxi Mono.

Regards, Jan






More information about the Pkg-fonts-bugs mailing list