Making a DVD with text menus
From Tovid Wiki
This page has examples and screenshots of the kinds of menus you can make using tovid's makemenu script.
Command-line examples have been formatted for readability, in general with one option per line (and backslash line-continuation). If you're typing in commands manually, you can leave out all the extra space and backslashes.
For more complicated examples, you may want to copy and paste the makemenu command into your favorite editor, save as "myscript" (for example), then run:
$ bash myscript
Edit the script to tailor it to your needs; this is easier than trying to make changes directly on the command-line.
Contents |
[edit] Comparing options
Throughout the following sections, you'll see example menus that exhibit many of makemenu's features (though not all of them -- the man page is there for a reason). The more complicated options have been isolated in their own sections, hopefully making it easier to understand what effects they have on a menu's appearance.
[edit] Basics
With only a few options, you can dramatically improve the default no-option menu. These options include:
-
-background IMAGE -
-audio MUSIC -
-font FONTNAME -
-fontsize NUM -
-textcolor '#RGB'
Please continue reading to see how they are used in the following examples (they don't really deserve a separate example each).
One basic option that warrants an example is -menu-title because it's new in tovid 0.30. This new option places a larger title above your menu entries. There are also a few extra options (which are described further below) thrown in.
$ makemenu \
-menu-title "Where to enjoy beer" \
"Chiang Mai" \
"Koh Samui" \
-background ~/Desktop/ferry-flag.jpg \
-font Lockergnome \
-fontsize 30 \
-textcolor firebrick3 \
-highlightcolor gray90 \
-button-outline black \
-out MainMenu
The background image is copyright Joe Friedichsen (Friedrij).
[edit] -crop versus -scale
By default, makemenu retains a background image's aspect ratio. If the supplied image isn't 4:3, then makemenu will crop it so that it fits in the frame; images smaller than the frame are enlarged and images larger than the frame are reduced before cropping. Re-sizing and cropping is relative to the center of the image, and makemenu ensures that no black bars appear on any side.
Default -crop:
$ makemenu \
"Kanagawa Lindy Hop" \
"The Mercury Cafe" \
"Utah Exchange" \
"Hullabaloo" \
-background manhattan.jpg \
-font HuskyStash \
-fontsize 48 \
-textcolor '#c20300' \
-out MainMenu
Notice that -crop is not given, but the image is cropped anyway. This is makemenu's default behavior.
With -scale:
$ makemenu \
"Kanagawa Lindy Hop" \
"The Mercury Cafe" \
"Utah Exchange" \
"Hullabaloo" \
-scale \
-background manhattan.jpg \
-font HuskyStash \
-fontsize 48 \
-textcolor '#c20300' \
-out MainMenu
Watch this menu on YouTube.
In this menu, you can see more of Manhattan's skyline. Since the background image is a panoramic photograph, the horizontal dimension has been squeezed to fit the entire image. In this case, the distortion is difficult to detect since buildings are tall and skinny anyway, making this menu preferable to the other. However, if people or animals are present in a background image, then the resulting distortion may be unacceptable.
The background image is copyright Joe Friedrichsen (Friedrij).
[edit] Text alignment
There are eight ways to place text on a menu with the makemenu option -align. The most common are left, center, and right, but since makemenu uses ImageMagick to draw the text, you can any of its -gravity arguments. ImageMagick names text positions after the compass: north, east, south, west and northeast, northwest, southeast, southwest. The table below illustrates the basic idea of where aligned text goes.
Watch -align right on YouTube.
The menus above were made using the same makemenu command with only changes in the argument to the -align option:
$ makemenu \
"Nishi Yaizu Sento" \
"Spring Brain Monkey" \
"Hanami" \
-align DIRECTION \
-background park-feet.jpg \
-font Strenuous \
-fontsize 38 \
-out MainMenu
The background image is copyright Joe Friedrichsen (Friedrij).
[edit] Using -nosafearea
By default, makemenu accounts for television overscan and uses a safe area when writing the menu text. However, you can override this behavior with -nosafearea.
Default safe area:
$ makemenu \
"The Grampians" \
"Sumner Beach" \
"Kenrokuen" \
"Stanley Park" \
-background snow-texture.jpg \
-font ShiftyChica \
-fontsize 48 \
-textcolor '#02007b' \
-out MainMenu
Watch this menu on YouTube.
The default safety area ensures that both the text and the buttons can be seen on any television (even on the worst overscanners).
With -nosafearea:
$ makemenu \
"The Grampians" \
"Sumner Beach" \
"Kenrokuen" \
"Stanley Park" \
-nosafearea \
-background snow-texture.jpg \
-font ShiftyChica \
-fontsize 48 \
-textcolor '#02007b' \
-out MainMenu
If your television doesn't overscan (or overscans very little), then consider using -nosafearea.
The background image is copyright Joe Friedrichsen (Friedrij).
[edit] Font effects
Many more advanced effects can be added with makemenu's -fontdeco option.
[edit] Custom font
You can use your own true type font (ttf) files with the -font switch, so you don't need to register them with ImageMagick if you don't want to. For example:
$ makemenu \
"24 Hours Episode 1" \
"24 Hours Episode 2" \
"24 Hours Episode 3" \
-font /path/to/lcdwintt/lcd2u.ttf \
-fontsize 48 \
-out MainMenu
This menu uses a custom font (lcd2u.ttf) and shows what the default background looks like if you don't specify one yourself.
[edit] No font decorations
The default font decoration method is -stroke black -strokewidth 1. You can specify you own font decoration method using the new -fontdeco switch. For example, you can unset the default decoration:
$ makemenu \
"Season One" \
"Season Two" \
"Features" \
-font highspeed.ttf \
-fontsize 72 \
-fontdeco '' \
-align center \
-background grml.jpg \
-out MainMenu
Note that this time a background image is also specified, and the DVD titles are aligned to the center. The background image is Copyright Timo Boettcher from grml.org.
[edit] Outlined text
Please refer to Anthony Thyssen's comprehensive ImageMagick Usage Examples for how to use the font effects governed by makemenu's -fontdeco. There are just tons of ways to make your DVD menu looks nice. Here is another one:
$ makemenu \
"Season One" \
"Season Two" \
"Features" \
-fontsize 72 \
-fontdeco '-stroke white -strokewidth 1' \
-textcolor none \
-align center \
-background grml.jpg \
-out MainMenu
[edit] Tile patterns
In addition to color, ImageMagick can also fill text with its built-in patterns. For example, here is a menu created with -fontdeco '-tile pattern:hs_bdiagonal':
$ makemenu \
"Negiya" \
"Watercourse" \
"Big City Burrito" \
"Laughing Planet" \
-background zen-field.jpg \
-align southeast \
-fontsize 48 \
-font KnuckleDown \
-textcolor '#acff38' \
-fontdeco '-tile pattern:hs_bdiagonal -stroke black -strokewidth 1' \
-out MainMenu
Notice that -textcolor '#acff38' has been ignored since the pattern overrides it.
The background image is copyright Joe Friedrichsen (Friedrij).
[edit] Gradients
Watch this menu on YouTube.
You may have noticed that makemenu's default background is a gradient from blue to black. The same can be done with the text fill. Using -fontdeco '-tile gradient:#COLOR' will fade from #COLOR to black, and using -fontdeco '-tile gradient:#COLOR1-#COLOR2' will fade from #COLOR1 to #COLOR2.
$ makemenu \
"Negiya" \
"Watercourse" \
"Big City Burrito" \
"Laughing Planet" \
-background zen-field.jpg \
-align southeast -fontsize 48 \
-font KnuckleDown \
-textcolor '#acff38' \
-fontdeco '-tile gradient:#acff38 -stroke black -strokewidth 1' \
-out MainMenu
Notice that once again -textcolor '#acff38' has been overridden.
[edit] Fractals
Another multi-color font filler is ImageMagick's fractal built-in. Tell makemenu to use a fractal fill with -fontdeco '-tile fractal:'. Like gradient, fractal can take zero, one, or two color arguments.
$ makemenu \
"Negiya" \
"Watercourse" \
"Big City Burrito" \
"Laughing Planet" \
-background zen-field.jpg \
-align southeast \
-fontsize 48 \
-font KnuckleDown \
-textcolor '#acff38' \
-fontdeco '-tile fractal:#ace345-#ffae00 -stroke black -strokewidth 1' \
-out MainMenu
Just as in the previous two examples, -textcolor '#acff38' was overridden.
[edit] Button effects
You may have noticed that in many the previous examples the buttons didn't quite fit with the rest of the 'look and feel' of the menu. Well, makemenu supports more customized buttons with a few new options:
- -button BUTTON_CHARACTER|PRESET
- -button-font FONT_NAME
- -button-outline COLOR
These next few examples illustrate what button effects you can get from makemenu.
[edit] Custom
This menu uses all of the font options to set the font face, size, color, and decoration, but it also uses all three of the button options (and changes the highlight and select button colors). There is a custom button character (~), a different button font than the title font (Strenuous, as opposed to the titles' CrystalRadioKit), and a button outline matching the titles' outline.
$ makemenu \
"Pie-a-thon" \
"Perl Harbor" \
"Coderunner" \
-background moma-ceiling.jpg \
-align south \
-font CrystalRadioKit \
-fontsize 40 \
-textcolor indigo \
-fontdeco '-stroke lightgray -strokewidth 1' \
-button "~" \
-button-font Strenuous \
-button-outline lightgray \
-highlightcolor maroon \
-selectcolor white \
-out MainMenu
The background image is copyright Joe Friedrichsen (Friedrij).
[edit] Shortcuts
Making a custom button like that takes a lot of typing, so there are a few shortcuts for generating custom buttons. These shortcuts also set -button-font automatically, so you save a few keystrokes.
The play button
In addition to changing the character used as a button, -button also takes a few shortcuts. This example illustrates the shortcut play, which is shaped like the play icon on most A/V electronics.
$ makemenu \
"Pie-a-thon" \
"Perl Harbor" \
"Coderunner" \
-background moma-ceiling.jpg \
-align south \
-font CrystalRadioKit \
-fontsize 40 \
-textcolor indigo \
-fontdeco '-stroke lightgray -strokewidth 1' \
-button play \
-button-outline lightgray \
-highlightcolor maroon \
-selectcolor white \
-out MainMenu
The movie button
Watch this menu on YouTube.
This example illustrates the shortcut movie, which is shaped like an old film projector.
$ makemenu \
"Pie-a-thon" \
"Perl Harbor" \
"Coderunner" \
-background moma-ceiling.jpg \
-align south \
-font CrystalRadioKit \
-fontsize 40 \
-textcolor indigo \
-fontdeco '-stroke lightgray -strokewidth 1' \
-button movie \
-button-outline lightgray \
-highlightcolor maroon \
-selectcolor white \
-out MainMenu
[edit] utf8
Finally, -button can also take any utf8 character from any font to use as your button: just give the 4-character-long unicode hexadecimal code. This example chooses unicode 0x00b7 from Webdings as the button with -button utf8 00b7.
NOTE: unlike the previous shortcuts, -button utf8 UUUU does not set the button font. Left unset, the button font will be inherited from the title font.
$ makemenu \
"Pie-a-thon" \
"Perl Harbor" \
"Coderunner" \
-background moma-ceiling.jpg \
-align south \
-font CrystalRadioKit \
-fontsize 40 \
-textcolor indigo \
-fontdeco '-stroke lightgray -strokewidth 1' \
-button utf8 00b7 \
-button-font Webdings \
-button-outline lightgray \
-highlightcolor maroon \
-selectcolor white \
-out MainMenu
