[mcclim-cvs] CVS mcclim/Doc

dlichteblau dlichteblau at common-lisp.net
Sun Dec 24 14:27:48 UTC 2006


Update of /project/mcclim/cvsroot/mcclim/Doc
In directory clnet:/tmp/cvs-serv16855/Doc

Modified Files:
	mcclim.texi 
Log Message:
Enable support for extended text styles using strings for family and face,
as already implemented in CLIM-CLX.  Teach Gtkairo do the same.

Add an API for font listing (implemented in CLX and Gtkairo, plus a
trivial fallback implementation for other backends) and a font selection
dialog as an example.

	* Doc/mcclim.texi: New chapter "Fonts and Extended Text Styles"
	
	* Examples/font-selector.lisp: New file.
	
	* Examples/demodemo.lisp: Added a button for the font selector.
	
	* mcclim.asd (CLIM-EXAMPLES): Added font-selector.lisp. 
	
	* package.lisp (CLIM-EXTENSIONS): Export new symbols font-family
	font-face port-all-font-families font-family-name font-family-port
	font-family-all-faces font-face-name font-face-family
	font-face-all-sizes font-face-scalable-p font-face-text-style.

	* medium.lisp (MAKE-TEXT-STYLE, TEXT-STYLE-EQUALP): Allow strings
	for family and face.  (MAKE-TEXT-STYLE-1): New helper function.

	* ports.lisp (FONT-FAMILY, FONT-FACE): New classes.
	(port-all-font-families font-family-name font-family-port
	font-family-all-faces font-face-name font-face-family
	font-face-all-sizes font-face-scalable-p font-face-text-style):
	New generic functions and default methods.

	* Backends/CLX/port.lisp (FONT-FAMILIES): New slot in the port.
	(CLX-FONT-FAMILY, CLX-FONT-FACE): New classes.
	(port-all-font-families font-family-name font-family-port
	font-family-all-faces font-face-name font-face-family
	font-face-all-sizes font-face-scalable-p font-face-text-style):
	New methods. (SPLIT-FONT-NAME, RELOAD-FONT-TABLE,
	MAKE-UNFRIEDLY-NAME): New helper functions.

	* Backends/gtkairo/pango.lisp (MAKE-FONT-DESCRIPTION): Support
	strings for family and face.
	(PANGO-FONT-FAMILY, PANGO-FONT-FACE): New classes.
	(port-all-font-families font-family-name font-family-port
	font-family-all-faces font-face-name font-face-family
	font-face-all-sizes font-face-scalable-p font-face-text-style):
	New methods. (INVOKE-LISTER, pango-font-family-list-faces,
	pango-font-face-list-sizes): New helper functions.

	* Backends/gtkairo/port.lisp (GLOBAL-PANGO-CONTEXT): New slot in
	the port.  ((INITIALIZE-INSTANCE GTKAIRO-PORT)): Set the pango
	context.

	* Backends/gtkairo/ffi.lisp: regenerated.


--- /project/mcclim/cvsroot/mcclim/Doc/mcclim.texi	2006/12/21 12:22:02	1.3
+++ /project/mcclim/cvsroot/mcclim/Doc/mcclim.texi	2006/12/24 14:27:48	1.4
@@ -96,6 +96,7 @@
 * File Selector Gadget::
 * PostScript Backend::
 * Drei::
+* Fonts and Extended Text Styles::
 
 Utility Programs
 * Listener::
@@ -1556,12 +1557,12 @@
 @chapter PostScript Backend
 
 @menu
-* Fonts::
+* Postscript Fonts::
 * Additional functions::
 @end menu
 
- at node Fonts
- at section Fonts
+ at node Postscript Fonts
+ at section Postscript Fonts
 
 Font mapping is a cons, the car of which is the name of the font
 (FontName field in the AFM file), and the cdr is the size in points.
@@ -1580,6 +1581,86 @@
 
 @include drei.texi
 
+ at node Fonts and Extended Text Styles
+ at chapter Fonts and Extended Text Styles
+
+ at menu
+* Extended Text Styles::
+* Listing Fonts::
+ at end menu
+
+ at node Extended Text Styles
+ at section Extended Text Styles
+
+McCLIM extends the legal values for the @cl{family} and @cl{face}
+arguments to @cl{make-text-style} to include strings (in additional to
+the portable keyword symbols), as permitted by the CLIM spec, section
+11.1.
+
+Each backend defines its own specific syntax for these family and face
+names.
+
+The CLX backend maps the text style family to the X font's
+ at emph{foundry} and @emph{family} values, separated by a dash.  The
+face is mapped to @emph{weight} and @emph{slant} in the same way.  For
+example, the following form creates a text style for
+ at emph{-misc-fixed-bold-r-*-*-18-*-*-*-*-*-*-*}:
+
+ at lisp
+(make-text-style "misc-fixed" "bold-r" 18)
+ at end lisp
+
+In the GTK backend, the text style family and face are used directly
+as the Pango font family and face name.  Please refer to Pango
+documentation for details on the syntax of face names.  Example:
+
+ at lisp
+(make-text-style "Bitstream Vera Sans" "Bold Oblique" 54)
+ at end lisp
+
+ at node Listing Fonts
+ at section Listing Fonts
+
+McCLIM's font listing functions allow applications to list all
+available fonts available on a @class{port} and create text style
+instances for them.
+
+Example:
+
+ at lisp
+* (find "Bitstream Vera Sans Mono"
+        (clim-extensions:port-all-font-families (clim:find-port))
+        :key #'clim-extensions:font-family-name
+        :test #'equal)
+#<CLIM-GTKAIRO::PANGO-FONT-FAMILY Bitstream Vera Sans Mono>
+
+* (clim-extensions:font-family-all-faces *)
+(#<CLIM-GTKAIRO::PANGO-FONT-FACE Bitstream Vera Sans Mono, Bold>
+ #<CLIM-GTKAIRO::PANGO-FONT-FACE Bitstream Vera Sans Mono, Bold Oblique>
+ #<CLIM-GTKAIRO::PANGO-FONT-FACE Bitstream Vera Sans Mono, Oblique>
+ #<CLIM-GTKAIRO::PANGO-FONT-FACE Bitstream Vera Sans Mono, Roman>)
+
+* (clim-extensions:font-face-scalable-p (car *))
+T
+
+* (clim-extensions:font-face-text-style (car **) 50)
+#<CLIM:STANDARD-TEXT-STYLE "Bitstream Vera Sans Mono" "Bold" 50>
+ at end lisp
+
+ at include class-clim-extensions-font-family.texi
+ at include class-clim-extensions-font-face.texi
+
+ at include fun-clim-extensions-port-all-font-families.texi
+
+ at include fun-clim-extensions-font-family-name.texi
+ at include fun-clim-extensions-font-family-port.texi
+ at include fun-clim-extensions-font-family-all-faces.texi
+
+ at include fun-clim-extensions-font-face-name.texi
+ at include fun-clim-extensions-font-face-family.texi
+ at include fun-clim-extensions-font-face-all-sizes.texi
+ at include fun-clim-extensions-font-face-text-style.texi
+
 @c @node Utility Programs
 @c @part Utility Programs
 




More information about the Mcclim-cvs mailing list