Merge branch 'master' into output
[pspp] / config / devices
index 47c953e9c63280b96148d917987a709129380131..3bc685a004fb7eb2cdf871a4e696b89557f37651 100644 (file)
 # Macros may not be recursive; they may not take arguments.  (However,
 # `definition' is macro-expanded *at time of definition*.)  Macros are
 # referenced with $var or ${var} syntax; the latter is preferred.
-# Macro definitions on the PSPP command-line take precedence without
-# warning.
 
 # Preferred devices.
-default=tty list
-tty=#tty-ibmpc
-list=list-ascii
+default=list-ascii
+interactive=tty-ascii
 
 # Output files.
-define tty-output-file "/dev/tty"
+define tty-output-file "|more"
 define list-output-file "pspp.list"
 
-define no-attributes bold-on="" italic-on="" bold-italic-on=""
-
 # Generic ASCII devices
-tty-ascii:ascii:screen:char-set=ascii output-file=${tty-output-file} \
-  ${no-attributes}
-list-ascii:ascii:listing:length=66 width=79 char-set=ascii \
-  output-file=${list-output-file} ${no-attributes}
-raw-ascii:ascii:screen:width=9999 length=9999 char-set=ascii \
-  output-file=${list-output-file} ${no-attributes} headers=off paginate=off
+tty-ascii:ascii:screen:squeeze=on headers=off top-margin=0 bottom-margin=0 \
+  paginate=off length=auto width=auto output-file=${tty-output-file}
+list-ascii:ascii:listing:length=66 width=79 output-file=${list-output-file}
+raw-ascii:ascii:listing:width=9999 length=9999 output-file=${list-output-file} \
+  emphasis=none headers=off paginate=off squeeze=on \
+  top-margin=0 bottom-margin=0
 
 # ASCII devices that support bold & underline via backspacing.
-tty-ascii-bi:ascii:screen:char-set=ascii output-file=${tty-output-file}
-list-ascii-bi:ascii:listing:length=66 width=79 char-set=ascii \
-  output-file=${list-output-file}
+tty-ascii-bi:ascii:screen:output-file=${tty-output-file}
+list-ascii-bi:ascii:listing:length=66 width=79 output-file=${list-output-file}
+
+# VT100 graphics devices.
+define vt100-graphics \
+  init='\033(B\033)0' \
+  box[1000]='\16q\17' box[1010]='\16q\17' box[0010]='\16q\17' \
+  box[0100]='\16x\17' box[0101]='\16x\17' box[0001]='\16x\17' \
+  box[0011]='\16j\17' box[1100]='\16l\17' box[0110]='\16k\17' \
+  box[1001]='\16m\17' box[1110]='\16w\17' box[1101]='\16t\17' \
+  box[0111]='\16u\17' box[1011]='\16v\17' box[1111]='\16n\17'
+
+tty-vt100:ascii:screen:squeeze=on headers=off top-margin=0 bottom-margin=0 \
+  paginate=off output-file=${tty-output-file} ${vt100-graphics}
+list-vt100:ascii:listing:length=66 width=79 output-file=${list-output-file} \
+  ${vt100-graphics}
 
 # HTML device.
 html:html::
 
+# PostScript device.
+list-ps:postscript::
+
+# Cairo devices.
+pdf:cairo:listing:
+svg:cairo:listing:output-type=svg output-file="pspp.svg"
+ps-cairo:cairo:listing:output-type=ps output-file="pspp-cairo.ps"
+
+odt:odf:listing:debug=off output-file="pspp.odt"
+
 # Devices that support the IBM PC line-drawing characters.
 define ibmpc-graphics \
-  box[0000]='\x20' box[0001]='\xb3' box[0002]='\xba' box[0003]='\xba' \
-  box[0010]='\xc4' box[0011]='\xd9' box[0012]='\xbd' box[0013]='\xbd' \
-  box[0020]='\xcd' box[0021]='\xbe' box[0022]='\xbc' box[0023]='\xbc' \
-  box[0030]='\xf0' box[0031]='\xbe' box[0032]='\xbc' box[0033]='\xbc' \
-  box[0100]='\xb3' box[0101]='\xb3' box[0102]='\xc4' box[0103]='\xf0' \
-  box[0110]='\xbf' box[0111]='\xb4' box[0112]='\xb6' box[0113]='\xb6' \
-  box[0120]='\xb8' box[0121]='\xb5' box[0122]='\xb9' box[0123]='\xb9' \
-  box[0130]='\xb8' box[0131]='\xb5' box[0132]='\xb9' box[0133]='\xb9' \
-  box[0200]='\xba' box[0201]='\xba' box[0202]='\xba' box[0203]='\xba' \
-  box[0210]='\xb7' box[0211]='\xb6' box[0212]='\xb6' box[0213]='\xb6' \
-  box[0220]='\xbb' box[0221]='\xb9' box[0222]='\xb9' box[0223]='\xb9' \
-  box[0300]='\xb3' box[0301]='\xba' box[0302]='\xba' box[0303]='\xba' \
-  box[0310]='\xb7' box[0311]='\xb6' box[0312]='\xb6' box[0313]='\xb6' \
-  box[0320]='\xbb' box[0321]='\xb9' box[0322]='\xb9' box[0323]='\xb9' \
-  box[0330]='\xbb' box[0331]='\xb9' box[0332]='\xb9' box[0333]='\xb9' \
-  box[1000]='\xc4' box[1001]='\xc0' box[1002]='\xd3' box[1003]='\xd3' \
-  box[1010]='\xc4' box[1011]='\xc1' box[1012]='\xd0' box[1013]='\xd0' \
-  box[1020]='\xcd' box[1021]='\xcf' box[1022]='\xca' box[1023]='\xca' \
-  box[1030]='\xf0' box[1031]='\xcf' box[1032]='\xca' box[1033]='\xca' \
-  box[1100]='\xda' box[1101]='\xc3' box[1102]='\xc7' box[1103]='\xc7' \
-  box[1110]='\xc2' box[1111]='\xc5' box[1112]='\xd7' box[1113]='\xd7' \
-  box[1120]='\xd1' box[1121]='\xd8' box[1122]='\xce' box[1123]='\xce' \
-  box[1130]='\xd1' box[1131]='\xd8' box[1132]='\xce' box[1133]='\xce' \
-  box[1200]='\xd6' box[1201]='\xc7' box[1202]='\xc7' box[1203]='\xc7' \
-  box[1210]='\xd2' box[1211]='\xd7' box[1212]='\xd7' box[1213]='\xd7' \
-  box[1220]='\xca' box[1221]='\xce' box[1222]='\xce' box[1223]='\xce' \
-  box[1230]='\xca' box[1231]='\xce' box[1232]='\xce' box[1233]='\xce' \
-  box[1300]='\xd6' box[1301]='\xc7' box[1302]='\xc7' box[1303]='\xc7' \
-  box[1310]='\xd2' box[1311]='\xd7' box[1312]='\xd7' box[1313]='\xd7' \
-  box[1320]='\xca' box[1321]='\xce' box[1322]='\xce' box[1323]='\xce' \
-  box[1330]='\xca' box[1331]='\xce' box[1332]='\xce' box[1333]='\xce' \
-  box[2000]='\xcd' box[2001]='\xd4' box[2002]='\xc8' box[2003]='\xc8' \
-  box[2010]='\xcd' box[2011]='\xcf' box[2012]='\xca' box[2013]='\xca' \
-  box[2020]='\xcd' box[2021]='\xcf' box[2022]='\xca' box[2023]='\xca' \
-  box[2030]='\xf0' box[2031]='\xcf' box[2032]='\xca' box[2033]='\xca' \
-  box[2100]='\xd5' box[2101]='\xc6' box[2102]='\xcc' box[2103]='\xcc' \
-  box[2110]='\xd1' box[2111]='\xd8' box[2112]='\xce' box[2113]='\xce' \
-  box[2120]='\xd1' box[2121]='\xd8' box[2122]='\xce' box[2123]='\xce' \
-  box[2130]='\xd1' box[2131]='\xd8' box[2132]='\xce' box[2133]='\xce' \
-  box[2200]='\xc9' box[2201]='\xcc' box[2202]='\xcc' box[2203]='\xcc' \
-  box[2210]='\xcb' box[2211]='\xce' box[2212]='\xce' box[2213]='\xce' \
-  box[2220]='\xcb' box[2221]='\xce' box[2222]='\xce' box[2223]='\xce' \
-  box[2230]='\xcb' box[2231]='\xce' box[2232]='\xce' box[2233]='\xce' \
-  box[2300]='\xc9' box[2301]='\xcc' box[2302]='\xcc' box[2303]='\xce' \
-  box[2310]='\xcb' box[2311]='\xce' box[2312]='\xce' box[2313]='\xce' \
-  box[2320]='\xcb' box[2321]='\xce' box[2322]='\xce' box[2323]='\xce' \
-  box[2330]='\xcb' box[2331]='\xce' box[2332]='\xce' box[2333]='\xce' \
-  box[3000]='\xcd' box[3001]='\xd4' box[3002]='\xc8' box[3003]='\xc8' \
-  box[3010]='\xcd' box[3011]='\xcf' box[3012]='\xca' box[3013]='\xca' \
-  box[3020]='\xcd' box[3021]='\xcf' box[3022]='\xca' box[3023]='\xca' \
-  box[3030]='\xcd' box[3031]='\xcf' box[3032]='\xca' box[3033]='\xca' \
-  box[3100]='\xd5' box[3101]='\xc6' box[3102]='\xcc' box[3103]='\xcc' \
-  box[3110]='\xd1' box[3111]='\xd8' box[3112]='\xce' box[3113]='\xce' \
-  box[3120]='\xd1' box[3121]='\xd8' box[3122]='\xce' box[3123]='\xce' \
-  box[3130]='\xd1' box[3131]='\xd8' box[3132]='\xce' box[3133]='\xce' \
-  box[3200]='\xc9' box[3201]='\xcc' box[3202]='\xcc' box[3203]='\xcc' \
-  box[3210]='\xcb' box[3211]='\xce' box[3212]='\xce' box[3213]='\xce' \
-  box[3220]='\xcb' box[3221]='\xce' box[3222]='\xce' box[3223]='\xce' \
-  box[3230]='\xcb' box[3231]='\xce' box[3232]='\xce' box[3233]='\xce' \
-  box[3300]='\xc9' box[3301]='\xcc' box[3302]='\xcc' box[3303]='\xce' \
-  box[3310]='\xcb' box[3311]='\xce' box[3312]='\xce' box[3313]='\xce' \
-  box[3320]='\xcb' box[3321]='\xce' box[3322]='\xce' box[3323]='\xce' \
-  box[3330]='\xcb' box[3331]='\xce' box[3332]='\xce' box[3333]='\xce'
+  box[0000]='\x20' box[0001]='\xb3' box[0002]='\xba' \
+  box[0010]='\xc4' box[0011]='\xd9' box[0012]='\xbd' \
+  box[0020]='\xcd' box[0021]='\xbe' box[0022]='\xbc' \
+  box[0100]='\xb3' box[0101]='\xb3' box[0102]='\xc4' \
+  box[0110]='\xbf' box[0111]='\xb4' box[0112]='\xb6' \
+  box[0120]='\xb8' box[0121]='\xb5' box[0122]='\xb9' \
+  box[0200]='\xba' box[0201]='\xba' box[0202]='\xba' \
+  box[0210]='\xb7' box[0211]='\xb6' box[0212]='\xb6' \
+  box[0220]='\xbb' box[0221]='\xb9' box[0222]='\xb9' \
+  box[1000]='\xc4' box[1001]='\xc0' box[1002]='\xd3' \
+  box[1010]='\xc4' box[1011]='\xc1' box[1012]='\xd0' \
+  box[1020]='\xcd' box[1021]='\xcf' box[1022]='\xca' \
+  box[1100]='\xda' box[1101]='\xc3' box[1102]='\xc7' \
+  box[1110]='\xc2' box[1111]='\xc5' box[1112]='\xd7' \
+  box[1120]='\xd1' box[1121]='\xd8' box[1122]='\xce' \
+  box[1200]='\xd6' box[1201]='\xc7' box[1202]='\xc7' \
+  box[1210]='\xd2' box[1211]='\xd7' box[1212]='\xd7' \
+  box[1220]='\xca' box[1221]='\xce' box[1222]='\xce' \
+  box[2000]='\xcd' box[2001]='\xd4' box[2002]='\xc8' \
+  box[2010]='\xcd' box[2011]='\xcf' box[2012]='\xca' \
+  box[2020]='\xcd' box[2021]='\xcf' box[2022]='\xca' \
+  box[2100]='\xd5' box[2101]='\xc6' box[2102]='\xcc' \
+  box[2110]='\xd1' box[2111]='\xd8' box[2112]='\xce' \
+  box[2120]='\xd1' box[2121]='\xd8' box[2122]='\xce' \
+  box[2200]='\xc9' box[2201]='\xcc' box[2202]='\xcc' \
+  box[2210]='\xcb' box[2211]='\xce' box[2212]='\xce' \
+  box[2220]='\xcb' box[2221]='\xce' box[2222]='\xce'
 
 tty-ibmpc:ascii:screen:length=$viewlength width=$viewwidth ${ibmpc-graphics} \
   output-file=${tty-output-file}
 list-ibmpc:ascii:listing:length=66 width=79 output-file=${list-output-file} \
   ${ibmpc-graphics}
 
-# PostScript device.  Tested with HP LaserJet 6MP.
-list-ps:postscript::
+# Devices that support Unicode line-drawing characters in UTF-8 encoding.
+# PSPP doesn't support a \u escape but if it did then this is how these
+# would appear:
+#
+#     define utf8-graphics \
+#       box[0000]='\u0020' box[1000]='\u2576' box[2000]='\u2550' \
+#       box[0100]='\u2577' box[1100]='\u256D' box[2100]='\u2552' \
+#       box[0200]='\u2551' box[1200]='\u2553' box[2200]='\u2554' \
+#       box[0010]='\u2574' box[1010]='\u2500' box[2010]='\u2550' \
+#       box[0110]='\u256E' box[1110]='\u252C' box[2110]='\u2564' \
+#       box[0210]='\u2556' box[1210]='\u2565' box[2210]='\u2566' \
+#       box[0020]='\u2550' box[1020]='\u2550' box[2020]='\u2550' \
+#       box[0120]='\u2555' box[1120]='\u2564' box[2120]='\u2564' \
+#       box[0220]='\u2557' box[1220]='\u2566' box[2220]='\u2566' \
+#       box[0001]='\u2575' box[1001]='\u2570' box[2001]='\u2558' \
+#       box[0101]='\u2502' box[1101]='\u251C' box[2101]='\u255E' \
+#       box[0201]='\u2551' box[1201]='\u255F' box[2201]='\u2560' \
+#       box[0011]='\u256F' box[1011]='\u2534' box[2011]='\u2567' \
+#       box[0111]='\u2524' box[1111]='\u253C' box[2111]='\u256A' \
+#       box[0211]='\u2562' box[1211]='\u256B' box[2211]='\u256C' \
+#       box[0021]='\u255B' box[1021]='\u2567' box[2021]='\u2567' \
+#       box[0121]='\u2561' box[1121]='\u256A' box[2121]='\u256A' \
+#       box[0221]='\u2563' box[1221]='\u256C' box[2221]='\u256C' \
+#       box[0002]='\u2551' box[1002]='\u2559' box[2002]='\u255A' \
+#       box[0102]='\u2551' box[1102]='\u255F' box[2102]='\u2560' \
+#       box[0202]='\u2551' box[1202]='\u255F' box[2202]='\u2560' \
+#       box[0012]='\u255C' box[1012]='\u2568' box[2012]='\u2569' \
+#       box[0112]='\u2562' box[1112]='\u256A' box[2112]='\u256C' \
+#       box[0212]='\u2562' box[1212]='\u256B' box[2212]='\u256C' \
+#       box[0022]='\u255D' box[1022]='\u2569' box[2022]='\u2569' \
+#       box[0122]='\u2563' box[1122]='\u256C' box[2122]='\u256C' \
+#       box[0222]='\u2563' box[1222]='\u256C' box[2222]='\u256C'
+#
+# Instead, we encode them in UTF-8 by hand below.
+#
+# Here is a little Perl program that I used to do this translation:
+#
+#     sub utf8_encode {
+#         my $val = hex($_[0]);
+#         my $d0 = 0xe0 | ($val >> 12);
+#         my $d1 = 0x80 | (($val >> 6) & 0x3f);
+#         my $d2 = 0x80 | ($val & 0x3f);
+#         return sprintf('\x%02x\x%02x\x%02x', $d0, $d1, $d2);
+#     }
+#     while (<>) {
+#         s/\\u(....)/utf8_encode($1)/ge;
+#         print $_;
+#     }
+#
+define utf8-graphics \
+  box[0000]='\xe0\x80\xa0' box[1000]='\xe2\x95\xb6' box[2000]='\xe2\x95\x90' \
+  box[0100]='\xe2\x95\xb7' box[1100]='\xe2\x95\xad' box[2100]='\xe2\x95\x92' \
+  box[0200]='\xe2\x95\x91' box[1200]='\xe2\x95\x93' box[2200]='\xe2\x95\x94' \
+  box[0010]='\xe2\x95\xb4' box[1010]='\xe2\x94\x80' box[2010]='\xe2\x95\x90' \
+  box[0110]='\xe2\x95\xae' box[1110]='\xe2\x94\xac' box[2110]='\xe2\x95\xa4' \
+  box[0210]='\xe2\x95\x96' box[1210]='\xe2\x95\xa5' box[2210]='\xe2\x95\xa6' \
+  box[0020]='\xe2\x95\x90' box[1020]='\xe2\x95\x90' box[2020]='\xe2\x95\x90' \
+  box[0120]='\xe2\x95\x95' box[1120]='\xe2\x95\xa4' box[2120]='\xe2\x95\xa4' \
+  box[0220]='\xe2\x95\x97' box[1220]='\xe2\x95\xa6' box[2220]='\xe2\x95\xa6' \
+  box[0001]='\xe2\x95\xb5' box[1001]='\xe2\x95\xb0' box[2001]='\xe2\x95\x98' \
+  box[0101]='\xe2\x94\x82' box[1101]='\xe2\x94\x9c' box[2101]='\xe2\x95\x9e' \
+  box[0201]='\xe2\x95\x91' box[1201]='\xe2\x95\x9f' box[2201]='\xe2\x95\xa0' \
+  box[0011]='\xe2\x95\xaf' box[1011]='\xe2\x94\xb4' box[2011]='\xe2\x95\xa7' \
+  box[0111]='\xe2\x94\xa4' box[1111]='\xe2\x94\xbc' box[2111]='\xe2\x95\xaa' \
+  box[0211]='\xe2\x95\xa2' box[1211]='\xe2\x95\xab' box[2211]='\xe2\x95\xac' \
+  box[0021]='\xe2\x95\x9b' box[1021]='\xe2\x95\xa7' box[2021]='\xe2\x95\xa7' \
+  box[0121]='\xe2\x95\xa1' box[1121]='\xe2\x95\xaa' box[2121]='\xe2\x95\xaa' \
+  box[0221]='\xe2\x95\xa3' box[1221]='\xe2\x95\xac' box[2221]='\xe2\x95\xac' \
+  box[0002]='\xe2\x95\x91' box[1002]='\xe2\x95\x99' box[2002]='\xe2\x95\x9a' \
+  box[0102]='\xe2\x95\x91' box[1102]='\xe2\x95\x9f' box[2102]='\xe2\x95\xa0' \
+  box[0202]='\xe2\x95\x91' box[1202]='\xe2\x95\x9f' box[2202]='\xe2\x95\xa0' \
+  box[0012]='\xe2\x95\x9c' box[1012]='\xe2\x95\xa8' box[2012]='\xe2\x95\xa9' \
+  box[0112]='\xe2\x95\xa2' box[1112]='\xe2\x95\xaa' box[2112]='\xe2\x95\xac' \
+  box[0212]='\xe2\x95\xa2' box[1212]='\xe2\x95\xab' box[2212]='\xe2\x95\xac' \
+  box[0022]='\xe2\x95\x9d' box[1022]='\xe2\x95\xa9' box[2022]='\xe2\x95\xa9' \
+  box[0122]='\xe2\x95\xa3' box[1122]='\xe2\x95\xac' box[2122]='\xe2\x95\xac' \
+  box[0222]='\xe2\x95\xa3' box[1222]='\xe2\x95\xac' box[2222]='\xe2\x95\xac'
 
-# Okidata Microline 520 (these use the Microline emulation mode).
-define ml520-common output-file=${list-output-file} ${ibmpc-graphics} \
-  bold-on='\x1b\x54' bold-off='\x1b\x49' init='\x1b\x7b\x21\x1b\x23\x30'
-define ml520-italic italic-on='\x1b\x21\x2f' italic-off='\x1b\x21\x2a' \
-  bold-italic-on='\x1b\x21\x2f\x1b\x54' bold-italic-off='\x1b\x21\x2a\x1b\x49'
-define ml520-ul italic-on='\x1b\x43' italic-off='\x1b\x44' \
-  bold-italic-on='\x1b\x43\x1b\x54' bold-italic-off='\x1b\x44\x1b\x49'
-ml520=ml520-10cpi
-ml520-10cpi:ascii:printer:length=66 width=79 ${ml520-common} ${ml520-italic}
-ml520-10cpi-ul:ascii:printer:length=66 width=79 ${ml520-common} ${ml520-ul}
-ml520-17cpi:ascii:printer:length=66 width=144 ${ml520-common} ${ml520-italic} \
-  cpi=17 init='\x1b\x7b\x21\x1b\x23\x30\x1d'
-ml520-17cpi-ul:ascii:printer:length=66 width=144 ${ml520-common} ${ml520-ul} \
-  cpi=17 init='\x1b\x7b\x21\x1b\x23\x30\x1d'
-ml520-20cpi:ascii:printer:length=66 width=160 ${ml520-common} ${ml520-italic} \
-  cpi=17 init='\x1b\x7b\x21\x1b\x23\x30\x1b\x23\x33'
-ml520-20cpi-ul:ascii:printer:length=66 width=160 ${ml520-common} ${ml520-ul} \
-  cpi=17 init='\x1b\x7b\x21\x1b\x23\x30\x1b\x23\x33'
+tty-utf8:ascii:screen:length=$viewlength width=$viewwidth ${utf8-graphics} \
+  output-file=${tty-output-file} emphasis=none
+list-utf8:ascii:listing:length=66 width=79 output-file=${list-output-file} \
+  ${utf8-graphics} emphasis=none
 
 # Local Variables:
 # fill-prefix: "# "