summaryrefslogtreecommitdiffstats
path: root/plug-ins/script-fu/scripts/font-map.scm
diff options
context:
space:
mode:
Diffstat (limited to 'plug-ins/script-fu/scripts/font-map.scm')
-rw-r--r--plug-ins/script-fu/scripts/font-map.scm168
1 files changed, 168 insertions, 0 deletions
diff --git a/plug-ins/script-fu/scripts/font-map.scm b/plug-ins/script-fu/scripts/font-map.scm
new file mode 100644
index 0000000..7481d28
--- /dev/null
+++ b/plug-ins/script-fu/scripts/font-map.scm
@@ -0,0 +1,168 @@
+;; font-select
+;; Spencer Kimball
+
+(define (script-fu-font-map text
+ use-name
+ labels
+ font-filter
+ font-size
+ border
+ colors)
+
+ (define (max-font-width text use-name list-cnt list font-size)
+ (let* ((count 0)
+ (width 0)
+ (maxwidth 0)
+ (font "")
+ (extents '()))
+ (while (< count list-cnt)
+ (set! font (car list))
+
+ (if (= use-name TRUE)
+ (set! text font))
+ (set! extents (gimp-text-get-extents-fontname text
+ font-size PIXELS
+ font))
+ (set! width (car extents))
+ (if (> width maxwidth)
+ (set! maxwidth width))
+
+ (set! list (cdr list))
+ (set! count (+ count 1))
+ )
+
+ maxwidth
+ )
+ )
+
+ (define (max-font-height text use-name list-cnt list font-size)
+ (let* ((count 0)
+ (height 0)
+ (maxheight 0)
+ (font "")
+ (extents '()))
+ (while (< count list-cnt)
+ (set! font (car list))
+
+ (if (= use-name TRUE)
+ (set! text font)
+ )
+ (set! extents (gimp-text-get-extents-fontname text
+ font-size PIXELS
+ font))
+ (set! height (cadr extents))
+ (if (> height maxheight)
+ (set! maxheight height)
+ )
+
+ (set! list (cdr list))
+ (set! count (+ count 1))
+ )
+
+ maxheight
+ )
+ )
+
+ (let* (
+ (font-data (gimp-fonts-get-list font-filter))
+ (font-list (cadr font-data))
+ (num-fonts (car font-data))
+ (label-size (/ font-size 2))
+ (border (+ border (* labels (/ label-size 2))))
+ (y border)
+ (maxheight (max-font-height text use-name num-fonts font-list font-size))
+ (maxwidth (max-font-width text use-name num-fonts font-list font-size))
+ (width (+ maxwidth (* 2 border)))
+ (height (+ (+ (* maxheight num-fonts) (* 2 border))
+ (* labels (* label-size num-fonts))))
+ (img (car (gimp-image-new width height (if (= colors 0)
+ GRAY RGB))))
+ (drawable (car (gimp-layer-new img width height (if (= colors 0)
+ GRAY-IMAGE RGB-IMAGE)
+ "Background" 100 LAYER-MODE-NORMAL)))
+ (count 0)
+ (font "")
+ )
+
+ (gimp-context-push)
+
+ (gimp-image-undo-disable img)
+
+ (if (= colors 0)
+ (begin
+ (gimp-context-set-background '(255 255 255))
+ (gimp-context-set-foreground '(0 0 0))))
+
+ (gimp-image-insert-layer img drawable 0 0)
+ (gimp-drawable-edit-clear drawable)
+
+ (if (= labels TRUE)
+ (begin
+ (set! drawable (car (gimp-layer-new img width height
+ (if (= colors 0)
+ GRAYA-IMAGE RGBA-IMAGE)
+ "Labels" 100 LAYER-MODE-NORMAL)))
+ (gimp-image-insert-layer img drawable 0 -1)))
+ (gimp-drawable-edit-clear drawable)
+
+ (while (< count num-fonts)
+ (set! font (car font-list))
+
+ (if (= use-name TRUE)
+ (set! text font))
+
+ (gimp-text-fontname img -1
+ border
+ y
+ text
+ 0 TRUE font-size PIXELS
+ font)
+
+ (set! y (+ y maxheight))
+
+ (if (= labels TRUE)
+ (begin
+ (gimp-floating-sel-anchor (car (gimp-text-fontname img drawable
+ (- border
+ (/ label-size 2))
+ (- y
+ (/ label-size 2))
+ font
+ 0 TRUE
+ label-size PIXELS
+ "Sans")))
+ (set! y (+ y label-size))
+ )
+ )
+
+ (set! font-list (cdr font-list))
+ (set! count (+ count 1))
+ )
+
+ (gimp-image-set-active-layer img drawable)
+
+ (gimp-image-undo-enable img)
+ (gimp-display-new img)
+
+ (gimp-context-pop)
+ )
+)
+
+(script-fu-register "script-fu-font-map"
+ _"Render _Font Map..."
+ _"Create an image filled with previews of fonts matching a fontname filter"
+ "Spencer Kimball"
+ "Spencer Kimball"
+ "1997"
+ ""
+ SF-STRING _"_Text" "How quickly daft jumping zebras vex."
+ SF-TOGGLE _"Use font _name as text" FALSE
+ SF-TOGGLE _"_Labels" TRUE
+ SF-STRING _"_Filter (regexp)" "Sans"
+ SF-ADJUSTMENT _"Font _size (pixels)" '(32 2 1000 1 10 0 1)
+ SF-ADJUSTMENT _"_Border (pixels)" '(10 0 200 1 10 0 1)
+ SF-OPTION _"_Color scheme" '(_"Black on white" _"Active colors")
+)
+
+(script-fu-menu-register "script-fu-font-map"
+ "<Fonts>")