trijezdci (2018): I have made a generic font map generator library, which can be viewed at and downloaded from github at:
https://github.com/trijezdci/TclTk-Fontmap/
The font map generator automatically creates entries for the regular, italic, bold and bold-italic styles for each font family requested, whereby it consults a list of known irregular postscript font names that divert from the usual -Italic, -Bold, -BoldItalic naming convention. It also corrects improper case in Tk font names, such as when Tk turns DejaVuSans into DejavuSans or FreeSans into Freesans.
Usage Example:
import ::fontmap::font_map_for
...
.c postscript -fontmap\
[font_map_for {{FreeSans 12 14} {FreeSerif 12 14} {FreeMono 10}}] -file sample.psThis creates a font map as follows:
font_map(FreeSans 12 bold) = FreeSansBold 12
font_map(FreeSans 12 italic) = FreeSansOblique 12
font_map(FreeSans 12 {bold italic}) = FreeSansBoldOblique 12
font_map(FreeSans 12 {}) = FreeSans 12
font_map(Freesans 12 bold) = FreeSansBold 12
font_map(Freesans 12 italic) = FreeSansOblique 12
font_map(Freesans 12 {bold italic}) = FreeSansBoldOblique 12
font_map(Freesans 12 {}) = FreeSans 12
font_map(FreeSans 14 bold) = FreeSansBold 14
font_map(FreeSans 14 italic) = FreeSansOblique 14
font_map(FreeSans 14 {bold italic}) = FreeSansBoldOblique 14
font_map(FreeSans 14 {}) = FreeSans 14
font_map(Freesans 14 bold) = FreeSansBold 14
font_map(Freesans 14 italic) = FreeSansOblique 14
font_map(Freesans 14 {bold italic}) = FreeSansBoldOblique 14
font_map(Freesans 14 {}) = FreeSans 14
etc etcadrian (Dec 2015): here is an example of a fontmap when exporting the canvas content to a postscript. The fontmap is an array with the keys being the font as specified in the -font option of the text canvas items and the array values being the postscript font specifications. You can find the postscript font names in a file called Fontmap.GS on your system.
package require Tk
canvas .c
pack .c -fill both -expand TRUE
set txt "Lorem ipsum dolor sit amet..."
set f1 "*-Helvetica-Medium-R-Normal-*-12-*"
set f2 [font create -family "DejaVu Sans" -size 14]
set f3 TkDefaultFont
set f4 [font create -family [lindex [font families] 9] -weight bold]
set y 40
foreach f [list $f1 $f2 $f3 $f4] {
.c create text 50 $y -text $txt -anchor w -font $f
incr y 40
}
set fm($f1) [list Helvetica 12]
set fm($f2) [list Times 13]
set fm($f3) [list Courier 14]
set fm($f4) [list Bookman-Demi 15]
.c postscript -file test.ps -fontmap fmEG : The file Fontmap.GS is part of ghostscript , so is unlikely to be in a standard Windows install. The list of portable font names (the so called "base 35", taken from "Postscript Level 2" specification) is the following:
Bookman-Demi Bookman-DemiItalic Bookman-Light Bookman-LightItalic Courier Courier-Oblique Courier-Bold Courier-BoldOblique AvantGarde-Book AvantGarde-BookOblique AvantGarde-Demi AvantGarde-DemiOblique Helvetica Helvetica-Oblique Helvetica-Bold Helvetica-BoldOblique Helvetica-Narrow Helvetica-Narrow-Oblique Helvetica-Narrow-Bold Helvetica-Narrow-BoldOblique Palatino-Roman Palatino-Italic Palatino-Bold Palatino-BoldItalic NewCenturySchlbk-Roman NewCenturySchlbk-Italic NewCenturySchlbk-Bold NewCenturySchlbk-BoldItalic Times-Roman Times-Italic Times-Bold Times-BoldItalic Symbol ZapfChancery-MediumItalic ZapfDingbats .