* src/docgen/LPRDoc.py: Font autodetection: trying freefont,

MS fonts, and then stock Gnome fonts.


svn: r2981
This commit is contained in:
Alex Roitman 2004-03-08 22:32:13 +00:00
parent 0f8da3197c
commit ee99826261
2 changed files with 90 additions and 17 deletions

View File

@ -1,3 +1,7 @@
2004-03-08 Alex Roitman <shura@alex.neuro.umn.edu>
* src/docgen/LPRDoc.py: Font autodetection: trying freefont,
MS fonts, and then stock Gnome fonts.
2004-03-07 Alex Roitman <shura@alex.neuro.umn.edu>
* src/docgen/LPRDoc.py: Support for graphic reports.

View File

@ -55,7 +55,10 @@ newpath = [
]
sys.path = newpath + sys.path
### end FIXME ###
import gnomeprint, gnomeprint.ui
### FIXME ###
if gnomeprint.Context.__dict__.has_key('grestore'):
support_photos = 1
else:
@ -63,6 +66,7 @@ else:
print "LPRDoc: Photos and rotated text (used in TimeChart)"
print "are not supported for direct priting."
print "Get gnome-python from CVS or wait for the next gnome-python release."
### end FIXME ###
#------------------------------------------------------------------------
#
@ -89,13 +93,77 @@ _SUPER_ELEVATION_FRACTION = 0.3
_SUPER_SIZE_REDUCTION = 2
# Font constants -- specific for gnome-print
_FONT_SANS_SERIF = "Arial"
_FONT_SERIF = "Times New Roman"
_FONT_MONOSPACE = "Courier New"
_FONT_BOLD = "Bold"
_FONT_ITALIC = "Italic"
_FONT_BOLD_ITALIC = "Bold Italic"
_FONT_REGULAR = "Regular"
_TTF_FREEFONT = ( ( 'FreeSerif Medium',
'FreeSerif Bold',
'FreeSerif Italic',
'FreeSerif BoldItalic' ),
( 'FreeSans Medium',
'FreeSans Bold',
'FreeSans Oblique',
'FreeSans BoldOblique'),
( 'FreeMono Medium',
'FreeMono Bold',
'FreeMono Oblique',
'FreeMono BoldOblique')
)
_MS_TTFONT = ( ( 'Times New Roman Regular',
'Times New Roman Bold',
'Times New Roman Italic',
'Times New Roman Bold Italic' ),
( 'Arial Regular',
'Arial Bold',
'Arial Italic',
'Arial Bold Italic'),
( 'Courier New Regular',
'Courier New Bold',
'Courier New Italic',
'Courier New Bold Italic')
)
_GNOME_FONT = ( ( 'Serif Regular',
'Serif Bold',
'Serif Italic',
'Serif Bold Italic' ),
( 'Sans Regular',
'Sans Bold',
'Sans Italic',
'Sans Bold Italic'),
( 'Monospace Regular',
'Monospace New Bold',
'Monospace New Italic',
'Monospace New Bold Italic')
)
# Search for ttf-freefont first
ttf_not_found = 0
for family in _TTF_FREEFONT:
for font in family:
if font not in gnomeprint.font_list():
ttf_not_found = 1
break
if ttf_not_found:
print "Free true type fonts not found."
# Search for MS ttfs
ms_not_found = 0
for family in _MS_TTFONT:
for font in family:
if font not in gnomeprint.font_list():
ms_not_found = 1
break
if ms_not_found:
print "Microsoft true type fonts not found."
print "Using Gnome standard fonts."
print "Non-ascii characters will appear garbled in the output."
print "INSTALL Free true type fonts from http://www.nongnu.org/freefont/"
_FONT_SET = _GNOME_FONT
else:
print "Found Microsoft true type fonts. Will use them for now."
print "These fonts are not free. "
print "We would advise you to switch to Free true type fonts"
print "INSTALL Free true type fonts from http://www.nongnu.org/freefont/"
_FONT_SET = _MS_TTFONT
else:
_FONT_SET = _TTF_FREEFONT
# Formatting directive constants
_LINE_BREAK = "Break"
@ -127,24 +195,25 @@ def find_font_from_fontstyle(fontstyle):
fontstyle - a BaseDoc.FontStyle() instance
"""
if fontstyle.get_type_face() == BaseDoc.FONT_SANS_SERIF:
face = _FONT_SANS_SERIF
elif fontstyle.get_type_face() == BaseDoc.FONT_SERIF:
face = _FONT_SERIF
if fontstyle.get_type_face() == BaseDoc.FONT_SERIF:
family = _FONT_SET[0]
elif fontstyle.get_type_face() == BaseDoc.FONT_SANS_SERIF:
family = _FONT_SET[1]
elif fontstyle.get_type_face() == BaseDoc.FONT_MONOSPACE:
face = _FONT_MONOSPACE
family = _FONT_SET[2]
if fontstyle.get_bold():
modifier = _FONT_BOLD
if fontstyle.get_italic():
modifier = _FONT_BOLD_ITALIC
font = family[3]
else:
font = family[1]
elif fontstyle.get_italic():
modifier = _FONT_ITALIC
font = family[2]
else:
modifier = _FONT_REGULAR
font = family[0]
size = fontstyle.get_size()
return gnomeprint.font_find_closest("%s %s" % (face, modifier),size)
return gnomeprint.font_find_closest(font,size)
#------------------------------------------------------------------------
#