Comment 6 for bug 166901

Revision history for this message
Bwalle (bwalle) wrote :

Well, if you don't embed fonts it's always a matter of luck
whether that character and that font is available. It
depends on Ghostscript or on the RIP in the printer. I
_guess_ that 99 % of the available fonts support all
character in ISO1252Encoding. The actual encoding of the
font is not important because you define the encoding.
Important are glyph names.

So an easy (but only valid for Postscript Level 2) solution
to support more than Latin1 charset would be not to use
encodings but to directly specify glyphs like this:

/T glyphshow
/e glyphshow
/s glyphshow
/t glyphshow
/hyphen glyphshow
/A glyphshow
/p glyphshow
/p glyphshow
/l glyphshow
/i glyphshow
/k glyphshow
/a glyphshow
/t glyphshow
/i glyphshow
/o glyphshow
/n glyphshow

Well, the postscript becomes bloated but that shouldn't be a
matter in Inkscape because in a drawing application you
don't specify thounsands of letters, I guess, it's not a
word processor :)

The advantage is that you can use more than 255 characters
and have a bit unicode support. The glyph names are
available in
http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt.
Names _not_ available in this list should have the name
/uniXXXX where XXXX is the hex representation of the
character in Unicode. But, of course, it does not work
simply to use /uniXXXX whith other characters (that would be
too easy ;-)).

Of course this doesn't guarantee that the font contains the
glyph. If it doesn't, .notdef must be printed, which is a
space normally. No error message. But if the font contains
the characters on screen it should contain it while printing
if it's the same font and if the font is not buggy (using
wrong glyph names).

I attached a eps file which contains the "Test-Applikation"
string using this glyphshow technique, tested with a
Postscript printer (that's why I use the "Helvetica" font
instead) and Ghostscript.

The question is: How to implement font embedding (Type1,
Type42 for TrueType) properly.