diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/hebrew/hebtex/editors |
Initial commit
Diffstat (limited to 'language/hebrew/hebtex/editors')
26 files changed, 10748 insertions, 0 deletions
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/alex/hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/alex/hebrew.el new file mode 100644 index 0000000000..6efd7f71ad --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/alex/hebrew.el @@ -0,0 +1,300 @@ +;;; $Id: hebrew.el,v 1.4 1993/11/24 14:29:08 alexr Exp alexr $ + +;;; $RCSfile: hebrew.el,v $ -- Simple hebrew support +;;; Copyright (C) 1993 Alexander Rezinsky <alexr@msil.sps.mot.com> +;;; +;;; Author: Alex Rezinsky <alexr@msil.sps.mot.com> +;;; Created: 24 Nov 1993 +;;; Version: 1.0 +;;; Keywords: hebrew language +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; COMMENTARY +;;; ---------- +;;; This package provide very simple hebrew (may be any other +;;; right-to-left language ??) support. Unlike existing package +;;; misc/hebrew.tar.Z (see elisp archive) it does not requires any +;;; patches in emacs modules and it is very-very simple. This package +;;; assumes that you already have hebrew font for your computer (see +;;; misc/hebrew.tar.Z to X11 hebrew fonts). This package uses only +;;; one key that toggles hebrew mode. Hebrew coding and keyboard +;;; binding are Israel's standard, but you can redefine it. Digits +;;; and any other special characters are left-to-right. +;;; + +;;; INSTALLATION +;;; ------------ +;;; Put this file in your load-path and insert the following in .emacs +;;; +(autoload 'hebr-switch "hebrew" "Toggle Hebrew mode.") +;;; +;;; And define your hebrew-toggle key as follow: +;;; +(global-set-key [f9] 'hebr-switch) +;;; USAGE +;;; ----- +;;; Now use key which you defined to toggle hebrew mode (in our example +;;; Alt-a). It is one additional function "hebrew-sort-lines". It works +;;; exactly as "sort-lines", but sorting is done in right-to-left order. + +;;; CUSTOMIZATION +;;; ------------- +;;; You can redefine hebrew coding by redifinition variables "alef", +;;; "bet", "gimel" etc. in your .emacs file. For example: +;;; (setq alef ?\260) +;;; (setq bet ?\261) +;;; .... +;;; (setq tav ?\312) +;;; +;;; If you want redefine keyboard binding, define two variables +;;; "hebrew-from-table" and "hebrew-to-table" in your .emacs +;;; file. In "hebrew-from-table" must be list of native keyboard +;;; codes and in "hebrew-to-table" must be list of target codes. +;;; These lists must have same length. See definition of these +;;; variables below for details. + +;;; KNOWN BUGS +;;; ---------- +;;; Because of stupid method of Hebrew sorting, function +;;; "hebrew-sort-lines" is slow. In case very large file (great than +;;; ~ 1M) this function may not work properly. + +;;; LCD Archive Entry: +;;; simple-hebrew|Alex Rezinsky|alexr@msil.sps.mot.com| +;;; Simple Hebrew language support.| +;;; 24-Nov-1993|1.0|~/misc/hebrew.el.Z| + +;;; TODO LIST +;;; --------- +;;; 1. More intelligent "return" key processing. +;;; 2. Filling and justifying region in right-to-left style. +;;; 3. It is very stupid method of right-to-left sorting (see below). +;;; Any ideas ? +;;; 4. Must be difference between digits (always left-to-right) and +;;; punctuation characters (in right-to-left mode also right-to-left). +;;; 5. Must be two modes - Hebrew insertion in English text, and English +;;; insertion in Hebrew text (now this package works in "Hebrew +;;; insertion in English text"). + +;;; HISTORY +;;; ------- +;;; v1.0 November 24 1993 Alex Rezinsky +;;; First release. + + +;;; Code: + +;; +;; Here default hebrew code table is defined +;; +(defvar alef ?\200) +(defvar bet ?\201) +(defvar gimel ?\202) +(defvar dalet ?\203) +(defvar hej ?\204) +(defvar vav ?\205) +(defvar zain ?\206) +(defvar het ?\207) +(defvar tet ?\210) +(defvar jud ?\211) +(defvar kafs ?\212) +(defvar kaf ?\213) +(defvar lamed ?\214) +(defvar mems ?\215) +(defvar mem ?\216) +(defvar nuns ?\217) +(defvar nun ?\220) +(defvar sameh ?\221) +(defvar ain ?\222) +(defvar pejs ?\223) +(defvar pej ?\224) +(defvar tzadis ?\225) +(defvar tzadi ?\226) +(defvar kuv ?\227) +(defvar resh ?\230) +(defvar shin ?\231) +(defvar tav ?\232) +(defvar kav-nt ?/) +(defvar psik ?,) +(defvar nakuda ?.) +(defvar geresh ?') + +;; +;; Here default hebrew keyboard mapping is defined. +;; +(defvar hebrew-from-table + (list + ?q ?w ?e ?r ?t ?y ?u ?i ?o ?p + ?a ?s ?d ?f ?g ?h ?j ?k ?l ?; ?' + ?z ?x ?c ?v ?b ?n ?m ?, ?. ?/ + ?\040 + ) +) +(defvar hebrew-to-table + (list + kav-nt geresh kuv resh alef tet vav nuns mems pej + shin dalet gimel kaf ain jud het lamed kafs pejs psik + zain sameh bet hej nun mem tzadi tav tzadis nakuda + ?\040 + ) +) + + +;; +;;======================================================================= +;; Tables and variables setup +;;======================================================================= +;; +(defvar hebrew-table () "Hebrew keyboard translation table.") +(if hebrew-table + () + (setq hebrew-table (make-string 256 0)) + (let ((i 0)) + (while (< i 256) + (aset hebrew-table i i) + (setq i (1+ i)))) + (let ((from hebrew-from-table) (to hebrew-to-table)) + (while from + (aset hebrew-table (car from) (car to)) + (setq from (cdr from)) + (setq to (cdr to))))) + +(defvar hebrew-mode-map () + "Keymap for hebrew.") +(if hebrew-mode-map + () + (setq hebrew-mode-map (make-keymap)) + (define-key hebrew-mode-map "\C-m" 'return-hebrew) + (let ((from hebrew-from-table) (to hebrew-to-table)) + (while from + (define-key hebrew-mode-map (char-to-string (car from)) 'cinsert-hebrew) + (setq from (cdr from)) + (setq to (cdr to))))) + +(or (assq 'hebrew-mode minor-mode-alist) + (setq minor-mode-alist + (cons '(hebrew-mode " Hebrew") minor-mode-alist))) +(or (assq 'hebrew-mode minor-mode-map-alist) + (setq minor-mode-map-alist + (cons (cons 'hebrew-mode hebrew-mode-map) minor-mode-map-alist))) + + +;; +;; HEBREW MODE TOGGLE +;; +(defun hebr-switch () + (interactive nil) + (if (boundp 'hebrew-mode) + (setq hebrew-mode (not hebrew-mode)) + (make-local-variable 'hebrew-mode) + (setq hebrew-mode t)) + (force-mode-line-update) +) + +;; +;; HEBREW INSERTION +;; +(defun cinsert-hebrew (rpt) + (interactive "p") + (let ((i rpt) (dec-char (aref hebrew-table last-input-char))) + (while (> i 0) + (if overwrite-mode + (progn ;;; -- OVERWRITE MODE + (if (and (/= (following-char) ?\n) (/= (point) (point-max))) + (delete-char 1) + ) + (insert-char dec-char 1) + (backward-char 1) + (if (or (= (preceding-char) ?\n) (= (point) 1)) + (insert-char ? 1) + ) + (backward-char 1) + ) + (progn ;;; -- INSERT MODE + (insert-char dec-char 1) + (backward-char 1) + ) + ) + (setq i (1- i)) + ) + ) +) + + +;; +;; HEBREW RETURN +;; +(defun return-hebrew (rpt) + (interactive "p") + (let ((cur-point (point))) + (beginning-of-line) + (let ((first-part (buffer-substring (point) cur-point))) + (delete-char (- cur-point (point))) + (end-of-line) + (newline rpt) + (insert first-part) + ) + ) +) + + +;;-------------------------------------------------------- +;; +;; HEBREW SORTING +;; +(defun hebrew-sort-lines (reverse beg end) + "Sort lines in region alphabetically, right-to-left; +argument means descending order. +Called from a program, there are three arguments: +REVERSE (non-nil means reverse order), BEG and END (region to sort)." + (interactive "P\nr") + (require 'sort) + (save-restriction + (narrow-to-region beg end) + (revers-buffer) + (goto-char (point-min)) + (sort-subr reverse 'forward-line 'end-of-line) + (goto-char (point-min)) + (revers-buffer) + ) +) + +(defun revers-buffer () + (goto-char (point-min)) + (let ((begl 0)(endl 0)(not-end t)) + (while not-end + (setq begl (point)) + (end-of-line) + (setq endl (point)) + (if (/= begl endl) + (let ((str (buffer-substring begl endl))) + (kill-region begl endl) + (insert (revers-string str)) + ) + ) + (setq not-end (eq (forward-line 1) 0)) + ) + ) +) + +(defun revers-string (str) + (if (< (length str) 2) + str + (concat (revers-string (substring str 1)) (substring str 0 1)) + ) +) + +;;; hebrew ends here. diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb10x20.snf b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb10x20.snf Binary files differnew file mode 100644 index 0000000000..cf0098177b --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb10x20.snf diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb6x13.snf b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb6x13.snf Binary files differnew file mode 100644 index 0000000000..8a67ecfc26 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb6x13.snf diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hebrew.el new file mode 100644 index 0000000000..555e41e51a --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hebrew.el @@ -0,0 +1,735 @@ + +;; >>.WARNING.<< This file contains (non-ascii) chars with the high-order +;; bit set. Most mailers will choke on it. + + +;; file "hebrew.el" ver 0.8 +;; last modified Jan. 2 1992 + +;; Hebrew support for Emacs. +;; Copyright (c) 1990-92 by Joel M. Hoffman. +;; +;; --> This project is dedicated to Orna Okouneff, who, against my +;; will, insisted on teaching me Emacs. + + + +;; THIS IS A basic support package for editing Hebrew with Emacs. It +;; assumes the keyboard layout of the VT* series for the purposes of +;; mapping English keystrokes to their Hebrew equivilents. It also +;; assumes the output hardware is compatible with the VT* series used +;; in Israel, in that the high-order bit is assumed to indicate +;; Hebrew; I believe this is incompatible with the DOS standard for +;; hebrew. The package does not use the right-to-left facilites of +;; the VT* terminals, so any terminal that converts characters >128 +;; decimal to Hebrew is supported. An EGA Hebrew font compatible with +;; this package is available for the IBM. + +;; To work properly, the following files in Emacs 18.xx must be +;; modified: +;; +;; xdisp.c +;; indent.c + +;; You can use this package with the unmodified files, but the Hebrew +;; letters will appear encoded as \xxx. I understand that ver. 19.00 +;; will have an option to support 8-bit-clean operation, and so will +;; support this package. Demacs supports 8-bit-clean operation via +;; the toggle-pass8 command. + +;; Currently, four major commands are supplied: C-Xh and C-Xe, which +;; switch back and forth between Hebrew and English keyboards, and M-h +;; and M-e, which switch back and forth between Hebrew and English +;; "modes," which are not modes in the Emacs sense of the word, but +;; rather determine if the margin is to be the left or right side of +;; the screen, among other direction-specific paramaters. + +;; Emacs uses the eighth bit to indicate Hebrew letters. Most text +;; formatters (TeX, *roff, etc.) use 7-bit character codes. +;; Additionally, these formatters usually require Hebrew to appear in +;; time-order. A pre-processor must be run before the formatter to +;; effect these changes. + + + +;; I don't really know lisp or Emacs, or what I'm doing; comments and +;; suggestions are welcome: +;; joel@wam.umd.edu <-- Internet +;; 72700,402 <-- Compuserve +;; 72700.402@compuserve.com <-- Compuserve from Internet + +;; This package is not finished. The bugs herein defy enumeration. + +(defun hebrew-grab-keys () + "take control of the keyboard and auto-fill." + (interactive) + (define-key global-map " " 'let-space) + (define-key global-map "a" 'let-a) + (define-key global-map "b" 'let-b) + (define-key global-map "c" 'let-c) + (define-key global-map "d" 'let-d) + (define-key global-map "e" 'let-e) + (define-key global-map "f" 'let-f) + (define-key global-map "g" 'let-g) + (define-key global-map "h" 'let-h) + (define-key global-map "i" 'let-i) + (define-key global-map "j" 'let-j) + (define-key global-map "k" 'let-k) + (define-key global-map "l" 'let-l) + (define-key global-map "m" 'let-m) + (define-key global-map "n" 'let-n) + (define-key global-map "o" 'let-o) + (define-key global-map "p" 'let-p) + (define-key global-map "q" 'let-q) + (define-key global-map "r" 'let-r) + (define-key global-map "s" 'let-s) + (define-key global-map "t" 'let-t) + (define-key global-map "u" 'let-u) + (define-key global-map "v" 'let-v) + (define-key global-map "w" 'let-w) + (define-key global-map "x" 'let-x) + (define-key global-map "y" 'let-y) + (define-key global-map "z" 'let-z) + (define-key global-map "," 'let-comma) + (define-key global-map ";" 'let-semi) + (define-key global-map ":" 'let-colon) + (define-key global-map "." 'let-period) + (define-key global-map "/" 'let-slash) + (define-key global-map "'" 'let-aigu) + (define-key global-map "`" 'let-grave) + (define-key global-map "\\" 'let-bslash) + (define-key global-map "-" 'let-hyphen) + (define-key global-map "!" 'let-xmark) + (define-key global-map "@" 'let-at) + (define-key global-map "#" 'let-pound) + (define-key global-map "$" 'let-dollar) + (define-key global-map "%" 'let-percent) + (define-key global-map "^" 'let-carrat) + (define-key global-map "&" 'let-ampersand) + (define-key global-map "*" 'let-asterisk) + (define-key global-map "(" 'let-lparend) + (define-key global-map ")" 'let-rparend) + (define-key global-map "{" 'let-lcbrace) + (define-key global-map "}" 'let-rcbrace) + (define-key global-map "[" 'let-lbrace) + (define-key global-map "]" 'let-rbrace) + (define-key global-map ">" 'let-gt) + (define-key global-map "~" 'let-tilde) + (define-key global-map "+" 'let-plus) + (define-key global-map "+" 'let-equal) + (define-key global-map "<" 'let-lt) + (define-key global-map "?" 'let-question)) + + +(defun let-plus () + "comment" + (interactive) + (bilingual-insert-char "+" "+")) + +(defun let-equal () + "comment" + (interactive) + (bilingual-insert-char "=" "=")) + + +(defun let-tilde () + "comment" + (interactive) + (bilingual-insert-char "~" "~")) + +(defun let-gt () + "comment" + (interactive) + (bilingual-insert-char ">" ">")) + +(defun let-lt () + "comment" + (interactive) + (bilingual-insert-char "<" "<")) + +(defun let-question () + "comment" + (interactive) + (bilingual-insert-char "?" "?")) + +(defun let-hyphen () + "comment" + (interactive) + (bilingual-insert-char "-" "-")) + +(defun let-xmark () + "comment" + (interactive) + (bilingual-insert-char "!" "!")) + +(defun let-at () + "comment" + (interactive) + (bilingual-insert-char "@" "@")) + +(defun let-pound () + "comment" + (interactive) + (bilingual-insert-char "#" "#")) + +(defun let-dollar () + "comment" + (interactive) + (bilingual-insert-char "$" "$")) + +(defun let-percent () + "comment" + (interactive) + (bilingual-insert-char "%" "%")) + +(defun let-carrat () + "comment" + (interactive) + (bilingual-insert-char "^" "^")) + +(defun let-ampersand () + "comment" + (interactive) + (bilingual-insert-char "&" "&")) + +(defun let-asterisk () + "comment" + (interactive) + (bilingual-insert-char "*" "*")) + +(defun let-lparend () + "comment" + (interactive) + (bilingual-insert-char "(" "(")) + +(defun let-rparend () + "comment" + (interactive) + (bilingual-insert-char ")" ")")) + +(defun let-lcbrace () + "comment" + (interactive) + (bilingual-insert-char "{" "{")) + +(defun let-rcbrace () + "comment" + (interactive) + (bilingual-insert-char "}" "}")) + +(defun let-lbrace () + "comment" + (interactive) + (bilingual-insert-char "[" "[")) + +(defun let-rbrace () + "comment" + (interactive) + (bilingual-insert-char "]" "]")) + +(defun let-colon () + "comment" + (interactive) + (bilingual-insert-char ":" ":")) + + +(defun let-a () + "comment" + (interactive) + (bilingual-insert-char"ù" "a")) +(defun let-b () + "comment" + (interactive) + (bilingual-insert-char "ð" "b")) +(defun let-c () + "comment" + (interactive) + (bilingual-insert-char "á" "c")) +(defun let-d () + "comment" + (interactive) + (bilingual-insert-char "â" "d")) +(defun let-e () + "comment" + (interactive) + (bilingual-insert-char "÷" "e")) +(defun let-f () + "comment" + (interactive) + (bilingual-insert-char "ë" "f")) +(defun let-g () + "comment" + (interactive) + (bilingual-insert-char "ò" "g")) +(defun let-h () + "comment" + (interactive) + (bilingual-insert-char "é" "h")) +(defun let-i () + "comment" + (interactive) + (bilingual-insert-char "ï" "i")) +(defun let-j () + "comment" + (interactive) + (bilingual-insert-char "ç" "j")) +(defun let-k () + "comment" + (interactive) + (bilingual-insert-char "ì" "k")) +(defun let-l () + "comment" + (interactive) + (bilingual-insert-char "ê" "l")) +(defun let-m () + "comment" + (interactive) + (bilingual-insert-char "ö" "m")) +(defun let-n () + "comment" + (interactive) + (bilingual-insert-char "î" "n")) +(defun let-o () + "comment" + (interactive) + (bilingual-insert-char "í" "o")) +(defun let-p () + "comment" + (interactive) + (bilingual-insert-char "ô" "p")) +(defun let-q () + "comment" + (interactive) + (bilingual-insert-char "\\" "q")) +(defun let-r () + "comment" + (interactive) + (bilingual-insert-char "ø" "r")) +(defun let-s () + "comment" + (interactive) + (bilingual-insert-char "ã" "s")) +(defun let-t () + "comment" + (interactive) + (bilingual-insert-char "à" "t")) +(defun let-u () + "comment" + (interactive) + (bilingual-insert-char "å" "u")) +(defun let-v () + "comment" + (interactive) + (bilingual-insert-char "ä" "v")) +(defun let-w () + "comment" + (interactive) + (bilingual-insert-char "'" "w")) +(defun let-x () + "comment" + (interactive) + (bilingual-insert-char "ñ" "x")) +(defun let-y () + "comment" + (interactive) + (bilingual-insert-char "è" "y")) +(defun let-z () + "comment" + (interactive) + (bilingual-insert-char "æ" "z")) + +(defun let-space () + "comment" + (interactive) + (bilingual-insert-char " " " ")) ;;English auto-fill will be + ;;automatic. Hebrew auto-fill is + ;;still a problem. +(defun let-comma () + "comment" + (interactive) + (bilingual-insert-char "ú" ",")) + +(defun let-semi () + "comment" + (interactive) + (bilingual-insert-char "ó" ";")) + +(defun let-period () + "comment" + (interactive) + (bilingual-insert-char "õ" ".")) + +(defun let-slash () + "comment" + (interactive) + (bilingual-insert-char "." "/")) + +(defun let-aigu () + "comment" + (interactive) + (bilingual-insert-char "," "'")) + +(defun let-grave () + "comment" + (interactive) + (bilingual-insert-char "/" "`")) + +(defun let-bslash () + "comment" + (interactive) + (bilingual-insert-char ";" "\\")) + + +(defun hebrew-set-up () + "Comments will be here" + (interactive) + + +;; Following are the ANSI-like codes to control the tty. Currently, +;; they are unused. +;; Changes may be necessary. Ideally, the code should consult a data- +;; base, but we don't live in an ideal world. + + (make-local-variable 'left-to-right-code) + (setq left-to-right-code "[?34l") + (make-local-variable 'right-to-left-code) + (setq right-to-left-code "[?34h") + (make-local-variable 'hebrew-keyboard-code) + (setq hebrew-keyboard-code "[?35h") + (make-local-variable 'english-keyboard-code) + (setq english-keyboard-code "[?35l") + (make-local-variable 'keyboard-off-code) + (setq keyboard-off-code "[2h") + (make-local-variable 'keyboard-on-code) + (setq keyboard-on-code "[2l") + (set-variable 'hebrew-keyboard ()) + (make-variable-buffer-local 'hebrew-keyboard) + (set-variable 'hebrew-mode ()) + (make-variable-buffer-local 'hebrew-mode) + (make-local-variable 'hebrew-mode) + (hebrew-grab-keys) +; (global-set-key "\C-r" 'search-backward) +; (global-set-key "\C-s" 'search-forward) ;;Good luck using this one! +; (define-key esc-map "s" 'search-forward) + +;; Here are some constants: + (set-variable 'hebrew-right-margin 77) ;; Can't use 80, so we may as + ;; well leave some extra room. + +;;(Fine, so it was only ONE constant....) + + +;; Now we take control over some of the major editing keys. The +;; backspace has to delete the correct char. in Hebrew mode; return has +;; know what to do with Hebrew, etc. I've left the arrow keys, but ^B, +;; and ^F still mean "backward" and "forward." With ^A/^E I've got a +;; problem, because ^A (to me) is "all the way left" but ^E is "end," +;; both of which would move to the left in Hebrew mode. Also +;; "end-of-line" in Hebrew-mode has to ignore the spaces used to +;; right-align the line. It would be silly for ^A to do that, so ^A is +;; always "beginning-of-line," and ^E always "end-of-line." I've also +;; left some of the more obscure commands/keys, ("obscure" being defined +;; as things I don't use), because I'm too lazy to change them. ("Left +;; as an excercise to the reader....") + + (define-key global-map "\C-h" 'bilingual-backspace) + ;; I'd like to use \177, but Emacs ignores + ;; me when I try. (Don't know why.) + ;; But Real Emacs-Users don't need help + ;; (^h) anyway.... + + (define-key global-map "\C-i" 'bilingual-tab) + (define-key global-map "\C-k" 'bilingual-kill-line) + (define-key global-map "\C-m" 'bilingual-return) + (define-key esc-map "d" 'bilingual-kill-word) + (define-key global-map "\C-a" 'bilingual-beginning-of-line) + (define-key global-map "\C-e" 'bilingual-end-of-line) + (define-key global-map "\C-f" 'bilingual-forward-char) + (define-key global-map "\C-b" 'bilingual-backward-char) + (define-key global-map "\C-d" 'bilingual-delete-char) + + +;; Be user friendly: + (message +"Use C-Xh for Hebrew, M-h for Hebrew mode. .úéøáò ãåîì M-h ,úéøáòì C-Xh ù÷ä") + (setq hebrew-keyboard ()) ;;start with English keyboard + (setq hebrew-mode ()) ;;and in English mode + ) + + +(defun bilingual-return () + "In English mode, just return. In Hebrew mode, do the right thing." + (interactive) + (if (not hebrew-keyboard) + (newline) + (left-align-line) + (let ((here (point))) + (beginning-of-line) + (copy-to-register 'a (point) here t) + (if (eq hebrew-mode t) + (right-align-line) + (left-align-line)) + (end-of-line) + (newline) + (insert-register 'a) + (if (eq hebrew-mode t) + (right-align-line) + (left-align-line)) + (end-of-line)))) + +(defun bilingual-beginning-of-line () + "Move to the beginning of the current line, remembering that ``beginning +of line'' is language-dependent" + (interactive) + (if (not hebrew-mode) + (beginning-of-line) + (end-of-line) + (backward-char 1))) + + + +(defun bilingual-end-of-line () + "Move to the end of the current line, remembering that ``end of +line'' is language-dependent" + (interactive) + (if (not hebrew-mode) + (end-of-line) + (beginning-of-line) + (while (looking-at "[ \t]") + (forward-char 1)) + (if (not (bolp)) + (backward-char 1)))) + + +(defun bilingual-forward-char (arg) + "forward-char that knows about Hebrew vs. English" + (interactive "p") + (if (not hebrew-keyboard) + (forward-char arg) + (backward-char arg))) + +(defun bilingual-backward-char (arg) + "backward-char that knows about Hebrew vs. English" + (interactive "p") + (if (not hebrew-keyboard) + (backward-char arg) + (forward-char arg))) + +(defun bilingual-delete-char (arg) + "delete-char that knows about Hebrew vs. English" + (interactive "p") + (if (not hebrew-keyboard) + (delete-char arg) + (delete-char 1) + (backward-char 1) + (if (eq hebrew-mode t) + (right-align-line)))) + + + +(defun bilingual-kill-word (arg) + "Kill the rest of the current word, remembering that ``the rest'' +is language dependent" + (interactive "p") + (if (not hebrew-keyboard) + (kill-word arg) + (backward-kill-word arg))) ;;nothing to it! (but this doesn't work) + +(defun bilingual-kill-line () + "Kill the rest of the line, remembering that ``the rest'' is language +dependant" + (interactive) + (if (not hebrew-mode) + (kill-line) +;;We'd like to use "kill-line -1" here, but it doesn't work right. + (if (not (eolp)) + (forward-char 1)) + (kill-region (point) ;; But let's copy as much of the code in + ;; simple.el as possible + (progn + (if (bobp) + (signal 'beginning-of-buffer nil) + (beginning-of-line) + (if (looking-at "$") + (progn + (forward-line -1) + (end-of-line)))) + (point))) + (right-align-line))) + + +(defun bilingual-tab () + "right-align-line" + (interactive) + (if (eq hebrew-keyboard t) + (right-align-line) + (left-align-line))) + +(defun bilingual-backspace () ;;This is mapped to ^h + "Backspace that knows that hebrew goes right-to-left." + (interactive) + (if (not hebrew-keyboard) + (delete-backward-char 1) + (if (not (eolp)) + (forward-char 1)) + (delete-backward-char -1) + (if (not (bolp)) + (backward-char 1))) + (if (eq hebrew-mode t) + (right-align-line))) + + +(defun goto-rl-mode () + "Go to right-to-left mode (tty)" + (interactive) + (send-string-to-terminal right-to-left-code) + (redraw-display)) + +(defun goto-lr-mode () + "Go to left-to-right mode (tty)" + (interactive) + (send-string-to-terminal left-to-right-code) + (redraw-display)) + +(defun goto-tty-hebrew-mode () + "Go to Hebrew mode (tty)" + (interactive) + (send-string-to-terminal hebrew-keyboard-code)) + +(defun goto-tty-english-mode () + "Go to English mode (tty)" + (interactive) + (send-string-to-terminal english-keyboard-code)) + +(defun goto-hebrew-keyboard () + "Go to Hebrew keyboard (as far as Emacs is concerned)" + (interactive) + (setq hebrew-keyboard t) + (message "úéøáò úãì÷î (Hebrew keyboard) ")) + +(defun goto-english-keyboard () + "Go to English keyboard (as far as Emacs is concerned)" + (interactive) + (setq hebrew-keyboard ()) + (message "English keyboard (úéìâðà úãì÷î)")) + +(defun goto-hebrew-mode () + "Go to Hebrew mode (not a ``mode'' in the Emacs sense of the word, though)" + (interactive) + (setq hebrew-mode t) + (setq hebrew-keyboard t) + (message "úéøáò ãåî (Hebrew mode)")) + +(defun goto-english-mode () + "Go to English mode (not a real ``mode'')" + (interactive) + (setq hebrew-mode ()) + (setq hebrew-keyboard ()) + (message "English mode (úéìâðà ãåî)")) + + + +(defun hebrew () + "Basic definitions and key bindings" + (interactive) + (global-set-key "\C-xx" 'call-last-kbd-macro) + (global-set-key "\C-xz" 'goto-rl-mode) + (global-set-key "\C-xq" 'goto-lr-mode) + (global-set-key "\C-xh" 'goto-hebrew-keyboard) + (global-set-key "\C-xe" 'goto-english-keyboard) + (define-key esc-map "h" 'goto-hebrew-mode) + (define-key esc-map "e" 'goto-english-mode) + (global-set-key "\C-x\C-h" 'back-to-hebrew-keyboard) + (global-set-key "\C-x\C-e" 'back-to-english-keyboard) + (hebrew-set-up)) + + + +(defun bilingual-insert-char (heb eng) + "Insert either the Hebrew or English code for the key pressed" + (interactive "P") + (if (not hebrew-keyboard) + (progn + (self-insert-command (prefix-numeric-value eng)) + (if (eq hebrew-mode t) + (right-align-line))) + (if (eolp) + (insert " ") + (forward-char 1)) + (insert heb) + (backward-char 2) + (if (eq hebrew-mode t) + (right-align-line)))) + +(defun right-align-line () + "Add spaces at the beginning of the current line so that the end is +aligned with the fill column." + (interactive) + (progn ;;save-excursion doesn't always work. I wonder why not. + (let ((col (current-column))) + (end-of-line) + (let ((ecol (current-column)) (ecol2 (current-column))) + (beginning-of-line) + (while (and (looking-at "[ \t]") (> ecol hebrew-right-margin)) + (delete-char 1) + (setq ecol (- ecol 1))) + (insert-char ?\ (- hebrew-right-margin ecol )) +;;if save-excursion worked above, we could omit this: + (beginning-of-line) ;; + (forward-char (- hebrew-right-margin (- ecol2 col))))))) + +(defun left-align-line () + "Delete leading white space so as to left-align the current line." + (interactive) + (let ((col (current-column)) (deleted 0)) + (beginning-of-line) + (while (looking-at "[ \t]") + (delete-char 1) + (setq deleted (+ deleted 1))) + (if (> (- col deleted) 0) + (forward-char (- col deleted))))) + + +;; Now lets make some commands for skipping over newly inserted text +;; in the "other" language. The idea is to make the inseration of Hebrew +;; words in an English document and vice versa as easy as possible. +;; I wonder what to do with punctuation here.... + +(defun back-to-english-keyboard () + "Go back to the English keyboard after inserting a Hebrew segment of text. +Skip over the Hebrew text." + (interactive) + (goto-english-keyboard) ;; that's the easy part. + (if (looking-at " ") ;; Assume the space was inserted when we.. + (delete-char 1)) ;; ..went into Hebrew mode. + (if (not (eolp)) ;; Now move past the Hebrew + (while (looking-at "[íïõêóúùø÷öôòñðîìëéèçæåäãâáà]") + (forward-char 1)))) + +(defun back-to-hebrew-keyboard () + "Go back to the Hebrew keyboard after inserting an English segment of +text. Skip of the English text." + (interactive) + (goto-hebrew-keyboard) ;; that's the easy part. + (if (not (bolp)) + (backward-char 1)) ;; we're probably on a space or something. + (if (not (bolp)) ;; Now move past the English + (while (looking-at + "[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\$=<>\\()]") + (backward-char 1)))) ;; I threw the dollar in --------^ + ;; because (La)TeX uses it so often. + +(defun fix-backspace () + "Make backspace key 'bilingual-backspace" + (interactive) + (global-set-key "\177" 'bilingual-backspace)) + + +(global-set-key "\C-xz" 'fix-backspace) + +;; This is the last line of "hebrew.el" ìù äðåøçàä äøåùä úàæ + +;; to-do: +;; add quote-char +;; fix backspace over nl +;; fix delete at eolp
\ No newline at end of file diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hemacs b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hemacs Binary files differnew file mode 100644 index 0000000000..6138314ac0 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hemacs diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/isearch.el b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/isearch.el new file mode 100644 index 0000000000..3403ba96cb --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/isearch.el @@ -0,0 +1,376 @@ +;; Incremental search +;; Copyright (C) 1985, 1986 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY. No author or distributor +;; accepts responsibility to anyone for the consequences of using it +;; or for whether it serves any particular purpose or works at all, +;; unless he says so in writing. Refer to the GNU Emacs General Public +;; License for full details. + +;; Everyone is granted permission to copy, modify and redistribute +;; GNU Emacs, but only under the conditions described in the +;; GNU Emacs General Public License. A copy of this license is +;; supposed to have been given to you along with GNU Emacs so you +;; can know your rights and responsibilities. It should be in a +;; file named COPYING. Among other things, the copyright notice +;; and this notice must be preserved on all copies. + +; in loaddefs.el +;(defvar search-last-string "" +; "Last string search for by a search command. +;This does not include direct calls to the primitive search functions, +;and does not include searches that are aborted.") +;(defvar search-last-regexp "" +; "Last string searched for by a regexp search command. +;This does not include direct calls to the primitive search functions, +;and does not include searches that are aborted.") +; +;(defconst search-repeat-char ?\C-s +; "Character to repeat incremental search forwards.") +;(defconst search-reverse-char ?\C-r +; "Character to repeat incremental search backwards.") +;(defconst search-exit-char ?\e +; "Character to exit incremental search.") +;(defconst search-delete-char ?\177 +; "Character to delete from incremental search string.") +;(defconst search-quote-char ?\C-q +; "Character to quote special characters for incremental search.") +;(defconst search-yank-word-char ?\C-w +; "Character to pull next word from buffer into search string.") +;(defconst search-yank-line-char ?\C-y +; "Character to pull rest of line from buffer into search string.") +;(defconst search-exit-option t +; "Non-nil means random control characters terminate incremental search.") +; +;(defvar search-slow-window-lines 1 +; "*Number of lines in slow search display windows.") +;(defconst search-slow-speed 1200 +; "*Highest terminal speed at which to use \"slow\" style incremental search. +;This is the style where a one-line window is created to show the line +;that the search has reached.") + +;; This function does all the work of incremental search. +;; The functions attached to ^R and ^S are trivial, +;; merely calling this one, but they are always loaded by default +;; whereas this file can optionally be autoloadable. +;; This is the only entry point in this file. + +(defun isearch (forward &optional regexp) + (let ((search-string "") + (search-message "") + (cmds nil) + (success t) + (wrapped nil) + (barrier (point)) + adjusted + (invalid-regexp nil) + (slow-terminal-mode (and (<= (baud-rate) search-slow-speed) + (> (window-height) + (* 4 search-slow-window-lines)))) + (other-end nil) ;Start of last match if fwd, end if backwd. + (small-window nil) ;if t, using a small window + (found-point nil) ;to restore point from a small window + ;; This is the window-start value found by the search. + (found-start nil) + (opoint (point)) + (inhibit-quit t)) ;Prevent ^G from quitting immediately. + (isearch-push-state) + (save-window-excursion + (catch 'search-done + (while t + (or (>= unread-command-char 0) + (progn + (or (input-pending-p) + (isearch-message)) + (if (and slow-terminal-mode + (not (or small-window (pos-visible-in-window-p)))) + (progn + (setq small-window t) + (setq found-point (point)) + (move-to-window-line 0) + (let ((window-min-height 1)) + (split-window nil (if (< search-slow-window-lines 0) + (1+ (- search-slow-window-lines)) + (- (window-height) + (1+ search-slow-window-lines))))) + (if (< search-slow-window-lines 0) + (progn (vertical-motion (- 1 search-slow-window-lines)) + (set-window-start (next-window) (point)) + (set-window-hscroll (next-window) + (window-hscroll)) + (set-window-hscroll (selected-window) 0)) + (other-window 1)) + (goto-char found-point))))) + (let ((char (if quit-flag + ?\C-g + (read-char)))) + (setq quit-flag nil adjusted nil) + ;; Meta character means exit search. + (cond ((and (>= char 128) + search-exit-option) + (setq unread-command-char char) + (throw 'search-done t)) + ((eq char search-exit-char) + ;; Esc means exit search normally. + ;; Except, if first thing typed, it means do nonincremental + (if (= 0 (length search-string)) + (nonincremental-search forward regexp)) + (throw 'search-done t)) + ((= char ?\C-g) + ;; ^G means the user tried to quit. + (ding) + (discard-input) + (if success + ;; If search is successful, move back to starting point + ;; and really do quit. + (progn (goto-char opoint) + (signal 'quit nil)) + ;; If search is failing, rub out until it is once more + ;; successful. + (while (not success) (isearch-pop)))) + ((or (eq char search-repeat-char) + (eq char search-reverse-char)) + (if (eq forward (eq char search-repeat-char)) + ;; C-s in forward or C-r in reverse. + (if (equal search-string "") + ;; If search string is empty, use last one. + (setq search-string + (if regexp + search-last-regexp search-last-string) + search-message + (mapconcat 'text-char-description + search-string "")) + ;; If already have what to search for, repeat it. + (or success + (progn (goto-char (if forward (point-min) (point-max))) + (setq wrapped t)))) + ;; C-s in reverse or C-r in forward, change direction. + (setq forward (not forward))) + (setq barrier (point)) ; For subsequent \| if regexp. + (setq success t) + (or (equal search-string "") + (isearch-search)) + (isearch-push-state)) + ((= char search-delete-char) + ;; Rubout means discard last input item and move point + ;; back. If buffer is empty, just beep. + (if (null (cdr cmds)) + (ding) + (isearch-pop))) + (t + (cond ((or (eq char search-yank-word-char) + (eq char search-yank-line-char)) + ;; ^W means gobble next word from buffer. + ;; ^Y means gobble rest of line from buffer. + (let ((word (save-excursion + (and (not forward) other-end + (goto-char other-end)) + (buffer-substring + (point) + (save-excursion + (if (eq char search-yank-line-char) + (end-of-line) + (forward-word 1)) + (point)))))) + (setq search-string (concat search-string word) + search-message + (concat search-message + (mapconcat 'text-char-description + word ""))))) + ;; Any other control char => + ;; unread it and exit the search normally. + ((and search-exit-option + (/= char search-quote-char) + (or (= char ?\177) + (and (< char ? ) (/= char ?\t) (/= char ?\r)))) + (setq unread-command-char char) + (throw 'search-done t)) + (t + ;; Any other character => add it to the + ;; search string and search. + (cond ((= char search-quote-char) + (setq char (read-quoted-char + (isearch-message t)))) + ((= char ?\r) + ;; unix braindeath + (setq char ?\n))) + (setq search-string (concat search-string + (char-to-string char)) + search-message (concat search-message + (text-char-description char))))) + (if (and (not success) + ;; unsuccessful regexp search may become + ;; successful by addition of characters which + ;; make search-string valid + (not regexp)) + nil + ;; If a regexp search may have been made more + ;; liberal, retreat the search start. + ;; Go back to place last successful search started + ;; or to the last ^S/^R (barrier), whichever is nearer. + (and regexp success cmds + (cond ((memq char '(?* ??)) + (setq adjusted t) + (let ((cs (nth (if forward + 5 ; other-end + 2) ; saved (point) + (car (cdr cmds))))) + ;; (car cmds) is after last search; + ;; (car (cdr cmds)) is from before it. + (setq cs (or cs barrier)) + (goto-char + (if forward + (max cs barrier) + (min cs barrier))))) + ((eq char ?\|) + (setq adjusted t) + (goto-char barrier)))) + ;; In reverse regexp search, adding a character at + ;; the end may cause zero or many more chars to be + ;; matched, in the string following point. + ;; Allow all those possibiities without moving point as + ;; long as the match does not extend past search origin. + (if (and regexp (not forward) (not adjusted) + (condition-case () + (looking-at search-string) + (error nil)) + (<= (match-end 0) (min opoint barrier))) + (setq success t invalid-regexp nil + other-end (match-end 0)) + ;; Not regexp, not reverse, or no match at point. + (if (and other-end (not adjusted)) + (goto-char (if forward other-end + (min opoint barrier (1+ other-end))))) + (isearch-search))) + (isearch-push-state)))))) + (setq found-start (window-start (selected-window))) + (setq found-point (point))) + (if (> (length search-string) 0) + (if regexp + (setq search-last-regexp search-string) + (setq search-last-string search-string))) + ;; If there was movement, mark the starting position. + ;; Maybe should test difference between and set mark iff > threshold. + (if (/= (point) opoint) + (push-mark opoint) + (message "")) + (if small-window + (goto-char found-point) + ;; Exiting the save-window-excursion clobbers this; restore it. + (set-window-start (selected-window) found-start t)))) + +(defun isearch-message (&optional c-q-hack ellipsis) + ;; If about to search, and previous search regexp was invalid, + ;; check that it still is. If it is valid now, + ;; let the message we display while searching say that it is valid. + (and invalid-regexp ellipsis + (condition-case () + (progn (re-search-forward search-string (point) t) + (setq invalid-regexp nil)) + (error nil))) + ;; If currently failing, display no ellipsis. + (or success (setq ellipsis nil)) + (let ((m (concat (if success "" "failing ") + (if wrapped "wrapped ") + (if regexp "regexp " "") + "I-search" + (if forward ": " " backward: ") + search-message + (if c-q-hack "^Q" "") + (if invalid-regexp + (concat " [" invalid-regexp "]") + "")))) + (aset m 0 (upcase (aref m 0))) + (let ((cursor-in-echo-area ellipsis)) + (if c-q-hack m (message "%s" m))))) + +(defun isearch-pop () + (setq cmds (cdr cmds)) + (let ((cmd (car cmds))) + (setq search-string (car cmd) + search-message (car (cdr cmd)) + success (nth 3 cmd) + forward (nth 4 cmd) + other-end (nth 5 cmd) + invalid-regexp (nth 6 cmd) + wrapped (nth 7 cmd) + barrier (nth 8 cmd)) + (goto-char (car (cdr (cdr cmd)))))) + +(defun isearch-push-state () + (setq cmds (cons (list search-string search-message (point) + success forward other-end invalid-regexp + wrapped barrier) + cmds))) + +(defun isearch-search () + (isearch-message nil t) + (condition-case lossage + (let ((inhibit-quit nil)) + (if regexp (setq invalid-regexp nil)) + (setq success + (funcall + (if regexp + (if forward 're-search-forward 're-search-backward) + (if forward 'search-forward 'search-backward)) + search-string nil t)) + (if success + (setq other-end + (if forward (match-beginning 0) (match-end 0))))) + (quit (setq unread-command-char ?\C-g) + (setq success nil)) + (invalid-regexp (setq invalid-regexp (car (cdr lossage))) + (if (string-match "\\`Premature \\|\\`Unmatched \\|\\`Invalid " + invalid-regexp) + (setq invalid-regexp "incomplete input")))) + (if success + nil + ;; Ding if failed this time after succeeding last time. + (and (nth 3 (car cmds)) + (ding)) + (goto-char (nth 2 (car cmds))))) + +;; This is called from incremental-search +;; if the first input character is the exit character. +;; The interactive-arg-reader uses free variables `forward' and `regexp' +;; which are bound by `incremental-search'. + +;; We store the search string in `search-string' +;; which has been bound already by `incremental-search' +;; so that, when we exit, it is copied into `search-last-string'. + +(defun nonincremental-search (forward regexp) + (let (message char function string inhibit-quit + (cursor-in-echo-area t)) + ;; Prompt assuming not word search, + (setq message (if regexp + (if forward "Regexp search: " + "Regexp search backward: ") + (if forward "Search: " "Search backward: "))) + (message "%s" message) + ;; Read 1 char and switch to word search if it is ^W. + (setq char (read-char)) + (if (eq char search-yank-word-char) + (setq message (if forward "Word search: " "Word search backward: ")) + ;; Otherwise let that 1 char be part of the search string. + (setq unread-command-char char)) + (setq function + (if (eq char search-yank-word-char) + (if forward 'word-search-forward 'word-search-backward) + (if regexp + (if forward 're-search-forward 're-search-backward) + (if forward 'search-forward 'search-backward)))) + ;; Read the search string with corrected prompt. + (setq string (read-string message)) + ;; Empty means use default. + (if (= 0 (length string)) + (setq string search-last-string) + ;; Set last search string now so it is set even if we fail. + (setq search-last-string string)) + ;; Since we used the minibuffer, we should be available for redo. + (setq command-history (cons (list function string) command-history)) + ;; Go ahead and search. + (funcall function string))) diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/readme b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/readme new file mode 100644 index 0000000000..c7898c9d6b --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/readme @@ -0,0 +1,52 @@ +How to install hemacs (Hebrew Emacs) on X windows? +-------------------------------------------------- + +1. If you have a sparc workstation, you can use the exe file hemacs. + It is contained here; huji users can also copy it from + sunrise:/usr/huji. + + Otherwise we have to recompile. See the available 3 versions + yossi/ alex/ hoffman/ . + +2. Install the hebrew support: + Copy the heb*.snf files to /X11/lib/fonts/misc + Note that font files having the suffix .pcf are suitable + for version 5 of Xwindows. + + Then perform (I guess you will have to be a super user) + mkfontdir + a new fonts.dir file will be created, containing lines + starting with heb..... + + Copy the new lines to + fonts.alias + while omitting suffix .snf from the font's name. + and then do + xset fp rehash + (or,alternatively, xset +fp /X11/lib/fonts/misc) + +3. hemacs has to load the hebrew library. + Copy the library hebrew.el to /usr/local/emacs/hlisp + + Apart from that, copy the file isearch.el to /usr/local/emacs/hlisp + +4. Copy the file .emacs to your home directory. + It contains the definition of ESC M for hebrew-english toggle. + +5. Enter hemacs by typing + hemacs -fn heb10x20 + + Inside hemacs, load the hebrew library by typing + esc-x load-l + and as an answer to the question: Load Library: enter hebrew + + In hemacs, do esc x hebrew-mode + and then esc m for change of direction. + + ---------------- + Outside emacs, you do xterm with -fn heb10x20 to get a window + which displays Hebrew. + + +------------------------------------------------------------------- +Rama -- rama@cc.huji.ac.il May 26, 1992. diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/s b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/s new file mode 100644 index 0000000000..66fb3d4962 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/s @@ -0,0 +1,461 @@ +begin 640 hebrew.el +M"CL[(#X^+E=!4DY)3D<N/#P@(%1H:7,@9FEL92!C;VYT86EN<R`H;F]N+6%S +M8VEI*2!C:&%R<R!W:71H('1H92!H:6=H+6]R9&5R"CL[(&)I="!S970N("!- +M;W-T(&UA:6QE<G,@=VEL;"!C:&]K92!O;B!I="X*"@H[.R!F:6QE(")H96)R +M97<N96PB('9E<B`P+C@*.SL@;&%S="!M;V1I9FEE9"!*86XN(#(@,3DY,@H* +M.SL@2&5B<F5W('-U<'!O<G0@9F]R($5M86-S+B`*.SL@0V]P>7)I9VAT("AC +M*2`Q.3DP+3DR(&)Y($IO96P@32X@2&]F9FUA;BX*.SL*.SL@("TM/B`@5&AI +M<R!P<F]J96-T(&ES(&1E9&EC871E9"!T;R!/<FYA($]K;W5N969F+"!W:&\L +M(&%G86EN<W0@;7D*.SL@("`@("`@=VEL;"P@:6YS:7-T960@;VX@=&5A8VAI +M;F<@;64@16UA8W,N"@H*"CL[(%1(25,@25,@02!B87-I8R!S=7!P;W)T('!A +M8VMA9V4@9F]R(&5D:71I;F<@2&5B<F5W('=I=&@@16UA8W,N("!)=`H[.R!A +M<W-U;65S('1H92!K97EB;V%R9"!L87EO=70@;V8@=&AE(%94*B!S97)I97,@ +M9F]R('1H92!P=7)P;W-E<R!O9@H[.R!M87!P:6YG($5N9VQI<V@@:V5Y<W1R +M;VME<R!T;R!T:&5I<B!(96)R97<@97%U:79I;&5N=',N("!)="!A;'-O"CL[ +M(&%S<W5M97,@=&AE(&]U='!U="!H87)D=V%R92!I<R!C;VUP871I8FQE('=I +M=&@@=&AE(%94*B!S97)I97,@=7-E9`H[.R!I;B!)<W)A96PL(&EN('1H870@ +M=&AE(&AI9V@M;W)D97(@8FET(&ES(&%S<W5M960@=&\@:6YD:6-A=&4*.SL@ +M2&5B<F5W.R!)(&)E;&EE=F4@=&AI<R!I<R!I;F-O;7!A=&EB;&4@=VET:"!T +M:&4@1$]3('-T86YD87)D(&9O<@H[.R!H96)R97<N("!4:&4@<&%C:V%G92!D +M;V5S(&YO="!U<V4@=&AE(')I9VAT+71O+6QE9G0@9F%C:6QI=&5S(&]F"CL[ +M('1H92!65"H@=&5R;6EN86QS+"!S;R!A;GD@=&5R;6EN86P@=&AA="!C;VYV +M97)T<R!C:&%R86-T97)S(#XQ,C@*.SL@9&5C:6UA;"!T;R!(96)R97<@:7,@ +M<W5P<&]R=&5D+B`@06X@14=!($AE8G)E=R!F;VYT(&-O;7!A=&EB;&4@=VET +M:`H[.R!T:&ES('!A8VMA9V4@:7,@879A:6QA8FQE(&9O<B!T:&4@24)-+@H* +M.SL@5&\@=V]R:R!P<F]P97)L>2P@=&AE(&9O;&QO=VEN9R!F:6QE<R!I;B!% +M;6%C<R`Q."YX>"!M=7-T(&)E"CL[(&UO9&EF:65D.@H[.PH[.R`@("`@>&1I +M<W`N8PH[.R`@("`@:6YD96YT+F,*"CL[(%EO=2!C86X@=7-E('1H:7,@<&%C +M:V%G92!W:71H('1H92!U;FUO9&EF:65D(&9I;&5S+"!B=70@=&AE($AE8G)E +M=PH[.R!L971T97)S('=I;&P@87!P96%R(&5N8V]D960@87,@7'AX>"X@($D@ +M=6YD97)S=&%N9"!T:&%T('9E<BX@(#$Y+C`P"CL[('=I;&P@:&%V92!A;B!O +M<'1I;VX@=&\@<W5P<&]R="`X+6)I="UC;&5A;B!O<&5R871I;VXL(&%N9"!S +M;R!W:6QL"CL[('-U<'!O<G0@=&AI<R!P86-K86=E+B`@1&5M86-S('-U<'!O +M<G1S(#@M8FET+6-L96%N(&]P97)A=&EO;B!V:6$*.SL@=&AE('1O9V=L92UP +M87-S."!C;VUM86YD+@H*.SL@0W5R<F5N=&QY+"!F;W5R(&UA:F]R(&-O;6UA +M;F1S(&%R92!S=7!P;&EE9#H@0RU8:"!A;F0@0RU892P@=VAI8V@*.SL@<W=I +M=&-H(&)A8VL@86YD(&9O<G1H(&)E='=E96X@2&5B<F5W(&%N9"!%;F=L:7-H +M(&ME>6)O87)D<RP@86YD($TM:`H[.R!A;F0@32UE+"!W:&EC:"!S=VET8V@@ +M8F%C:R!A;F0@9F]R=&@@8F5T=V5E;B!(96)R97<@86YD($5N9VQI<V@*.SL@ +M(FUO9&5S+"(@=VAI8V@@87)E(&YO="!M;V1E<R!I;B!T:&4@16UA8W,@<V5N +M<V4@;V8@=&AE('=O<F0L(&)U=`H[.R!R871H97(@9&5T97)M:6YE(&EF('1H +M92!M87)G:6X@:7,@=&\@8F4@=&AE(&QE9G0@;W(@<FEG:'0@<VED92!O9@H[ +M.R!T:&4@<V-R965N+"!A;6]N9R!O=&AE<B!D:7)E8W1I;VXM<W!E8VEF:6,@ +M<&%R86UA=&5R<RX*"CL[($5M86-S('5S97,@=&AE(&5I9VAT:"!B:70@=&\@ +M:6YD:6-A=&4@2&5B<F5W(&QE='1E<G,N("!-;W-T('1E>'0*.SL@9F]R;6%T +M=&5R<R`H5&58+"`J<F]F9BP@971C+BD@=7-E(#<M8FET(&-H87)A8W1E<B!C +M;V1E<RX*.SL@061D:71I;VYA;&QY+"!T:&5S92!F;W)M871T97)S('5S=6%L +M;'D@<F5Q=6ER92!(96)R97<@=&\@87!P96%R(&EN"CL[('1I;64M;W)D97(N +M("!!('!R92UP<F]C97-S;W(@;75S="!B92!R=6X@8F5F;W)E('1H92!F;W)M +M871T97(@=&\*.SL@969F96-T('1H97-E(&-H86YG97,N"@H*"CL[($D@9&]N +M)W0@<F5A;&QY(&MN;W<@;&ES<"!O<B!%;6%C<RP@;W(@=VAA="!))VT@9&]I +M;F<[(&-O;6UE;G1S(&%N9`H[.R!S=6=G97-T:6]N<R!A<F4@=V5L8V]M93H* +M.SL@("`@(&IO96Q`=V%M+G5M9"YE9'4@("`@("`@("`@/"TM($EN=&5R;F5T +M"CL[("`@("`W,C<P,"PT,#(@("`@("`@("`@("`@("`@(#PM+2!#;VUP=7-E +M<G9E"CL[("`@("`W,C<P,"XT,#)`8V]M<'5S97)V92YC;VT@(#PM+2!#;VUP +M=7-E<G9E(&9R;VT@26YT97)N970*"CL[(%1H:7,@<&%C:V%G92!I<R!N;W0@ +M9FEN:7-H960N("!4:&4@8G5G<R!H97)E:6X@9&5F>2!E;G5M97)A=&EO;BX* +M"BAD969U;B!H96)R97<M9W)A8BUK97ES("@I"B`@(G1A:V4@8V]N=')O;"!O +M9B!T:&4@:V5Y8F]A<F0@86YD(&%U=&\M9FEL;"XB"B`@*&EN=&5R86-T:79E +M*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(B`B("=L970M<W!A8V4I"B`@ +M*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B82(@)VQE="UA*0H@("AD969I;F4M +M:V5Y(&=L;V)A;"UM87`@(F(B("=L970M8BD*("`H9&5F:6YE+6ME>2!G;&]B +M86PM;6%P(")C(B`G;&5T+6,I"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B +M9"(@)VQE="UD*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(F4B("=L970M +M92D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")F(B`G;&5T+68I"B`@*&1E +M9FEN92UK97D@9VQO8F%L+6UA<"`B9R(@)VQE="UG*0H@("AD969I;F4M:V5Y +M(&=L;V)A;"UM87`@(F@B("=L970M:"D*("`H9&5F:6YE+6ME>2!G;&]B86PM +M;6%P(")I(B`G;&5T+6DI"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B:B(@ +M)VQE="UJ*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(FLB("=L970M:RD* +M("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")L(B`G;&5T+6PI"B`@*&1E9FEN +M92UK97D@9VQO8F%L+6UA<"`B;2(@)VQE="UM*0H@("AD969I;F4M:V5Y(&=L +M;V)A;"UM87`@(FXB("=L970M;BD*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P +M(")O(B`G;&5T+6\I"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B<"(@)VQE +M="UP*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(G$B("=L970M<2D*("`H +M9&5F:6YE+6ME>2!G;&]B86PM;6%P(")R(B`G;&5T+7(I"B`@*&1E9FEN92UK +M97D@9VQO8F%L+6UA<"`B<R(@)VQE="US*0H@("AD969I;F4M:V5Y(&=L;V)A +M;"UM87`@(G0B("=L970M="D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")U +M(B`G;&5T+74I"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B=B(@)VQE="UV +M*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(G<B("=L970M=RD*("`H9&5F +M:6YE+6ME>2!G;&]B86PM;6%P(")X(B`G;&5T+7@I"B`@*&1E9FEN92UK97D@ +M9VQO8F%L+6UA<"`B>2(@)VQE="UY*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM +M87`@(GHB("=L970M>BD*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(L(B`G +M;&5T+6-O;6UA*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(CLB("=L970M +M<V5M:2D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(Z(B`G;&5T+6-O;&]N +M*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(BXB("=L970M<&5R:6]D*0H@ +M("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(B\B("=L970M<VQA<V@I"B`@*&1E +M9FEN92UK97D@9VQO8F%L+6UA<"`B)R(@)VQE="UA:6=U*0H@("AD969I;F4M +M:V5Y(&=L;V)A;"UM87`@(F`B("=L970M9W)A=F4I"B`@*&1E9FEN92UK97D@ +M9VQO8F%L+6UA<"`B7%PB("=L970M8G-L87-H*0H@("AD969I;F4M:V5Y(&=L +M;V)A;"UM87`@(BTB("=L970M:'EP:&5N*0H@("AD969I;F4M:V5Y(&=L;V)A +M;"UM87`@(B$B("=L970M>&UA<FLI"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA +M<"`B0"(@)VQE="UA="D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(C(B`G +M;&5T+7!O=6YD*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(B0B("=L970M +M9&]L;&%R*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(B4B("=L970M<&5R +M8V5N="D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")>(B`G;&5T+6-A<G)A +M="D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(F(B`G;&5T+6%M<&5R<V%N +M9"D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(J(B`G;&5T+6%S=&5R:7-K +M*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(B@B("=L970M;'!A<F5N9"D* +M("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(I(B`G;&5T+7)P87)E;F0I"B`@ +M*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B>R(@)VQE="UL8V)R86-E*0H@("AD +M969I;F4M:V5Y(&=L;V)A;"UM87`@(GTB("=L970M<F-B<F%C92D*("`H9&5F +M:6YE+6ME>2!G;&]B86PM;6%P(");(B`G;&5T+6QB<F%C92D*("`H9&5F:6YE +M+6ME>2!G;&]B86PM;6%P(")=(B`G;&5T+7)B<F%C92D*("`H9&5F:6YE+6ME +M>2!G;&]B86PM;6%P("(^(B`G;&5T+6=T*0H@("AD969I;F4M:V5Y(&=L;V)A +M;"UM87`@(GXB("=L970M=&EL9&4I"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA +M<"`B*R(@)VQE="UP;'5S*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(BLB +M("=L970M97%U86PI"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B/"(@)VQE +M="UL="D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(_(B`G;&5T+7%U97-T +M:6]N*2D*"@HH9&5F=6X@;&5T+7!L=7,@*"D*("`B8V]M;65N="(*("`H:6YT +M97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B*R(@(BLB*2D* +M"BAD969U;B!L970M97%U86P@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I +M=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B/2(@(CTB*2D*"@HH9&5F +M=6X@;&5T+71I;&1E("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@ +M("AB:6QI;F=U86PM:6YS97)T+6-H87(@(GXB(")^(BDI"@HH9&5F=6X@;&5T +M+6=T("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U +M86PM:6YS97)T+6-H87(@(CXB("(^(BDI"@HH9&5F=6X@;&5T+6QT("@I"B`@ +M(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T +M+6-H87(@(CPB("(\(BDI"@HH9&5F=6X@;&5T+7%U97-T:6]N("@I"B`@(F-O +M;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H +M87(@(C\B("(_(BDI"@HH9&5F=6X@;&5T+6AY<&AE;B`H*0H@(")C;VUM96YT +M(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("(M +M(B`B+2(I*0H**&1E9G5N(&QE="UX;6%R:R`H*0H@(")C;VUM96YT(@H@("AI +M;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("(A(B`B(2(I +M*0H**&1E9G5N(&QE="UA="`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV +M92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R(")`(B`B0"(I*0H**&1E9G5N +M(&QE="UP;W5N9"`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H +M8FEL:6YG=6%L+6EN<V5R="UC:&%R("(C(B`B(R(I*0H**&1E9G5N(&QE="UD +M;VQL87(@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN +M9W5A;"UI;G-E<G0M8VAA<B`B)"(@(B0B*2D*"BAD969U;B!L970M<&5R8V5N +M="`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L +M+6EN<V5R="UC:&%R("(E(B`B)2(I*0H**&1E9G5N(&QE="UC87)R870@*"D* +M("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E +M<G0M8VAA<B`B7B(@(EXB*2D*"BAD969U;B!L970M86UP97)S86YD("@I"B`@ +M(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T +M+6-H87(@(B8B("(F(BDI"@HH9&5F=6X@;&5T+6%S=&5R:7-K("@I"B`@(F-O +M;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H +M87(@(BHB("(J(BDI"@HH9&5F=6X@;&5T+6QP87)E;F0@*"D*("`B8V]M;65N +M="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B +M*"(@(B@B*2D*"BAD969U;B!L970M<G!A<F5N9"`H*0H@(")C;VUM96YT(@H@ +M("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("(I(B`B +M*2(I*0H**&1E9G5N(&QE="UL8V)R86-E("@I"B`@(F-O;6UE;G0B"B`@*&EN +M=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(GLB(")[(BDI +M"@HH9&5F=6X@;&5T+7)C8G)A8V4@*"D*("`B8V]M;65N="(*("`H:6YT97)A +M8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B?2(@(GTB*2D*"BAD +M969U;B!L970M;&)R86-E("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E +M*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(ELB(");(BDI"@HH9&5F=6X@ +M;&5T+7)B<F%C92`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H +M8FEL:6YG=6%L+6EN<V5R="UC:&%R(")=(B`B72(I*0H**&1E9G5N(&QE="UC +M;VQO;B`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG +M=6%L+6EN<V5R="UC:&%R("(Z(B`B.B(I*0H*"BAD969U;B!L970M82`H*0H@ +M(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R +M="UC:&%R(ODB(")A(BDI"BAD969U;B!L970M8B`H*0H@(")C;VUM96YT(@H@ +M("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("+P(B`B +M8B(I*0HH9&5F=6X@;&5T+6,@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I +M=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`BX2(@(F,B*2D**&1E9G5N +M(&QE="UD("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI +M;F=U86PM:6YS97)T+6-H87(@(N(B(")D(BDI"BAD969U;B!L970M92`H*0H@ +M(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R +M="UC:&%R("+W(B`B92(I*0HH9&5F=6X@;&5T+68@*"D*("`B8V]M;65N="(* +M("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`BZR(@ +M(F8B*2D**&1E9G5N(&QE="UG("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T +M:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(O(B(")G(BDI"BAD969U +M;B!L970M:"`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL +M:6YG=6%L+6EN<V5R="UC:&%R("+I(B`B:"(I*0HH9&5F=6X@;&5T+6D@*"D* +M("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E +M<G0M8VAA<B`B[R(@(FDB*2D**&1E9G5N(&QE="UJ("@I"B`@(F-O;6UE;G0B +M"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(N<B +M(")J(BDI"BAD969U;B!L970M:R`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C +M=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("+L(B`B:R(I*0HH9&5F +M=6X@;&5T+6P@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I +M;&EN9W5A;"UI;G-E<G0M8VAA<B`BZB(@(FPB*2D**&1E9G5N(&QE="UM("@I +M"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS +M97)T+6-H87(@(O8B(")M(BDI"BAD969U;B!L970M;B`H*0H@(")C;VUM96YT +M(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("+N +M(B`B;B(I*0HH9&5F=6X@;&5T+6\@*"D*("`B8V]M;65N="(*("`H:6YT97)A +M8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B[2(@(F\B*2D**&1E +M9G5N(&QE="UP("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB +M:6QI;F=U86PM:6YS97)T+6-H87(@(O0B(")P(BDI"BAD969U;B!L970M<2`H +M*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN +M<V5R="UC:&%R(")<7"(@(G$B*2D**&1E9G5N(&QE="UR("@I"B`@(F-O;6UE +M;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@ +M(O@B(")R(BDI"BAD969U;B!L970M<R`H*0H@(")C;VUM96YT(@H@("AI;G1E +M<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("+C(B`B<R(I*0HH +M9&5F=6X@;&5T+70@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@ +M*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`BX"(@(G0B*2D**&1E9G5N(&QE="UU +M("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM +M:6YS97)T+6-H87(@(N4B(")U(BDI"BAD969U;B!L970M=B`H*0H@(")C;VUM +M96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R +M("+D(B`B=B(I*0HH9&5F=6X@;&5T+7<@*"D*("`B8V]M;65N="(*("`H:6YT +M97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B)R(@(G<B*2D* +M*&1E9G5N(&QE="UX("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@ +M("AB:6QI;F=U86PM:6YS97)T+6-H87(@(O$B(")X(BDI"BAD969U;B!L970M +M>2`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L +M+6EN<V5R="UC:&%R("+H(B`B>2(I*0HH9&5F=6X@;&5T+7H@*"D*("`B8V]M +M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA +M<B`BYB(@(GHB*2D*"BAD969U;B!L970M<W!A8V4@*"D*("`B8V]M;65N="(* +M("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B("(@ +M(B`B*2D@("`[.T5N9VQI<V@@875T;RUF:6QL('=I;&P@8F4*"0D)"2`@("`@ +M.SMA=71O;6%T:6,N("!(96)R97<@875T;RUF:6QL(&ES"@D)"0D@("`@(#L[ +M<W1I;&P@82!P<F]B;&5M+@HH9&5F=6X@;&5T+6-O;6UA("@I"B`@(F-O;6UE +M;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@ +M(OHB("(L(BDI"@HH9&5F=6X@;&5T+7-E;6D@*"D*("`B8V]M;65N="(*("`H +M:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B\R(@(CLB +M*2D*"BAD969U;B!L970M<&5R:6]D("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R +M86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(O4B("(N(BDI"@HH +M9&5F=6X@;&5T+7-L87-H("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E +M*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(BXB("(O(BDI"@HH9&5F=6X@ +M;&5T+6%I9W4@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I +M;&EN9W5A;"UI;G-E<G0M8VAA<B`B+"(@(B<B*2D*"BAD969U;B!L970M9W)A +M=F4@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A +M;"UI;G-E<G0M8VAA<B`B+R(@(F`B*2D*"BAD969U;B!L970M8G-L87-H("@I +M"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS +M97)T+6-H87(@(CLB(")<7"(I*0H*"BAD969U;B!H96)R97<M<V5T+75P("@I +M"B`@(D-O;6UE;G1S('=I;&P@8F4@:&5R92(*("`H:6YT97)A8W1I=F4I"@H* +M.SL@1F]L;&]W:6YG(&%R92!T:&4@04Y322UL:6ME(&-O9&5S('1O(&-O;G1R +M;VP@=&AE('1T>2X@($-U<G)E;G1L>2P*.SL@=&AE>2!A<F4@=6YU<V5D+@H[ +M.R!#:&%N9V5S(&UA>2!B92!N96-E<W-A<GDN("!)9&5A;&QY+"!T:&4@8V]D +M92!S:&]U;&0@8V]N<W5L="!A(&1A=&$M"CL[(&)A<V4L(&)U="!W92!D;VXG +M="!L:79E(&EN(&%N(&ED96%L('=O<FQD+@H*("`H;6%K92UL;V-A;"UV87)I +M86)L92`G;&5F="UT;RUR:6=H="UC;V1E*0H@("AS971Q(&QE9G0M=&\M<FEG +M:'0M8V]D92`B&UL_,S1L(BD*("`H;6%K92UL;V-A;"UV87)I86)L92`G<FEG +M:'0M=&\M;&5F="UC;V1E*0H@("AS971Q(')I9VAT+71O+6QE9G0M8V]D92`B +M&UL_,S1H(BD*("`H;6%K92UL;V-A;"UV87)I86)L92`G:&5B<F5W+6ME>6)O +M87)D+6-O9&4I"B`@*'-E='$@:&5B<F5W+6ME>6)O87)D+6-O9&4@(AM;/S,U +M:"(I"B`@*&UA:V4M;&]C86PM=F%R:6%B;&4@)V5N9VQI<V@M:V5Y8F]A<F0M +M8V]D92D*("`H<V5T<2!E;F=L:7-H+6ME>6)O87)D+6-O9&4@(AM;/S,U;"(I +M"B`@*&UA:V4M;&]C86PM=F%R:6%B;&4@)VME>6)O87)D+6]F9BUC;V1E*0H@ +M("AS971Q(&ME>6)O87)D+6]F9BUC;V1E("(;6S)H(BD*("`H;6%K92UL;V-A +M;"UV87)I86)L92`G:V5Y8F]A<F0M;VXM8V]D92D*("`H<V5T<2!K97EB;V%R +M9"UO;BUC;V1E("(;6S)L(BD*("`H<V5T+79A<FEA8FQE("=H96)R97<M:V5Y +M8F]A<F0@*"DI"B`@*&UA:V4M=F%R:6%B;&4M8G5F9F5R+6QO8V%L("=H96)R +M97<M:V5Y8F]A<F0I"B`@*'-E="UV87)I86)L92`G:&5B<F5W+6UO9&4@*"DI +M"B`@*&UA:V4M=F%R:6%B;&4M8G5F9F5R+6QO8V%L("=H96)R97<M;6]D92D* +M("`H;6%K92UL;V-A;"UV87)I86)L92`G:&5B<F5W+6UO9&4I"B`@*&AE8G)E +M=RUG<F%B+6ME>7,I"CL@("AG;&]B86PM<V5T+6ME>2`B7$,M<B(@("`@("=S +M96%R8V@M8F%C:W=A<F0I"CL@("AG;&]B86PM<V5T+6ME>2`B7$,M<R(@("`@ +M("=S96%R8V@M9F]R=V%R9"D@(#L[1V]O9"!L=6-K('5S:6YG('1H:7,@;VYE +M(0H[("`H9&5F:6YE+6ME>2!E<V,M;6%P(")S(B`@("`G<V5A<F-H+69O<G=A +M<F0I"@H[.R!(97)E(&%R92!S;VUE(&-O;G-T86YT<SH*("`H<V5T+79A<FEA +M8FQE("=H96)R97<M<FEG:'0M;6%R9VEN(#<W*2`[.R!#86XG="!U<V4@.#`L +M('-O('=E(&UA>2!A<PH@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@ +M("`@("`@("`@(#L[('=E;&P@;&5A=F4@<V]M92!E>'1R82!R;V]M+@H*.SLH +M1FEN92P@<V\@:70@=V%S(&]N;'D@3TY%(&-O;G-T86YT+BXN+BD*"@H[.R!. +M;W<@=V4@=&%K92!C;VYT<F]L(&]V97(@<V]M92!O9B!T:&4@;6%J;W(@961I +M=&EN9R!K97ES+B`@5&AE"CL[(&)A8VMS<&%C92!H87,@=&\@9&5L971E('1H +M92!C;W)R96-T(&-H87(N(&EN($AE8G)E=R!M;V1E.R!R971U<FX@:&%S"CL[ +M(&MN;W<@=VAA="!T;R!D;R!W:71H($AE8G)E=RP@971C+B`@22=V92!L969T +M('1H92!A<G)O=R!K97ES+"!B=70@7D(L"CL[(&%N9"!>1B!S=&EL;"!M96%N +M(")B86-K=V%R9"(@86YD(")F;W)W87)D+B(@(%=I=&@@7D$O7D4@22=V92!G +M;W0@80H[.R!P<F]B;&5M+"!B96-A=7-E(%Y!("AT;R!M92D@:7,@(F%L;"!T +M:&4@=V%Y(&QE9G0B(&)U="!>12!I<R`B96YD+"(*.SL@8F]T:"!O9B!W:&EC +M:"!W;W5L9"!M;W9E('1O('1H92!L969T(&EN($AE8G)E=R!M;V1E+B`@06QS +M;PH[.R`B96YD+6]F+6QI;F4B(&EN($AE8G)E=RUM;V1E(&AA<R!T;R!I9VYO +M<F4@=&AE('-P86-E<R!U<V5D('1O"CL[(')I9VAT+6%L:6=N('1H92!L:6YE +M+B`@270@=V]U;&0@8F4@<VEL;'D@9F]R(%Y!('1O(&1O('1H870L('-O(%Y! +M(&ES"CL[(&%L=V%Y<R`B8F5G:6YN:6YG+6]F+6QI;F4L(B!A;F0@7D4@86QW +M87ES(")E;F0M;V8M;&EN92XB("!))W9E(&%L<V\*.SL@;&5F="!S;VUE(&]F +M('1H92!M;W)E(&]B<V-U<F4@8V]M;6%N9',O:V5Y<RP@*")O8G-C=7)E(B!B +M96EN9R!D969I;F5D"CL[(&%S('1H:6YG<R!)(&1O;B=T('5S92DL(&)E8V%U +M<V4@22=M('1O;R!L87IY('1O(&-H86YG92!T:&5M+B`@*"),969T"CL[(&%S +M(&%N(&5X8V5R8VES92!T;R!T:&4@<F5A9&5R+BXN+B(I"@H@("AD969I;F4M +M:V5Y(&=L;V)A;"UM87`@(EQ#+6@B("=B:6QI;F=U86PM8F%C:W-P86-E*0H@ +M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`[.R!))V0@;&EK92!T;R!U +M<V4@7#$W-RP@8G5T($5M86-S(&EG;F]R97,*("`@("`@("`@("`@("`@("`@ +M("`@("`@("`@("`@.SL@;64@=VAE;B!)('1R>2X@("A$;VXG="!K;F]W('=H +M>2XI"@D)"2`@("`@(#L[($)U="!296%L($5M86-S+55S97)S(&1O;B=T(&YE +M960@:&5L<`H)"0D@("`@("`[.R`H7F@I(&%N>7=A>2XN+BX*("`*("`H9&5F +M:6YE+6ME>2!G;&]B86PM;6%P(")<0RUI(B`G8FEL:6YG=6%L+71A8BD*("`H +M9&5F:6YE+6ME>2!G;&]B86PM;6%P(")<0RUK(B`G8FEL:6YG=6%L+6MI;&PM +M;&EN92D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")<0RUM(B`G8FEL:6YG +M=6%L+7)E='5R;BD*("`H9&5F:6YE+6ME>2!E<V,M;6%P(")D(B`G8FEL:6YG +M=6%L+6MI;&PM=V]R9"D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")<0RUA +M(B`G8FEL:6YG=6%L+6)E9VEN;FEN9RUO9BUL:6YE*0H@("AD969I;F4M:V5Y +M(&=L;V)A;"UM87`@(EQ#+64B("=B:6QI;F=U86PM96YD+6]F+6QI;F4I"B`@ +M*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B7$,M9B(@)V)I;&EN9W5A;"UF;W)W +M87)D+6-H87(I"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B7$,M8B(@)V)I +M;&EN9W5A;"UB86-K=V%R9"UC:&%R*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM +M87`@(EQ#+60B("=B:6QI;F=U86PM9&5L971E+6-H87(I"@H*.SL@0F4@=7-E +M<B!F<FEE;F1L>3H*("`H;65S<V%G92`*(E5S92!#+5AH(&9O<B!(96)R97<L +M($TM:"!F;W(@2&5B<F5W(&UO9&4N("`N^NGXX?(@X^7N["!-+6@@+/KI^.'R +M["!#+5AH(/GWY"(I"B`@*'-E='$@:&5B<F5W+6ME>6)O87)D("@I*2`[.W-T +M87)T('=I=&@@16YG;&ES:"!K97EB;V%R9`H@("AS971Q(&AE8G)E=RUM;V1E +M("@I*2`@("`@.SMA;F0@:6X@16YG;&ES:"!M;V1E"B`@*0H*"BAD969U;B!B +M:6QI;F=U86PM<F5T=7)N("@I"B`@(DEN($5N9VQI<V@@;6]D92P@:G5S="!R +M971U<FXN("!);B!(96)R97<@;6]D92P@9&\@=&AE(')I9VAT('1H:6YG+B(* +M("`H:6YT97)A8W1I=F4I"B`@*&EF("AN;W0@:&5B<F5W+6ME>6)O87)D*0H@ +M("`@("`H;F5W;&EN92D*("`@("AL969T+6%L:6=N+6QI;F4I"B`@("`H;&5T +M("@H:&5R92`H<&]I;G0I*2D*("`@("`@*&)E9VEN;FEN9RUO9BUL:6YE*0H@ +M("`@("`H8V]P>2UT;RUR96=I<W1E<B`G82`H<&]I;G0I(&AE<F4@="D*("`@ +M("`@*&EF("AE<2!H96)R97<M;6]D92!T*0H)("`H<FEG:'0M86QI9VXM;&EN +M92D*"2AL969T+6%L:6=N+6QI;F4I*0H@("`@("`H96YD+6]F+6QI;F4I"B`@ +M("`@("AN97=L:6YE*0H@("`@("`H:6YS97)T+7)E9VES=&5R("=A*0H@("`@ +M("`H:68@*&5Q(&AE8G)E=RUM;V1E('0I"@D@("AR:6=H="UA;&EG;BUL:6YE +M*0H)*&QE9G0M86QI9VXM;&EN92DI"B`@("`@("AE;F0M;V8M;&EN92DI*2D* +M"BAD969U;B!B:6QI;F=U86PM8F5G:6YN:6YG+6]F+6QI;F4@*"D*("`B36]V +M92!T;R!T:&4@8F5G:6YN:6YG(&]F('1H92!C=7)R96YT(&QI;F4L(')E;65M +M8F5R:6YG('1H870@8&!B96=I;FYI;F<*;V8@;&EN92<G(&ES(&QA;F=U86=E +M+61E<&5N9&5N="(*("`H:6YT97)A8W1I=F4I"B`@*&EF("AN;W0@:&5B<F5W +M+6UO9&4I"B`@("`@("AB96=I;FYI;F<M;V8M;&EN92D*("`@("AE;F0M;V8M +M;&EN92D*("`@("AB86-K=V%R9"UC:&%R(#$I*2D*("`@("`@"@H**&1E9G5N +M(&)I;&EN9W5A;"UE;F0M;V8M;&EN92`H*0H@(")-;W9E('1O('1H92!E;F0@ +M;V8@=&AE(&-U<G)E;G0@;&EN92P@<F5M96UB97)I;F<@=&AA="!@8&5N9"!O +M9@IL:6YE)R<@:7,@;&%N9W5A9V4M9&5P96YD96YT(@H@("AI;G1E<F%C=&EV +M92D*("`H:68@*&YO="!H96)R97<M;6]D92D*("`@("`@*&5N9"UO9BUL:6YE +M*0H@("`@*&)E9VEN;FEN9RUO9BUL:6YE*0H@("`@*'=H:6QE("AL;V]K:6YG +M+6%T(");(%QT72(I"B`@("`@("AF;W)W87)D+6-H87(@,2DI"B`@("`H:68@ +M*&YO="`H8F]L<"DI"@DH8F%C:W=A<F0M8VAA<B`Q*2DI*0H*"BAD969U;B!B +M:6QI;F=U86PM9F]R=V%R9"UC:&%R("AA<F<I"B`@(F9O<G=A<F0M8VAA<B!T +M:&%T(&MN;W=S(&%B;W5T($AE8G)E=R!V<RX@16YG;&ES:"(*("`H:6YT97)A +M8W1I=F4@(G`B*0H@("AI9B`H;F]T(&AE8G)E=RUK97EB;V%R9"D*("`@("`@ +M*&9O<G=A<F0M8VAA<B!A<F<I"B`@("`H8F%C:W=A<F0M8VAA<B!A<F<I*2D* +M"BAD969U;B!B:6QI;F=U86PM8F%C:W=A<F0M8VAA<B`H87)G*0H@(")B86-K +M=V%R9"UC:&%R('1H870@:VYO=W,@86)O=70@2&5B<F5W('9S+B!%;F=L:7-H +M(@H@("AI;G1E<F%C=&EV92`B<"(I"B`@*&EF("AN;W0@:&5B<F5W+6ME>6)O +M87)D*0H@("`@("`H8F%C:W=A<F0M8VAA<B!A<F<I"B`@("`H9F]R=V%R9"UC +M:&%R(&%R9RDI*0H**&1E9G5N(&)I;&EN9W5A;"UD96QE=&4M8VAA<B`H87)G +M*0H@(")D96QE=&4M8VAA<B!T:&%T(&MN;W=S(&%B;W5T($AE8G)E=R!V<RX@ +M16YG;&ES:"(*("`H:6YT97)A8W1I=F4@(G`B*0H@("AI9B`H;F]T(&AE8G)E +M=RUK97EB;V%R9"D*("`@("`@*&1E;&5T92UC:&%R(&%R9RD*("`@("AD96QE +M=&4M8VAA<B`Q*0H@("`@*&)A8VMW87)D+6-H87(@,2D*("`@("AI9B`H97$@ +M:&5B<F5W+6UO9&4@="D*"2AR:6=H="UA;&EG;BUL:6YE*2DI*0H@("`@"B`@ +M"@HH9&5F=6X@8FEL:6YG=6%L+6MI;&PM=V]R9"`H87)G*0H@(")+:6QL('1H +M92!R97-T(&]F('1H92!C=7)R96YT('=O<F0L(')E;65M8F5R:6YG('1H870@ +M8&!T:&4@<F5S="<G"FES(&QA;F=U86=E(&1E<&5N9&5N="(*("`H:6YT97)A +M8W1I=F4@(G`B*0H@("AI9B`H;F]T(&AE8G)E=RUK97EB;V%R9"D*("`@("`@ +M*&MI;&PM=V]R9"!A<F<I"B`@("`H8F%C:W=A<F0M:VEL;"UW;W)D(&%R9RDI +M*2`[.VYO=&AI;F<@=&\@:70A("AB=70@=&AI<R!D;V5S;B=T('=O<FLI"@HH +M9&5F=6X@8FEL:6YG=6%L+6MI;&PM;&EN92`H*0H@(")+:6QL('1H92!R97-T +M(&]F('1H92!L:6YE+"!R96UE;6)E<FEN9R!T:&%T(&!@=&AE(')E<W0G)R!I +M<R!L86YG=6%G90ID97!E;F1A;G0B"B`@*&EN=&5R86-T:79E*0H@("AI9B`H +M;F]T(&AE8G)E=RUM;V1E*0H@("`@("`H:VEL;"UL:6YE*0H[.U=E)V0@;&EK +M92!T;R!U<V4@(FMI;&PM;&EN92`M,2(@:&5R92P@8G5T(&ET(&1O97-N)W0@ +M=V]R:R!R:6=H="X*("`@("AI9B`H;F]T("AE;VQP*2D@"@DH9F]R=V%R9"UC +M:&%R(#$I*0H@("`@*&MI;&PM<F5G:6]N("AP;VEN="D@.SL@0G5T(&QE="=S +M(&-O<'D@87,@;75C:"!O9B!T:&4@8V]D92!I;@H)"0D@.SL@<VEM<&QE+F5L +M(&%S('!O<W-I8FQE"@D@("AP<F]G;@H)("`@("AI9B`H8F]B<"D*"0DH<VEG +M;F%L("=B96=I;FYI;F<M;V8M8G5F9F5R(&YI;"D*"2`@("`@("AB96=I;FYI +M;F<M;V8M;&EN92D*"2`@("`@("AI9B`H;&]O:VEN9RUA="`B)"(I"@D)*'!R +M;V=N"@D)("`H9F]R=V%R9"UL:6YE("TQ*0H)"2`@*&5N9"UO9BUL:6YE*2DI +M*0H)("`@("AP;VEN="DI*0H@("`@*')I9VAT+6%L:6=N+6QI;F4I*2D*"@HH +M9&5F=6X@8FEL:6YG=6%L+71A8B`H*0H@(")R:6=H="UA;&EG;BUL:6YE(@H@ +M("AI;G1E<F%C=&EV92D*("`H:68@*&5Q(&AE8G)E=RUK97EB;V%R9"!T*0H@ +M("`@("`H<FEG:'0M86QI9VXM;&EN92D*("`@("AL969T+6%L:6=N+6QI;F4I +M*2D*"BAD969U;B!B:6QI;F=U86PM8F%C:W-P86-E("@I("`[.U1H:7,@:7,@ +M;6%P<&5D('1O(%YH"B`@(D)A8VMS<&%C92!T:&%T(&MN;W=S('1H870@:&5B +M<F5W(&=O97,@<FEG:'0M=&\M;&5F="XB"B`@*&EN=&5R86-T:79E*0H@("AI +M9B`H;F]T(&AE8G)E=RUK97EB;V%R9"D*("`@("`@*&1E;&5T92UB86-K=V%R +M9"UC:&%R(#$I"B`@("`H:68@*&YO="`H96]L<"DI"@DH9F]R=V%R9"UC:&%R +M(#$I*0H@("`@*&1E;&5T92UB86-K=V%R9"UC:&%R("TQ*0H@("`@*&EF("AN +M;W0@*&)O;'`I*0H)*&)A8VMW87)D+6-H87(@,2DI*0H@("AI9B`H97$@:&5B +M<F5W+6UO9&4@="D*("`@("`@*')I9VAT+6%L:6=N+6QI;F4I*2D*"@HH9&5F +M=6X@9V]T;RUR;"UM;V1E("@I"B`@(D=O('1O(')I9VAT+71O+6QE9G0@;6]D +M92`H='1Y*2(*("`H:6YT97)A8W1I=F4I"B`@*'-E;F0M<W1R:6YG+71O+71E +M<FUI;F%L(')I9VAT+71O+6QE9G0M8V]D92D*("`H<F5D<F%W+61I<W!L87DI +M*0H**&1E9G5N(&=O=&\M;'(M;6]D92`H*0H@(")';R!T;R!L969T+71O+7)I +M9VAT(&UO9&4@*'1T>2DB"B`@*&EN=&5R86-T:79E*0H@("AS96YD+7-T<FEN +M9RUT;RUT97)M:6YA;"!L969T+71O+7)I9VAT+6-O9&4I"B`@*')E9')A=RUD +M:7-P;&%Y*2D*"BAD969U;B!G;W1O+71T>2UH96)R97<M;6]D92`H*0H@(")' +M;R!T;R!(96)R97<@;6]D92`H='1Y*2(*("`H:6YT97)A8W1I=F4I"B`@*'-E +M;F0M<W1R:6YG+71O+71E<FUI;F%L(&AE8G)E=RUK97EB;V%R9"UC;V1E*2D* +M"BAD969U;B!G;W1O+71T>2UE;F=L:7-H+6UO9&4@*"D*("`B1V\@=&\@16YG +M;&ES:"!M;V1E("AT='DI(@H@("AI;G1E<F%C=&EV92D*("`H<V5N9"US=')I +M;F<M=&\M=&5R;6EN86P@96YG;&ES:"UK97EB;V%R9"UC;V1E*2D*"BAD969U +M;B!G;W1O+6AE8G)E=RUK97EB;V%R9"`H*0H@(")';R!T;R!(96)R97<@:V5Y +M8F]A<F0@*&%S(&9A<B!A<R!%;6%C<R!I<R!C;VYC97)N960I(@H@("AI;G1E +M<F%C=&EV92D*("`H<V5T<2!H96)R97<M:V5Y8F]A<F0@="D*("`H;65S<V%G +M92`B^NGXX?(@^N/L]^X@*$AE8G)E=R!K97EB;V%R9"D@(BDI"@HH9&5F=6X@ +M9V]T;RUE;F=L:7-H+6ME>6)O87)D("@I"B`@(D=O('1O($5N9VQI<V@@:V5Y +M8F]A<F0@*&%S(&9A<B!A<R!%;6%C<R!I<R!C;VYC97)N960I(@H@("AI;G1E +M<F%C=&EV92D*("`H<V5T<2!H96)R97<M:V5Y8F]A<F0@*"DI"B`@*&UE<W-A +M9V4@(D5N9VQI<V@@:V5Y8F]A<F0@*/KI[.+PX"#ZX^SW[BDB*2D*"BAD969U +M;B!G;W1O+6AE8G)E=RUM;V1E("@I"B`@(D=O('1O($AE8G)E=R!M;V1E("AN +M;W0@82!@8&UO9&4G)R!I;B!T:&4@16UA8W,@<V5N<V4@;V8@=&AE('=O<F0L +M('1H;W5G:"DB"B`@*&EN=&5R86-T:79E*0H@("AS971Q(&AE8G)E=RUM;V1E +M('0I"B`@*'-E='$@:&5B<F5W+6ME>6)O87)D('0I"B`@*&UE<W-A9V4@(OKI +M^.'R(./E[B`H2&5B<F5W(&UO9&4I(BDI"@HH9&5F=6X@9V]T;RUE;F=L:7-H +M+6UO9&4@*"D*("`B1V\@=&\@16YG;&ES:"!M;V1E("AN;W0@82!R96%L(&!@ +M;6]D92<G*2(*("`H:6YT97)A8W1I=F4I"B`@*'-E='$@:&5B<F5W+6UO9&4@ +M*"DI"B`@*'-E='$@:&5B<F5W+6ME>6)O87)D("@I*0H@("AM97-S86=E(")% +M;F=L:7-H(&UO9&4@*/KI[.+PX"#CY>XI(BDI"B`@"@H**&1E9G5N(&AE8G)E +M=R`H*0H@(")"87-I8R!D969I;FET:6]N<R!A;F0@:V5Y(&)I;F1I;F=S(@H@ +M("AI;G1E<F%C=&EV92D*("`H9VQO8F%L+7-E="UK97D@(EQ#+7AX(B`@("`G +M8V%L;"UL87-T+6MB9"UM86-R;RD*("`H9VQO8F%L+7-E="UK97D@(EQ#+7AZ +M(B`@("`G9V]T;RUR;"UM;V1E*0H@("AG;&]B86PM<V5T+6ME>2`B7$,M>'$B +M("`@("=G;W1O+6QR+6UO9&4I"B`@*&=L;V)A;"US970M:V5Y(")<0RUX:"(@ +M("`@)V=O=&\M:&5B<F5W+6ME>6)O87)D*0H@("AG;&]B86PM<V5T+6ME>2`B +M7$,M>&4B("`@("=G;W1O+65N9VQI<V@M:V5Y8F]A<F0I"B`@*&1E9FEN92UK +M97D@97-C+6UA<"`B:"(@("`@)V=O=&\M:&5B<F5W+6UO9&4I"B`@*&1E9FEN +M92UK97D@97-C+6UA<"`B92(@("`@)V=O=&\M96YG;&ES:"UM;V1E*0H@("AG +M;&]B86PM<V5T+6ME>2`B7$,M>%Q#+6@B("=B86-K+71O+6AE8G)E=RUK97EB +M;V%R9"D*("`H9VQO8F%L+7-E="UK97D@(EQ#+7A<0RUE(B`G8F%C:RUT;RUE +M;F=L:7-H+6ME>6)O87)D*0H@("AH96)R97<M<V5T+75P*2D@"@H@(`H**&1E +M9G5N(&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`H:&5B(&5N9RD*("`B26YS97)T +M(&5I=&AE<B!T:&4@2&5B<F5W(&]R($5N9VQI<V@@8V]D92!F;W(@=&AE(&ME +M>2!P<F5S<V5D(@H@("AI;G1E<F%C=&EV92`B4"(I"B`@*&EF("AN;W0@:&5B +M<F5W+6ME>6)O87)D*0H@("`@*'!R;V=N"B`@("`@("AS96QF+6EN<V5R="UC +M;VUM86YD("AP<F5F:7@M;G5M97)I8RUV86QU92!E;F<I*0H@("`@("`H:68@ +M*&5Q(&AE8G)E=RUM;V1E('0I"@D@("AR:6=H="UA;&EG;BUL:6YE*2DI"B`@ +M("`H:68@*&5O;'`I"@DH:6YS97)T("(@(BD*("`@("`@*&9O<G=A<F0M8VAA +M<B`Q*2D*("`@("AI;G-E<G0@:&5B*0H@("`@*&)A8VMW87)D+6-H87(@,BD* +M("`@("AI9B`H97$@:&5B<F5W+6UO9&4@="D*"2AR:6=H="UA;&EG;BUL:6YE +M*2DI*0H**&1E9G5N(')I9VAT+6%L:6=N+6QI;F4@*"D*("`B061D('-P86-E +M<R!A="!T:&4@8F5G:6YN:6YG(&]F('1H92!C=7)R96YT(&QI;F4@<V\@=&AA +M="!T:&4@96YD(&ES"F%L:6=N960@=VET:"!T:&4@9FEL;"!C;VQU;6XN(@H@ +M("AI;G1E<F%C=&EV92D*("`H<')O9VX@.SMS879E+65X8W5R<VEO;B!D;V5S +M;B=T(&%L=V%Y<R!W;W)K+B`@22!W;VYD97(@=VAY(&YO="X*("`@("AL970@ +M*"AC;VP@*&-U<G)E;G0M8V]L=6UN*2DI"B`@("`@("AE;F0M;V8M;&EN92D* +M("`@("`@*&QE="`H*&5C;VP@*&-U<G)E;G0M8V]L=6UN*2D@*&5C;VPR("AC +M=7)R96YT+6-O;'5M;BDI*0H)*&)E9VEN;FEN9RUO9BUL:6YE*0H)*'=H:6QE +M("AA;F0@*&QO;VMI;F<M870@(EL@7'1=(BD@*#X@96-O;"!H96)R97<M<FEG +M:'0M;6%R9VEN*2D*"2`@*&1E;&5T92UC:&%R(#$I"@D@("AS971Q(&5C;VP@ +M*"T@96-O;"`Q*2DI"@DH:6YS97)T+6-H87(@/UP@("@M(&AE8G)E=RUR:6=H +M="UM87)G:6X@96-O;"`I*0H[.VEF('-A=F4M97AC=7)S:6]N('=O<FME9"!A +M8F]V92P@=V4@8V]U;&0@;VUI="!T:&ES.@H)*&)E9VEN;FEN9RUO9BUL:6YE +M*2`[.R`*"2AF;W)W87)D+6-H87(@*"T@:&5B<F5W+7)I9VAT+6UA<F=I;B`H +M+2!E8V]L,B!C;VPI*2DI*2DI"@HH9&5F=6X@;&5F="UA;&EG;BUL:6YE("@I +M"B`@(D1E;&5T92!L96%D:6YG('=H:71E('-P86-E('-O(&%S('1O(&QE9G0M +M86QI9VX@=&AE(&-U<G)E;G0@;&EN92XB"B`@*&EN=&5R86-T:79E*0H@("AL +M970@*"AC;VP@*&-U<G)E;G0M8V]L=6UN*2D@*&1E;&5T960@,"DI"B`@("`H +M8F5G:6YN:6YG+6]F+6QI;F4I"B`@("`H=VAI;&4@*&QO;VMI;F<M870@(EL@ +M7'1=(BD*("`@("`@*&1E;&5T92UC:&%R(#$I"B`@("`@("AS971Q(&1E;&5T +M960@*"L@9&5L971E9"`Q*2DI"B`@("`H:68@*#X@*"T@8V]L(&1E;&5T960I +M(#`I"@DH9F]R=V%R9"UC:&%R("@M(&-O;"!D96QE=&5D*2DI*2D*"@H[.R!. +M;W<@;&5T<R!M86ME('-O;64@8V]M;6%N9',@9F]R('-K:7!P:6YG(&]V97(@ +M;F5W;'D@:6YS97)T960@=&5X=`H[.R!I;B!T:&4@(F]T:&5R(B!L86YG=6%G +M92X@(%1H92!I9&5A(&ES('1O(&UA:V4@=&AE(&EN<V5R871I;VX@;V8@2&5B +M<F5W"CL[('=O<F1S(&EN(&%N($5N9VQI<V@@9&]C=6UE;G0@86YD('9I8V4@ +M=F5R<V$@87,@96%S>2!A<R!P;W-S:6)L92X*.SL@22!W;VYD97(@=VAA="!T +M;R!D;R!W:71H('!U;F-T=6%T:6]N(&AE<F4N+BXN"@HH9&5F=6X@8F%C:RUT +M;RUE;F=L:7-H+6ME>6)O87)D("@I"B`@(D=O(&)A8VL@=&\@=&AE($5N9VQI +M<V@@:V5Y8F]A<F0@869T97(@:6YS97)T:6YG(&$@2&5B<F5W('-E9VUE;G0@ +M;V8@=&5X="X*4VMI<"!O=F5R('1H92!(96)R97<@=&5X="XB"B`@*&EN=&5R +M86-T:79E*0H@("AG;W1O+65N9VQI<V@M:V5Y8F]A<F0I(#L[('1H870G<R!T +M:&4@96%S>2!P87)T+@H@("AI9B`H;&]O:VEN9RUA="`B("(I("`@(#L[($%S +M<W5M92!T:&4@<W!A8V4@=V%S(&EN<V5R=&5D('=H96X@=V4N+@H@("`@("`H +M9&5L971E+6-H87(@,2DI("`@(#L[("XN=V5N="!I;G1O($AE8G)E=R!M;V1E +M+@H@("AI9B`H;F]T("AE;VQP*2D@("`@("`@(#L[($YO=R!M;W9E('!A<W0@ +M=&AE($AE8G)E=PH@("`@("`H=VAI;&4@*&QO;VMI;F<M870@(EOM[_7J\_KY +M^/?V]/+Q\.[LZ^GHY^;EY./BX>!=(BD*"2AF;W)W87)D+6-H87(@,2DI*2D* +M"BAD969U;B!B86-K+71O+6AE8G)E=RUK97EB;V%R9"`H*0H@(")';R!B86-K +M('1O('1H92!(96)R97<@:V5Y8F]A<F0@869T97(@:6YS97)T:6YG(&%N($5N +M9VQI<V@@<V5G;65N="!O9@IT97AT+B`@4VMI<"!O9B!T:&4@16YG;&ES:"!T +M97AT+B(*("`H:6YT97)A8W1I=F4I"B`@*&=O=&\M:&5B<F5W+6ME>6)O87)D +M*2`@.SL@=&AA="=S('1H92!E87-Y('!A<G0N"B`@*&EF("AN;W0@*&)O;'`I +M*0H@("`@("`H8F%C:W=A<F0M8VAA<B`Q*2D@(#L[('=E)W)E('!R;V)A8FQY +M(&]N(&$@<W!A8V4@;W(@<V]M971H:6YG+@H@("AI9B`H;F]T("AB;VQP*2D@ +M("`@("`@(#L[($YO=R!M;W9E('!A<W0@=&AE($5N9VQI<V@*("`@("`@*'=H +M:6QE("AL;V]K:6YG+6%T(`H@("`@("`@(EMA8F-D969G:&EJ:VQM;F]P<7)S +M='5V=WAY>D%"0T1%1D=(24I+3$U.3U!14E-455976%E:7"0]/#Y<7"@I72(I +M"@DH8F%C:W=A<F0M8VAA<B`Q*2DI*2`[.R!)('1H<F5W('1H92!D;VQL87(@ +M:6X@+2TM+2TM+2U>"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@.SL@ +M8F5C875S92`H3&$I5&58('5S97,@:70@<V\@;V9T96XN"@HH9&5F=6X@9FEX +M+6)A8VMS<&%C92`H*0H@(")-86ME(&)A8VMS<&%C92!K97D@)V)I;&EN9W5A +M;"UB86-K<W!A8V4B"B`@*&EN=&5R86-T:79E*0H@("AG;&]B86PM<V5T+6ME +M>2`B7#$W-R(@)V)I;&EN9W5A;"UB86-K<W!A8V4I*0H*"BAG;&]B86PM<V5T +M+6ME>2`B7$,M>'HB("=F:7@M8F%C:W-P86-E*0H*.SL@5&AI<R!I<R!T:&4@ +M;&%S="!L:6YE(&]F(")H96)R97<N96PB(.SY(.3PY?CGX.0@Y/CE^>0@^N#F +M"@H[.R!T;RUD;SH*.SL@861D('%U;W1E+6-H87(*.SL@9FEX(&)A8VMS<&%C +?92!O=F5R(&YL"CL[(&9I>"!D96QE=&4@870@96]L<#L@ +` +end + diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/hebrew.el new file mode 100644 index 0000000000..555e41e51a --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/hebrew.el @@ -0,0 +1,735 @@ + +;; >>.WARNING.<< This file contains (non-ascii) chars with the high-order +;; bit set. Most mailers will choke on it. + + +;; file "hebrew.el" ver 0.8 +;; last modified Jan. 2 1992 + +;; Hebrew support for Emacs. +;; Copyright (c) 1990-92 by Joel M. Hoffman. +;; +;; --> This project is dedicated to Orna Okouneff, who, against my +;; will, insisted on teaching me Emacs. + + + +;; THIS IS A basic support package for editing Hebrew with Emacs. It +;; assumes the keyboard layout of the VT* series for the purposes of +;; mapping English keystrokes to their Hebrew equivilents. It also +;; assumes the output hardware is compatible with the VT* series used +;; in Israel, in that the high-order bit is assumed to indicate +;; Hebrew; I believe this is incompatible with the DOS standard for +;; hebrew. The package does not use the right-to-left facilites of +;; the VT* terminals, so any terminal that converts characters >128 +;; decimal to Hebrew is supported. An EGA Hebrew font compatible with +;; this package is available for the IBM. + +;; To work properly, the following files in Emacs 18.xx must be +;; modified: +;; +;; xdisp.c +;; indent.c + +;; You can use this package with the unmodified files, but the Hebrew +;; letters will appear encoded as \xxx. I understand that ver. 19.00 +;; will have an option to support 8-bit-clean operation, and so will +;; support this package. Demacs supports 8-bit-clean operation via +;; the toggle-pass8 command. + +;; Currently, four major commands are supplied: C-Xh and C-Xe, which +;; switch back and forth between Hebrew and English keyboards, and M-h +;; and M-e, which switch back and forth between Hebrew and English +;; "modes," which are not modes in the Emacs sense of the word, but +;; rather determine if the margin is to be the left or right side of +;; the screen, among other direction-specific paramaters. + +;; Emacs uses the eighth bit to indicate Hebrew letters. Most text +;; formatters (TeX, *roff, etc.) use 7-bit character codes. +;; Additionally, these formatters usually require Hebrew to appear in +;; time-order. A pre-processor must be run before the formatter to +;; effect these changes. + + + +;; I don't really know lisp or Emacs, or what I'm doing; comments and +;; suggestions are welcome: +;; joel@wam.umd.edu <-- Internet +;; 72700,402 <-- Compuserve +;; 72700.402@compuserve.com <-- Compuserve from Internet + +;; This package is not finished. The bugs herein defy enumeration. + +(defun hebrew-grab-keys () + "take control of the keyboard and auto-fill." + (interactive) + (define-key global-map " " 'let-space) + (define-key global-map "a" 'let-a) + (define-key global-map "b" 'let-b) + (define-key global-map "c" 'let-c) + (define-key global-map "d" 'let-d) + (define-key global-map "e" 'let-e) + (define-key global-map "f" 'let-f) + (define-key global-map "g" 'let-g) + (define-key global-map "h" 'let-h) + (define-key global-map "i" 'let-i) + (define-key global-map "j" 'let-j) + (define-key global-map "k" 'let-k) + (define-key global-map "l" 'let-l) + (define-key global-map "m" 'let-m) + (define-key global-map "n" 'let-n) + (define-key global-map "o" 'let-o) + (define-key global-map "p" 'let-p) + (define-key global-map "q" 'let-q) + (define-key global-map "r" 'let-r) + (define-key global-map "s" 'let-s) + (define-key global-map "t" 'let-t) + (define-key global-map "u" 'let-u) + (define-key global-map "v" 'let-v) + (define-key global-map "w" 'let-w) + (define-key global-map "x" 'let-x) + (define-key global-map "y" 'let-y) + (define-key global-map "z" 'let-z) + (define-key global-map "," 'let-comma) + (define-key global-map ";" 'let-semi) + (define-key global-map ":" 'let-colon) + (define-key global-map "." 'let-period) + (define-key global-map "/" 'let-slash) + (define-key global-map "'" 'let-aigu) + (define-key global-map "`" 'let-grave) + (define-key global-map "\\" 'let-bslash) + (define-key global-map "-" 'let-hyphen) + (define-key global-map "!" 'let-xmark) + (define-key global-map "@" 'let-at) + (define-key global-map "#" 'let-pound) + (define-key global-map "$" 'let-dollar) + (define-key global-map "%" 'let-percent) + (define-key global-map "^" 'let-carrat) + (define-key global-map "&" 'let-ampersand) + (define-key global-map "*" 'let-asterisk) + (define-key global-map "(" 'let-lparend) + (define-key global-map ")" 'let-rparend) + (define-key global-map "{" 'let-lcbrace) + (define-key global-map "}" 'let-rcbrace) + (define-key global-map "[" 'let-lbrace) + (define-key global-map "]" 'let-rbrace) + (define-key global-map ">" 'let-gt) + (define-key global-map "~" 'let-tilde) + (define-key global-map "+" 'let-plus) + (define-key global-map "+" 'let-equal) + (define-key global-map "<" 'let-lt) + (define-key global-map "?" 'let-question)) + + +(defun let-plus () + "comment" + (interactive) + (bilingual-insert-char "+" "+")) + +(defun let-equal () + "comment" + (interactive) + (bilingual-insert-char "=" "=")) + + +(defun let-tilde () + "comment" + (interactive) + (bilingual-insert-char "~" "~")) + +(defun let-gt () + "comment" + (interactive) + (bilingual-insert-char ">" ">")) + +(defun let-lt () + "comment" + (interactive) + (bilingual-insert-char "<" "<")) + +(defun let-question () + "comment" + (interactive) + (bilingual-insert-char "?" "?")) + +(defun let-hyphen () + "comment" + (interactive) + (bilingual-insert-char "-" "-")) + +(defun let-xmark () + "comment" + (interactive) + (bilingual-insert-char "!" "!")) + +(defun let-at () + "comment" + (interactive) + (bilingual-insert-char "@" "@")) + +(defun let-pound () + "comment" + (interactive) + (bilingual-insert-char "#" "#")) + +(defun let-dollar () + "comment" + (interactive) + (bilingual-insert-char "$" "$")) + +(defun let-percent () + "comment" + (interactive) + (bilingual-insert-char "%" "%")) + +(defun let-carrat () + "comment" + (interactive) + (bilingual-insert-char "^" "^")) + +(defun let-ampersand () + "comment" + (interactive) + (bilingual-insert-char "&" "&")) + +(defun let-asterisk () + "comment" + (interactive) + (bilingual-insert-char "*" "*")) + +(defun let-lparend () + "comment" + (interactive) + (bilingual-insert-char "(" "(")) + +(defun let-rparend () + "comment" + (interactive) + (bilingual-insert-char ")" ")")) + +(defun let-lcbrace () + "comment" + (interactive) + (bilingual-insert-char "{" "{")) + +(defun let-rcbrace () + "comment" + (interactive) + (bilingual-insert-char "}" "}")) + +(defun let-lbrace () + "comment" + (interactive) + (bilingual-insert-char "[" "[")) + +(defun let-rbrace () + "comment" + (interactive) + (bilingual-insert-char "]" "]")) + +(defun let-colon () + "comment" + (interactive) + (bilingual-insert-char ":" ":")) + + +(defun let-a () + "comment" + (interactive) + (bilingual-insert-char"ù" "a")) +(defun let-b () + "comment" + (interactive) + (bilingual-insert-char "ð" "b")) +(defun let-c () + "comment" + (interactive) + (bilingual-insert-char "á" "c")) +(defun let-d () + "comment" + (interactive) + (bilingual-insert-char "â" "d")) +(defun let-e () + "comment" + (interactive) + (bilingual-insert-char "÷" "e")) +(defun let-f () + "comment" + (interactive) + (bilingual-insert-char "ë" "f")) +(defun let-g () + "comment" + (interactive) + (bilingual-insert-char "ò" "g")) +(defun let-h () + "comment" + (interactive) + (bilingual-insert-char "é" "h")) +(defun let-i () + "comment" + (interactive) + (bilingual-insert-char "ï" "i")) +(defun let-j () + "comment" + (interactive) + (bilingual-insert-char "ç" "j")) +(defun let-k () + "comment" + (interactive) + (bilingual-insert-char "ì" "k")) +(defun let-l () + "comment" + (interactive) + (bilingual-insert-char "ê" "l")) +(defun let-m () + "comment" + (interactive) + (bilingual-insert-char "ö" "m")) +(defun let-n () + "comment" + (interactive) + (bilingual-insert-char "î" "n")) +(defun let-o () + "comment" + (interactive) + (bilingual-insert-char "í" "o")) +(defun let-p () + "comment" + (interactive) + (bilingual-insert-char "ô" "p")) +(defun let-q () + "comment" + (interactive) + (bilingual-insert-char "\\" "q")) +(defun let-r () + "comment" + (interactive) + (bilingual-insert-char "ø" "r")) +(defun let-s () + "comment" + (interactive) + (bilingual-insert-char "ã" "s")) +(defun let-t () + "comment" + (interactive) + (bilingual-insert-char "à" "t")) +(defun let-u () + "comment" + (interactive) + (bilingual-insert-char "å" "u")) +(defun let-v () + "comment" + (interactive) + (bilingual-insert-char "ä" "v")) +(defun let-w () + "comment" + (interactive) + (bilingual-insert-char "'" "w")) +(defun let-x () + "comment" + (interactive) + (bilingual-insert-char "ñ" "x")) +(defun let-y () + "comment" + (interactive) + (bilingual-insert-char "è" "y")) +(defun let-z () + "comment" + (interactive) + (bilingual-insert-char "æ" "z")) + +(defun let-space () + "comment" + (interactive) + (bilingual-insert-char " " " ")) ;;English auto-fill will be + ;;automatic. Hebrew auto-fill is + ;;still a problem. +(defun let-comma () + "comment" + (interactive) + (bilingual-insert-char "ú" ",")) + +(defun let-semi () + "comment" + (interactive) + (bilingual-insert-char "ó" ";")) + +(defun let-period () + "comment" + (interactive) + (bilingual-insert-char "õ" ".")) + +(defun let-slash () + "comment" + (interactive) + (bilingual-insert-char "." "/")) + +(defun let-aigu () + "comment" + (interactive) + (bilingual-insert-char "," "'")) + +(defun let-grave () + "comment" + (interactive) + (bilingual-insert-char "/" "`")) + +(defun let-bslash () + "comment" + (interactive) + (bilingual-insert-char ";" "\\")) + + +(defun hebrew-set-up () + "Comments will be here" + (interactive) + + +;; Following are the ANSI-like codes to control the tty. Currently, +;; they are unused. +;; Changes may be necessary. Ideally, the code should consult a data- +;; base, but we don't live in an ideal world. + + (make-local-variable 'left-to-right-code) + (setq left-to-right-code "[?34l") + (make-local-variable 'right-to-left-code) + (setq right-to-left-code "[?34h") + (make-local-variable 'hebrew-keyboard-code) + (setq hebrew-keyboard-code "[?35h") + (make-local-variable 'english-keyboard-code) + (setq english-keyboard-code "[?35l") + (make-local-variable 'keyboard-off-code) + (setq keyboard-off-code "[2h") + (make-local-variable 'keyboard-on-code) + (setq keyboard-on-code "[2l") + (set-variable 'hebrew-keyboard ()) + (make-variable-buffer-local 'hebrew-keyboard) + (set-variable 'hebrew-mode ()) + (make-variable-buffer-local 'hebrew-mode) + (make-local-variable 'hebrew-mode) + (hebrew-grab-keys) +; (global-set-key "\C-r" 'search-backward) +; (global-set-key "\C-s" 'search-forward) ;;Good luck using this one! +; (define-key esc-map "s" 'search-forward) + +;; Here are some constants: + (set-variable 'hebrew-right-margin 77) ;; Can't use 80, so we may as + ;; well leave some extra room. + +;;(Fine, so it was only ONE constant....) + + +;; Now we take control over some of the major editing keys. The +;; backspace has to delete the correct char. in Hebrew mode; return has +;; know what to do with Hebrew, etc. I've left the arrow keys, but ^B, +;; and ^F still mean "backward" and "forward." With ^A/^E I've got a +;; problem, because ^A (to me) is "all the way left" but ^E is "end," +;; both of which would move to the left in Hebrew mode. Also +;; "end-of-line" in Hebrew-mode has to ignore the spaces used to +;; right-align the line. It would be silly for ^A to do that, so ^A is +;; always "beginning-of-line," and ^E always "end-of-line." I've also +;; left some of the more obscure commands/keys, ("obscure" being defined +;; as things I don't use), because I'm too lazy to change them. ("Left +;; as an excercise to the reader....") + + (define-key global-map "\C-h" 'bilingual-backspace) + ;; I'd like to use \177, but Emacs ignores + ;; me when I try. (Don't know why.) + ;; But Real Emacs-Users don't need help + ;; (^h) anyway.... + + (define-key global-map "\C-i" 'bilingual-tab) + (define-key global-map "\C-k" 'bilingual-kill-line) + (define-key global-map "\C-m" 'bilingual-return) + (define-key esc-map "d" 'bilingual-kill-word) + (define-key global-map "\C-a" 'bilingual-beginning-of-line) + (define-key global-map "\C-e" 'bilingual-end-of-line) + (define-key global-map "\C-f" 'bilingual-forward-char) + (define-key global-map "\C-b" 'bilingual-backward-char) + (define-key global-map "\C-d" 'bilingual-delete-char) + + +;; Be user friendly: + (message +"Use C-Xh for Hebrew, M-h for Hebrew mode. .úéøáò ãåîì M-h ,úéøáòì C-Xh ù÷ä") + (setq hebrew-keyboard ()) ;;start with English keyboard + (setq hebrew-mode ()) ;;and in English mode + ) + + +(defun bilingual-return () + "In English mode, just return. In Hebrew mode, do the right thing." + (interactive) + (if (not hebrew-keyboard) + (newline) + (left-align-line) + (let ((here (point))) + (beginning-of-line) + (copy-to-register 'a (point) here t) + (if (eq hebrew-mode t) + (right-align-line) + (left-align-line)) + (end-of-line) + (newline) + (insert-register 'a) + (if (eq hebrew-mode t) + (right-align-line) + (left-align-line)) + (end-of-line)))) + +(defun bilingual-beginning-of-line () + "Move to the beginning of the current line, remembering that ``beginning +of line'' is language-dependent" + (interactive) + (if (not hebrew-mode) + (beginning-of-line) + (end-of-line) + (backward-char 1))) + + + +(defun bilingual-end-of-line () + "Move to the end of the current line, remembering that ``end of +line'' is language-dependent" + (interactive) + (if (not hebrew-mode) + (end-of-line) + (beginning-of-line) + (while (looking-at "[ \t]") + (forward-char 1)) + (if (not (bolp)) + (backward-char 1)))) + + +(defun bilingual-forward-char (arg) + "forward-char that knows about Hebrew vs. English" + (interactive "p") + (if (not hebrew-keyboard) + (forward-char arg) + (backward-char arg))) + +(defun bilingual-backward-char (arg) + "backward-char that knows about Hebrew vs. English" + (interactive "p") + (if (not hebrew-keyboard) + (backward-char arg) + (forward-char arg))) + +(defun bilingual-delete-char (arg) + "delete-char that knows about Hebrew vs. English" + (interactive "p") + (if (not hebrew-keyboard) + (delete-char arg) + (delete-char 1) + (backward-char 1) + (if (eq hebrew-mode t) + (right-align-line)))) + + + +(defun bilingual-kill-word (arg) + "Kill the rest of the current word, remembering that ``the rest'' +is language dependent" + (interactive "p") + (if (not hebrew-keyboard) + (kill-word arg) + (backward-kill-word arg))) ;;nothing to it! (but this doesn't work) + +(defun bilingual-kill-line () + "Kill the rest of the line, remembering that ``the rest'' is language +dependant" + (interactive) + (if (not hebrew-mode) + (kill-line) +;;We'd like to use "kill-line -1" here, but it doesn't work right. + (if (not (eolp)) + (forward-char 1)) + (kill-region (point) ;; But let's copy as much of the code in + ;; simple.el as possible + (progn + (if (bobp) + (signal 'beginning-of-buffer nil) + (beginning-of-line) + (if (looking-at "$") + (progn + (forward-line -1) + (end-of-line)))) + (point))) + (right-align-line))) + + +(defun bilingual-tab () + "right-align-line" + (interactive) + (if (eq hebrew-keyboard t) + (right-align-line) + (left-align-line))) + +(defun bilingual-backspace () ;;This is mapped to ^h + "Backspace that knows that hebrew goes right-to-left." + (interactive) + (if (not hebrew-keyboard) + (delete-backward-char 1) + (if (not (eolp)) + (forward-char 1)) + (delete-backward-char -1) + (if (not (bolp)) + (backward-char 1))) + (if (eq hebrew-mode t) + (right-align-line))) + + +(defun goto-rl-mode () + "Go to right-to-left mode (tty)" + (interactive) + (send-string-to-terminal right-to-left-code) + (redraw-display)) + +(defun goto-lr-mode () + "Go to left-to-right mode (tty)" + (interactive) + (send-string-to-terminal left-to-right-code) + (redraw-display)) + +(defun goto-tty-hebrew-mode () + "Go to Hebrew mode (tty)" + (interactive) + (send-string-to-terminal hebrew-keyboard-code)) + +(defun goto-tty-english-mode () + "Go to English mode (tty)" + (interactive) + (send-string-to-terminal english-keyboard-code)) + +(defun goto-hebrew-keyboard () + "Go to Hebrew keyboard (as far as Emacs is concerned)" + (interactive) + (setq hebrew-keyboard t) + (message "úéøáò úãì÷î (Hebrew keyboard) ")) + +(defun goto-english-keyboard () + "Go to English keyboard (as far as Emacs is concerned)" + (interactive) + (setq hebrew-keyboard ()) + (message "English keyboard (úéìâðà úãì÷î)")) + +(defun goto-hebrew-mode () + "Go to Hebrew mode (not a ``mode'' in the Emacs sense of the word, though)" + (interactive) + (setq hebrew-mode t) + (setq hebrew-keyboard t) + (message "úéøáò ãåî (Hebrew mode)")) + +(defun goto-english-mode () + "Go to English mode (not a real ``mode'')" + (interactive) + (setq hebrew-mode ()) + (setq hebrew-keyboard ()) + (message "English mode (úéìâðà ãåî)")) + + + +(defun hebrew () + "Basic definitions and key bindings" + (interactive) + (global-set-key "\C-xx" 'call-last-kbd-macro) + (global-set-key "\C-xz" 'goto-rl-mode) + (global-set-key "\C-xq" 'goto-lr-mode) + (global-set-key "\C-xh" 'goto-hebrew-keyboard) + (global-set-key "\C-xe" 'goto-english-keyboard) + (define-key esc-map "h" 'goto-hebrew-mode) + (define-key esc-map "e" 'goto-english-mode) + (global-set-key "\C-x\C-h" 'back-to-hebrew-keyboard) + (global-set-key "\C-x\C-e" 'back-to-english-keyboard) + (hebrew-set-up)) + + + +(defun bilingual-insert-char (heb eng) + "Insert either the Hebrew or English code for the key pressed" + (interactive "P") + (if (not hebrew-keyboard) + (progn + (self-insert-command (prefix-numeric-value eng)) + (if (eq hebrew-mode t) + (right-align-line))) + (if (eolp) + (insert " ") + (forward-char 1)) + (insert heb) + (backward-char 2) + (if (eq hebrew-mode t) + (right-align-line)))) + +(defun right-align-line () + "Add spaces at the beginning of the current line so that the end is +aligned with the fill column." + (interactive) + (progn ;;save-excursion doesn't always work. I wonder why not. + (let ((col (current-column))) + (end-of-line) + (let ((ecol (current-column)) (ecol2 (current-column))) + (beginning-of-line) + (while (and (looking-at "[ \t]") (> ecol hebrew-right-margin)) + (delete-char 1) + (setq ecol (- ecol 1))) + (insert-char ?\ (- hebrew-right-margin ecol )) +;;if save-excursion worked above, we could omit this: + (beginning-of-line) ;; + (forward-char (- hebrew-right-margin (- ecol2 col))))))) + +(defun left-align-line () + "Delete leading white space so as to left-align the current line." + (interactive) + (let ((col (current-column)) (deleted 0)) + (beginning-of-line) + (while (looking-at "[ \t]") + (delete-char 1) + (setq deleted (+ deleted 1))) + (if (> (- col deleted) 0) + (forward-char (- col deleted))))) + + +;; Now lets make some commands for skipping over newly inserted text +;; in the "other" language. The idea is to make the inseration of Hebrew +;; words in an English document and vice versa as easy as possible. +;; I wonder what to do with punctuation here.... + +(defun back-to-english-keyboard () + "Go back to the English keyboard after inserting a Hebrew segment of text. +Skip over the Hebrew text." + (interactive) + (goto-english-keyboard) ;; that's the easy part. + (if (looking-at " ") ;; Assume the space was inserted when we.. + (delete-char 1)) ;; ..went into Hebrew mode. + (if (not (eolp)) ;; Now move past the Hebrew + (while (looking-at "[íïõêóúùø÷öôòñðîìëéèçæåäãâáà]") + (forward-char 1)))) + +(defun back-to-hebrew-keyboard () + "Go back to the Hebrew keyboard after inserting an English segment of +text. Skip of the English text." + (interactive) + (goto-hebrew-keyboard) ;; that's the easy part. + (if (not (bolp)) + (backward-char 1)) ;; we're probably on a space or something. + (if (not (bolp)) ;; Now move past the English + (while (looking-at + "[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\$=<>\\()]") + (backward-char 1)))) ;; I threw the dollar in --------^ + ;; because (La)TeX uses it so often. + +(defun fix-backspace () + "Make backspace key 'bilingual-backspace" + (interactive) + (global-set-key "\177" 'bilingual-backspace)) + + +(global-set-key "\C-xz" 'fix-backspace) + +;; This is the last line of "hebrew.el" ìù äðåøçàä äøåùä úàæ + +;; to-do: +;; add quote-char +;; fix backspace over nl +;; fix delete at eolp
\ No newline at end of file diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/old.hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/old.hebrew.el new file mode 100644 index 0000000000..0095056561 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/old.hebrew.el @@ -0,0 +1,174 @@ +;;; +;;; hebrew.el -- Hebrew editing mode. +;;; For more information, see documentation of `hebrew-mode'. +;;; +;;; Copyright (c) Yossi Friedman, April 1990 +;;; + +(defvar running-epoch nil "*Non-nil means Epoch is running.") + +(defvar hebrew-mode-hook () "*Called when entering hebrew-mode") + +(defvar hebrew-mode nil "*Non nil when Hebrew mode is turned on.") +(make-variable-buffer-local 'hebrew-mode) + +(or (assoc 'hebrew-mode minor-mode-alist) + (setq minor-mode-alist + (cons '(hebrew-mode " Hebrew") minor-mode-alist))) + +(defun hebrew-mode () +"\ +Toggles hebrew-mode on/off. Hebrew-mode is a minor mode which allows +reversing the editor display and changing the keyboard in order to +enter and edit text in a semitic language, such as Hebrew. + +By default, hebrew-mode stays in \"normal\" state. The \"reversed\" +state is activated with \"\\[hebrew-toggle-reversed]\". (In Epoch, this +is also bound to \"F3\".) In the \"reversed\" state, hebrew-mode emulates +a Hebrew keyboard both during direct insertion and during searches. + +Hebrew-mode calls hebrew-mode-hook upon entering." + + + (interactive) + (if (null hebrew-mode) + (let (char) + + ; signal hebrew minor mode in the mode-line + (setq hebrew-mode t) + + ; activate the hebrew insertion function + (setq char ? ) + (while (<= char ?~) + (local-set-key (format "%c" char) 'hebrew-insert) + (setq char (1+ char))) + + ; display-literal, display-reversed + (setq display-literal t) + (local-set-key "\C-cR" 'hebrew-toggle-reversed) + + ; syntax table stuff + (setq char ?\340) ; aleph + (while (<= char ?\372) ; taf + (modify-syntax-entry char "w") + (setq char (1+ char))) + + ; search stuff + (local-set-key "\C-s" 'hebrew-ctrl-s) + (local-set-key "\C-r" 'hebrew-ctrl-r) + + ; hooks + (run-hooks 'hebrew-mode-hook)) + + (let (char) + + ; turn off hebrew minor mode in the mode-line + (setq hebrew-mode nil) + + ; deactivate the hebrew insertion function + (setq char ? ) + (while (<= char ?~) + (local-unset-key (format "%c" char)) + (setq char (1+ char))) + + ; deactivate display-literal and display-reversed + (setq display-literal nil) + (local-unset-key "\C-cR") + + ; search stuff + (local-unset-key "\C-s") + (local-unset-key "\C-r") + + ; restore syntax-table + (setq char ?\340) ; aleph + (while (<= char ?\372) ; taf + (modify-syntax-entry char " ") + (setq char (1+ char)))))) + +(if running-epoch + (epoch::rebind-key "F3" 0 "\C-cR")) +(defun hebrew-toggle-reversed () + "Toggle whether or not the display is laterally reversed." + (interactive) + (setq display-reversed (null display-reversed)) + (if running-epoch + (epoch::redisplay-screen) + (x-smart-redisplay))) + +(defun hebrew-insert (&optional arg) + "\ +If display-reversed is nil, behaves like self-insert-command. +If display-reversed is t, simulates a Hebrew typewriter keyboard." + + (interactive) + (or (numberp arg) (setq arg 1)) + (let ((char (if display-reversed + (aref hebrew-keyboard last-command-char) + (format "%c" last-command-char)))) + (while (> arg 0) + (insert char) + (setq arg (1- arg))))) + +(defun hebrew-ctrl-s () "The Hebrew-mode version of \C-s" + (interactive) + (let ((old-read-char (symbol-function 'read-char)) + (old-text-char-description (symbol-function 'text-char-description)) + (search-exit-option nil) + res) + (fset 'read-char (symbol-function 'hebrew-read-char)) + (fset 'text-char-description + (symbol-function 'hebrew-text-char-description)) + (setq res (funcall (global-key-binding "\C-s"))) + (fset 'read-char old-read-char) + (fset 'text-char-description old-text-char-description) + res)) + +(defun hebrew-ctrl-r () "The Hebrew-mode version of \C-r" + (interactive) + (let ((old-read-char (symbol-function 'read-char)) + (old-text-char-description (symbol-function 'text-char-description)) + (search-exit-option nil) + res) + (fset 'read-char (symbol-function 'hebrew-read-char)) + (fset 'text-char-description + (symbol-function 'hebrew-text-char-description)) + (setq res (funcall (global-key-binding "\C-r"))) + (fset 'read-char old-read-char) + (fset 'text-char-description old-text-char-description) + res)) + +(defun hebrew-read-char () + "The hebrew-mode version of read-char." + (let ((char (funcall old-read-char))) + (if (and display-reversed (>= char ? ) (<= char ?~)) + (string-to-char (aref hebrew-keyboard char)) + char))) + +(defun hebrew-text-char-description (char) + "The hebrew-mode version of text-char-description." + (if display-reversed + (char-to-string char) + (funcall old-text-char-description char))) + +; for the search function to work, we can't use a byte-compiled version of +; isearch.el, so load it back: +(load-library "isearch.el") + +(setq hebrew-keyboard + [ + "" "" "" "" "" "" "" "" + "" "" "" "" "" "" "" "" + "" "" "" "" "" "" "" "" + "" "" "" "" "" "" "" "" + " " "!" "\"" "#" "$" "%" "&" "'" + "(" ")" "*" "+" "\372" "-" "\365" "." + "0" "1" "2" "3" "4" "5" "6" "7" + "8" "9" ":" "\363" "<" "=" ">" "?" + "@" "A" "B" "C" "D" "E" "F" "G" + "H" "I" "J" "K" "L" "M" "N" "O" + "P" "Q" "R" "S" "T" "U" "V" "W" + "X" "Y" "Z" "[" "\\" "]" "^" "_" + ";" "\371" "\360" "\341" "\342" "\367" "\353" "\362" + "\351" "\357" "\347" "\354" "\352" "\366" "\356" "\355" + "\364" "\\" "\370" "\343" "\340" "\345" "\344" "," + "\361" "\350" "\346" "{" "|" "}" "~" ""]) diff --git a/language/hebrew/hebtex/editors/unix/hemacs/hoffman/doc.ps b/language/hebrew/hebtex/editors/unix/hemacs/hoffman/doc.ps new file mode 100644 index 0000000000..bea7fc6542 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/hoffman/doc.ps @@ -0,0 +1,631 @@ +%! +%%Creator: dvips 5.497 Copyright 1986, 1992 Radical Eye Software +%%Title: doc.dvi +%%CreationDate: Mon Apr 18 09:18:19 1994 +%%Pages: 2 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%EndComments +%DVIPSCommandLine: dvips doc.dvi +%DVIPSSource: TeX output 1993.01.04:1934 +%%BeginProcSet: tex.pro +/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N} +B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0] +concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize +-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix +currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put +setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed +true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N +/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix +fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{ +CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn +put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 +0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data +dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 +ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 +sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type +/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N +/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get +S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height +sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 +-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup +type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 +ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N} +B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin +0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add +.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict +/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook} +if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255 +{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 +div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N +/ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{ +pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 +getinterval(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 +TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 +-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{ +gsave transform round exch round exch itransform moveto rulex 0 rlineto 0 +ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N +/tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} +B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B +/w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{ +p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save +N}B /eos{SS restore}B end +%%EndProcSet +TeXDict begin 40258437 52099154 1000 300 300 (/acc/joel/hemacs/doc.dvi) +@start /Fa 11 118 df<00000600000000000F00000000000F00000000000F00000000000F00 +000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00000000 +000F00000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00 +000000000F00000000000F00000000000F0000007FFFFFFFFFE0FFFFFFFFFFF0FFFFFFFFFFF07F +FFFFFFFFE000000F00000000000F00000000000F00000000000F00000000000F00000000000F00 +000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00000000 +000F00000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00 +000000000F0000000000060000002C2E7CA535>43 D<FFFFFFF80000FFFFFFFF8000FFFFFFFFC0 +0003F8001FF00003F8000FF80003F80007FC0003F80003FC0003F80003FC0003F80003FE0003F8 +0001FE0003F80001FE0003F80001FE0003F80003FE0003F80003FC0003F80003FC0003F80007F8 +0003F8000FF00003F8001FE00003F800FFC00003FFFFFE000003FFFFFFE00003F80007F00003F8 +0003FC0003F80001FE0003F80001FE0003F80000FF0003F80000FF0003F80000FF8003F80000FF +8003F80000FF8003F80000FF8003F80000FF8003F80000FF8003F80000FF0003F80001FF0003F8 +0003FE0003F80007FC0003F8001FF800FFFFFFFFF000FFFFFFFFC000FFFFFFFE000029297DA831 +>66 D<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F003 +FC0000F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01C03803FC01C038 +03FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C0 +0003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00 +001C03FC00003C03FC00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFF +FFFFF0FFFFFFFFF0FFFFFFFFF027297DA82D>69 D<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC0 +7F803FC03FC07E003FC007C078003FC003C078003FC003C070003FC001C0F0003FC001E0F0003F +C001E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E000003FC00000 +00003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003F +C0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000 +00003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003F +C0000000003FC00000007FFFFFE000007FFFFFE000007FFFFFE0002B287EA730>84 +D<7FFFF81FFFF07FFFF81FFFF07FFFF81FFFF001FF0000780000FF8000F000007FC001E000007F +C001C000003FE003C000001FF0078000000FF80F0000000FF80E00000007FC1E00000003FE3C00 +000003FE7800000001FF7000000000FFF0000000007FE0000000007FC0000000003FE000000000 +1FF0000000001FF0000000001FF8000000001FFC000000003FFE000000007BFE00000000F1FF00 +000000E0FF80000001E0FFC0000003C07FC0000007803FE0000007001FF000000F001FF000001E +000FF800003C0007FC0000380003FE0000780003FE0000F00001FF0000E00000FF80FFFF801FFF +FEFFFF801FFFFEFFFF801FFFFE2F297EA834>88 D<01FF800007FFF0000F81F8001FC07E001FC0 +7E001FC03F000F803F8007003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800F +E03F803F803F803F003F807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF80 +3F839FFC0FFF0FFC01FC03FC1E1B7E9A21>97 D<001FF80000FFFE0003F01F0007E03F800FC03F +801F803F803F801F007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003 +F01E0000FFFC00001FE0001A1B7E9A1F>99 D<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C38 +3F007E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80FC +000FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFFFF001FFF +FF800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C +0001F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22>103 +D<FFC07F800FF000FFC1FFE03FFC00FFC383F0707E000FC603F8C07F000FCC01F9803F000FD801 +FF003F800FF001FE003F800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC003F80 +0FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC +003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800F +E001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF8351B7D9A3A +>109 D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007FFE007FFF +803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F80038FC0070FF01 +E0F7FFC0C1FF00161B7E9A1B>115 D<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003 +F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0 +03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F +E003F8000FE007F80007E007F80007E00FF80003F03BFF8001FFF3FF80003FC3FF80211B7D9A26 +>117 D E /Fb 23 122 df<E038F078F078F078F078F078F078F078E038E03860300D0B7C9816> +34 D<30787C3C1C1C1C1C3878F0E040060D789816>39 D<00E001E0038007000E001C001C0038 +003800700070007000E000E000E000E000E000E000E000E000E000700070007000380038001C00 +1C000E000700038001E000E00B217A9C16>I<C000E000700038001C000E000E00070007000380 +0380038001C001C001C001C001C001C001C001C001C0038003800380070007000E000E001C0038 +007000E000C0000A217B9C16>I<387C7E7E3E0E1E1C78F060070B798416>44 +D<FFFF80FFFF80FFFF8011037E8D16>I<00F80003FC0007FE000F07001C3F80387F8078FF8071 +C3C071C3C0E381C0E381C0E381C0E381C0E381C0E381C0E381C071C38071C38078FF00387E001C +3C000F03C007FFC003FF0000FC0012197E9816>64 D<01F18007FB800FFF801F0F803C07803803 +80700380700380F00000E00000E00000E00000E00000E00000E00000E00000F000007003807003 +803803803C07001F0F000FFE0007FC0001F00011197E9816>67 D<FC07E0FE0FE0FE0FE03A0B80 +3B1B803B1B803B1B803B1B803B1B803BBB8039B38039B38039B38039B38039F38038E38038E380 +380380380380380380380380380380FE0FE0FE0FE0FE0FE013197F9816>77 +D<1FE0003FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00E00E00E00E +00E00E00783E007FFFE03FE7E00F83E013127E9116>97 D<7E0000FE00007E00000E00000E0000 +0E00000E00000E3E000EFF000FFF800F83C00F00E00E00E00E00700E00700E00700E00700E0070 +0E00700E00E00F01E00F83C00FFF800EFF00063C001419809816>I<003F00007F00003F000007 +0000070000070000070003C7000FF7001FFF003C1F00780F00700700E00700E00700E00700E007 +00E00700E00700700F00700F003C1F001FFFE00FE7F007C7E014197F9816>100 +D<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F01012 +7D9116>I<7E0000FE00007E00000E00000E00000E00000E00000E3C000EFE000FFF000F87800F +03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87F +C7F01519809816>104 D<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E +7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F +87F0FFCFF07F87F01419809816>107 D<FFC000FFC000FFC00001C00001C00001C00001C00001 +C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001 +C00001C000FFFF80FFFF80FFFF8011197E9816>I<7E3C00FEFE007FFF000F87800F03800E0380 +0E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F0151280 +9116>110 D<FF0FC0FF3FE0FF7FE007F04007C000078000078000070000070000070000070000 +070000070000070000070000FFFC00FFFC00FFFC0013127F9116>114 D<030000070000070000 +0700000700007FFF00FFFF00FFFF00070000070000070000070000070000070000070000070100 +07038007038007038007870003FE0001FC0000F80011177F9616>116 D<7E1F80FE3F807E1F80 +0E03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E0F800FFFF0 +07FBF803E3F01512809116>I<FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F3 +0019F30019B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>119 +D<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B800073C +00071C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E +0E000E0E00070E00071C00071C00039C00039C0003980001B80001B80000F00000F00000F00000 +E00000E00000E00001C00079C0007BC0007F80003F00003C0000131B7F9116>I +E /Fc 20 122 df<0001FC000703000C03001C07001C0300180000380000380000380000380000 +700007FFFC00701C00701C00701C00E03800E03800E03800E03800E07001C07001C07001C07001 +C0E201C0E201C0E20380E4038064038038038000030000070000060000C60000E40000CC000070 +00001825819C17>12 D<00000200000600000600000C00000C0000180000300000300000600000 +600000C00000C0000180000180000300000600000600000C00000C000018000018000030000030 +0000600000C00000C0000180000180000300000300000600000C00000C00001800001800003000 +00300000600000600000C0000080000017297F9E15>47 D<03CC063C0C3C181C38383038703870 +38E070E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97 D<3F00070007000E000E00 +0E000E001C001C001C001C0039C03E60383038307038703870387038E070E070E070E060E0E0C0 +C0C1C0618063003C000D1D7B9C13>I<01F007080C08181C3838300070007000E000E000E000E0 +00E000E008E010602030C01F000E127B9113>I<01E007100C1018083810701070607F80E000E0 +00E000E000E000E0086010602030C01F000D127B9113>101 D<0FC00001C00001C00003800003 +80000380000380000700000700000700000700000E78000E8C000F0E000E0E001C0E001C0E001C +0E001C0E00381C00381C00381C00383800703880703880707080707100E03200601C00111D7D9C +15>104 D<01800380010000000000000000000000000000001C002600470047008E008E000E00 +1C001C001C0038003800710071007100720072003C00091C7C9B0D>I<0006000E000600000000 +0000000000000000000000F00118021802180438043800380038007000700070007000E000E000 +E000E001C001C001C001C003800380C300E700CE0078000F24819B0D>I<1F8003800380070007 +00070007000E000E000E000E001C001C001C001C0038003800380038007000700070007000E400 +E400E400E40068003800091D7C9C0B>108 D<3C1E0780266318C04683A0E04703C0E08E0380E0 +8E0380E00E0380E00E0380E01C0701C01C0701C01C0701C01C070380380E0388380E0388380E07 +08380E0710701C0320300C01C01D127C9122>I<3C3C002646004687004707008E07008E07000E +07000E07001C0E001C0E001C0E001C1C00381C40381C40383840383880701900300E0012127C91 +17>I<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E00 +0F127B9115>I<07870004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381 +C00381800703800703000707000706000E8C000E70000E00000E00001C00001C00001C00001C00 +003C0000FF8000131A7F9115>I<3C3C26C2468747078E068E000E000E001C001C001C001C0038 +003800380038007000300010127C9112>114 D<00C001C001C001C00380038003800380FFE007 +00070007000E000E000E000E001C001C001C001C00384038403840388019000E000B1A7D990E> +116 D<1E0300270700470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C00 +3838803838801838801839001C5900078E0011127C9116>I<1E01832703874703874703838707 +018707010E07010E07011C0E021C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3 +C018127C911C>119 D<070E0019910010E38020E38041C30041C00001C00001C0000380000380 +00038000038000070200670200E70400CB04008B080070F00011127D9113>I<1E032707470747 +07870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C7007F00070007000E0E0C0E1C0 +818047003C00101A7C9114>I E /Fd 3 56 df<03C00C301818300C300C700E60066006E007E0 +07E007E007E007E007E007E007E007E007E007E007E00760066006700E300C300C18180C3007E0 +101D7E9B15>48 D<030007003F00C7000700070007000700070007000700070007000700070007 +0007000700070007000700070007000700070007000F80FFF80D1C7C9B15>I<4000007FFF807F +FF007FFF0040020080040080040080080000100000100000200000600000400000C00000C00001 +C00001800001800003800003800003800003800007800007800007800007800007800007800003 +0000111D7E9B15>55 D E /Fe 3 121 df<E0000000780000001E0000000780000001E0000000 +780000001E0000000780000001E0000000780000001E00000007800000078000001E0000007800 +0001E00000078000001E00000078000001E00000078000001E00000078000000E000000019187D +9520>62 D<01F0030C0E0C1C1E383C301870007000E000E000E000E000E000E004600860103060 +1F800F127E9112>99 D<07878008C84010F0C020F1E020E3C040E18000E00000E00001C00001C0 +0001C00001C000638080F38080F38100E5810084C60078780013127E9118>120 +D E /Ff 32 123 df<0304081030306060E0E0E0E0E0E0E0E060606030301008040108197D970D +>40 D<806030181C1C0E0E0F0F0F0F0F0F0F0F0F0E0E0E1C1C18306080081A7C970E>I<307070 +3030302020404080040B7E8309>44 D<7FE07FE0FFC00B037E8D10>I<60F0F06004047E8108>I< +200000003000040078000C00FC001E007F003E003F803E001FC01E000FE01E0007F01E0007F81C +000EFC1C000E7E38001C3F38001C1FB000380FF0003807E0007803F0007801F8007800FC007800 +7C0078003E007F003F007F001F807F000F80FE000700FE00070000000300191B7F991B>96 +D<0800001800001800003FFC003FFE007FFF007FFF00000F800007800007800007C00003C00003 +C00003C00003C00003C00003C00003C00003C00003C00003C00003C03FFFF87FFFF07FFFF0FFFF +E0151A7F9917>I<38003E007F00FF803FC00FC007E003E001E001E001E000E000F000F000F000 +F000F000F001F003F80FB83F387F387E38FC10F01080100D1B7F980F>I<1001003803003FFFF0 +7FFFF0FFFFE0FFFFE0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 +000F00000F00000F00000F00000F00000F00000F00000F00000E00000C00000800141B7E9817> +I<0800001800003FFFE07FFFF87FFFFCFFFFFC00003E00001E00001E00001E04001E0C001E1C00 +1E3C001E3C001E3C001E3C001E3C001E3C001E3C001E3C001E3C001E3C001E38001C38001C3000 +18200010171B7F981A>I<100038007C00FF007F803FC01FC007E003E001E001E001E001E001E0 +01E001E001E001E001E001E001E001E001E001E001E001C00180010001000B1D7F990D>I<3800 +7C00FE007F003F801FC00FE007F00DE00CE01C401C001C001C001E001E000E000F000F00078007 +8007C003C003800380010001000C1B7F980E>I<0800001800003FFC007FFF80FFFFE0FFFFF07C +03F87C00F87C007C3C007C3C003C3C003E3C003E3C001E3C001E3C001E3C001E38001E38001E38 +001E38001E78001E78001E70001E70001C600018400010171B7F9819>I<200000007001F00070 +0FFC00F00FFE00F01FFF00F81FFF0078381F8078000F8078000F803C0007803C0007803C000780 +3C0007003C0007003E0007003E000E001E000E001E001C001F003C001F0078001F01F0000F87E0 +000FFFC0000FFF800007FE000003F00000191A7F981B>I<3C007E00FF007F803F800FC007C003 +E001E001E001E001C003C0038007000E001C00180020000B137F980D>I<1000003000007FFFE0 +7FFFC0FFFFC0FFFF80001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00 +001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00 +001E00001E00001C0000180000100013227E9816>I<1000003000003800007FFE007FFF80FFFF +C0FFFFE00007E00003E00001F00001F00000F00000F00000F00000F00000F00000E00000E00001 +E00001C00001C00003803FFF807FFF007FFE00FFFE00141A7F9917>I<100000300000700000F0 +00007000007000007000007000007FFFC07FFFE07FFFE07FFFE00003E00001E00001E00001E000 +01E00001C00003C00003C0000780000780000F00001F00003E0000FC0007F8001FF0001FE0003F +80003E000078000040000013217F9E15>I<040000000C0000001C0000003FFFFE007FFFFF80FF +FFFFC03FFFFFC01C0007E01C0003E01C0003E01C0001E01C0001E01C0001E01C0001E01C0001E0 +1C0001E01C0001E01C0001E01C0001E01C0001E01E0001E01F0001E01FFFFFC00FFFFF800FFFFF +0007FFFE001B1A7F991D>I<1000003000003803E0780FF0FC1FF87C3FFC7E787C3E703C3EE01E +1FC01E1FC00E1F800F1F800F1F000F1F00073E00073E00073C00073C00073C0007780007780007 +707FFE707FFE60FFFCE0FFFCC00000800000181C7F991A>I<100038007C00FF007F803FC01FC0 +07E003E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001 +E001E001E001E001E001E001C0018001000B237F990C>I<04000E001F001F803FC01FE007F003 +F001F000F00070007000700070007000700070007000700070007000703FF07FE0FFE0FFC00C1A +7F990E>I<040000000C0000001C0000003FFFFF807FFFFFC0FFFFFFE0FFFFFFE07E0003F03E00 +03F03F0001F01F0001F01F0001F00F0001F00F0001F00F8001F00F8003E0078003E0078007C007 +8007C007C00F8003C01F0003C03E0003E0FC0003FFF80001FFF00001FFC00000FF8000007E0000 +1C1C7F991E>I<1800C03801C07C03C07C07C07C03E03E03E03E01E01F01E01F01E00F00E00F80 +E00780E00780E003C0C003C0C001C1C001E38000E78000EF0000FE0001FC001FF8007FE0007F80 +007E0000F00000C00000131B7F9816>I<03000007E0000FF8001FFC003C7F00381F807007C070 +03C0F001E0F001E0F800E0F800E0FC00E07F00E03F00E01F00E00E00E00400E00000E00000E000 +00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000C000 +008013227F9916>I<03800007F0000FFC001FFE001DFF803C3FC0380FE07803F07801F07801F0 +7C00F07E00F07F00F03F00F01E00F00400F00000F00000F00000F00000F00000F00000E03FFFE0 +7FFFC07FFFC0FFFF80141A7F9916>I<200000300080700180F80380FC0380FC07807E07803F07 +801F07800F870007870007C70003CE0001EE0001FC0000FC00007800007800003C00001C00001E +00000E00000F000007000007000003800003800003800001C00001C00001C00000C00000800000 +8012227E9915>I<0800000800601C00603C00F07E01F03F01F01F80F01FC0F00FC0E007E0E003 +F0C001F9C000FD80007F00003F00001F80000FC00007E00003E00001F00000F80000F03FFFE07F +FFE07FFFC0FFFF80151A7F9917>I<0800000018000000180000003FFFFF007FFFFF807FFFFFC0 +FFFFFFC000000FC0000007C0000003C0040003C00C0003800C0003801C0003803C0007003C0007 +003C0007003C000E003C000E003C001C003C0038003C00F8003C07F0003C1FE0003C1FC0003C1F +00003C3C00003C3000003C0000003C0000003C0000003C0000003C000000380000003800000030 +000000200000001A257F991D>I<0800001800003FFE007FFF807FFFC0FFFFE00007E00003F000 +01F00001F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000 +00F00000F00000F00000E00000C0000080141B7F9816>I<1001004030030040780700C0F80F81 +C0F80F83E0F80F83E07C0F83E07C0F83E07C0F81E03E0F81E03E0F01E03E0F01E01E1E01E01F1E +01C01F7C01C01FF801C00FF001800FE003800F8003000780070007800E0007801C0003C0780003 +C3F00003FFE00001FFC00001FF000000FE0000007800001B1D7F991E>I<040000000C0000001C +0000003FFFFF003FFFFF807FFFFF80FFFFFFC0078007C003C003C003C003C003C001C001C001C0 +01C001C001C001C001E001C001E001C000E001C000E001C000E001C000E001C000E001C000C001 +C03FC001C03FC001C07F8001C0FF80018000000180000001001A1C7F991C>I +E /Fg 54 127 df<003FE3F801F03F1C03C03E3E07C07C3E0F807C3E0F807C1C0F807C000F807C +000F807C000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F807C000F807C000F80 +7C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C007F +E1FFC07FE1FFC01F1D809C1C>11 D<003FC00001F0300003C0380007C07C000F807C000F807C00 +0F8038000F8000000F8000000F8000000F800000FFFFFC00FFFFFC000F807C000F807C000F807C +000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F80 +7C000F807C007FE1FF807FE1FF80191D809C1B>I<781E00FC3F00FC3F00FE3F80FE3F807A1E80 +020080020080040100040100080200080200300C00401000110E7E9C19>34 +D<078000180018600038003830007800703C01F0007013FEE000F01801C000F01803C000F01807 +8000F018070000F0180E0000F0181E0000F0183C0000701038000070307000003820F000001841 +E000000781C07800000381840000078382000007070300000E070100001E0F0180003C0F018000 +380F018000700F018000F00F018001E00F018001C00F0180038007010007800703000700038200 +0E00018400060000780021217D9E28>37 D<0020004001800380030006000E001C001C003C0038 +003800780078007800F800F000F000F000F000F000F000F000F000F000F8007800780078003800 +38003C001C001C000E000600030003800180004000200B297C9E13>40 D<800040003000380018 +000C000E000700070007800380038003C003C003C003E001E001E001E001E001E001E001E001E0 +01E003E003C003C003C0038003800780070007000E000C00180038003000400080000B297D9E13 +>I<01C00003E00001C00041C100F1C780F9CF80FDDF803EBE0007F00007F0003EBE00FDDF80F9 +CF80F1C78041C10001C00003E00001C00011127D9E18>I<78FCFCFEFE7A020204040808304007 +0E7D850D>44 D<FFE0FFE0FFE0FFE00B047F8A10>I<78FCFCFCFC7806067D850D>I<0001800003 +80000380000700000700000700000E00000E00001C00001C00001C000038000038000038000070 +0000700000E00000E00000E00001C00001C00001C0000380000380000380000700000700000E00 +000E00000E00001C00001C00001C0000380000380000700000700000700000E00000E00000C000 +0011297D9E18>I<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003 +E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003 +E00003E0007FFF807FFF80111B7D9A18>49 D<07F8001FFE00383F80780FC0FC07C0FC07E0FC03 +E0FC03E07803E00007E00007C00007C0000F80001F00001E0000380000700000E0000180600300 +600600600800E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131B7E9A18>I<03F8000FFE001E0F8038 +07803803C07803C07803C07E03C07F83807FC7003FFE001FFC000FFE0007FF801DFF80387FC078 +1FE0F007E0F003E0F001E0F001E0F001E07801C07803803E07801FFE0003F800131B7E9A18>56 +D<78FCFCFCFC7800000000000078FCFCFCFC7806127D910D>58 D<FFFFFFFCFFFFFFFC7FFFFFFC +000000000000000000000000000000000000000000000000000000007FFFFFFCFFFFFFFCFFFFFF +FC1E0D7D9025>61 D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E00 +00607E0000607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC +0000007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC00 +001FE0001B1C7D9B22>67 D<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003 +800FC181800FC181800FC181800FC180000FC380000FFF80000FFF80000FC380000FC180000FC1 +80000FC180600FC180600FC000E00FC000C00FC000C00FC001C00FC001C00FC003C00FC00F80FF +FFFF80FFFFFF801B1C7E9B1F>69 D<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC00380 +0FC003800FC001800FC181800FC181800FC180000FC180000FC380000FFF80000FFF80000FC380 +000FC180000FC180000FC180000FC180000FC000000FC000000FC000000FC000000FC000000FC0 +0000FFFF0000FFFF0000191C7E9B1E>I<FFFC3FFFFFFC3FFF0FC003F00FC003F00FC003F00FC0 +03F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FFFFFF00FFFFFF00FC003F00F +C003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F0 +0FC003F0FFFC3FFFFFFC3FFF201C7E9B25>72 D<FFFF00FFFF000FC0000FC0000FC0000FC0000F +C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0030FC0030F +C0030FC0070FC0070FC0060FC00E0FC01E0FC07EFFFFFEFFFFFE181C7E9B1D>76 +D<FFE003FFFFE003FF0FF000300FF800300DFC00300CFE00300C7E00300C3F00300C1F80300C1F +C0300C0FE0300C07F0300C03F0300C01F8300C01FC300C00FE300C007F300C003F300C001FB00C +001FF00C000FF00C0007F00C0003F00C0001F00C0000F00C0000F0FFC00070FFC00030201C7E9B +25>78 D<FFFFF800FFFFFE000FC03F800FC00F800FC007C00FC007E00FC007E00FC007E00FC007 +E00FC007E00FC007C00FC007C00FC00F800FC03F000FFFFC000FC000000FC000000FC000000FC0 +00000FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC0000FFFC00001B +1C7E9B21>80 D<FFFFF00000FFFFFE00000FC03F00000FC00F80000FC007C0000FC007E0000FC0 +07E0000FC007E0000FC007E0000FC007E0000FC007C0000FC00F80000FC03E00000FFFF000000F +C07C00000FC03E00000FC03F00000FC01F80000FC01F80000FC01F80000FC01F80000FC01F8000 +0FC01F80000FC01F81800FC01F81800FC00FC180FFFC07C300FFFC01FE00211C7E9B24>82 +D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE003FFF +003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000E0F001C0FC03 +C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C0 +1F8030C01F8030C01F8030C01F8030001F8000001F8000001F8000001F8000001F8000001F8000 +001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80 +0007FFFE0007FFFE001C1C7E9B21>I<FFFC01FF80FFFC01FF800FC000180007E000300007E000 +300007F000700003F000600003F800E00001F800C00001FC00C00000FC01800000FC018000007E +030000007E030000007F070000003F060000003F8E0000001F8C0000001FCC0000000FD8000000 +0FD800000007F000000007F000000007F000000003E000000003E000000001C000000001C00000 +211C7F9B24>86 D<7FFE1FFE007FFE1FFE0007F001800003F803800001FC07000000FC06000000 +FE0C0000007F1C0000003F380000003FB00000001FE00000000FE00000000FE000000007F00000 +0003F800000007F80000000FFC0000000CFE000000187E000000387F000000703F800000601F80 +0000C01FC00001C00FE000018007F000030007F000FFF03FFF80FFF03FFF80211C7F9B24>88 +D<040100180600200800200800401000401000802000802000BC2F00FE3F80FE3F807E1F807E1F +803C0F00110E7B9C19>92 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C0 +1F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 +D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F3F801FE1 +E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F003C1F00 +781F80701EC1E01C3F00171D7F9C1B>I<03FC000E0E001C1F003C1F00781F00780E00F80000F8 +0000F80000F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115>I< +000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001F9F00F07F0 +1C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801F07801F03C01F0 +1C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C07801C07801E0F801E0F801 +E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F038001FC0013127F9116>I<00 +7F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF800FFF8000F +80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F +80007FF8007FF800121D809C0F>I<03F8F00E0F381E0F381C07303C07803C07803C07803C0780 +1C07001E0F000E0E001BF8001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078 +F00078F000787000707800F01E03C007FF00151B7F9118>I<FF0000FF00001F00001F00001F00 +001F00001F00001F00001F00001F00001F00001F0FC01F31E01F40F01F80F81F80F81F00F81F00 +F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF181D7F9C1B +>I<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F001F +001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>I<007800FC00FC00FC00 +FC007800000000000000000000000003FC03FC007C007C007C007C007C007C007C007C007C007C +007C007C007C007C007C007C007C007C707CF87CF878F8F070E01F800E26839D0F>I<FF0000FF +00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FF81F0FF81F03801F +07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F001F0F801F07C01F03E0FF +C7FCFFC7FC161D7F9C19>I<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C0E>I<FF +0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807C01F00F807C0 +1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807 +C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F8 +1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B> +I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800F87800 +F07800F03C01E01E03C00F078001FC0015127F9118>I<FF3F80FFE1E01F80F01F00781F007C1F +003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F007C1F00781F80F01FC1E01F3F001F +00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>I<FE3E00FE47001E8F80 +1E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000 +FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF807FE07FF01FF807FC007C +C01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300070007000F000F003FFCFFFC +1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>I< +FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8 +1F00F81F01F80F01F80786FF01F8FF18127F911B>I<FFC1FCFFC1FC1F00601F80E00F80C00FC0 +C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC000078000078000030001612 +7F9119>I<FF8FF8FEFF8FF8FE1F03E0301F03E0301F83E0700F83F0600F86F06007C6F0C007CE +F8C007EC79C003EC7D8003F83D8001F83F0001F83F0001F01F0000F01E0000E00E0000E00E001F +127F9122>I<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F80000F800007C0000FE00 +01DF00039F00070F800607C00C03E0FF07FCFF07FC16127F9119>I<FFC1FCFFC1FC1F00601F80 +E00F80C00FC0C007C18007C18003E30003E30001F70001F60000FE0000FC0000FC000078000078 +00003000003000007000706000F86000F8C000F980007300003E0000161A7F9119>I<1E023FFC +7FF880F00F047C9C18>126 D E /Fh 2 111 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFF +FF7FFE7FFE3FFC1FF80FF003C010107E9115>15 D<C000C0006000600060003000300030001800 +180018000C000C000C000600060003000300030001800180018000C000C000C000600060003000 +300030001800180018000C000C000C0006000600060003000110297E9E15>110 +D E /Fi 20 123 df<FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20047B932A>45 +D<FFFE0000FFFFC000FFFFF000FFFFF800FFFFFC00FFFFFC000007FE000001FE000000FE000000 +7F0000007F0000007F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000 +003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F00 +00003F00FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF01C237CA224>97 +D<FFE000FFF800FFFC00FFFE00FFFE00FFFE0000FF00007F00007F00003F00003F00003F00003F +00003F00003F00007F00007F00007F0000FF0000FF0001FF0001FF0003FF8007FF800FFF800FDF +801F9F803F9F807F1F80FE1F80FC0F80F80FC0F00FC0E00FC0C00FC080000012247CA218>I<FF +FFFFF0FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF0FFFFFF0000003F0000003F0000003F0000003F00 +00003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F +0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F000000 +3F0000003F0000003F0000003F0000003F0000003F001C237CA224>I<FFFFE000FFFFF800FFFF +FE00FFFFFF00FFFFFF80FFFFFF800000FFC000003FC000001FC000000FE000000FE000000FE00C +0007E03C0007E07C0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0 +FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007 +E0FC0007E0FC0007E0FC0007E01B237BA225>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8 +F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F805237BA20F>I<FFFFF000FFFFFE00FFFFFF80FFFFFFC0 +FFFFFFE0FFFFFFE0FC001FF0FC0007F0FC0003F0FC0003F8FC0001F8FC0001F8FC0001F8FC0001 +F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC00 +01F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC +0001F8FC0001F81D237BA227>103 D<FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF8F0C00615 +7BA20F>105 D<FFFE0000FFFFC000FFFFF800FFFFFE00FFFFFF00FFFFFF800007FFC00000FFC0 +00003FE000001FE000000FF0000007F0000007F0000007F8000003F8000003F8000003F8000003 +F8000003F8000003F8000003F8000003F8000007F0000007F000000FF000000FE000001FE00000 +3FC00000FFC00003FF80FFFFFF00FFFFFE00FFFFF800FFFFF000FFFF00001D237CA224>107 +D<FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00 +0000FC000000FC000000FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC000001FC000 +001F8000001F8000003F0000003F0000007E0000007E0000007E000000FC000000FC000001F800 +0001F8000001F8000003F0000003F0000007E0000007E0000007E000000FC000000FC000001F80 +00001F8000003F8000003F0000003F0000007E0000007E000000FE000000FC00001A2F7CAE22> +I<FFFFF800FFFFFF00FFFFFFC0FFFFFFE0FFFFFFF0FFFFFFF0FC000FF8FC0003F8FC0001F8FC00 +01FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC +0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FC +FC0000FCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC1E237BA227>I<FC007F8000FC01FF +E0007E07FFF8007E0FFFFC003E1FFFFE003F3F81FF003F3E007F001F7C003F801FF8001F801FF8 +000FC00FF0000FC00FF00007C00FE00007C00FE00003E00FE00003E00FC00003E00FC00003E00F +C00003E00FC00003E00F800003E00F800003E00F800003E00F800003E00F800003E01F800007C0 +1F800007C01F80000FC01F80000F801F80001F801F00003F001F0180FF003F01FFFE003F01FFFC +003F01FFF8003F01FFE00000007F800023247CA22B>I<FF80FFF0FFF8FFFCFFFEFFFE00FE007F +003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F00 +3F003F003FFFFFFFFFFFFFFFFFFFFF10237CA218>112 D<FFFFF800FFFFFF00FFFFFFC0FFFFFF +E0FFFFFFF0FFFFFFF8FC000FF8FC0003FCFC0001FCFC0000FEFC0000FEFC00007EFC00007FFC00 +007FFC00003FFC00003FFC00003FFC00003FFC00003FFC00003FFC00003FFC00003FFC00003FFC +00003F7E00007F7E00007E7E00007E3F0000FE3F8001FC1FC003FC1FF80FF80FFFFFF807FFFFF0 +03FFFFE001FFFFC0007FFF00000FF80020257CA227>I<FFFFF800FFFFFE00FFFFFF80FFFFFFC0 +FFFFFFE0FFFFFFF0FC003FF8FC000FF8FC0003FCFC0001FCFC0000FEFC0000FEFC00007EFC0000 +7FFC00003F7E00003F7F00003F7FF0003F3FF0003F1FF0003F07F0003F0000003F0000007E0000 +007E0000007E000000FC000001FC000003F800000FF800007FF0FFFFFFE0FFFFFFC0FFFFFF80FF +FFFE00FFFFF80020237CA227>116 D<FE0000FC7F0000F83F8000F81F8000F81FC000F80FE000 +F807F000F807F000F803F800F801FC00F800FE00F800FE01F0007F01F0003F81F0001FC3E0001F +C3E0000FE7C00007FFC00007FF800003FF000001FE000000FE000000FF0000007F0000003F8000 +001FC000001FE000000FE0000007F0000003F8FFFFFFF8FFFFFFF8FFFFFFF8FFFFFFF8FFFFFFF8 +1E237CA225>118 D<FFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE000000FE0000 +00FC000000FC000001F8000001F8000003F8000003F0000003F00C0007E01C0007E07C000FE0FC +000FC0FC001FC0FC001FC0FC001F80FC003F80FC003F00FC007F00FC007F00FC007E00FC00FE00 +FC00FC00FC01FC00FC01FC00FC01F800FC03F800FC03F000FC07F000FC07F000FC000000FC0000 +00FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000001F2E +7BA228>I<FFFE00FFFFC0FFFFF0FFFFF8FFFFFCFFFFFC000FFE0001FE0000FE00007F00007F00 +003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00 +003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F18237CA220>I< +F801F801F8F801F801F8F801F801F8F801F801F8F801F801F8F801F801F8F801F801F8F801F801 +F8F801F801F8F801F801F8F801F801F8F801F801F8F801F001F8F801F001F8F801F001F8F803F0 +01F8F803E001F0F807E001F0F80FE003F0783FC003F07FFF8003F07FFF0003F07FFC0007E03FF0 +0007E03F00000FE03F00000FC01F00001FC01F80003F800FC0007F800FE000FF0007FC03FF0003 +FFFFFE0001FFFFFC0000FFFFF800003FFFE000000FFFC0000001FE000025257BA22F>I<FFFFFF +C000FFFFFFF800FFFFFFFE00FFFFFFFF00FFFFFFFF80FFFFFFFF8000FC007FC000FC001FC000FC +000FC000FC0007E000FC0007E000FC0007E000FC0003E000FC0003E000FC0003E000FC0003E000 +FC0003E000FC0003E000FC0003E000FC0003E000FC0003E000FC0003E000FC0003E000FC0003E0 +00FC0003E000FC0003E000FC0003E000FC0003E001FC0003E001FC0003E083F80003E0FFF80003 +E0FFF00003E0FFF00003E0FFE00003E0FFC00000001F0000000023257CA22C>I +E /Fj 5 116 df<000FFFFFFFFE000FFFFFFFFE00007F0000FE00007E00003E00007E00001E00 +007E00001E00007E00000C0000FC00000C0000FC00000C0000FC00000C0000FC00000C0001F800 +000C0001F800000C0001F800000C0001F800000C0003F00040080003F000C0000003F000C00000 +03F000C0000007E00180000007E00180000007E00380000007E00F8000000FFFFF0000000FFFFF +0000000FC00F0000000FC0070000001F80060000001F80060000001F80060000001F8006000000 +3F000C0020003F00040060003F00000060003F000000C0007E000000C0007E00000180007E0000 +0180007E0000030000FC0000030000FC0000070000FC00000E0000FC00000E0001F800001C0001 +F800003C0001F80000F80003F8000FF800FFFFFFFFF000FFFFFFFFF0002F317BB031>69 +D<0007E000001FF1C0003C3BE000F01FE001E00FE003E00FC007C007C0078007C00F8007C01F80 +0F801F000F803F000F803F000F807E001F007E001F007E001F007E001F00FC003E00FC003E00FC +003E00FC003E04FC007C0CFC007C0C78007C0C7800FC187C01FC183C03FC183C077C301E1E3C60 +0FF81FC003E007801E1F799E25>97 D<0001F800000FFE00003F0700007C038000F0078001E00F +8003C01F8007C01F800F801F001F800E001F0000003F0000003F0000007E0000007E0000007E00 +00007E000000FC000000FC000000FC000000FC000000FC0000007C0001007C0001807C0003003C +0006003E001C001E0078000F81E00003FF800000FE0000191F799E21>99 +D<03C007E003F0000FF03FF80FFC001C78787C1C1E001878C03E701F00307D801E600F00307F00 +1EC00F00607E001F800F80607E001F000F80607C001F000F00C0F8003E001F00C0F8003E001F00 +00F8003E001F0000F8003E001F0001F0007C003E0001F0007C003E0001F0007C003E0001F0007C +007C0003E000F8007C0003E000F8007C0003E000F800F80003E000F800F80807C001F000F81807 +C001F001F01807C001F001F01807C001F001F0300F8003E001E0300F8003E001E0600F8003E001 +E0C00F8003E000E1800F0003C000FF000E000380003E00351F7A9E3B>109 +D<000FC0003FF000783800F01C01E01C01C03C03C07C03C07C03C07807C00007E00007F80003FF +8003FFC003FFE001FFF0007FF0000FF80001F80000F83800F87C00F0FC00F0FC00F0F800E0F001 +E0C003C0600780781F001FFC0007F000161F7A9E1D>115 D E /Fk 6 123 +df<FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFC0FFC0FFC0FFC0FFC0FFC0FF +C0FFC0FFC0FFC07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC07F807F807F807F80 +7F807F807F807F807F807F8000000000000000000000FFC0FFC0FFC0FFC0FFC0FFC0FFC0FFC0FF +C0FFC00B3B76B721>33 D<FFFFF00000FFFFFF0000FFFFFFC000FFFFFFF000FFFFFFF800FFFFFF +FC00FFFFFFFE00FFFFFFFE0000007FFF0000001FFF00000007FF80000003FF80000001FF800000 +01FF80000000FFC0000000FFC0000000FFC00000007FC00000007FC00000007FC00000007FC000 +00007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC0 +0000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007F +C00000007FC00000007FC00000007FC00000007FC00000007FC0FFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28327AB133>97 +D<FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80 +FF80FF80FF80FF80FF80FF80FF80FF00FC00F000E0008000091F79B116>105 +D<7F8000001FE07FC000001FE07FC000001FE03FC000001FE03FC000001FE03FE000001FE03FE0 +00001FE01FE000001FE01FE000001FE01FF000001FE01FF000001FE00FF000001FE00FF000001F +E00FF800001FE00FF800001FE007F800001FE007F800001FE007FC00001FE007FC00001FE007FC +00001FC003FC00001FC003FE00003FC003FE00003FC003FE00003FC001FE00003FC001FF00003F +C001FF00003FC001FF00007F8000FF00007F8000FF80007F8000FF8000FF8000FF8000FF80007F +8001FF00007FC001FF00007FC003FF00007FC003FE00003FC007FE00003FE00FFC00003FE01FFC +00003FE03FF800001FF07FF800001FF1FFF000001FF3FFE000001FFFFFC000000FFFFF8000000F +FFFE0000000FFFFC0000000FFFF00000007FFFC0000001FFFF00000007FFFC0000003FFFF00000 +00FFFF80000000FFFE00000000FFF800000000FFE000000000FF0000000000FC0000000000F000 +00000000C000000000002B3C7BB136>114 D<FFFFF00000FFFFFF0000FFFFFFC000FFFFFFF000 +FFFFFFF800FFFFFFFC00FFFFFFFE00FFFFFFFE000000FFFF0000001FFF00000007FF80000003FF +80000001FF80000001FF80000000FFC0000000FFC0000000FFC00000007FC00000007FC0000000 +7FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000 +007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC000 +00007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC0 +0000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC022327AB1 +2E>120 D<FFFFFFFFF80000FFFFFFFFFF8000FFFFFFFFFFE000FFFFFFFFFFF800FFFFFFFFFFFC +00FFFFFFFFFFFE00FFFFFFFFFFFF00FFFFFFFFFFFF00001FF0007FFF80001FF0000FFF80001FF0 +0003FFC0001FF00001FFC0001FF00000FFC0001FF00000FFC0001FF000007FE0001FF000007FE0 +001FF000007FE0001FF000007FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000 +003FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE000 +1FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF00000 +3FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE0001F +F000003FE0001FF000003FE0003FE000003FE0003FE000003FE0007FE000003FE081FFE000003F +E0FFFFC000003FE0FFFFC000003FE0FFFF8000003FE0FFFF8000003FE0FFFF0000003FE0FFFE00 +00003FE07FFC00000000000FE0000000000033347AB140>122 D E end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 300dpi +TeXDict begin + +%%EndSetup +%%Page: 1 1 +1 0 bop 707 322 a Fk(!zixara)14 b Fj(Emacs)1221 472 y Fi(zipkzd)20 +b(zvxd)g Fh(\017)262 547 y Fg(emacs8)26 b Ff(.)p Fg(~)21 b(jo)q(el/publ)o +(ic/b)o(i)o(n/)15 b Ff(-a)j(z`vnpd)h(,)p Fg(emacs8)f Ff(zipkzd)g(z`)g(uixdl)g +(yi)262 596 y(,seqnl)11 b(xyi)h Fe(c)f(>)h Fd(0177)f Ff(miezd)h(z`)g(gley)e +Fg(emacs8)i Ff(-y)f(dfn)h(ueg)g(,ixewnd)g Fg(emacs)g Ff(-l)f(ddf)262 +646 y(oeekl)f(yi)i(,jqnd)f(lr)g(zeixard)h(zeize`d)f(z`)h(ze`xl)f(ick)i(.)p +Fh(n)p Fe(xxx)d Ff(dxevl)h(mze`)g(mbxzn)h(`le)1402 696 y(.)p +Fg(8N)h Ff(-l)g(seqn)g(z`)300 746 y Fg(~)j Fc(yourname)e Ff(-a)g(`vnpd)f(.)p +Fg(emacs)h Ff(uaewl)f(ze`ad)h(zexeyd)f(z`)h(siqedl)e(yi)i(,sqepa)588 +796 y Fg(\(autoload)f Fb(')p Fg(hebrew)i Fb(")p Fg(~)h(jo)q(el/publ)o(i)o +(c/bi)o(n/h)o(ebr)o(ew.el)p Fb(")p Fg(\))905 846 y(\(global-set-k)o(ey)d +Fb(")p Fh(n)i Fg(C-xh)h Fb(")g(')p Fg(hebrew\))1443 895 y(\(hebrew\))1392 +945 y Ff(.)p Fb(C-xh)d Ff(yiwdle)1170 1045 y Fi(zipkza)19 b(yeniyd)g +Fh(\017)262 1120 y Ff(dcewtd)e(z`)i(zzl)g(yi)h(,oey`xd)e Fg(bu\013er)f +Ff(-d)h(ixg`)i(,zixar)g(ritez)e(ea)h Fg(bu\013er)e Ff(lka)919 +1169 y(.)p Fg(bu\013er)12 b Ff(-d)g(z`)j(oikdl)e Fb(\(M-x)21 +b(hebrew\))14 b Fc(hebr)n(ew)355 1219 y Fg(:)p Ff(ze`ad)g(zeiqiqad)g(zecewtd) +f(z`)h(mixicbn)h Fg(hebrew.el)d Ff(uaeway)i(mi`exwnd)632 1294 +y(\()p Fg(goto-hebrew-k)o(eyb)q(oard)p Ff(\))d(zixar)j(zclwnl)f(xear)h(-)f +Fb(C-xh)629 1344 y Ff(\()p Fg(goto-engli)o(sh)o(-k)o(eyb)q(oard)o +Ff(\))e(zilbp`)k(zclwnl)e(xear)h(-)f Fb(C-xe)798 1393 y Ff(\()p +Fg(goto-hebrew-mo)q(de)p Ff(\))e(zixar)j(cenl)f(xear)h(-)f +Fb(M-h)794 1443 y Ff(\()p Fg(goto-engli)o(sh-mode)p Ff(\))e(zilbp`)k(cenl)e +(xear)h(-)f Fb(M-e)916 1493 y Ff(.)p Fg(k)o(ey-bindin)o(gs)e +Ff(-d)i(z`)h(zepyl)f(ozip)i(,oaenk)262 1568 y(lr)d(zepneqnd)g(zeixard)h +(zeize`l)g(mi`zn)g(micilwd)g(ietn)g(,)p Fg(hebrew-k)o(eyb)q(oard)e +Ff(-a)262 1618 y(.dlibxd)16 b(zclwnl)g(mi`zn)i(ietnd)g(,oaenk)g(,)p +Fg(english-k)o(eyb)q(oard)c Ff(-a)23 b(.)p Fg(VT-*)17 b Ff(-d)g(iteqn)262 +1667 y(b`ec)g Fg(emacs)24 b Ff(.)p Fg(VT-*)17 b Ff(-d)g(zeclwnay)g +Fg(Hebrew)g Ff(cilwa)g(ynzydl)f(oi`)j(,)p Fg(vi.iv)e Ff(zne`l)687 +1717 y(.oinil)d(l`nyn)g(zilbp`e)g(,l`nyl)f(onin)i(azkiz)f(zixardy)g(jkl)480 +1767 y Fg(:)p Ff(zclwnd)f(zxigal)h(m`zda)g(zipzyn)g(mi`ad)g(micilwd)g(ly)f +(ozebdpzd)948 1829 y(.)p Fb(C-a,)21 b(C-e,)g(C-k,)g(C-h,)g(tab,)g(return)262 +1892 y Ff(l`ny)e(cv)j(,zixara)f(oini)g(cv\))f(dxeyd)f(zligzl)h(\(onqd\))g +Fg(p)q(oin)o(t)e Ff(-d)h(z`)i(fifn)g Fb(C-a)262 1941 y Ff(zixara)d(od)h +(,dxeyd)e Fg(\\)p Ff(xzi)p Fg(")h Ff(z`)g(wgen)f Fb(C-y)26 +b Ff(.dxeyd)16 b(seql)h(eze`)g(fifn)i Fb(C-e)f Ff(,\(zilbp`a)262 +1991 y(.)p Fb(del)11 b Ff(mewna)i Fb(C-h)f Ff(-a)h(ynzydl)f(yi)g(okle)h +(,onqd)g(iptly)g(ezd)f(z`)h(wgen)f Fb(C-h)h Ff(.zilbp`a)h(ode)262 +2041 y(,oinil)j(dxeyd)e(z`)i(fifn)g Fb(tab)g Ff(,zixara)23 +b(.zclwnd)16 b(zxiga)h(itl)f(dxey)g(ycgn)g(xcqn)g Fb(tab)262 +2091 y Ff(dxeyl)g(dxeyd)h(xzi)h(z`)h(fifne)g(,oekpd)f(mewna)g +Fg(LF)g Ff(qipkn)g Fb(return)25 b Ff(.l`nyl)17 b(zilbp`ae)1584 +2141 y(.d`ad)262 2190 y(.oini)12 b(cva)g Fg(hebrew-mo)q(de)e +Ff(-ae)i(,l`ny)g(cva)g(zeligzn)f(zexeyd)h(,)p Fg(english-mo)q(de)c +Ff(-a)262 2240 y(aaxrl)13 b(xyt`e)g(,cala)i Fg(bu\013er)d Ff(-l)h(hqwhd)g +(zqpkd)h(lr)f(drityn)g(ef)g(dpekz)h(,)p Fg(vi.iv)f Ff(zne`l)262 +2290 y(mebxz)i(eixg`e)g(zixara)h(sirq)e(qipkdl)i(,lynl)f(,ozip)20 +b(.cg`)14 b(uaew)i(jeza)f(micend)g(ipy)g(z`)1544 2340 y(.zilbp`a)966 +2574 y Fg(1)p eop +%%Page: 2 2 +2 1 bop 1151 312 a Fi(miilaelb)19 b(miyetig)h Fh(\017)262 387 +y Ff(,)p Fg(minibu\013er)7 b Ff(-dn)j(ohlw)g(z`)h(ze`xew)f +Fg(emacs)h Ff(-a)f(zecewtd)g(\()p Fg(\\)p Ff(aex)p Fg(")g Ff(oaena\))i(lke)e +(zeid)262 437 y Fg(Searc)o(h-forw)o(ard)15 b Ff(-e)k Fg(Searc)o(h-bac)o(kw)o +(ard)f Ff(,hxta)30 b(.zixara)19 b(mb)g(oda)g(ynzydl)e(ozip)262 +487 y(-d)24 b(z`)h(qipkdl)g(xyt`)j(,)p Fg(searc)o(h)d Ff(dcewtd)f(ixg`)48 +b(.zeira)25 b(ila)g(zixara)h(micwtzn)262 536 y(-xgn)12 b(ytgl)h(,oaenk)h +(,ozip)h(.zeixar)f(zefexgn)f(ytgl)g(f`e)g(,zixard)h(zclwnl)f +Fg(minibu\013er)1421 586 y Ff(.zeipeyl-ec)g(zefe)262 636 y(,zeixar)k(zeize`)g +(milikn)f(mdizenyy)g(mivaw)h(zxivi)g(zxyt`n)g(mb)f(eiykr)g(zipkzd)1105 +686 y(.)p Fg(unix)c Ff(ipira)j(og)e(`ven)h(xacd)f(oi`)i(j`)1170 +790 y Fa(Emacs)22 b(+)i(T)1500 803 y(E)1536 790 y(X)f Fh(\017)262 +864 y Ff(md)17 b(miixwird)h(milcadd)27 b(.mze`)17 b(oikn)i +Fg(emacs)f Ff(-y)f(enk)h(mivaw)g(lawn)g(epe`)g Fg(T)1570 874 +y(E)1595 864 y(X)262 914 y Ff(-npd)f Fg(rev)o(erse.\014lter)e +Ff(dphw)j(zipkz)h(yi)g(,miizpia)29 b(.oxcqe)18 b(zeixard)g(zeize`d)g(ceciwa) +262 964 y(z`xew)g(`id)g Fg(T)508 973 y(E)534 964 y(X)g Ff(uaewl)h +Fg(emacs)f Ff(uaew)h(znxbxzny)g Fg(~)j(jo)q(el/publ)o(ic/b)o(i)o(n)15 +b Ff(-a)k(z`v)262 1014 y(,dpekpd)g(dxeva)f(zixard)h(z`)h(jetdl)e(ick)30 +b(.)p Fg(stdout)17 b Ff(-l)i(zazeke)g Fg(stdin)e Ff(-n)i(hlwd)f(z`)262 +1064 y(-r)12 b(zilbp`)p Fg(")h Ff(e`)g Fg(\\)p Ff(dkeza)f(zilbp`)i(mr)f +(zixar)p Fg(")g Ff(hqwhd)g(m`)g(zrcl)f(jixv)h Fg(rev)o(erse.\014lter)262 +1113 y Ff(dcewtd)f(.oinil)h(l`lyn)f(e`)h(l`nyl)f(oinin)i(aezk)e(hqwhd)h +(m`,xnelk)g Fg(\\)p Ff(,dkeza)f(zixar)i(m)262 1163 y(`edy)8 +b Fg(\045LR)i Ff(dcewtde)f(,l`nyl)g(oinin)i(epid)f(hqwhdy)f +Fg(rev)o(erse.\014lter)e Ff(-l)i(dricen)g Fg(\045RL)262 1213 +y Ff(mr)18 b(.)p Fg(\045autoT)l(eX=o\013)c Ff(-e)g Fg(\045autoT)l(eX=on)h +Ff(,zecewt)g(izy)h(yi)f(,sqepa)k(.oinil)d(l`nyn)262 1263 y(-xarl)9 +b(zeni`znd)h(zei)p Fg(T)651 1272 y(E)676 1263 y(X)g Ff(-d)f(zecewtd)g(z`)h +(siqei)g Fg(rev)o(erse.\014lter)e(,\045autoT)l(eX=on)262 1313 +y Ff(,oaenk)k(xyt`)h(.ixewnd)e(uaewa)i(ritedl)e(zeaiig)h(zecewt)g(oze`)g(,)p +Fg(\045autoT)l(eX=o\013)g Ff(mr)g(.zi)262 1363 y(-l)g(.hltd)h(uaewn)h(xzein)g +Fg(white)g(space)f Ff(wgen)g(mb)h Fg(rev)o(erse.\014lter)c +Ff(.micend)j(z`)h(aaxrl)262 1412 y(,)p Fg(~)d(jo)q(el/publi)o(c/bi)o(n)6 +b Ff(-a)k(z`vnp)h(`id)f(mby)h(,)p Fg(h)o(tex)e Ff(zipkz)i(yi)g(,zixaray)g +Fg(T)1458 1422 y(E)1483 1412 y(X)f Ff(uaew)h(car)262 1462 y(mi`znd)20 +b(,.)p Fg(psc)f Ff(uaew)g(xvil)h(,)p Fg(dvi2ps)d Ff(z`e)i(,)p +Fg(T)1021 1471 y(E)1047 1462 y(X)g Ff(z`)i(,)p Fg(rev)o(erse.\014lter)16 +b Ff(z`)k(dvixnye)262 1512 y(,)p Fg(emacs8)h Ff(eze`)g(xviy)i(,uaew)g(miiw)e +(mr)i(,lynl)37 b(.)p Fg(xet.tex)20 b Ff(uaewn)k(,xfild)e(zeqtcnl)262 +1562 y(uaewd)e(z`)g(xviiz)42 b Fc(jo)n(el/public/bin/htex)22 +b(my)p 1047 1562 13 2 v 16 w(\014le)e Ff(dcewtd)f Fg(m)o(y)p +1358 1562 15 2 v 17 w(\014le.xet.tex)g Ff(mya)1079 1612 y(.)p +Fg(P)o(ostScript)10 b Ff(zxevay)j Fg(m)o(y)p 1538 1612 V 17 +w(\014le.psc)908 1720 y Fi(miipeyl-ec)19 b(mivaw)g(zqtcd)i +Fh(\017)262 1795 y Ff(zipkzd)f(zxfra)j(,xviin)e Fg(emacs8)f +Ff(eze`)g(uael)h(lk)f(xfild)g(zeqtcna)h(qitcdl)f(ozip)262 1845 +y(-a)c(ze`vnp)h(zipkeza)g(yeniy)f(ze`x`ed)22 b(.)p Fg(~)d(jo)q(el/publi)o +(c/bi)o(n)13 b Ff(-a)k(z`vnpd)g(,)p Fg(text2ps)1053 1895 y +Ff(.)p Fg(~)e(jo)q(el/publi)o(c/text)o(2ps/)o(read.me)1439 +2000 y Fa(Bugs)24 b Fh(\017)262 2075 y Ff(lr)13 b(ricedl)g(ywazn)i(ycg)e +Fg(bug)h Ff(`vend)f(lk)g(j`)j(.dt)d Fg(bugs)g Ff(-d)h(lk)f(z`)i(hxtl)f(ozip)i +(`l)1059 2124 y Fg(jo)q(el)p Fb(@)p Fg(tec)o(h)o(un)o(i)o(x.tec)o(hn)o(i)o +(on.ac.il)c(:)p Ff(jk)966 2574 y Fg(2)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/language/hebrew/hebtex/editors/unix/hemacs/hoffman/hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/hoffman/hebrew.el new file mode 100644 index 0000000000..ac94396e13 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/hoffman/hebrew.el @@ -0,0 +1,736 @@ + +;; >>.WARNING.<< This file contains (non-ascii) chars with the high-order +;; bit set. Most mailers will choke on it. + + +;; file "hebrew.el" ver 0.8 +;; last modified Jan. 2 1992 + +;; Hebrew support for Emacs. +;; Copyright (c) 1990-92 by Joel M. Hoffman. +;; +;; --> This project is dedicated to Orna Okouneff, who, against my +;; will, insisted on teaching me Emacs. + + + +;; THIS IS A basic support package for editing Hebrew with Emacs. It +;; assumes the keyboard layout of the VT* series for the purposes of +;; mapping English keystrokes to their Hebrew equivilents. It also +;; assumes the output hardware is compatible with the VT* series used +;; in Israel, in that the high-order bit is assumed to indicate +;; Hebrew; I believe this is incompatible with the DOS standard for +;; hebrew. The package does not use the right-to-left facilites of +;; the VT* terminals, so any terminal that converts characters >128 +;; decimal to Hebrew is supported. An EGA Hebrew font compatible with +;; this package is available for the IBM. + +;; To work properly, the following files in Emacs 18.xx must be +;; modified: +;; +;; xdisp.c +;; indent.c + +;; You can use this package with the unmodified files, but the Hebrew +;; letters will appear encoded as \xxx. I understand that ver. 19.00 +;; will have an option to support 8-bit-clean operation, and so will +;; support this package. Demacs supports 8-bit-clean operation via +;; the toggle-pass8 command. + +;; Currently, four major commands are supplied: C-Xh and C-Xe, which +;; switch back and forth between Hebrew and English keyboards, and M-h +;; and M-e, which switch back and forth between Hebrew and English +;; "modes," which are not modes in the Emacs sense of the word, but +;; rather determine if the margin is to be the left or right side of +;; the screen, among other direction-specific paramaters. + +;; Emacs uses the eighth bit to indicate Hebrew letters. Most text +;; formatters (TeX, *roff, etc.) use 7-bit character codes. +;; Additionally, these formatters usually require Hebrew to appear in +;; time-order. A pre-processor must be run before the formatter to +;; effect these changes. + + + +;; I don't really know lisp or Emacs, or what I'm doing; comments and +;; suggestions are welcome: +;; joel@wam.umd.edu <-- Internet +;; 72700,402 <-- Compuserve +;; 72700.402@compuserve.com <-- Compuserve from Internet + +;; This package is not finished. The bugs herein defy enumeration. + +(defun hebrew-grab-keys () + "take control of the keyboard and auto-fill." + (interactive) + (define-key global-map " " 'let-space) + (define-key global-map "a" 'let-a) + (define-key global-map "b" 'let-b) + (define-key global-map "c" 'let-c) + (define-key global-map "d" 'let-d) + (define-key global-map "e" 'let-e) + (define-key global-map "f" 'let-f) + (define-key global-map "g" 'let-g) + (define-key global-map "h" 'let-h) + (define-key global-map "i" 'let-i) + (define-key global-map "j" 'let-j) + (define-key global-map "k" 'let-k) + (define-key global-map "l" 'let-l) + (define-key global-map "m" 'let-m) + (define-key global-map "n" 'let-n) + (define-key global-map "o" 'let-o) + (define-key global-map "p" 'let-p) + (define-key global-map "q" 'let-q) + (define-key global-map "r" 'let-r) + (define-key global-map "s" 'let-s) + (define-key global-map "t" 'let-t) + (define-key global-map "u" 'let-u) + (define-key global-map "v" 'let-v) + (define-key global-map "w" 'let-w) + (define-key global-map "x" 'let-x) + (define-key global-map "y" 'let-y) + (define-key global-map "z" 'let-z) + (define-key global-map "," 'let-comma) + (define-key global-map ";" 'let-semi) + (define-key global-map ":" 'let-colon) + (define-key global-map "." 'let-period) + (define-key global-map "/" 'let-slash) + (define-key global-map "'" 'let-aigu) + (define-key global-map "`" 'let-grave) + (define-key global-map "\\" 'let-bslash) + (define-key global-map "-" 'let-hyphen) + (define-key global-map "!" 'let-xmark) + (define-key global-map "@" 'let-at) + (define-key global-map "#" 'let-pound) + (define-key global-map "$" 'let-dollar) + (define-key global-map "%" 'let-percent) + (define-key global-map "^" 'let-carrat) + (define-key global-map "&" 'let-ampersand) + (define-key global-map "*" 'let-asterisk) + (define-key global-map "(" 'let-lparend) + (define-key global-map ")" 'let-rparend) + (define-key global-map "{" 'let-lcbrace) + (define-key global-map "}" 'let-rcbrace) + (define-key global-map "[" 'let-lbrace) + (define-key global-map "]" 'let-rbrace) + (define-key global-map ">" 'let-gt) + (define-key global-map "~" 'let-tilde) + (define-key global-map "+" 'let-plus) + (define-key global-map "+" 'let-equal) + (define-key global-map "<" 'let-lt) + (define-key global-map "?" 'let-question)) + + +(defun let-plus () + "comment" + (interactive) + (bilingual-insert-char "+" "+")) + +(defun let-equal () + "comment" + (interactive) + (bilingual-insert-char "=" "=")) + + +(defun let-tilde () + "comment" + (interactive) + (bilingual-insert-char "~" "~")) + +(defun let-gt () + "comment" + (interactive) + (bilingual-insert-char ">" ">")) + +(defun let-lt () + "comment" + (interactive) + (bilingual-insert-char "<" "<")) + +(defun let-question () + "comment" + (interactive) + (bilingual-insert-char "?" "?")) + +(defun let-hyphen () + "comment" + (interactive) + (bilingual-insert-char "-" "-")) + +(defun let-xmark () + "comment" + (interactive) + (bilingual-insert-char "!" "!")) + +(defun let-at () + "comment" + (interactive) + (bilingual-insert-char "@" "@")) + +(defun let-pound () + "comment" + (interactive) + (bilingual-insert-char "#" "#")) + +(defun let-dollar () + "comment" + (interactive) + (bilingual-insert-char "$" "$")) + +(defun let-percent () + "comment" + (interactive) + (bilingual-insert-char "%" "%")) + +(defun let-carrat () + "comment" + (interactive) + (bilingual-insert-char "^" "^")) + +(defun let-ampersand () + "comment" + (interactive) + (bilingual-insert-char "&" "&")) + +(defun let-asterisk () + "comment" + (interactive) + (bilingual-insert-char "*" "*")) + +(defun let-lparend () + "comment" + (interactive) + (bilingual-insert-char "(" "(")) + +(defun let-rparend () + "comment" + (interactive) + (bilingual-insert-char ")" ")")) + +(defun let-lcbrace () + "comment" + (interactive) + (bilingual-insert-char "{" "{")) + +(defun let-rcbrace () + "comment" + (interactive) + (bilingual-insert-char "}" "}")) + +(defun let-lbrace () + "comment" + (interactive) + (bilingual-insert-char "[" "[")) + +(defun let-rbrace () + "comment" + (interactive) + (bilingual-insert-char "]" "]")) + +(defun let-colon () + "comment" + (interactive) + (bilingual-insert-char ":" ":")) + + +(defun let-a () + "comment" + (interactive) + (bilingual-insert-char"ù" "a")) +(defun let-b () + "comment" + (interactive) + (bilingual-insert-char "ð" "b")) +(defun let-c () + "comment" + (interactive) + (bilingual-insert-char "á" "c")) +(defun let-d () + "comment" + (interactive) + (bilingual-insert-char "â" "d")) +(defun let-e () + "comment" + (interactive) + (bilingual-insert-char "÷" "e")) +(defun let-f () + "comment" + (interactive) + (bilingual-insert-char "ë" "f")) +(defun let-g () + "comment" + (interactive) + (bilingual-insert-char "ò" "g")) +(defun let-h () + "comment" + (interactive) + (bilingual-insert-char "é" "h")) +(defun let-i () + "comment" + (interactive) + (bilingual-insert-char "ï" "i")) +(defun let-j () + "comment" + (interactive) + (bilingual-insert-char "ç" "j")) +(defun let-k () + "comment" + (interactive) + (bilingual-insert-char "ì" "k")) +(defun let-l () + "comment" + (interactive) + (bilingual-insert-char "ê" "l")) +(defun let-m () + "comment" + (interactive) + (bilingual-insert-char "ö" "m")) +(defun let-n () + "comment" + (interactive) + (bilingual-insert-char "î" "n")) +(defun let-o () + "comment" + (interactive) + (bilingual-insert-char "í" "o")) +(defun let-p () + "comment" + (interactive) + (bilingual-insert-char "ô" "p")) +(defun let-q () + "comment" + (interactive) + (bilingual-insert-char "\\" "q")) +(defun let-r () + "comment" + (interactive) + (bilingual-insert-char "ø" "r")) +(defun let-s () + "comment" + (interactive) + (bilingual-insert-char "ã" "s")) +(defun let-t () + "comment" + (interactive) + (bilingual-insert-char "à" "t")) +(defun let-u () + "comment" + (interactive) + (bilingual-insert-char "å" "u")) +(defun let-v () + "comment" + (interactive) + (bilingual-insert-char "ä" "v")) +(defun let-w () + "comment" + (interactive) + (bilingual-insert-char "'" "w")) +(defun let-x () + "comment" + (interactive) + (bilingual-insert-char "ñ" "x")) +(defun let-y () + "comment" + (interactive) + (bilingual-insert-char "è" "y")) +(defun let-z () + "comment" + (interactive) + (bilingual-insert-char "æ" "z")) + +(defun let-space () + "comment" + (interactive) + (bilingual-insert-char " " " ")) ;;English auto-fill will be + ;;automatic. Hebrew auto-fill is + ;;still a problem. +(defun let-comma () + "comment" + (interactive) + (bilingual-insert-char "ú" ",")) + +(defun let-semi () + "comment" + (interactive) + (bilingual-insert-char "ó" ";")) + +(defun let-period () + "comment" + (interactive) + (bilingual-insert-char "õ" ".")) + +(defun let-slash () + "comment" + (interactive) + (bilingual-insert-char "." "/")) + +(defun let-aigu () + "comment" + (interactive) + (bilingual-insert-char "," "'")) + +(defun let-grave () + "comment" + (interactive) + (bilingual-insert-char "/" "`")) + +(defun let-bslash () + "comment" + (interactive) + (bilingual-insert-char ";" "\\")) + + +(defun hebrew-set-up () + "Comments will be here" + (interactive) + + +;; Following are the ANSI-like codes to control the tty. Currently, +;; they are unused. +;; Changes may be necessary. Ideally, the code should consult a data- +;; base, but we don't live in an ideal world. + + (make-local-variable 'left-to-right-code) + (setq left-to-right-code "[?34l") + (make-local-variable 'right-to-left-code) + (setq right-to-left-code "[?34h") + (make-local-variable 'hebrew-keyboard-code) + (setq hebrew-keyboard-code "[?35h") + (make-local-variable 'english-keyboard-code) + (setq english-keyboard-code "[?35l") + (make-local-variable 'keyboard-off-code) + (setq keyboard-off-code "[2h") + (make-local-variable 'keyboard-on-code) + (setq keyboard-on-code "[2l") + (set-variable 'hebrew-keyboard ()) + (make-variable-buffer-local 'hebrew-keyboard) + (set-variable 'hebrew-mode ()) + (make-variable-buffer-local 'hebrew-mode) + (make-local-variable 'hebrew-mode) + (hebrew-grab-keys) +; (global-set-key "\C-r" 'search-backward) +; (global-set-key "\C-s" 'search-forward) ;;Good luck using this one! +; (define-key esc-map "s" 'search-forward) + +;; Here are some constants: + (set-variable 'hebrew-right-margin 77) ;; Can't use 80, so we may as + ;; well leave some extra room. + +;;(Fine, so it was only ONE constant....) + + +;; Now we take control over some of the major editing keys. The +;; backspace has to delete the correct char. in Hebrew mode; return has +;; know what to do with Hebrew, etc. I've left the arrow keys, but ^B, +;; and ^F still mean "backward" and "forward." With ^A/^E I've got a +;; problem, because ^A (to me) is "all the way left" but ^E is "end," +;; both of which would move to the left in Hebrew mode. Also +;; "end-of-line" in Hebrew-mode has to ignore the spaces used to +;; right-align the line. It would be silly for ^A to do that, so ^A is +;; always "beginning-of-line," and ^E always "end-of-line." I've also +;; left some of the more obscure commands/keys, ("obscure" being defined +;; as things I don't use), because I'm too lazy to change them. ("Left +;; as an excercise to the reader....") + +; (define-key global-map "\C-h" 'bilingual-backspace) + (define-key global-map "\177" 'bilingual-backspace) + ;; I'd like to use \177, but Emacs ignores + ;; me when I try. (Don't know why.) + ;; But Real Emacs-Users don't need help + ;; (^h) anyway.... + + (define-key global-map "\C-i" 'bilingual-tab) + (define-key global-map "\C-k" 'bilingual-kill-line) + (define-key global-map "\C-m" 'bilingual-return) + (define-key esc-map "d" 'bilingual-kill-word) + (define-key global-map "\C-a" 'bilingual-beginning-of-line) + (define-key global-map "\C-e" 'bilingual-end-of-line) + (define-key global-map "\C-f" 'bilingual-forward-char) + (define-key global-map "\C-b" 'bilingual-backward-char) + (define-key global-map "\C-d" 'bilingual-delete-char) + + +;; Be user friendly: + (message +"Use C-Xh for Hebrew, M-h for Hebrew mode. .úéøáò ãåîì M-h ,úéøáòì C-Xh ù÷ä") + (setq hebrew-keyboard ()) ;;start with English keyboard + (setq hebrew-mode ()) ;;and in English mode + ) + + +(defun bilingual-return () + "In English mode, just return. In Hebrew mode, do the right thing." + (interactive) + (if (not hebrew-keyboard) + (newline) + (left-align-line) + (let ((here (point))) + (beginning-of-line) + (copy-to-register 'a (point) here t) + (if (eq hebrew-mode t) + (right-align-line) + (left-align-line)) + (end-of-line) + (newline) + (insert-register 'a) + (if (eq hebrew-mode t) + (right-align-line) + (left-align-line)) + (end-of-line)))) + +(defun bilingual-beginning-of-line () + "Move to the beginning of the current line, remembering that ``beginning +of line'' is language-dependent" + (interactive) + (if (not hebrew-mode) + (beginning-of-line) + (end-of-line) + (backward-char 1))) + + + +(defun bilingual-end-of-line () + "Move to the end of the current line, remembering that ``end of +line'' is language-dependent" + (interactive) + (if (not hebrew-mode) + (end-of-line) + (beginning-of-line) + (while (looking-at "[ \t]") + (forward-char 1)) + (if (not (bolp)) + (backward-char 1)))) + + +(defun bilingual-forward-char (arg) + "forward-char that knows about Hebrew vs. English" + (interactive "p") + (if (not hebrew-keyboard) + (forward-char arg) + (backward-char arg))) + +(defun bilingual-backward-char (arg) + "backward-char that knows about Hebrew vs. English" + (interactive "p") + (if (not hebrew-keyboard) + (backward-char arg) + (forward-char arg))) + +(defun bilingual-delete-char (arg) + "delete-char that knows about Hebrew vs. English" + (interactive "p") + (if (not hebrew-keyboard) + (delete-char arg) + (delete-char 1) + (backward-char 1) + (if (eq hebrew-mode t) + (right-align-line)))) + + + +(defun bilingual-kill-word (arg) + "Kill the rest of the current word, remembering that ``the rest'' +is language dependent" + (interactive "p") + (if (not hebrew-keyboard) + (kill-word arg) + (backward-kill-word arg))) ;;nothing to it! (but this doesn't work) + +(defun bilingual-kill-line () + "Kill the rest of the line, remembering that ``the rest'' is language +dependant" + (interactive) + (if (not hebrew-mode) + (kill-line) +;;We'd like to use "kill-line -1" here, but it doesn't work right. + (if (not (eolp)) + (forward-char 1)) + (kill-region (point) ;; But let's copy as much of the code in + ;; simple.el as possible + (progn + (if (bobp) + (signal 'beginning-of-buffer nil) + (beginning-of-line) + (if (looking-at "$") + (progn + (forward-line -1) + (end-of-line)))) + (point))) + (right-align-line))) + + +(defun bilingual-tab () + "right-align-line" + (interactive) + (if (eq hebrew-keyboard t) + (right-align-line) + (left-align-line))) + +(defun bilingual-backspace () ;;This is mapped to ^h + "Backspace that knows that hebrew goes right-to-left." + (interactive) + (if (not hebrew-keyboard) + (delete-backward-char 1) + (if (not (eolp)) + (forward-char 1)) + (delete-backward-char -1) + (if (not (bolp)) + (backward-char 1))) + (if (eq hebrew-mode t) + (right-align-line))) + + +(defun goto-rl-mode () + "Go to right-to-left mode (tty)" + (interactive) + (send-string-to-terminal right-to-left-code) + (redraw-display)) + +(defun goto-lr-mode () + "Go to left-to-right mode (tty)" + (interactive) + (send-string-to-terminal left-to-right-code) + (redraw-display)) + +(defun goto-tty-hebrew-mode () + "Go to Hebrew mode (tty)" + (interactive) + (send-string-to-terminal hebrew-keyboard-code)) + +(defun goto-tty-english-mode () + "Go to English mode (tty)" + (interactive) + (send-string-to-terminal english-keyboard-code)) + +(defun goto-hebrew-keyboard () + "Go to Hebrew keyboard (as far as Emacs is concerned)" + (interactive) + (setq hebrew-keyboard t) + (message "úéøáò úãì÷î (Hebrew keyboard) ")) + +(defun goto-english-keyboard () + "Go to English keyboard (as far as Emacs is concerned)" + (interactive) + (setq hebrew-keyboard ()) + (message "English keyboard (úéìâðà úãì÷î)")) + +(defun goto-hebrew-mode () + "Go to Hebrew mode (not a ``mode'' in the Emacs sense of the word, though)" + (interactive) + (setq hebrew-mode t) + (setq hebrew-keyboard t) + (message "úéøáò ãåî (Hebrew mode)")) + +(defun goto-english-mode () + "Go to English mode (not a real ``mode'')" + (interactive) + (setq hebrew-mode ()) + (setq hebrew-keyboard ()) + (message "English mode (úéìâðà ãåî)")) + + + +(defun hebrew () + "Basic definitions and key bindings" + (interactive) +; (global-set-key "\C-xx" 'call-last-kbd-macro) + (global-set-key "\C-xz" 'goto-rl-mode) + (global-set-key "\C-xq" 'goto-lr-mode) + (global-set-key "\C-xh" 'goto-hebrew-keyboard) + (global-set-key "\C-xe" 'goto-english-keyboard) + (define-key esc-map "h" 'goto-hebrew-mode) + (define-key esc-map "e" 'goto-english-mode) + (global-set-key "\C-x\C-h" 'back-to-hebrew-keyboard) + (global-set-key "\C-x\C-e" 'back-to-english-keyboard) + (hebrew-set-up)) + + + +(defun bilingual-insert-char (heb eng) + "Insert either the Hebrew or English code for the key pressed" + (interactive "P") + (if (not hebrew-keyboard) + (progn + (self-insert-command (prefix-numeric-value eng)) + (if (eq hebrew-mode t) + (right-align-line))) + (if (eolp) + (insert " ") + (forward-char 1)) + (insert heb) + (backward-char 2) + (if (eq hebrew-mode t) + (right-align-line)))) + +(defun right-align-line () + "Add spaces at the beginning of the current line so that the end is +aligned with the fill column." + (interactive) + (progn ;;save-excursion doesn't always work. I wonder why not. + (let ((col (current-column))) + (end-of-line) + (let ((ecol (current-column)) (ecol2 (current-column))) + (beginning-of-line) + (while (and (looking-at "[ \t]") (> ecol hebrew-right-margin)) + (delete-char 1) + (setq ecol (- ecol 1))) + (insert-char ?\ (- hebrew-right-margin ecol )) +;;if save-excursion worked above, we could omit this: + (beginning-of-line) ;; + (forward-char (- hebrew-right-margin (- ecol2 col))))))) + +(defun left-align-line () + "Delete leading white space so as to left-align the current line." + (interactive) + (let ((col (current-column)) (deleted 0)) + (beginning-of-line) + (while (looking-at "[ \t]") + (delete-char 1) + (setq deleted (+ deleted 1))) + (if (> (- col deleted) 0) + (forward-char (- col deleted))))) + + +;; Now lets make some commands for skipping over newly inserted text +;; in the "other" language. The idea is to make the inseration of Hebrew +;; words in an English document and vice versa as easy as possible. +;; I wonder what to do with punctuation here.... + +(defun back-to-english-keyboard () + "Go back to the English keyboard after inserting a Hebrew segment of text. +Skip over the Hebrew text." + (interactive) + (goto-english-keyboard) ;; that's the easy part. + (if (looking-at " ") ;; Assume the space was inserted when we.. + (delete-char 1)) ;; ..went into Hebrew mode. + (if (not (eolp)) ;; Now move past the Hebrew + (while (looking-at "[íïõêóúùø÷öôòñðîìëéèçæåäãâáà]") + (forward-char 1)))) + +(defun back-to-hebrew-keyboard () + "Go back to the Hebrew keyboard after inserting an English segment of +text. Skip of the English text." + (interactive) + (goto-hebrew-keyboard) ;; that's the easy part. + (if (not (bolp)) + (backward-char 1)) ;; we're probably on a space or something. + (if (not (bolp)) ;; Now move past the English + (while (looking-at + "[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\$=<>\\()]") + (backward-char 1)))) ;; I threw the dollar in --------^ + ;; because (La)TeX uses it so often. + +(defun fix-backspace () + "Make backspace key 'bilingual-backspace" + (interactive) + (global-set-key "\177" 'bilingual-backspace)) + + +(global-set-key "\C-xz" 'fix-backspace) + +;; This is the last line of "hebrew.el" ìù äðåøçàä äøåùä úàæ + +;; to-do: +;; add quote-char +;; fix backspace over nl +;; fix delete at eolp diff --git a/language/hebrew/hebtex/editors/unix/hemacs/readme b/language/hebrew/hebtex/editors/unix/hemacs/readme new file mode 100644 index 0000000000..e6c81e7f21 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/readme @@ -0,0 +1,17 @@ +Three versions of hemacs are available. They are present here in three +subdirectories, called after their respective authors. +The packages has been arranged by Shuly Wintner <shuly@cs.technion.ac.il> +of the Technion, Haifa. Shuly has devoted time to this issue, and +ended by switching to vi. See vim in an adjacent subdirectory here -- +- it is a version of vi which works with right-to-left typesetting. + +If you have more information re the Hebrew emacs, or if you have +tried the available versions and would like to add your comments +here, please write to rama@cc.huji.ac.il . + +There is an additional version of hemacs available. It is +a compiled version, which works on Sparc stations. +It is a version from 1992, but it might be usable -- +available in the direcotry for_sparc. + +Rama -- rama@cc.huji.ac.il diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/README b/language/hebrew/hebtex/editors/unix/hemacs/yossi/README new file mode 100644 index 0000000000..64e435a973 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/README @@ -0,0 +1,68 @@ +$Id: README,v 1.3 1992/06/04 16:34:10 yossi Exp $ + + Semitic Patches to Emacs + by Joseph Friedman (yossi@DEShaw.COM) + June 4, 1992 + + +This directory contains the patches necessary to edit text in Semitic +languages using GNU Emacs 18.58 under X11: + +1) A simple, fixed, Hebrew X screen font, modified from misc/6x13. + Also, I included the accompanying line in the fonts.alias file. + (I have donated heb6x13 and another font, heb8x13, to the MIT X + Consortium, and these fonts are included in Release 5 of X11, so + you may already have it on your system.) + +2) Patches for the source code and lisp code for GNU Emacs 18.58 that + do right-to-left display and editing, as well as my own version of + 256-character fonts support. + +3) A simple lisp package, hebrew.el, which selectively maps the + workstation keyboard into a standard Hebrew keyboard. This mapping + is done both in insertion and in searching (sorry, I haven't + implemented replacing yet, but it'll come soon.) + +The basic idea: +-------------- +To summarize the changes to the C code, I created two new buffer-local +variables, display-literal and display-reversed. When display-literal +is non-nil, nonprintable characters in the buffer are NOT mapped into +ctl-arrow or backslash-and-three-octals; instead, whatever is in the +font entry is displayed as is (don't do this at home! On a non-X +display, this can really mess up the screen). When display-reversed +is non-nil, all the windows showing the current buffer are flipped +laterally, so the beginning of the line appears on the right and the +lines are wrapped (or truncated) on the left; all the editing command +continue to behave as they were before. The default value for both +these variables is nil, so Emacs and Epoch behave exactly like the +non-semitic version unless you specifically request otherwise. + +Installation: +------------ +1) Start with the font. Unpack the font using: + + uudecode thefont + uncompress heb6x13.bdf.Z + + then run bdftosnf on heb6x13.bdf and install heb6x13.snf wherever + you keep your local fonts. Run mkfontdir in that directory, and + then append the enclosed fonts.alias to your fonts.alias file. + You're all set. Just to be sure, try: + + xfd -fn heb6x13 + +2) Now apply the patches. Apply patch-src in the source directory + and patch-lisp in the lisp directory. When patching the lisp files, + don't forget to delete the corresponding .elc files, since they have + precedence over .el files. + +3) Next, copy hebrew.el to your local lisp directory. + +4) You're almost ready to use the package. Now comes the REALLY HARD + part---making little labels with the hebrew characters on them and + taping these labels on the front of the keys on the keyboard :-( + +Have fun! And please report any problems/bugs/suggestions to me. + +-yossi diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.alias b/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.alias new file mode 100644 index 0000000000..3dd3b9a315 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.alias @@ -0,0 +1,2 @@ +heb6x13 -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-8 +heb8x13 -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-8 diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.dir b/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.dir new file mode 100644 index 0000000000..f2851e669e --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.dir @@ -0,0 +1,2 @@ +1 +heb6x13.snf -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-8 diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.bdf b/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.bdf new file mode 100644 index 0000000000..7188b2de1b --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.bdf @@ -0,0 +1,3757 @@ +STARTFONT 2.1 +COMMENT +COMMENT Characters #224--#250 designed, made, and are +COMMENT copyrighted (c) 1991 by Joseph Friedman (yossi@CS.Stanford.EDU). +COMMENT The rest of the font is taken from 6x13.bdf. +COMMENT +COMMENT Permission to use, copy, modify, distribute, and sell this +COMMENT software and its documentation for any purpose is hereby +COMMENT granted without fee, provided that the above copyright +COMMENT notice appear in all copies. +COMMENT +FONT -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO8859-8 +SIZE 13 78 78 +FONTBOUNDINGBOX 6 13 0 -3 +STARTPROPERTIES 19 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "SemiCondensed" +ADD_STYLE_NAME "" +PIXEL_SIZE 13 +POINT_SIZE 120 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 60 +CHARSET_REGISTRY "" +CHARSET_ENCODING "" +DEFAULT_CHAR 0 +FONT_DESCENT 3 +FONT_ASCENT 10 +COPYRIGHT "Characters #224--#250 Copyright (c) 1991 Joseph Friedman. The rest of the font is public domain." +ENDPROPERTIES +CHARS 186 +STARTCHAR ascii000 +ENCODING 0 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR ascii001 +ENCODING 1 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +20 +70 +f8 +70 +20 +00 +00 +00 +ENDCHAR +STARTCHAR ascii002 +ENCODING 2 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +a8 +50 +a8 +50 +a8 +50 +a8 +00 +00 +ENDCHAR +STARTCHAR ascii003 +ENCODING 3 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +a0 +a0 +e0 +a0 +a0 +70 +20 +20 +20 +ENDCHAR +STARTCHAR ascii004 +ENCODING 4 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +e0 +80 +c0 +80 +f0 +40 +60 +40 +40 +ENDCHAR +STARTCHAR ascii005 +ENCODING 5 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +70 +80 +80 +70 +70 +48 +70 +50 +48 +ENDCHAR +STARTCHAR ascii006 +ENCODING 6 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +80 +80 +80 +e0 +70 +40 +60 +40 +40 +ENDCHAR +STARTCHAR ascii007 +ENCODING 7 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +60 +90 +90 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii010 +ENCODING 8 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +20 +20 +f8 +20 +20 +00 +f8 +00 +00 +ENDCHAR +STARTCHAR ascii011 +ENCODING 9 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +88 +c8 +a8 +98 +88 +40 +40 +40 +78 +ENDCHAR +STARTCHAR ascii012 +ENCODING 10 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +88 +88 +50 +20 +00 +f8 +20 +20 +20 +ENDCHAR +STARTCHAR ascii013 +ENCODING 11 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +20 +20 +20 +20 +20 +20 +20 +e0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii014 +ENCODING 12 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +e0 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR ascii015 +ENCODING 13 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3c +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR ascii016 +ENCODING 14 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +20 +20 +20 +20 +20 +20 +20 +3c +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii017 +ENCODING 15 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +20 +20 +20 +20 +20 +20 +20 +fc +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR ascii020 +ENCODING 16 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +fc +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii021 +ENCODING 17 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +fc +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii022 +ENCODING 18 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +fc +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii023 +ENCODING 19 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +fc +00 +00 +00 +ENDCHAR +STARTCHAR ascii024 +ENCODING 20 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +fc +00 +ENDCHAR +STARTCHAR ascii025 +ENCODING 21 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +20 +20 +20 +20 +20 +20 +20 +3c +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR ascii026 +ENCODING 22 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +20 +20 +20 +20 +20 +20 +20 +e0 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR ascii027 +ENCODING 23 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +20 +20 +20 +20 +20 +20 +20 +fc +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii030 +ENCODING 24 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +fc +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR ascii031 +ENCODING 25 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR ascii032 +ENCODING 26 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +08 +10 +20 +40 +20 +10 +08 +f8 +00 +00 +ENDCHAR +STARTCHAR ascii033 +ENCODING 27 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +80 +40 +20 +10 +20 +40 +80 +f8 +00 +00 +ENDCHAR +STARTCHAR ascii034 +ENCODING 28 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +f8 +50 +50 +50 +90 +00 +00 +ENDCHAR +STARTCHAR ascii035 +ENCODING 29 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +08 +f8 +20 +f8 +80 +00 +00 +00 +ENDCHAR +STARTCHAR ascii036 +ENCODING 30 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +30 +48 +40 +f0 +20 +f0 +a8 +e0 +00 +ENDCHAR +STARTCHAR ascii037 +ENCODING 31 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR space +ENCODING 32 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclam +ENCODING 33 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +20 +20 +20 +20 +20 +20 +20 +00 +20 +00 +00 +ENDCHAR +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +50 +50 +50 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR numbersign +ENCODING 35 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +50 +50 +f8 +50 +f8 +50 +50 +00 +00 +00 +ENDCHAR +STARTCHAR dollar +ENCODING 36 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +20 +70 +a0 +a0 +70 +28 +28 +70 +20 +00 +00 +00 +ENDCHAR +STARTCHAR percent +ENCODING 37 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +48 +a8 +50 +10 +20 +40 +50 +a8 +90 +00 +00 +ENDCHAR +STARTCHAR ampersand +ENCODING 38 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +40 +a0 +a0 +40 +a0 +98 +90 +68 +00 +00 +00 +ENDCHAR +STARTCHAR quoteright +ENCODING 39 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +30 +20 +40 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenleft +ENCODING 40 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +10 +20 +20 +40 +40 +40 +20 +20 +10 +00 +00 +ENDCHAR +STARTCHAR parenright +ENCODING 41 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +40 +20 +20 +10 +10 +10 +20 +20 +40 +00 +00 +ENDCHAR +STARTCHAR asterisk +ENCODING 42 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +20 +a8 +f8 +70 +f8 +a8 +20 +00 +00 +00 +ENDCHAR +STARTCHAR plus +ENCODING 43 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +20 +20 +f8 +20 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR comma +ENCODING 44 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +30 +20 +40 +00 +ENDCHAR +STARTCHAR hyphen +ENCODING 45 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +f8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR period +ENCODING 46 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +20 +70 +20 +00 +ENDCHAR +STARTCHAR slash +ENCODING 47 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +08 +08 +10 +10 +20 +40 +40 +80 +80 +00 +00 +ENDCHAR +STARTCHAR zero +ENCODING 48 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +20 +50 +88 +88 +88 +88 +88 +50 +20 +00 +00 +ENDCHAR +STARTCHAR one +ENCODING 49 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +20 +60 +a0 +20 +20 +20 +20 +20 +f8 +00 +00 +ENDCHAR +STARTCHAR two +ENCODING 50 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +88 +08 +10 +20 +40 +80 +f8 +00 +00 +ENDCHAR +STARTCHAR three +ENCODING 51 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f8 +08 +10 +20 +70 +08 +08 +88 +70 +00 +00 +ENDCHAR +STARTCHAR four +ENCODING 52 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +10 +10 +30 +50 +50 +90 +f8 +10 +10 +00 +00 +ENDCHAR +STARTCHAR five +ENCODING 53 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f8 +80 +80 +b0 +c8 +08 +08 +88 +70 +00 +00 +ENDCHAR +STARTCHAR six +ENCODING 54 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +80 +80 +f0 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR seven +ENCODING 55 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f8 +08 +10 +10 +20 +20 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR eight +ENCODING 56 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +88 +88 +70 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR nine +ENCODING 57 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +88 +88 +78 +08 +08 +88 +70 +00 +00 +ENDCHAR +STARTCHAR colon +ENCODING 58 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +20 +70 +20 +00 +00 +20 +70 +20 +00 +ENDCHAR +STARTCHAR semicolon +ENCODING 59 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +20 +70 +20 +00 +00 +30 +20 +40 +00 +ENDCHAR +STARTCHAR less +ENCODING 60 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +08 +10 +20 +40 +80 +40 +20 +10 +08 +00 +00 +ENDCHAR +STARTCHAR equal +ENCODING 61 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +00 +00 +f8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR greater +ENCODING 62 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +80 +40 +20 +10 +08 +10 +20 +40 +80 +00 +00 +ENDCHAR +STARTCHAR question +ENCODING 63 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +88 +08 +10 +20 +20 +00 +20 +00 +00 +ENDCHAR +STARTCHAR at +ENCODING 64 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +88 +98 +a8 +a8 +b0 +80 +78 +00 +00 +ENDCHAR +STARTCHAR A +ENCODING 65 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +20 +50 +88 +88 +88 +f8 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR B +ENCODING 66 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f0 +48 +48 +48 +70 +48 +48 +48 +f0 +00 +00 +ENDCHAR +STARTCHAR C +ENCODING 67 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +80 +80 +80 +80 +80 +88 +70 +00 +00 +ENDCHAR +STARTCHAR D +ENCODING 68 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f0 +48 +48 +48 +48 +48 +48 +48 +f0 +00 +00 +ENDCHAR +STARTCHAR E +ENCODING 69 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f8 +80 +80 +80 +f0 +80 +80 +80 +f8 +00 +00 +ENDCHAR +STARTCHAR F +ENCODING 70 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f8 +80 +80 +80 +f0 +80 +80 +80 +80 +00 +00 +ENDCHAR +STARTCHAR G +ENCODING 71 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +80 +80 +80 +98 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR H +ENCODING 72 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +88 +88 +88 +88 +f8 +88 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR I +ENCODING 73 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +20 +20 +20 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR J +ENCODING 74 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +38 +10 +10 +10 +10 +10 +10 +90 +60 +00 +00 +ENDCHAR +STARTCHAR K +ENCODING 75 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +88 +88 +90 +a0 +c0 +a0 +90 +88 +88 +00 +00 +ENDCHAR +STARTCHAR L +ENCODING 76 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +80 +80 +80 +80 +80 +80 +80 +80 +f8 +00 +00 +ENDCHAR +STARTCHAR M +ENCODING 77 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +88 +88 +d8 +a8 +a8 +88 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR N +ENCODING 78 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +88 +c8 +c8 +a8 +a8 +98 +98 +88 +88 +00 +00 +ENDCHAR +STARTCHAR O +ENCODING 79 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +88 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR P +ENCODING 80 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f0 +88 +88 +88 +f0 +80 +80 +80 +80 +00 +00 +ENDCHAR +STARTCHAR Q +ENCODING 81 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +88 +88 +88 +88 +88 +a8 +70 +08 +00 +ENDCHAR +STARTCHAR R +ENCODING 82 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f0 +88 +88 +88 +f0 +a0 +90 +88 +88 +00 +00 +ENDCHAR +STARTCHAR S +ENCODING 83 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +88 +80 +80 +70 +08 +08 +88 +70 +00 +00 +ENDCHAR +STARTCHAR T +ENCODING 84 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f8 +20 +20 +20 +20 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR U +ENCODING 85 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +88 +88 +88 +88 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR V +ENCODING 86 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +88 +88 +88 +88 +50 +50 +50 +20 +20 +00 +00 +ENDCHAR +STARTCHAR W +ENCODING 87 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +88 +88 +88 +88 +a8 +a8 +a8 +d8 +88 +00 +00 +ENDCHAR +STARTCHAR X +ENCODING 88 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +88 +88 +50 +50 +20 +50 +50 +88 +88 +00 +00 +ENDCHAR +STARTCHAR Y +ENCODING 89 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +88 +88 +50 +50 +20 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR Z +ENCODING 90 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f8 +08 +10 +10 +20 +40 +40 +80 +f8 +00 +00 +ENDCHAR +STARTCHAR braketleft +ENCODING 91 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +40 +40 +40 +40 +40 +40 +40 +70 +00 +00 +ENDCHAR +STARTCHAR backslash +ENCODING 92 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +80 +80 +40 +40 +20 +10 +10 +08 +08 +00 +00 +ENDCHAR +STARTCHAR bracketright +ENCODING 93 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +70 +10 +10 +10 +10 +10 +10 +10 +70 +00 +00 +ENDCHAR +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +20 +50 +88 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR underscore +ENCODING 95 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f8 +00 +ENDCHAR +STARTCHAR quoteleft +ENCODING 96 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +30 +10 +08 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR a +ENCODING 97 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +70 +08 +78 +88 +88 +78 +00 +00 +ENDCHAR +STARTCHAR b +ENCODING 98 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +80 +80 +80 +f0 +88 +88 +88 +88 +f0 +00 +00 +ENDCHAR +STARTCHAR c +ENCODING 99 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +70 +88 +80 +80 +88 +70 +00 +00 +ENDCHAR +STARTCHAR d +ENCODING 100 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +08 +08 +08 +78 +88 +88 +88 +88 +78 +00 +00 +ENDCHAR +STARTCHAR e +ENCODING 101 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +70 +88 +f8 +80 +88 +70 +00 +00 +ENDCHAR +STARTCHAR f +ENCODING 102 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +30 +48 +40 +40 +f0 +40 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR g +ENCODING 103 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +70 +88 +88 +88 +78 +08 +88 +70 +ENDCHAR +STARTCHAR h +ENCODING 104 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +80 +80 +80 +b0 +c8 +88 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR i +ENCODING 105 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +20 +00 +60 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR j +ENCODING 106 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +10 +00 +30 +10 +10 +10 +10 +90 +90 +60 +ENDCHAR +STARTCHAR k +ENCODING 107 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +80 +80 +80 +90 +a0 +c0 +a0 +90 +88 +00 +00 +ENDCHAR +STARTCHAR l +ENCODING 108 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +60 +20 +20 +20 +20 +20 +20 +20 +70 +00 +00 +ENDCHAR +STARTCHAR m +ENCODING 109 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +d0 +a8 +a8 +a8 +a8 +88 +00 +00 +ENDCHAR +STARTCHAR n +ENCODING 110 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +b0 +c8 +88 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR o +ENCODING 111 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +70 +88 +88 +88 +88 +70 +00 +00 +ENDCHAR +STARTCHAR p +ENCODING 112 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f0 +88 +88 +88 +f0 +80 +80 +80 +ENDCHAR +STARTCHAR q +ENCODING 113 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +78 +88 +88 +88 +78 +08 +08 +08 +ENDCHAR +STARTCHAR r +ENCODING 114 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +b0 +c8 +80 +80 +80 +80 +00 +00 +ENDCHAR +STARTCHAR s +ENCODING 115 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +70 +88 +60 +10 +88 +70 +00 +00 +ENDCHAR +STARTCHAR t +ENCODING 116 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +40 +40 +f0 +40 +40 +40 +48 +30 +00 +00 +ENDCHAR +STARTCHAR u +ENCODING 117 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +88 +88 +88 +88 +98 +68 +00 +00 +ENDCHAR +STARTCHAR v +ENCODING 118 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +88 +88 +88 +50 +50 +20 +00 +00 +ENDCHAR +STARTCHAR w +ENCODING 119 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +88 +88 +a8 +a8 +a8 +50 +00 +00 +ENDCHAR +STARTCHAR x +ENCODING 120 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +88 +50 +20 +20 +50 +88 +00 +00 +ENDCHAR +STARTCHAR y +ENCODING 121 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +88 +88 +88 +98 +68 +08 +88 +70 +ENDCHAR +STARTCHAR z +ENCODING 122 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +10 +20 +40 +80 +f8 +00 +00 +ENDCHAR +STARTCHAR braceleft +ENCODING 123 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +18 +20 +20 +20 +c0 +20 +20 +20 +18 +00 +00 +ENDCHAR +STARTCHAR bar +ENCODING 124 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +20 +20 +20 +20 +20 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR braceright +ENCODING 125 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +c0 +20 +20 +20 +18 +20 +20 +20 +c0 +00 +00 +ENDCHAR +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +48 +a8 +90 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii177 +ENCODING 127 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +a8 +50 +a8 +50 +a8 +50 +a8 +50 +a8 +50 +a8 +50 +a8 +ENDCHAR +STARTCHAR no-break-space +ENCODING 160 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii242 +ENCODING 162 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +20 +70 +a8 +a0 +a0 +a8 +70 +20 +00 +00 +00 +ENDCHAR +STARTCHAR ascii243 +ENCODING 163 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +30 +48 +40 +f0 +20 +f0 +a8 +e0 +00 +ENDCHAR +STARTCHAR ascii244 +ENCODING 164 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +88 +70 +50 +50 +70 +88 +00 +00 +00 +ENDCHAR +STARTCHAR ascii245 +ENCODING 165 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +88 +88 +50 +50 +f8 +20 +f8 +20 +20 +00 +00 +ENDCHAR +STARTCHAR ascii246 +ENCODING 166 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +20 +20 +20 +20 +00 +20 +20 +20 +20 +00 +00 +ENDCHAR +STARTCHAR ascii247 +ENCODING 167 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +30 +48 +40 +30 +48 +48 +30 +08 +48 +30 +00 +00 +ENDCHAR +STARTCHAR ascii250 +ENCODING 168 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +d8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii251 +ENCODING 169 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +70 +88 +a8 +d8 +c8 +d8 +a8 +88 +70 +00 +00 +00 +ENDCHAR +STARTCHAR ascii252 +ENCODING 170 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +88 +50 +20 +50 +88 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii253 +ENCODING 171 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +28 +50 +a0 +a0 +50 +28 +00 +00 +00 +ENDCHAR +STARTCHAR ascii254 +ENCODING 172 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +f8 +08 +08 +08 +00 +00 +00 +ENDCHAR +STARTCHAR ascii255 +ENCODING 173 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +f8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii256 +ENCODING 174 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +70 +88 +e8 +d8 +d8 +e8 +d8 +88 +70 +00 +00 +00 +ENDCHAR +STARTCHAR ascii257 +ENCODING 175 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +f8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii260 +ENCODING 176 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +30 +48 +48 +30 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii261 +ENCODING 177 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +20 +20 +f8 +20 +20 +00 +f8 +00 +00 +00 +ENDCHAR +STARTCHAR ascii262 +ENCODING 178 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +40 +a0 +20 +40 +e0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii263 +ENCODING 179 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +40 +a0 +40 +20 +c0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii264 +ENCODING 180 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +10 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii265 +ENCODING 181 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +88 +88 +88 +88 +98 +e8 +80 +00 +ENDCHAR +STARTCHAR ascii266 +ENCODING 182 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +78 +e8 +e8 +e8 +e8 +68 +28 +28 +28 +00 +00 +ENDCHAR +STARTCHAR ascii267 +ENCODING 183 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii270 +ENCODING 184 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +48 +30 +ENDCHAR +STARTCHAR ascii271 +ENCODING 185 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +40 +c0 +40 +40 +e0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ascii272 +ENCODING 186 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +20 +20 +00 +f8 +00 +20 +20 +00 +00 +00 +ENDCHAR +STARTCHAR ascii273 +ENCODING 187 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +a0 +50 +28 +28 +50 +a0 +00 +00 +00 +ENDCHAR +STARTCHAR ascii274 +ENCODING 188 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +40 +c0 +40 +40 +e0 +08 +18 +28 +38 +08 +00 +00 +ENDCHAR +STARTCHAR ascii275 +ENCODING 189 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +40 +c0 +40 +40 +e0 +10 +28 +08 +10 +38 +00 +00 +ENDCHAR +STARTCHAR ascii276 +ENCODING 190 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +40 +a0 +40 +20 +a0 +48 +18 +28 +38 +08 +00 +00 +ENDCHAR +STARTCHAR ascii337 +ENCODING 223 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f8 +00 +f8 +ENDCHAR +STARTCHAR aleph +ENCODING 224 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +90 +48 +68 +90 +88 +c8 +00 +00 +ENDCHAR +STARTCHAR bet +ENCODING 225 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f0 +10 +10 +10 +10 +f8 +00 +00 +ENDCHAR +STARTCHAR gimel +ENCODING 226 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +40 +20 +10 +10 +28 +48 +00 +00 +ENDCHAR +STARTCHAR dalet +ENCODING 227 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +10 +10 +10 +10 +10 +00 +00 +ENDCHAR +STARTCHAR he +ENCODING 228 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +08 +08 +88 +88 +88 +00 +00 +ENDCHAR +STARTCHAR waw +ENCODING 229 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +30 +10 +10 +10 +10 +10 +00 +00 +ENDCHAR +STARTCHAR zain +ENCODING 230 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +20 +20 +10 +10 +10 +00 +00 +ENDCHAR +STARTCHAR chet +ENCODING 231 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +48 +48 +48 +48 +48 +00 +00 +ENDCHAR +STARTCHAR tet +ENCODING 232 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +98 +a8 +a8 +88 +88 +f8 +00 +00 +ENDCHAR +STARTCHAR yod +ENCODING 233 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +30 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR endkaph +ENCODING 234 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +08 +08 +08 +08 +08 +08 +08 +ENDCHAR +STARTCHAR kaph +ENCODING 235 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +08 +08 +08 +08 +f0 +00 +00 +ENDCHAR +STARTCHAR lamed +ENCODING 236 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +80 +80 +80 +f8 +08 +08 +08 +10 +60 +00 +00 +ENDCHAR +STARTCHAR endmem +ENCODING 237 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +48 +48 +48 +48 +78 +00 +00 +ENDCHAR +STARTCHAR mem +ENCODING 238 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +90 +a8 +48 +88 +88 +b8 +00 +00 +ENDCHAR +STARTCHAR endnun +ENCODING 239 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +30 +10 +10 +10 +10 +10 +10 +10 +ENDCHAR +STARTCHAR nun +ENCODING 240 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +18 +08 +08 +08 +08 +78 +00 +00 +ENDCHAR +STARTCHAR samech +ENCODING 241 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +48 +48 +48 +50 +60 +00 +00 +ENDCHAR +STARTCHAR ayin +ENCODING 242 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +d8 +48 +48 +48 +48 +f0 +00 +00 +ENDCHAR +STARTCHAR endpe +ENCODING 243 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +48 +48 +48 +08 +08 +08 +08 +ENDCHAR +STARTCHAR pe +ENCODING 244 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +48 +48 +08 +08 +f0 +00 +00 +ENDCHAR +STARTCHAR endzade +ENCODING 245 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +90 +48 +48 +50 +60 +40 +40 +40 +ENDCHAR +STARTCHAR zade +ENCODING 246 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +90 +48 +28 +10 +08 +f8 +00 +00 +ENDCHAR +STARTCHAR qoph +ENCODING 247 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +08 +88 +88 +88 +b0 +80 +80 +ENDCHAR +STARTCHAR resh +ENCODING 248 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +08 +08 +08 +08 +08 +00 +00 +ENDCHAR +STARTCHAR shin +ENCODING 249 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +a8 +a8 +a8 +e8 +88 +f0 +00 +00 +ENDCHAR +STARTCHAR taw +ENCODING 250 +SWIDTH 461 0 +DWIDTH 6 0 +BBX 6 13 0 -3 +BITMAP +00 +00 +00 +00 +00 +f8 +48 +48 +48 +48 +c8 +00 +00 +ENDCHAR +ENDFONT diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.snf b/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.snf Binary files differnew file mode 100644 index 0000000000..26de128983 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.snf diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/yossi/hebrew.el new file mode 100644 index 0000000000..927111c7a0 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/hebrew.el @@ -0,0 +1,217 @@ +;;; +;;; hebrew.el -- Hebrew editing mode. +;;; For more information, see documentation of `hebrew-mode'. +;;; +;;; $Id: hebrew.el,v 1.4 1992/08/22 22:29:57 yossi Exp $ +;;; Copyright (c) Joseph Friedman, April 1990 +;;; E-mail: yossi@DEShaw.COM +;;; +;;; LCD Archive Entry: +;;; hebrew|Joseph Friedman|yossi@DEShaw.COM| +;;; Support for editing Hebrew files in Emacs.| +;;; 92-08-22|$Revision: 1.4 $|~/misc/hebrew.tar.Z| + + +(defvar running-epoch nil "*Non-nil means Epoch is running.") + +(defvar hebrew-mode-hook () "*Called when entering hebrew-mode") + +(defvar hebrew-mode nil "*Non nil when Hebrew mode is turned on.") +(make-variable-buffer-local 'hebrew-mode) + +(or (assoc 'hebrew-mode minor-mode-alist) + (setq minor-mode-alist + (cons '(hebrew-mode " Hebrew") minor-mode-alist))) + +(defun hebrew-mode () +"\ +Toggles hebrew-mode on/off. Hebrew-mode is a minor mode which allows +reversing the editor display and changing the keyboard in order to +enter and edit text in a semitic language, such as Hebrew. + +By default, hebrew-mode stays in \"normal\" state. The \"reversed\" +state is activated with \"\\[hebrew-toggle-reversed]\". (In Epoch, this +is also bound to \"F3\".) In the \"reversed\" state, hebrew-mode emulates +a Hebrew keyboard both during direct insertion and during searches. + +Hebrew-mode calls hebrew-mode-hook upon entering." + + (interactive) + (if (null hebrew-mode) + (let (char) + + ; signal hebrew minor mode in the mode-line + (setq hebrew-mode t) + + ; activate the hebrew insertion function + (setq char ? ) + (local-set-key " " 'hebrew-insert-space) ; SPC is a special case, + (setq char (1+ char)) ; see below. + (while (<= char ?~) + (let ((s (format "%c" char))) + (if (eq (key-binding s) 'self-insert-command) + (local-set-key s 'hebrew-insert))) + (setq char (1+ char))) + ; for showmatch: + (local-unset-key "{") + (local-unset-key "[") + (local-unset-key "(") + (local-unset-key ")") + (local-unset-key "]") + (local-unset-key "}") + + ; display-literal, display-reversed + (setq display-literal t) + (local-set-key "\C-cR" 'hebrew-toggle-reversed) + (local-set-key "\e[13~" 'hebrew-toggle-reversed) ; F3 + + ; syntax table stuff + (setq char ?\340) ; aleph + (while (<= char ?\372) ; taf + (modify-syntax-entry char "w") + (setq char (1+ char))) + + ; search stuff + (local-set-key "\C-s" 'hebrew-ctrl-s) + (local-set-key "\C-r" 'hebrew-ctrl-r) + + ; hooks + (run-hooks 'hebrew-mode-hook)) + + (let (char) + + ; turn off hebrew minor mode in the mode-line + (setq hebrew-mode nil) + + ; deactivate the hebrew insertion function + (setq char ? ) + (while (<= char ?~) + (let ((s (format "%c" char))) + (if (eq (key-binding s) 'hebrew-insert) + (local-unset-key s))) + (setq char (1+ char))) + + ; deactivate display-literal and display-reversed + (setq display-literal nil) + (local-unset-key "\C-cR") + (local-unset-key "\e[13~") ; F3 + + ; search stuff + (local-unset-key "\C-s") + (local-unset-key "\C-r") + + ; restore syntax-table + (setq char ?\340) ; aleph + (while (<= char ?\372) ; taf + (modify-syntax-entry char " ") + (setq char (1+ char)))))) + +(if running-epoch + (epoch::rebind-key "F3" 0 "\C-cR")) +(defun hebrew-toggle-reversed () + "Toggle whether or not the display is laterally reversed." + (interactive) + (setq display-reversed (null display-reversed)) + (if running-epoch + (epoch::redisplay-screen) + (x-smart-redisplay))) + +(defun hebrew-insert (&optional arg) + "\ +If display-reversed is nil, behaves like self-insert-command. +If display-reversed is t, simulates a Hebrew typewriter keyboard." + + (interactive "p") + (or (numberp arg) (setq arg 1)) + (let ((char (if display-reversed + (aref hebrew-keyboard last-command-char) + (format "%c" last-command-char)))) + (while (> arg 0) + (insert char) + (setq arg (1- arg))))) + +; *** KLUDGE ALERT *** +; When last-command-char is SPC and display-reversed is t, +; self-insert-command does not update the display after insertion, and I +; couldn't figure out why this is so. To get around this bug, I call +; self-insert-command from a user routine, and this takes care of updating +; the display. +(defun hebrew-insert-space (&optional arg) +"This is a kludge to get around an insertion bug. Bind to SPC." + (interactive) + (cond + ((null arg) (self-insert-command 1)) + ((numberp arg) (self-insert-command arg)) + (t (ding)))) + +(defun hebrew-ctrl-s () "The Hebrew-mode version of \C-s" + (interactive) + (let ((old-read-char (symbol-function 'read-char)) + (old-text-char-description (symbol-function 'text-char-description)) + (search-exit-option nil) + (res nil) + ERR) + (fset 'read-char (symbol-function 'hebrew-read-char)) + (fset 'text-char-description + (symbol-function 'hebrew-text-char-description)) + (condition-case ERR + (setq res (funcall (global-key-binding "\C-s"))) + (error nil) + (quit nil)) + (fset 'read-char old-read-char) + (fset 'text-char-description old-text-char-description) + res)) + +(defun hebrew-ctrl-r () "The Hebrew-mode version of \C-r" + (interactive) + (let ((old-read-char (symbol-function 'read-char)) + (old-text-char-description (symbol-function 'text-char-description)) + (search-exit-option nil) + (res nil) + ERR) + (fset 'read-char (symbol-function 'hebrew-read-char)) + (fset 'text-char-description + (symbol-function 'hebrew-text-char-description)) + (condition-case ERR + (setq res (funcall (global-key-binding "\C-r"))) + (error nil) + (quit nil)) + (fset 'read-char old-read-char) + (fset 'text-char-description old-text-char-description) + res)) + +(defun hebrew-read-char () + "The hebrew-mode version of read-char." + (let ((char (funcall old-read-char))) + (if (and display-reversed (>= char ? ) (<= char ?~)) + (string-to-char (aref hebrew-keyboard char)) + char))) + +(defun hebrew-text-char-description (char) + "The hebrew-mode version of text-char-description." + (if display-reversed + (char-to-string char) + (funcall old-text-char-description char))) + +; for the search function to work, we can't use a byte-compiled version of +; isearch.el, so load it back: +(load-library "isearch.el") + +(setq hebrew-keyboard + [ + "" "" "" "" "" "" "" "" + "" "" "" "" "" "" "" "" + "" "" "" "" "" "" "" "" + "" "" "" "" "" "" "" "" + " " "!" "\"" "#" "$" "%" "&" "'" + "(" ")" "*" "+" "\372" "-" "\365" "." + "0" "1" "2" "3" "4" "5" "6" "7" + "8" "9" ":" "\363" "<" "=" ">" "?" + "@" "A" "B" "C" "D" "E" "F" "G" + "H" "I" "J" "K" "L" "M" "N" "O" + "P" "Q" "R" "S" "T" "U" "V" "W" + "X" "Y" "Z" "[" "\\" "]" "^" "_" + ";" "\371" "\360" "\341" "\342" "\367" "\353" "\362" + "\351" "\357" "\347" "\354" "\352" "\366" "\356" "\355" + "\364" "\\" "\370" "\343" "\340" "\345" "\344" "," + "\361" "\350" "\346" "{" "|" "}" "~" ""]) diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-lisp b/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-lisp new file mode 100644 index 0000000000..c65c83aa0c --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-lisp @@ -0,0 +1,34 @@ +*** x-mouse.el.orig Tue Apr 30 14:26:17 1991 +--- x-mouse.el Tue Apr 30 14:13:46 1991 +*************** +*** 107,112 **** +--- 107,113 ---- + (define-key global-map "\C-c\C-m" 'x-flush-mouse-queue) + (define-key global-map "\C-x\C-@" 'x-flush-mouse-queue) + ++ ; yossi-- modified x-mouse-select to support reverse displays. + (defun x-mouse-select (arg) + "Select Emacs window the mouse is on." + (let ((start-w (selected-window)) +*************** +*** 120,126 **** + (if (eq w start-w) + (setq done t))) + (select-window w) +! rel-coordinate)) + + (defun x-mouse-keep-one-window (arg) + "Select Emacs window mouse is on, then kill all other Emacs windows." +--- 121,132 ---- + (if (eq w start-w) + (setq done t))) + (select-window w) +! (set-buffer (window-buffer w)) +! (and rel-coordinate +! (if (null display-reversed) +! rel-coordinate +! (cons (- (window-width) (car rel-coordinate) 1) +! (cdr rel-coordinate)))))) + + (defun x-mouse-keep-one-window (arg) + "Select Emacs window mouse is on, then kill all other Emacs windows." diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-src b/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-src new file mode 100644 index 0000000000..1e063074e6 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-src @@ -0,0 +1,442 @@ +*** buffer.c.orig Thu Jun 4 15:19:29 1992 +--- buffer.c Thu Jun 4 16:01:40 1992 +*************** +*** 1069,1074 **** +--- 1069,1076 ---- + XFASTINT (buffer_defaults.tab_width) = 8; + buffer_defaults.truncate_lines = Qnil; + buffer_defaults.ctl_arrow = Qt; ++ buffer_defaults.display_literal = Qnil; /* yossi */ ++ buffer_defaults.display_reversed = Qnil; /* yossi */ + + XFASTINT (buffer_defaults.fill_column) = 70; + XFASTINT (buffer_defaults.left_margin) = 0; +*************** +*** 1107,1112 **** +--- 1109,1116 ---- + XFASTINT (buffer_local_flags.left_margin) = 0x800; + XFASTINT (buffer_local_flags.abbrev_table) = 0x1000; + XFASTINT (buffer_local_flags.syntax_table) = 0x2000; ++ XFASTINT (buffer_local_flags.display_literal) = 0x4000; /* yossi */ ++ XFASTINT (buffer_local_flags.display_reversed) = 0x8000; /* yossi */ + + Vbuffer_alist = Qnil; + current_buffer = 0; +*************** +*** 1178,1183 **** +--- 1182,1197 ---- + "Default ctl-arrow for buffers that do not override it.\n\ + This is the same as (default-value 'ctl-arrow)."); + ++ DEFVAR_LISP_NOPRO ("default-display-literal", /* yossi */ ++ &buffer_defaults.display_literal, ++ "Default display-literal for buffers that do not override it.\n\ ++ This is the same as (default-value 'display-literal)."); ++ ++ DEFVAR_LISP_NOPRO ("default-display-reversed", /* yossi */ ++ &buffer_defaults.display_reversed, ++ "Default display-reversed for buffers that do not override it.\n\ ++ This is the same as (default-value 'display-reversed)."); ++ + DEFVAR_LISP_NOPRO ("default-truncate-lines", + &buffer_defaults.truncate_lines, + "Default truncate-lines for buffers that do not override it.\n\ +*************** +*** 1269,1274 **** +--- 1283,1299 ---- + "*Non-nil means display control chars with uparrow.\n\ + Nil means use backslash and octal digits.\n\ + Automatically becomes local when set in any fashion."); ++ ++ DEFVAR_PER_BUFFER ("display-literal", ¤t_buffer->display_literal, /* yossi */ ++ "*Non-nil means display the characters in the buffer as they are,\n\ ++ even when ther are \"nonprintable\" ascii.\n\ ++ Nil means display using ctl-arrow for the low nonprintables, and use\n\ ++ backslash and octal digits for the high nonprintables.\n\ ++ Automatically becomes local when set in any fashion."); ++ ++ DEFVAR_PER_BUFFER ("display-reversed", ¤t_buffer->display_reversed, /* yossi */ ++ "*Non-nil means display each line of the buffer in reversed order,\n\ ++ useful for editing texts in Semitic languages which write right-to-left."); + + DEFVAR_PER_BUFFER ("truncate-lines", ¤t_buffer->truncate_lines, + "*Non-nil means do not display continuation lines;\n\ +*** buffer.h.orig Fri Jan 4 19:12:49 1991 +--- buffer.h Thu Jun 4 16:01:41 1992 +*************** +*** 208,213 **** +--- 208,219 ---- + Lisp_Object truncate_lines; + /* Non-nil means display ctl chars with uparrow */ + Lisp_Object ctl_arrow; ++ /* yossi-- Non-nil means display the characters in the buffer as they are, ++ even when they are "nonprintable" ascii. This is particularly useful ++ for fonts which have more than 128 characters */ ++ Lisp_Object display_literal; ++ /* yossi-- Non-nil means reverse each line of the buffer, for Semitics */ ++ Lisp_Object display_reversed; + /* Non-nil means do selective display; + See doc string in syms_of_buffer (buffer.c) for details. */ + Lisp_Object selective_display; +*** dispnew.c.orig Thu Jun 4 15:19:39 1992 +--- dispnew.c Thu Jun 4 16:01:42 1992 +*************** +*** 614,624 **** + reassert_line_highlight (0, cursor_vpos); + output_chars (¤t_screen->contents[vpos][hpos], 1); + fflush (stdout); +! ++cursor_hpos; + if (hpos == current_screen->used[vpos]) + { +! current_screen->used[vpos] = hpos + 1; +! current_screen->contents[vpos][hpos + 1] = 0; + } + return 1; + } +--- 614,624 ---- + reassert_line_highlight (0, cursor_vpos); + output_chars (¤t_screen->contents[vpos][hpos], 1); + fflush (stdout); +! cursor_hpos += (NULL(XBUFFER(w->buffer)->display_reversed))? 1: -1; /* yossi */ + if (hpos == current_screen->used[vpos]) + { +! current_screen->used[vpos] = cursor_hpos; +! current_screen->contents[vpos][cursor_hpos] = 0; + } + return 1; + } +*************** +*** 633,639 **** + if (XINT (w->hscroll) && cursor_hpos == XFASTINT (w->left)) + return 0; + +! cursor_hpos += n; + XFASTINT (w->last_point_x) = cursor_hpos; + XFASTINT (w->last_point) = point; + move_cursor (cursor_vpos, cursor_hpos); +--- 633,639 ---- + if (XINT (w->hscroll) && cursor_hpos == XFASTINT (w->left)) + return 0; + +! cursor_hpos += (NULL(XBUFFER(w->buffer)->display_reversed))? n: -n; /* yossi */ + XFASTINT (w->last_point_x) = cursor_hpos; + XFASTINT (w->last_point) = point; + move_cursor (cursor_vpos, cursor_hpos); +*** indent.c.orig Thu Jun 4 15:19:50 1992 +--- indent.c Thu Jun 4 16:07:53 1992 +*************** +*** 79,84 **** +--- 79,85 ---- + register int post_tab; + register int tab_width = XINT (current_buffer->tab_width); + int ctl_arrow = !NULL (current_buffer->ctl_arrow); ++ int display_literal = !NULL (current_buffer->display_literal); /* yossi */ + + if (point == last_known_column_point + && MODIFF == last_known_column_modified) +*************** +*** 132,137 **** +--- 133,142 ---- + col = 0; + tab_seen = 1; + } ++ else if (display_literal) /* yossi */ ++ { ++ col++; ++ } + else + col += (ctl_arrow && c < 0200) ? 2 : 4; + } +*************** +*** 298,303 **** +--- 303,309 ---- + register int end = ZV; + register int tab_width = XINT (current_buffer->tab_width); + register int ctl_arrow = !NULL (current_buffer->ctl_arrow); ++ register int display_literal = !NULL (current_buffer->display_literal); /* yossi */ + + Lisp_Object val; + +*************** +*** 324,332 **** + col += tab_width - 1; + col = col / tab_width * tab_width; + } +! else if (ctl_arrow && (c < 040 || c == 0177)) + col++; +! else if (c < 040 || c >= 0177) + col += 3; + } + +--- 330,338 ---- + col += tab_width - 1; + col = col / tab_width * tab_width; + } +! else if ((!display_literal) && ctl_arrow && (c < 040 || c == 0177)) /* yossi */ + col++; +! else if ((!display_literal) && (c < 040 || c >= 0177)) /* yossi */ + col += 3; + } + +*************** +*** 355,360 **** +--- 361,367 ---- + register int c; + register int tab_width = XFASTINT (current_buffer->tab_width); + register int ctl_arrow = !NULL (current_buffer->ctl_arrow); ++ register int display_literal = !NULL (current_buffer->display_literal); /* yossi */ + int selective + = XTYPE (current_buffer->selective_display) == Lisp_Int + ? XINT (current_buffer->selective_display) +*************** +*** 428,433 **** +--- 435,442 ---- + hpos = width; + } + } ++ else if (display_literal) /* yossi */ ++ hpos++; + else + hpos += (ctl_arrow && c < 0200) ? 2 : 4; + +*** keyboard.c.orig Thu Jun 4 15:19:53 1992 +--- keyboard.c Thu Jun 4 16:01:44 1992 +*************** +*** 705,711 **** + { + lose = FETCH_CHAR (point); + SET_PT (point + 1); +! if (lose >= ' ' && lose < 0177 + && (XFASTINT (XWINDOW (selected_window)->last_modified) + >= MODIFF) + && (XFASTINT (XWINDOW (selected_window)->last_point) +--- 705,712 ---- + { + lose = FETCH_CHAR (point); + SET_PT (point + 1); +! if (((lose >= ' ' && lose < 0177) || +! !NULL(current_buffer->display_literal)) /* yossi */ + && (XFASTINT (XWINDOW (selected_window)->last_modified) + >= MODIFF) + && (XFASTINT (XWINDOW (selected_window)->last_point) +*************** +*** 721,727 **** + { + SET_PT (point - 1); + lose = FETCH_CHAR (point); +! if (lose >= ' ' && lose < 0177 + && (XFASTINT (XWINDOW (selected_window)->last_modified) + >= MODIFF) + && (XFASTINT (XWINDOW (selected_window)->last_point) +--- 722,729 ---- + { + SET_PT (point - 1); + lose = FETCH_CHAR (point); +! if (((lose >= ' ' && lose < 0177) || +! !NULL(current_buffer->display_literal)) /* yossi */ + && (XFASTINT (XWINDOW (selected_window)->last_modified) + >= MODIFF) + && (XFASTINT (XWINDOW (selected_window)->last_point) +*************** +*** 761,768 **** + } + if (!lose + && (point == ZV || FETCH_CHAR (point) == '\n') +! && last_command_char >= ' ' +! && last_command_char < 0177) + no_redisplay + = direct_output_for_insert (last_command_char); + goto directly_done; +--- 763,770 ---- + } + if (!lose + && (point == ZV || FETCH_CHAR (point) == '\n') +! && ((last_command_char >= ' ' && last_command_char < 0177) || +! !NULL(current_buffer->display_literal))) /* yossi */ + no_redisplay + = direct_output_for_insert (last_command_char); + goto directly_done; +*** xdisp.c.orig Thu Jun 4 15:20:53 1992 +--- xdisp.c Thu Jun 4 16:01:45 1992 +*************** +*** 405,410 **** +--- 405,417 ---- + if (pos.vpos < 1) + { + cursor_hpos = max (XFASTINT (w->left), pos.hpos); ++ if (!NULL(XBUFFER(w->buffer)->display_reversed)) { /* yossi */ ++ register int width = XFASTINT (w->width) - 1 ++ - (XFASTINT(w->width) + XFASTINT(w->left) != screen_width); ++ ++ cursor_hpos = XFASTINT(w->left) + width - ++ (cursor_hpos - XFASTINT(w->left)); ++ } + cursor_vpos = this_line_vpos; + goto update; + } +*************** +*** 551,556 **** +--- 558,589 ---- + last_arrow_string = Qt; + } + } ++ ++ /* ++ * yossi-- the following function is a simplified version of Denys Duchier's ++ * epoch::redisplay-screen, stolen from Epoch 3.1. ++ */ ++ DEFUN ("x-smart-redisplay",Fx_smart_redisplay,Sx_smart_redisplay,0,0,"", ++ "Perform a smart redisplay of the screen.") ++ () ++ { ++ Lisp_Object root_window = XWINDOW (minibuf_window)->prev; ++ int modified = BUF_MODIFF(current_buffer)++; ++ ++ windows_or_buffers_changed++; ++ ++ do_pending_window_change(); ++ if (interrupt_input) unrequest_sigio(); ++ ++ redisplay_window(root_window,0); ++ update_screen(1,1); ++ ++ BUF_MODIFF(current_buffer) = modified; ++ do_pending_window_change(); ++ if (interrupt_input) request_sigio(); ++ ++ return Qnil; ++ } + + int do_id = 1; + +*************** +*** 672,677 **** +--- 705,717 ---- + if (EQ (window, selected_window)) + { + cursor_hpos = max (0, pos.hpos) + XFASTINT (w->left); ++ if (!NULL(XBUFFER(w->buffer)->display_reversed)) { /* yossi */ ++ register int width = XFASTINT (w->width) - 1 ++ - (XFASTINT(w->width) + XFASTINT(w->left) != screen_width); ++ ++ cursor_hpos = XFASTINT(w->left) + width - ++ (cursor_hpos - XFASTINT(w->left)); ++ } + cursor_vpos = pos.vpos + XFASTINT (w->top); + } + } +*************** +*** 704,709 **** +--- 744,756 ---- + { + /* These variables are supposed to be origin 1 */ + cursor_hpos = max (0, pos.hpos) + XFASTINT (w->left); ++ if (!NULL(XBUFFER(w->buffer)->display_reversed)) { /* yossi */ ++ register int width = XFASTINT (w->width) - 1 ++ - (XFASTINT(w->width) + XFASTINT(w->left) != screen_width); ++ ++ cursor_hpos = XFASTINT(w->left) + width - ++ (cursor_hpos - XFASTINT(w->left)); ++ } + cursor_vpos = pos.vpos + XFASTINT (w->top); + } + /* This doesn't do the trick, because if a window to the right of +*************** +*** 1213,1218 **** +--- 1260,1272 ---- + } + + cursor_hpos = max (0, point_hpos); ++ if (!NULL(XBUFFER(w->buffer)->display_reversed)) { /* yossi */ ++ register int width = XFASTINT (w->width) - 1 ++ - (XFASTINT(w->width) + XFASTINT(w->left) != screen_width); ++ ++ cursor_hpos = XFASTINT(w->left) + width - ++ (cursor_hpos - XFASTINT(w->left)); ++ } + cursor_vpos = point_vpos; + + if (debug_end_pos) +*************** +*** 1265,1270 **** +--- 1319,1325 ---- + register unsigned char *p1prev; + int tab_width = XINT (current_buffer->tab_width); + int ctl_arrow = !NULL (current_buffer->ctl_arrow); ++ int display_literal = !NULL (current_buffer->display_literal); /* yossi */ + int width = XFASTINT (w->width) - 1 + - (XFASTINT (w->width) + XFASTINT (w->left) != screen_width); + struct position val; +*************** +*** 1382,1387 **** +--- 1437,1448 ---- + } + break; + } ++ else if (display_literal) /* yossi */ ++ { ++ if (p1 >= startp) ++ *p1 = c; ++ p1++; ++ } + else if (c < 0200 && ctl_arrow) + { + if (p1 >= startp) +*************** +*** 1534,1539 **** +--- 1595,1624 ---- + + val.bufpos = pos; + val_display_text_line = val; ++ ++ /* yossi-- reverse the line if necessary */ ++ if (!NULL(current_buffer->display_reversed)) { ++ unsigned char *p2, t; ++ ++ if (p1 < endp + 1) { ++ while (p1 <= endp) *p1++ = ' '; ++ new_screen->used[vpos] = max(new_screen->used[vpos], p1 - new_screen->contents[vpos]); ++ new_screen->contents[vpos][new_screen->used[vpos]] = 0; ++ } ++ ++ /* reverse the line */ ++ for (p1 = startp, p2 = startp + width; p1 < p2; p1++, --p2) { ++ t = *p1; ++ *p1 = *p2; ++ *p2 = t; ++ } ++ ++ /* reverse the position of point if necessary */ ++ if ((point_vpos == vpos) && (w == XWINDOW (selected_window))) ++ cursor_hpos = XFASTINT(w->left) + width - ++ (cursor_hpos - XFASTINT(w->left)); ++ } ++ + return &val_display_text_line; + } + +*************** +*** 1976,1981 **** +--- 2061,2072 ---- + } + while ((p1 - start + hscroll - (hscroll > 0)) % tab_width); + } ++ else if (buffer_defaults.display_literal) /* yossi */ ++ { ++ if (p1 >= start) ++ *p1 = c; ++ p1++; ++ } + else if (c < 0200 && buffer_defaults.ctl_arrow) + { + if (p1 >= start) +*************** +*** 2065,2070 **** +--- 2156,2162 ---- + mode_line_inverse_video = 1; + + defsubr (&Sredraw_display); ++ defsubr (&Sx_smart_redisplay); /* yossi */ + } + + /* initialize the window system */ diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/thefont b/language/hebrew/hebtex/editors/unix/hemacs/yossi/thefont new file mode 100644 index 0000000000..3f93733b80 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/thefont @@ -0,0 +1,123 @@ +begin 644 heb6x13.bdf.Z +M'YV04Z@$D4+%R!,G5$#(<!%#P9 G39H400C"(42)%(>@"2,GS!@Z9>3, 3%" +MA@P:+5J4K $#!)DR<]*<<5.&# L0;<*\O!GD0',M8C#@QX9@W</+(D8D& +MY$\48U* B)$C1PP08O* 4/)F3ADX:$ 865HSIQL0*/)TC0EDR!074^CT-/-& +M#AD718A42>%B*,:$5-"4 2$')AT0;\R H",8!%TWA].,E+NFS%DS<MZT 6$# +M3XP9+L20,=/W(5&*?HN"@!*RC>28;\[2>0.BCM>;1Y/>;/.&3!HS>6[ZGD-G +MJ9@Z('GZ!.&5#9O%:"2GIC@G,9T[08$N3T-G))DW8^JTL2R73IK8CNMJUPJG +MCAPX70=+!B&X<-;I"<]TA%P3Q!WN:+R!G&-EE'$3')G9D<9+/S$6QF&,#1:& +M&&_8,5AN2C%%!WX@N/&&>6-(" <<97 $0AIGA>$<"+FE 5-I%ZFF@$$4M="$ +M9&.T8$0:>-1D8TUIB->"%"U,489K0\3VDAM>D9'29RW$( ,,+=Q00Y57#M&" +M#50F,<43..!00PXMX*# %$EH4<14,X!P PYNFDDC%4(\48431"3AQ!%U8L$9 +MFR"TU,(,9PI$$!12/ %%$00E4<044^4PXT%4.!&$1%](4<017E(A118@B"#" +MI'<2\6FH-\XQQJA&7)H$$UE\8:E$H>[8(QFC7E%$$D<@086LEZXI0A- BC?J +M%$P$09$(4AQ;!!57)$$$%4@ 2ZL(1B*II&5-CAH$$41\$5 63!1AK;"C0I$$ +M%D4P(6Z::WZF !1/Z/DKFFI.-:4"FG[)1!54)''0%WY:R>^C3_P;\,"@&CP% +M%$$,H><1H0[AK16,!G&$N=%.BP1G,#B$Q$!3/)OIIIV>*JK())L\T4-Y[AGJ +MJ$04T6H53/PZQ,A2!#HI0E_4/,40JA$ZYQ=!#*U:#"$_!$464O#J:\4;=?11 +M2".5=%)**[649%)+G=$46E%%:M56\8$E%EEDF.4""" $-EAAQ"&F6(3I07;B +M2.V)P48:8[BD61@HNC#J1$0@JBBC 3_*LA20QH"##84.1,7. P&E:AIIP."Y +M B\_$3/%(4_1,;4@T&##52$3<?K'-O@LA!!^QOY9H" ,JH 025#11!!0*/"Y +M$2$3/V/QR!^OO/'&?^Y\R(AC+D7E!$FO^1B<>]Y0Z*-/=>;KJ:_NL^O2HAY[ +MR+/7#JB@A/+N._#"A_Q\_/3O>T/(9IAYOP+[SO]Y]#RCWN5X=KWLP4 &H'," +MS":FD.^5[V.J8YT"R.>Q/Z&/=G^Z'?MVU[O?!<]_\@M9&,S$$@6,4 $E/&$* +MS30_ Y$@-8+P^8Z!P-"<8^!A#+= \,G00J:3W88M%V;-N@^#](/A"848<C* +MH,0D*F!_^XHB]/ D/1@24(;8HR$-$KA F6U1AQ6,X/C =[[=!7%]N6M?!^&' +MQ,\Q40$X"-D80A9'!9@A9#0(&9<4D$<^3I$(50R(Y6(X0\_5@(NB8^ AP8@Z +M,;:.C$!4GP;3R,'W?3"$1PS9_NI8Q_WMCP;Z"UD)09E 0 90D-6[8B%A0+D; +MRHQRC(2@^!ZYPS*F+X-#I&01V8C)^7&2CDO4)![U.$P_EC*0AAI@YK!HP!L@ +MLGO.C"4/QUC+2.(2=[K;Y24S2;\]YB!DWU3 'MN(21=.#Y7*[!DS.\>T9S+0 +M3-)TY 0A>4%)YC*;:]PF$J5H1S/Q\W/YXZ8YK;C,0L9@>PI,I,PD%<]9SK.: +M];PF$?/)35^::0QF.F$.S!0F8_:QCV\ZYBF32<@LPD!*[I19.QO:0WJ:T9[8 +M5*,E*XK)CG:TA/W#GS]#QL^!HK.DV9.7*REV4 >&T:$^A)TUA1C32AJ1GU#E +MJ505\$9RTL^G)%6E26.PQ:'JRZB-1*I+;\G4B<[4JDA\8U3Y-U6L#E*K03VD +M5^7%4FI6T)9GG"0^S]K+OG)S!F-@JV#7ZM94%G2KK4QH][@*5EFV%*(OE:@N +M*;K6RH8,L#05*!5'^M;#!M69<UTD^.295 M&MJR3G:EE!SM5,P1VM?LJ;#H+ +MV+G8*I:!,8#E:,4*6;*B<:]&1*)K,XO6<F[VA3^%:VT1VD6B1G.WC[WK4G\K +MT^#Z=7[#+:YF38G<K'JVM@B<*SRA:]<?1A2UP.4E<?V:W>L:E[OG]*XZ"RD# +M&]Y6I0PE+RVE>U[J.E6]VA5N8)$H6Z#6MJOWI=B^ZKI?\Y[6O]I<KX0%?-7C +MQK>S\S6I#.2:8(4TA,$/Y>^#]5I=^,%VJOO"[(E%VET,T_: B6VN0A (XM+B +M%:9F?2J*=\Q:JO*8L!8F:(:S)P/0=KB^C9UF@Y7:7Q+_-W@KYF=[)5Q@Y=9P +MBC(^29)).]:\WK/$^G0O-X>[XBI_MX;,5:B"1;M#+O?6RTV-<)1_3&?!FGG( +MG9M!>(^LVS;S5L2^=7*$VVBF=NZKC_MJ)PS,%- 6!CFY9YZ!?;/\7#]'U\&! +M_O*3,UM'1(?,T,6L8Z/?BTP7K[.&",[R>"U=7B:/6-.#%C-V22C*6BL@G(Z& +MKY!?/ ,.9SF_K%ZR:3,=9XH&F-$[[2<<Q7QG7L=8S2"80>GT&V),PSG' /:K +MM/EHIC[>4;#?/F%5_UAJP^*YAD:6\0P^3&T;3U?0QI:UF'.:V6;/ 0X>$8I7 +M];SE/UL;QZFU[H3E7>]'RQ<$9<##&-@0AC:DE&*2[O>E74UL;(>YQRO^'+W_ +M9W 7QZ$.'ZJ)WQX>[2^VN\L 3^_%2\AR@ENUV6X0CQBP)A,WD+S7$F_UL*\= +M\&S3K^7*+F% @4[@CIM;<,[AR,W[?-2)[SSE8*Z?,)T8AJG+P)^A%&S1=0WI +MGI%(#B&"S,TKW72=WUBR*N<F*57XZ:GV<86W]FNS&_[U.?2$##=?==F%?7;T +M1GU^?:RZ$P,/3C.%TP8LE+O19_OQD(>M*3<']MZK37&>IWU^VSZTRYF]>.OA +MNS!N8$,9S+ AK_:QQBA'^]\Q"6K!?K28_%0TJ3E[],];YO&E[S -V!ULRC]= +M]9L&/(_;27P>]S'7Y9ZM#$&RE#FL@>0TH/')WPSUX/MU7R<,Z/X">L*-S[[% +MM6>#;:"?P^D#VO*KSZR4D^W][2;?>D=I0TZ@;_+>N[O)L([WP#.;^6)RG.L' +MAP9Y !:6 7UL-GGW]VK%QE?[-VK[UVQ?=QYX9WI,%U9.UW<0IG\!=GU6]WT7 +M=G1SP'!S@ ;01W86:';OEG\,Z#PL5&AMYWJA!DSN1WNSI0<A\0;0IW<GR'<I +MN( "IW&V9E,<-81P1&M:YX&[%AOZIGN2MX.^AX'PMH)3M4>"MV(.^'_O1T#7 +M@8->54*H1WW %VOTLTE$N&@*T'I])&J)5V$ Z&*,41A+*&,UP'L(F'I^9WWT +MTV@N*%C[8X9FV%%]B(1=EQ[N07(U('WV9X<9*(5G^(+;!G3A%%#%-X/@-UMF +MD 868HCEEXA@>(=B"% <)8-B($<M*#Q$&(ALF(69$Q-X8(CU5X>=N(@_.'4V +M)8/?)H1%^$2*UX8@6 868G-=>(!.F( 5UW,7IX>-F(S\]'K&A'PT:#UEH"&& +M6(&.A8+XYX,^1X:Y"(AT1(3<2(D?.%MN@")Q"&TU8(+5R(/7:''<I(VX&%)^ +M>(J[J(H]<Q1L$!N&J(/I^(0]R(Y693]3-3\ >80L%H[6XQ6N88_XV(5-N(_$ +MB'YXN$\=^%=N)X@')WIS, <DMT=?>'[5]XGRLX>:MVS&E&@A"8Z[5@8?IR(; +M28?#J(A1.(N9=84Z166=1T#Z42+,MY&("(L>&88:*(.>EHQFB(8RZ(R5:#T? +M9QCG 8P=9@.;Z)/_!I2,Z(ZEV'KTUGYSEWLR9@.O^)*Q&)/9V(VYN%$FE%%F +M,HHD"8\6Z6)!L)'"Z) PJ8(RN2\EA(L=%5!XN898^(P$) 0;28U*QH_K:(QC +MAD?=EIBZR&V,24K?AI0&24!#L)'H.)@/^9%!N9BU2)*_Q)E9!YF[1@0;J8^6 +M.9?8>(R(V9B*24JLR6CSZ)>94P0;V9"E&99TZ7-Z*8.BIINVR)?D!IL]8P0D +MMS\=.96>F)FYR9GXPYO*B9*#> 3#Z9)R:9NGV8YDV9EU9);O^)I)24!(,)P] +M"98_>9R,N)>YJ)?>6(9M>71),)Q1*9[&*8MCB7%U-I"@.8A*,)Q?.9WC*9\7 +M-P-[.(D""D[$Y)P'MP3#&9>UV9]B>7&X&$Z"-T=.%$ZX>)\'QP3#*9ANQJ"W +MZ:#,B9W,29,%N6M-,)R5N:'QV:#<A(MD@)9GN8WI:: NY@3#29HH6GF869X7 +MM:,OJE&&%Z,6ZF)/,)RT>:._1YXR:94PNJ3?&*1'%SQ>54?%B:-4*9.W&*.W +M^*'<&9F9$P4DAP/2N: IVJ'6R:0QVE$GU(=KV&S3$Z7AR9]C6IW8=9U$&&X$ +MNJ1..EM3\*7O":=4BJ3SN9F==))_^)GK.5M4\*7[*:9_ZI]CQG[UR6-Y:CU5 +M\*4*:J102*869::<VJ2':CU6\*4:ZF^-JJ*;:IY AU,!^:D$= 5?>J*D>J2. +M>JHQ>D*V:B8MFHN32D!8\*4V&JN9*J<U181 9Y=!J)ZI")P@D 5?6J3 VH^& +M2:LH9&L9QZJ9HP4D%TY3*JNFBDG(.(DCF88UN:N9(P8=41ET('JDEZUABJG0 +M>GF8]$G%Q(ST.G7DVC-BX!%K$((R1()>E0-ORJC<JJDU)92P]X**5HKWBA56 +M@ZZXEZU]*K#!ZH_QBK 6FXR3B(I]V9W?A3U@)Q[9NJCN6ICP*G73JJN;)Z-' +M5P<^@35'41C9>JG/2K+IMX$2YH#-UG@@H:Y<"6TY,*H7^*XU>UDOZ(<IN[!A +MD*VP&K0T&Y%BIJ9/%*-LF:P<BZ_9^JM,JX 42S\@:D=TNJ2/::WUF*W.FK7% +M6+)6Y8ZZ::A4RZ4],X$=QC33QHD<*JQ'I+#Z<Z:GZ)LC.HCEN%@GE7/JJ+71 +M2G#:F)R>VK:[9@8DQS0!.[*$B[9$VYC%]&WUVHQB"P)GT+@U)+B$&;E#FUE* +M"HBE^(W-YJ]Q"P,B.[.@Z[3-64=JB5&=RK?-E@:<*[-F"Y$@:;*?LT>KI;&_ +M6;4@H :<"[36V+J[^SFRIP#;-J#)&$Z'%[QN"P+/-U<PL+3'>[:AV[40*D=- +M1*&T>Y.9PP:<B[79J[N9Z;N1VF/ V[<'YW#66[;GFZ,RB41D($(N>JLHJ[B# +MZ)0R=E!S*Y6E2K 2%KMZN[\;.[U<&+=%M:T36[@2-KKRJ+*S!0>-BU(.++2N +M*UQ?FY=:ZKX>=\$1"[G:N\%^%5+F"8]X"\)')P<7O+JY2[\^AT0&_+I'F;D: +M.5<Q@+OS6Z4S?,)DN4?ME+@)O&L]NUBYY;F7Z<,7]SG,:+GSFIK;MK!U<,'8 +M.[@EG+Q^99X=99:(1\'68P<7;+Y8C+Z,B$2H2JU;NFMW<,'R6\8RW,1;3(3Z +MRW9@3$"M.%<+9GYQNK56=5,\=I?ARXNSE0>-*P/MRKI9G)EH'*->7+I9UVQZ +M<,B/J\AF7+_L)9(QJ&P+:Z[YQK.'/,*6',?<)#GTJ0 2NE:FW,E*I\<PW,. +M>G%S=LJ=;#4A(8UZS,-PS,3<E,K#!ZF"):%(.T/FP08O<<C&N\NQK'8NBFM' +MF[GK% ,WD&[0)B57_+F+/%-VO,U&R,TGZ\TP]P8M8*XEL@8M<&_YUK@<R<<# +M;+<V:[-S-T,GL6?_:P.5',.\+)!39ZM-E*:K>L??=1*35LU0J<2FZ<?:EIK> +MUEKXZV/\>W#K=!*I1M"OK,RS*F;?"'3:N'7T2%LGX6L$K<O8?,D^AXM %U#[ +M@M+_7,2#&-&JH\[)/-*DK,^TO+[#G$4G0<V+90/7O,3+_#G;QIJ3VYK,>Y*D +M-,70+,\E-%=?G,%-N[NY^LZ<1\@&MF%IMM-O+-/Y3(LNFJNRFZLG1,1)C=.' +MV+C$R<X#Z\YS?++&BL!KW-)*/="+=0.)C,\_/6_=W$0XQ;<L#=%*/=%S?<^P +M?-$-N,)&"]!XMF$@/=>B;->$K5TB^G+BF]@U\&QS7=%:?=>::29E@*N>356? +M+=8/;6I*K=.XY3!H_<"2R\G/7'!4K5PRL$=S=0,Q[=.//=2*B=3[U]>DC=.K +M8]8]?= 03-,I#<R@Z-H='='V;-9DG-F$37@PZ-!2S<+*)\\%/=M9;=O=:DR" +M-Y3"W-KQ[-N C5M2FMH:+(:M-]T<K:S*O=CD7=>#O=U_?,!FV=DDR=M'I]R6 +M3=Z";='RK4F<'>"@/>!??'7\@W6([=$\W;@XT-CQ3<#:I=O:%=Z<4V185LTX +M@-G:#>&M/3_M=-32NVL13=<,+M(;;K=])*',.&Z['>)PC=,W0,\87MO"O=I +M2) .^$]O[=<P+M?D'=S4B=#<)'A[?>#?/-7)+<\W,-XJU5%.C;SZE^)1+-V% +MAN :HH)/N+NW>397>/I)^4>%4S*>)67-<A)#N/[C5\!#)_MO+70/93=7>5& +M?N6'C=_5G4629MHR8Q(.[M\<WN*/FH=F,G>B!Q8D9Q(:[N4FS$WA1$I?#+ZH +M;.;*.G-'S$ F8>**KL6'B;$7*Z+-=@9I,![DZU4F0>-!/MQB-I3@JI@+2P8J +M4@:5ON=%9M"G;N.9S.FXOKQV;CV"<>@&_N39C,F!'H^<NK#8T<:D+@-=7NNA +MBT3->[&3N+!Z0#C^"VWUM>9^FM9"+ES [+P+.P:"$>L*MFZT7K?;?NM$G>Z2 +M+KP@(>X*P6_ 3M)RS.CYBZ7K/KUJ ;=9%G'Q/M,$]^Q$27#-9AEDL 9A8.BD +M/@.)SNR+/FM83NP07XK-9O (?V0XU^];?;.&78IA.]I'QW#CH>_6/@.F;NZH +M;L.<O,+M-$Z92_#C ;\6#^0F;^N!KNZ,.;6[3D O?^A7CO&:;540JIBX* ;W +MGI(^$7/5WCWUM>PSW^P)G>O0_H(PQ[*'?GKF_=2,[%>KO/%1F^!V-Q[@7O7P +M[>=J/9.KJ9@EQ/(>KWQY@")5W]_._=^9E:LV[Y@[[F($3R)5W^=Q_^?<KIJ, +M&?%8#H%_:^DTL/!-W_#>>O8/[YH)3O#3?LRD3@.8SO":/C^-CO8%>KF2K!.% +MO^<O[?.WG5F9;^0)R]IKKY1(@;I91@,RW\<G__>%NJ1JV9G-1C>L;^VD)/IR +M+_M<7^<N?G CZ/:3S_2P3_/S4\<"[L$)+A?(?F1>>/50?L;HSOBD)+N@B3AS +"H@!< + +end diff --git a/language/hebrew/hebtex/editors/unix/readme b/language/hebrew/hebtex/editors/unix/readme new file mode 100644 index 0000000000..6f717a752c --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/readme @@ -0,0 +1,5 @@ +hemacs is the Hebrew (right-to-left as well as left-to-right) +version of emacs. +vim is a modified version of vi, working in Hebrew, right-to-left +as well as left-to-right. +vi.iv is another right-to-left version of vi. diff --git a/language/hebrew/hebtex/editors/unix/vi.iv/readme b/language/hebrew/hebtex/editors/unix/vi.iv/readme new file mode 100644 index 0000000000..2311d2ca3b --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/vi.iv/readme @@ -0,0 +1,19 @@ +vi.iv is a modified version of vi, including right-to-left +editing. vi.iv includes all vi commands as well as the +additional following commands: + +set the primary direction set rl for right-to-left + set lr for left-to-right + +switch temporarily from the primary direction to the secondary direction + ctrl-x, when in insert mode + + There are a few known bugs: when typing too fast, the wrong + characters sometimes are displayed; searching and replacing are + problematic (but are supposed to work); sometimes you have to switch + to command mode in order to see your last modifications to the file. + +vi.iv is maintained by the Technion CS system engineers. +Questions can be sent to Yael Dubinski -- yael@cs.technion.ac.il + +Rama -- rama@cc.huji.ac.il diff --git a/language/hebrew/hebtex/editors/unix/vi.iv/vi.iv.man b/language/hebrew/hebtex/editors/unix/vi.iv/vi.iv.man new file mode 100644 index 0000000000..c4167357d3 --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/vi.iv/vi.iv.man @@ -0,0 +1,1845 @@ + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + +NAME + vi.iv -bi-directional full-screen text editor based on vi + +SYNOPSIS + vi.iv [ -S ] [ -MS ] [ -LR|RL ] [ _v_i _o_p_t_i_o_n_s ] _n_a_m_e ... + +NOTE: + This manual is fairly long, since it describes some of the + concepts of bi-directional editing that _v_i._i_v is based on. + If this is your first time editing time-ordered bi- + directional text, it is probably worthwhile to read the + DESCRIPTION section. But if you want to skip that and get + more concise information about how ro run _v_i._i_v and the + commands it has that _v_i (_1) does not have, you'll want to + read the following sections: OPTIONS & COMMANDS, and THE + TECHNION COMPUTER SCIENCE FACULTY INSTALLATION. If you are + responsible for maintaining _v_i._i_v , then you may also want + to read TERMCAP FIELDS. + +DESCRIPTION + _v_i._i_v is a bi-directional full screen text editor based on + _v_i(1). _v_i._i_v works just like _v_i except for being able to + handle bi-directional text, for example containing English + and Hebrew. _v_i._i_v is not limited to terminals supporting + Hebrew, and can likewise work with all alphabets found on + the terminal. Therefore, in order to not be restricted to + these particular languages, we will speak in the abstract + about a language LR, written from left to right, and about a + language RL, written from right to left. The language LR + _i_s, however, written with the Latin alphabet, the alphabet + of the ASCII codes. The lanuage RL can be Arabic, Hebrew, + etc., although the examples in this manual page are in + Hebrew. + + The reader is assumed to be familiar with _v_i. _v_i._i_v has been + designed to appear as _v_i when only LR text is used and is + shown from left-to-right. Accordingly, the explanation given + here is focused on the difference between _v_i._i_v and _v_i and + explains most things in terms of the already well-known + behavior of _v_i. + + In the examples, file contents are always shown from left to + right and have a file-beginning symbol, -|, at the left end. + Screen appearances are marked by vertical bars on the left + and right sides serving as boundaries of an imaginary screen + whose width is 30 characters. Entered text or commands are + always shown from left to right with no special markings at + either end; each character shown is part of the input. In a + file contents or an input, <NEWL> represents a new-line + character or a carriage return respectively, ^ represents + pressing CONTROL simultaneously with the following + character, <ESC> represents the ESCAPE character, and [] + + + +Sun Release 4.1 Last change: February, 1990 1 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + represents a blank when emphasis is needed. + + Principles + + There are a few simple principles which form the bases for + both the design and effective use of _v_i._i_v. They guided the + design and implementation. A clear understanding of them by + the user allows him or her to deduce the expected behavior + of the system. + + Coding of Characters + + Normally, seven bits suffices for the encoding of the Latin + letters in what is called the ASCII code. Likewise, seven + bits suffices for the encoding each of the Hebrew and Arabic + alphabets. There exists standard encodings for each in which + the letters get codes allocated to letters in ASCII. Thus + the standard encodings for Hebrew and Arabic have the + digits, punctuation and control characters in the same + positions they have in ASCII. _v_i._i_v assumes an encoding for + the characters of the alphabets such that the characters of + the Latin alphabet, according to the ASCII code have the + eighth bit off. It assumes that the characters of the other + RL alphabet have the eighth bit on with the lower order + seven bits as in the standard code. Thus if RL is Hebrew, + _v_i._i_v is using the ESCII code. (See _e_s_c_i_i(7).) By storing + all characters with the proper setting of the eighth bit, + the file remembers the language for all characters, even the + digits, punctuation, and control characters, such as tabs. + In addition, most recently developed terminals, with the + ability to change alphabet on a character-by-character + basis, use the eighth bit to indicate in which language a + particular seven bit code is to be shown on the screen. + + Current View + + The first of these is the concept of a _v_i_e_w of a document. + At any time, _v_i._i_v has a window open on a portion of a + document. That portion is called the _c_u_r_r_e_n_t _v_i_e_w and is + what the user sees on the screen. + + View Direction + + At any time, the view that _v_i._i_v is presenting has a + direction, which is either left-to-right (LR) or right-to- + left (RL). In the following, X and Y are each left or right + but not the same. The impact of this direction is that if + it is from X to Y, then the beginning of a line is on the X + side of the screen, paragraph indentation takes place on the + X side of the screen, the end of a line is either at the Y + end of the screen or some place to the Y of the beginning, + etc. The view direction is superimposed on what ever text + + + +Sun Release 4.1 Last change: February, 1990 2 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + is being shown at the moment. As far as _v_i._i_v is concerned, + the view direction _n_o_t_h_i_n_g whatsoever to do with the + language of the document; although to the human user, using + an LR view for a Hebrew document or an RL view for an + English document will not feel too comfortable. Some + English text in an LR view is: + + |If I am not for myself, | + | then who is for me? | + |If I am only for myself, | + | then what am I? | + |If not now, then when? | + | -Pirke Avot | + + The same text in an RL view does not look quite as nice: + + |If I am not for myself, | + | then who is for me? | + |If I am only for myself, | + | then what am I? | + |If not now, then when? | + | -Pirke Avot | + + Actually, because English is an LR language, in an RL view, + it is being written backwards in order that it appear + written from left to right. Some Hebrew text in an RL view + is: + + |`m `io `pi li, ni li? | + |`m `pi lrvni, nd `pi? | + |`m l` rkyie, `inzi? | + | -txwi `aez | + + The same Hebrew text in an LR view does not look so nice: + + |`m `io `pi li, ni li? | + |`m `pi lrvni, nd `pi? | + |`m l` rkyie, `inzi? | + | -txwi `aez | + + Similarly, because Hebrew is an RL language, in an LR view, + it is being written backwards in order that it appear + written from right to left. + + The current view direction can be changed at any time by use + of a set command; + + :set rightleft + :set rl + :set nolr + :set noleftright + + + + +Sun Release 4.1 Last change: February, 1990 3 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + all set the view direction as RL, and + + :set leftright + :set lr + :set norl + :set norightleft + + all set the view direction as LR. Note then that any given + window of the file being edited can be viewed from either + direction, although not at the same time in a given _v_i._i_v + invocation. When started up, _v_i._i_v assumes an LR view + direction unless there is a contraindicating command in the + .exrc (_o_r ._e_x_r_i_v) file or in the EXINIT (_o_r _E_X_I_N_I_T_I_V) + variable. + + Time Order vs. Visual Order + + A given file can be kept in one of two orders: + + time order + The characters are stored in the order in which they + would be input if the text were typed from beginning to + end with no backspacing. It is the order in which the + characters are pronounced if the text is read aloud. + Thus if one considers the file as ordered from left to + right, then the letters of LR text appear to be in the + right order, but the letters of RL text appears to be + backwards. + + visual order + The characters are stored in the order in which they + appear on the screen. + + In order to clarify the difference between these two orders, + suppose that the view direction is from right to left, and + suppose one typed the letters + + yni[]uri + + with the intention of seeing + + |yni uri | + + on the screen. That intention implies that the view must be + RL, for the first word is on the right. With time order the + characters are stored in the file in the following order: + + -|yni[]uri + + With visual order the characters are stored in the file in + the following order: + + + + +Sun Release 4.1 Last change: February, 1990 4 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + -| uri[]iny + + + If, on the other hand, the view direction were LR, then the + same input would appear as + + |yni uri | + + on the screen. With time order, the characters are stored + in the file in the same order as for the RL view example: + + -|yni[]uri + + However, with visual order the characters are stored in the + file in the following order: + + -|iny[]uri + + Note that in all of the above examples, in order for the + space to end up between the two words, the space has to be + entered in the language whose direction is the same as that + of the view. + + Thus, time order is dependent only on the order of input and + is independent of the viewing order. Visual order is + dependent on the order of input and on the viewing order. + + Screen Appearance + + While the contents of files are kept in time order, the + screen appearance of those contents are in the order in + which a human being wants to see the characters. In this + order, all the text on one line is read before moving on to + the next, each language is read in its own natural + direction, and the major flow of each line is according to + the natural direction of the document's main language. + Because the main language of a document is somewhat + arbitrary and depends on a human choice which can be + indpendent of the contents, _v_i._i_v simply considers the + current view direction as defining for that moment a main + language whose direction is equal to the view direction. + + The screen appearance of any view is a function of the + current view direction and the language of the individual + characters, i.e., the state of their eighth bits. While the + actual editor cannot use exactly the following algorithm + (because it is trying to avoid to have to redraw whole + lines), the ultimate expected appearance of a view can be + understood in terms of the following line-by-line algorithm: + + for each line in the view do + if the current view direction is LR then + + + +Sun Release 4.1 Last change: February, 1990 5 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + rotate each contiguous string of RL text about its own center axis + else (the current view direction is RL) + rotate the whole line about its center axis; + rotate each contiguous string of LR text about its own center axis + fi + od + + + As an example, consider the following three-line file + contents: + + -|de` `nx "Hello there Uri + -|and Dan. How are you + -|today?" l`exi ecpi`l + + If the current view direction is LR, then the appearance of + the view is: + + |de` `nx "Hello there Uri | + |and Dan. How are you | + |today?" l`exi ecpi`l | + + However, if the current view direction is RL, then the + appearance of the view is: + + |de` `nx "Hello there Uri | + |and Dan. How are you | + |today?" l`exi ecpi`l | + + + It is interesting that the formatting system used to format + this manual, _d_i_t_r_o_f_f/_f_f_o_r_t_i_d, a bi-directional version of + _d_i_t_r_o_f_f expects its input in time order and uses the same + line-by-line algorithm to reorganize the mixed langauge text + on each line so that the text in each language is printed in + its own natural direction. Hence, in order to arrange that + the various screen displays were printed correctly it + sufficed to give to the formatter only the file contents. In + order that file contents not get reversed by the formatter, + the same Hebrew font was mounted in two different positions, + only one of these positions was specified to be RL, and the + file examples were prepared with its Hebrew in the LR + position of the font. + + Shef Format + + The combination of ESCII code and time order is called _s_h_e_f + _f_o_r_m_a_t. _v_i._i_v's default assumption is that the file is in + shef format. The editor _v_i_h(l), however, uses the following + format: + + (1) Visual order (going from right to left) + + + +Sun Release 4.1 Last change: February, 1990 6 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + (2) The coding follows ASCII except: + + (a) The codes normally assigned to the lower case + letters (& the grave accent, "`") represent + the Hebrew characters + + (b) The lower case letters (& "`") are + represented by by their normal ASCII codes + with the eighth bit set + + _V_i._i_v can be invoked with the -S _o_p_t_i_o_n _t_o _o_p_e_r_a_t_e _u_n_d_e_r + _E_S_C_I_I _w_i_t_h _v_i_s_u_a_l _o_r_d_e_r. _A_d_d_i_t_i_o_n_a_l_l_y, _i_f _a_f_t_e_r _i_n_v_o_k_i_n_g + _v_i._i_v, _i_t _i_s _d_i_s_c_o_v_e_r_e_d _t_h_a_t _t_h_e _f_i_l_e _l_o_o_k_s _s_t_r_a_n_g_e, _o_n_e _c_a_n + _c_a_u_s_e _v_i._i_v _t_o _o_p_e_r_a_t_e _i_n _v_i_s_u_a_l _o_r_d_e_r _b_y _u_t_t_e_r_i_n_g: + + :_s_e_t _n_o_s_h_e_f_o_r_m_a_t + + _N_o_t_e _t_h_a_t _t_h_e _o_r_d_e_r _o_f _s_t_o_r_a_g_e _o_f _t_h_e _f_i_l_e _i_s _a _p_e_r_m_a_n_e_n_t + _p_r_o_p_e_r_t_y _o_f _t_h_e _f_i_l_e _a_n_d _v_i._i_v _w_i_l_l _n_o_t _c_o_n_v_e_r_t _t_h_e _f_i_l_e + _f_r_o_m _o_n_e _o_r_d_e_r _t_o _a_n_o_t_h_e_r. _T_h_e_r_e _a_r_e _o_t_h_e_r _p_r_o_g_r_a_m_s, _s_u_c_h + _a_s _s_h_e_f_f(_l), _f_o_r _t_h_a_t _p_u_r_p_o_s_e. + + _C_u_r_r_e_n_t _L_a_n_g_u_a_g_e _o_f _I_n_p_u_t + + The next important concept is that of the current language + of input. The current language of input is either LR or RL. + It governs how the keystrokes are interpreted, what + character appears on the screen and what goes into the file. + Once in the file, the language of a character does _n_o_t + change even if the current language changes. If the current + language is LR, then the standard qwerty keyboard is assumed + and the generated ASCII seven-bit codes are stored with the + eighth bit off. If the current language is RL, then the + standard keyboard arrangement for RL is assumed, and the + generated seven-bit codes are stored with the eighth bit on; + in some cases, the keyboard provides the full eight-bit + codes, and in some cases only seven bits comes from the + keyboard and the on eighth bit must provided by the + software. The termcap for each terminal describes which + kind it is and describes what operations the terminal is + capable of doing; there is more on termcaps later. + + The command for switching the current language of input is + ^x. As the user indicates a desire to switch by issuing the + switching command, _v_i._i_v tells the terminal to switch mode + if the current termcap says that the terminal has a + software-issueable command to do so. If the terminal does + not have such a command, then the user is told by means of a + highlighted bottom-line message to manually flip the + terminal's mode; of course, if the user fails to do so, the + results are weird! + + + + +Sun Release 4.1 Last change: February, 1990 7 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + There is a slight problem with the character chosen to + indicate a change of input language. Many users use ^x as + the line killing command by having told the shell + + stty kill ^x + + As a result giving ^x during input causes erasing of the + input line rather than a change to the input language; _v_i._i_v + never gets to see the ^x _s_i_n_c_e _t_h_e _t_t_y _d_r_i_v_e_r _h_a_s _s_w_a_l_l_o_w_e_d + _i_t _t_o_g_e_t_h_e_r _w_i_t_h _t_h_e _w_h_o_l_e _l_i_n_e _o_f _i_n_p_u_t. _A_s _v_i _h_a_s _g_i_v_e_n _a + _m_e_a_n_i_n_g _t_o _a_l_m_o_s_t _e_v_e_r_y _p_o_s_s_i_b_l_e _c_h_a_r_a_c_t_e_r _g_e_n_e_r_a_b_l_e _f_r_o_m + _t_h_e _k_e_y_b_o_a_r_d, _t_h_e_r_e _w_e_r_e _n_o_t _t_o_o _m_a_n_y _c_h_o_i_c_e_s _o_f _c_h_a_r_a_c_t_e_r_s + _t_o _u_s_e _a_s _t_h_e _l_a_n_g_u_a_g_e _c_h_a_n_g_e _i_n_d_i_c_a_t_i_o_n. _T_h_e _c_h_a_r_a_c_t_e_r _h_a_d + _t_o _b_e _s_o_m_e_t_h_i_n_g _t_h_a_t _i_s _n_o_t _l_i_k_e_l_y _t_o _b_e _p_u_t _i_n_t_o _a _f_i_l_e; _i_f + _i_t _w_e_r_e, _t_h_e_n _t_h_e _u_s_e_r _w_o_u_l_d _h_a_v_e _t_o _e_s_c_a_p_e _i_t _e_a_c_h _t_i_m_e _i_t + _w_o_u_l_d _b_e _p_u_t _i_n_t_o _t_h_e _f_i_l_e _r_a_t_h_e_r _t_h_a_n _b_e _o_b_e_y_e_d. _T_h_u_s _i_t + _h_a_d _t_o _b_e _s_o_m_e _C_O_N_T_R_O_L _c_h_a_r_a_c_t_e_r _t_h_a_t _d_i_d _n_o_t _h_a_v_e _a_n_o_t_h_e_r + _m_e_a_n_i_n_g. _G_e_n_e_r_a_l_l_y, _a _u_s_e_r_s _u_s_e_s _e_i_t_h_e_r _o_f ^_x _o_r ^_u _a_s _a + _s_i_g_n_a_l _t_o _t_h_e _t_t_y _d_r_i_v_e_r _b_u_t _n_o_t _b_o_t_h. _T_h_e _l_a_t_t_e_r _i_s _u_s_e_d + _m_o_r_e _o_f_t_e_n _a_n_d _i_s _u_s_e_d _a_s _t_h_e _l_i_n_e _k_i_l_l_e_r. _T_h_e_r_e_f_o_r_e, _i_t _w_a_s + _d_e_c_i_d_e_d _t_o _u_s_e _t_h_e _f_o_r_m_e_r _a_s _t_h_e _l_a_n_g_u_a_g_e _c_h_a_n_g_e _i_n_d_i_c_a_t_i_o_n + _a_n_d _t_o _m_a_k_e _w_h_i_c_h _c_h_a_r_a_c_t_e_r _t_h_a_t _i_s _u_s_e_d _a_s _t_h_e _i_n_d_i_c_a_t_i_o_n + _s_e_t_t_a_b_l_e _w_i_t_h: + + :_s_e_t _c_h_a_n_g_e_l_a_n_g=_n_e_w-_c_h_a_r_a_c_t_e_r + + _T_h_e _s_e_c_o_n_d _a_u_t_h_o_r _u_s_e_s ^_x _a_s _t_h_e _l_i_n_e _k_i_l_l_e_r _a_n_d _d_o_e_s + + :_s_e_t _c_h_a_n_g_e_l_a_n_g=^_v^_u + + _t_o _s_e_t _t_h_e _l_a_n_g_u_a_g_e _c_h_a_n_g_e _i_n_d_i_c_a_t_o_r _t_o ^_u. _I_n _t_h_e + _s_u_b_s_e_q_u_e_n_t _d_i_s_c_u_s_s_i_o_n, ^_x _i_s _u_s_e_d _t_o _d_e_n_o_t_e _t_h_e _l_a_n_g_u_a_g_e + _c_h_a_n_g_e _i_n_d_i_c_a_t_o_r _w_h_a_t_e_v_e_r _i_t _m_a_y _b_e. + + The following begins a discussion of the effect of the + commands. For each command, its effect depends on the + current constellation of view direction and current language + and takes into account the exigencies and implications of + preservation of time order. + + Modes + + There are three modes for which it is important to know the + current language and view direction direction, namely insert + mode, command mode, and pattern/substitute mode. Actually, + _v_i considers there to be only two modes, insert mode and + command mode, with patterns and substitutions being given in + command mode. _v_i._i_v treats patterns and substitutions + slightly different from other commands; hence, it is + convenient to them as being in a separate mode. + + + + + +Sun Release 4.1 Last change: February, 1990 8 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + Cursor + + Before considering the details of each mode, it is necessary + to explain the rules concerning the cursor's position. In + command and pattern/substitute modes, the cursor is + positioned over the currently considered character, namely + the one to which the next command will apply. The cursor + movement commands work relative to the screen rather than + relative to the file contents. For example, hitting the left + arrow key causes the cursor to move to the left on the + screen even across a language change boundary; the cursor + does not just move backwards in the file with attendant + jumps when crossing language change boundaries. It was + decided that equating cursor movement with movement within + the file would be too confusing to the user. It is far + easier for _v_i._i_v to map from the current cursor position to + the right position in the file than for the user to map from + the right position in the file to the corresponding position + on the screen. + + For occasions in which movemement withing the file is + desired, there are commands for moving forward and backwards + in the file. Specifically, the v command is to move the + cursor to the position of the next character in the file. + The command V moves the cursor to the position of the + previous character in the file. These commands are useful + for dispelling confusion about the order of contents of the + file. One simply moves the cursor to the beginning of the + line, according to the current view direction, types v, and + watches where the cursor goes. + + In insert mode, the cursor is always at the screen position + that will receive the next character. Where this is relative + to the previously entered character depends on the current + language and the current view direction. After ESCAPEing + from the insert mode, the cursor will move to be at the + character after the last inserted character relative to the + current view direction. + + Insert Mode + + The current language affects what is going into the file + during insert mode. As mentioned, if the current language is + LR, then the input is interpreted as coming from the + standard Latin qwerty keyboard and the characters go into + the file with the eighth bit off. If the current language is + RL, then the input is interpreted as coming from the + standard RL keyboard and the characters go into the file + with the eighth bit on. + + The current language setting is global over the insert mode + sessions. That is, if one exits and then re-enters insert + + + +Sun Release 4.1 Last change: February, 1990 9 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + mode without having issued one of the language changing + commands, then the current language after re-entry is the + same as before exit. + + In insert mode, the current direction determines where the + cursor starts after each new line and in which direction it + moves. If the direction is LR, then the cursor starts at the + left end and moves to the right. If the current direction is + RL, then the cursor starts at the right end and moves to the + left. + + In an LR view direction, the a command moves the cursor to + the right of the current position to designate the position + to receive the first inserted character. The i command moves + the cursor to the left of the current position to designate + the position to receive the first inserted character. + Thereafter, as mentioned, the cursor moves or stays to be at + the position to receive the next inserted character. Thus, + if the current language is LR, the cursor moves to the + right, and if the current language is RL, the cursor stays + in the same position; in either case the text to the right + of the cursor slides to the right. The rules for an RL view + may be obtained by opposing each of left and right and R and + L in the above. + + Below are some examples of insertions. In each case, three + versions of the the state of the line being edited are shown + after typing each character of the insertion. The three + versions are the file contents, the LR view, and the RL + view. In each screen view, the position of the cursor is + marked with an underscore. For each step, the three versions + occupies three consecutive lines, with the file contents to + the far left, the LR view in the center, and the RL view to + the far right. Between the three lines for each step is the + next input character centered all by itself in the line. + This scheme of showing the successive states during the + input of an operation is followed for all the examples shown + in the remainder of this manual. + + The initial state of the first example is: + + -|He said "" to Dan. + |He said "_" to Dan. | + |He said ""_ to Dan. | + + Now, suppose that the current language for input is RL, and + the input is: + + aylem<ESC> + + that is, to append ylem after the opening LR quote. The + states are: + + + +Sun Release 4.1 Last change: February, 1990 10 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + a + -|He said "" to Dan. + |He said ""_ to Dan. | + |He said "_" to Dan. | + + y + -|He said "y" to Dan. + |He said "y_" to Dan. | + |He said "_y" to Dan. | + + l + -|He said "yl" to Dan. + |He said "yl_" to Dan. | + |He said "_yl" to Dan. | + + e + -|He said "yle" to Dan. + |He said "yle_" to Dan. | + |He said "_yle" to Dan. | + + m + -|He said "ylem" to Dan. + |He said "ylem_" to Dan. | + |He said "_ylem" to Dan. | + + <ESC> + -|He said "ylem" to Dan. + |He said "y_lem" to Dan. | + |He said "ylem_" to Dan. | + + Note that when the view direction runs counter to the normal + direction of most of the text, the results are somewhat + surprising. The RL views of the English sentence above were + strange, especially after the Hebrew letters were + introduced. + + The initial state of the second example is: + + -|de` `nx "" l`exi + |de` `nx ""_ l`exi | + |de` `nx "_" l`exi | + + The typed input is + + aHello<ESC> + + The subsequent states are: + + a + -|de` `nx "" l`exi + |de` `nx "_" l`exi | + |de` `nx ""_ l`exi | + + + +Sun Release 4.1 Last change: February, 1990 11 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + H + -|de` `nx "H" l`exi + |de` `nx "_H" l`exi | + |de` `nx "H_" l`exi | + + e + -|de` `nx "He" l`exi + |de` `nx "_He" l`exi | + |de` `nx "He_" l`exi | + + l + -|de` `nx "Hel" l`exi + |de` `nx "_Hel" l`exi | + |de` `nx "Hel_" l`exi | + + l + -|de` `nx "Hell" l`exi + |de` `nx "_Hell" l`exi | + |de` `nx "Hell_" l`exi + + o + -|de` `nx "Hello" l`exi + |de` `nx "_Hello" l`exi | + |de` `nx "Hello_" l`exi | + + <ESC> + -|de` `nx "Hello" l`exi + |de` `nx "Hello_" l`exi | + |de` `nx "H_ello" l`exi | + + + In the case of an overwriting session of insert mode, from + the issuance of an R command, the cursor moves in the + current language's direction and stays over the next + character to be changed. + + Giving a ^x during insert mode is equivalent to ESCAPEing to + end the current insertion or overwriting, issuing ^x during + command mode, and entering an append insertion in the other + language at the point at which the cursor came to rest upon + the ESCAPE. Note that if you were in an overwriting insert + mode before the language change, you are no longer in an + overwriting insert mode after the change. The reason for + this is that with the direction change that happens with a + language change, you would be overwriting what you had just + entered as an overwrite. + + Bi-lingual Characters + + There are a number of characters that are in both languages. + These are the digits, the punctuation symbols, and the space + and tab characters. These characters exist in both the lower + + + +Sun Release 4.1 Last change: February, 1990 12 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + and upper halves of the full eight-bit character set. The + two codes for any such character have exactly the same lower + order seven bits, and thus differ by exactly 128. When they + are typed, they will go into the file with the eighth bit + setting consistent with the current language direction. + + While the two codes for one of these characters are printed + the same way on the screen, they cause different behavior + under the rendering algorithm. As a result, the user that + cannot remember under which language one of these characters + is entered (It may not even have been entered by the same + user!) may be surprised by the screen appearance after + modifications and may not be able to predict the effects of + modifications. For example, exchanging the order of + inputting a space and changing langauge direction causes + different screen appearances. Suppose the view direction is + R-L. Suppose one has entered in time order an LR _t_r_o_f_f + command with an RL argument. The time-ordered file contents + are: + + -|.su_zwvix + + If the space between the u _a_n_d _t_h_e _z is in LR, then the + screen appearance of the line is: + + |.su_zwvix | + + If, however, the space is in RL, then the screen appearance + is: + + |.su_zwvix | + + As another example, again in an R-L view, the time-ordered + file contents + + -|dgaxd Jones & Sons + + appears as + + |dgaxd Jones & Sons | + + if the & _a_n_d _t_h_e _s_p_a_c_e_s _s_u_r_r_o_u_n_d_i_n_g _i_t _a_r_e _i_n _L_R, _b_u_t + _a_p_p_e_a_r_s _a_s + + |_d_g_a_x_d _J_o_n_e_s & _S_o_n_s | + + _i_f _t_h_e & and the spaces are in RL. + + In order to help the user not to get lost in these + circumstances, it was decided to have an option under which + _v_i._i_v would highlight the characters of the language whose + direction opposes that of the current view. This + + + +Sun Release 4.1 Last change: February, 1990 13 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + highlighting can be requested either from the invoking + command line by adding the -MS _o_p_t_i_o_n _o_r _f_r_o_m _w_i_t_h_i_n _v_i._i_v + _b_y _u_t_t_e_r_i_n_g _o_n_e _o_f: + + :_s_e_t _m_a_r_k_s_e_c_o_n_d_l_a_n_g + :_s_e_t _m_a_r_k_s_l + + _T_h_i_s _h_i_g_h_l_i_g_h_t_i_n_g _i_s _d_o_n_e _b_y _w_h_a_t _e_v_e_r _m_e_t_h_o_d _o_f + _h_i_g_h_l_i_g_h_t_i_n_g _i_s _o_f_f_e_r_e_d _b_y _t_h_e _c_u_r_r_e_n_t _t_e_r_m_i_n_a_l _a_s _i_n_d_i_c_a_t_e_d + _b_y _t_h_e _c_u_r_r_e_n_t _t_e_r_m_c_a_p. _W_i_t_h _a_n _u_n_d_e_r_l_i_n_i_n_g _h_i_g_h_l_i_g_h_t_i_n_g + _t_h_e _f_o_u_r _R-_L _v_i_e_w _e_x_a_m_p_l_e_s _a_b_o_v_e _w_o_u_l_d _a_p_p_e_a_r, _r_e_s_p_e_c_t_i_v_e_l_y, + _a_s: + + |.__s__u___z_w_v_i_x | + + |.__s__u_ _z_w_v_i_x | + + |_d_g_a_x_d _J__o__n__e__s__&___S__o__n__s_ | + + |_d_g_a_x_d _J__o__n__e__s_ & _S__o__n__s_ | + + + This feature should help the user keep track of numerals. + If one wants a numeral to appear in the normal order, it + must be entered either in L-R order as LR characters or in + R-L order as RL characters. The presence or lack of + underlining should remind the user which way the numerals + were entered. + + These bi-lingual characters cause a problem to users when + constructing search patterns. It is impossible, merely by + looking at a printed copy of text or by listening to someone + or one's mind pronounce some text, to know for sure under + which language one of these characters was entered into the + edited file. Therefore, it was decided to let any of these + characters match itself in either language. Because the + codes of the two languages' versions of one of these + characters differ only in the eighth bit, it was easy to + implement this modification to the search algorithm. Apart + from the eighth bit cleaning, this change was the only one + made to the editing command processor not directly for the + purpose of implementing a new feature. + + Numerals + + In some right-to-left languages, e.g., Hebrew, numerals are + written with the most significant digit on the left, i.e., + from left to right. For these RL languages, entering + numerals is problematic. If in RL language insertion mode, + if the digits are entered in the order pronounced, i.e., + most significant first, they will appear backwards on the + screen. One way to insure that the numerals appear in the + + + +Sun Release 4.1 Last change: February, 1990 14 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + normal order on the screen is to always switch language + direction, with ^x, just before and just after entering the + numeral, so that the numeral goes in as LR text. This way, + the time ordering of the digits is from most to least + significant. Another way, which is actually what Hebrew + typists do with Hebrew, right-to-left typewriters, is to + stay in the RL insertion mode and just enter the digits + backwards. This way, however, the time ordering of the + digits in the file is from least to most significant. Since + many Hebrew typewriters provide upper case Latin letters + with the shifted keys, the method of backwards entry is also + used by many Hebrew typist for entering short sequences of + upper case Latin letters (as opposed to changing typing + element and typing direction). + + Entering numerals and upper case Latin letters occurs often + enoough in entering Hebrew text, that it was decided to + provided a special treatment for them as an option obtained + by saying one of + + :set rlnumberuppercase + :set rlnu + + Under this option, whenever in RL insertion mode, each time + that a digit or an upper case character _C is entered, is is + as though ^x _w_e_r_e _e_n_t_e_r_e_d _j_u_s_t _b_e_f_o_r_e _t_h_e _C _t_o _b_r_i_n_g _v_i._i_v + _i_n_t_o _R_L _i_n_s_e_r_t_i_o_n _m_o_d_e. _v_i._i_v _s_t_a_y_s _i_n _t_h_e _R_L _i_n_s_e_r_t_i_o_n _m_o_d_e + _u_n_t_i_l _t_h_e _f_i_r_s_t _s_u_b_s_e_q_u_e_n_t _s_p_a_c_e, _t_a_b, _o_r ^_x _i_s _e_n_t_e_r_e_d. _A_t + _t_h_a_t _p_o_i_n_t, _v_i._i_v _r_e_t_u_r_n_s _t_o _R_L _e_n_t_r_y _m_o_d_e _a_n_d _a_c_c_e_p_t_s _t_h_e + _s_p_a_c_e _o_r _t_a_b _a_s _h_a_v_i_n_g _b_e_e_n _e_n_t_e_r_e_d _a_s _a_n _R_L _l_a_n_g_u_a_g_e + _c_h_a_r_a_c_t_e_r. + + Note that all characters entered under this automatically + entered LR insertio mode go into the file in time order, as + do _a_l_l characters, go into the file with the eighth bit off, + and are displayed on the screen from left to right. Note + also that one is not restricted to entering just digits or + upper case Latin letters; once the LR insertion mode is + entered, all characters in what would be considered one word + are going in as LR characters. Thus, one can enter, for + example, full arithmetic expressions, words of upper and + lower case Latin letters beginning with an upper case + letter, etc. It was simpler to implement the mode in this + manner than to restrict it to model the usage of a Hebrew + typewriter! + + Command Mode + + Commands are always given with an LR view and start off in + the LR language, regardless of what is the current situation + for the insert mode. This is because commands always begin + with Latin letters. The language switching commands can be + + + +Sun Release 4.1 Last change: February, 1990 15 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + issued during a command. The effect of such a change is + strictly local to the command or pattern/substitute. + + The implication of always being in the LR language when + starting a command is that if one exits a session of insert + mode that was under the RL language and then desires to + issue a command, one does not have to issue a language + change to get _v_i._i_v to believe that the input is in the LR + language; In command mode, in which one must be after an + escape from input mode, _v_i._i_v automatically puts the + terminal in LR mode if it can. If the terminal must be + manually flipped to change language, _v_i._i_v does not ask for + the manual flip; it simply translates the incoming character + codes so that pressing the correct key for a latin letter is + interpreted as that letter regardless of the actual code + emitted by the key. (This is the only place where the fact + that the terminal is a Hebrew as opposed to an Arabic + terminal is critical; the translation is language + dependent.) In either case, the user has nothing to do to + get the command accepted in the LR language, and in the + latter case he or she does not have the bother of manually + flipping the terminal for only one character. After the + command is done, the current direction and language reverts + to what it was before entering the command, so that the + behavior with respect to the surrounding sessions of insert + mode is as if one had not even given a command. The above + is slightly different if the first character of the command + is in fact / _o_r ?. Then, in _v_i._i_v, one enters what is called + pattern/substitute mode. + + Pattern/Substitute Mode + + Pattern and substitutes are always given with an LR view, + since they are really special cases of commands, which are + always given with an LR view. However, the current language + of a pattern is the language corresponding the view + direction of the last session of input mode. That is, if + the view direction of the last session of input mode was RL, + then the pattern starts off in the RL language. This choice + is consistent with the observation that if the view + direction of the last input is say, RL, then most characters + that are input are going to be in the RL language and the + most likely pattern that one is going to search for is also + going to be in the RL language. In any case, the language of + a pattern can be changed at any time during input of the + pattern by issuing a ^x. After the pattern matching and + substitution is done, the current direction and language + reverts to what it was before entering the + pattern/substitute, so that, again, the behavior with + respect to the surrounding sessions of insert mode is as if + one had not even given a command. + + + + +Sun Release 4.1 Last change: February, 1990 16 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + Metacharacters and Escapes + + In the pattern matching and substition subsystem, there are + a number of characters that have special meaning either + within patterns or within replacing text. For example, . in + a search pattern matches any single character, and & in a + replacement string causes interpolation of the string being + replaced. In order to obtain the non-special meanings of + these special characters, one may precede them with the _v_i + escape character, the backslash, \. Thus, \. in a search + pattern matches only ., and \& in a replacement string + causes interpolation of &. To get the backslash character + itself in a non-escaping use one simple doubles the + character, a` la \\). The problem with this simple escaping + scheme is that for some inexplicable reason, most Hebrew + terminals simply do not have the backslash key! Moreover, in + many of the switchable Latin-Hebrew terminals, when it is + Hebrew mode, the backslash key does not work. Thus, in + Hebrew mode, another character must be used. _v_i has assigned + a meaning to every non-alphanumeric character. Therefore, + there is no really convenient single character suited for + this function, which might not be used heavily for other + reasons, it was decided to make the so-called RL escape + character settable with any of the following commands: + + :set backslashRL=_c + :set bslRL=_c + + For example, to get ^ to be the RL escape character, one can + say + + :set backslashRL=^ + + The default RL backslash character is !. + + _D_e_t_a_i_l_s _o_f _S_o_m_e _C_o_m_m_a_n_d_s + + _P_a_t_t_e_r_n _M_a_t_c_h_i_n_g + + A pattern, entered in time order, is matched against the + contents of the file, stored in time order. This behavior, + while simple to explain, easy to implement, and easy to + apply, can produce surprising results. Suppose a line of + the file (shown left to right) is: + + -|`ababcdefghicde<NEWL> + + Were it on the screen, its LR and RL view appearances would + be: + + |`ababcdefghicde | + |`ababcdefghicde | + + + +Sun Release 4.1 Last change: February, 1990 17 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + The pattern + + /`ababc/ + + matches the first six characters of the line. However, those + six consecutive characters are not adjacent on the screen. + In any case the cursor ends up position at the first + character `. _F_o_r _t_h_e _a_i_d _o_f _t_h_e _r_e_a_d_e_r _o_f _t_h_i_s _m_a_n_u_a_l, _t_h_e + _m_a_t_c_h_e_d _c_h_a_r_a_c_t_e_r_s _a_r_e _m_a_r_k_e_d _w_i_t_h _a _h_y_p_h_e_n_s _u_n_d_e_r_n_e_a_t_h, _b_u_t + _t_h_e_s_e _h_y_p_h_e_n_s _d_o _n_o_t _a_p_p_e_a_r _o_n _t_h_e _s_c_r_e_e_n. + + |`__a_b_a_b_c_d_e_f_g_h_i_c_d_e | +8 ------ +9 |`__a_b_a_b_c_d_e_f_g_h_i_c_d_e | +8 --- --- + +9 + _S_u_b_s_t_i_t_u_t_i_o_n + + The real impact of this behavior shows up when one does a + substitution. The substitution follows the _v_i rules working + on the pattern, the substititution, and the file contents + _a_l_l _i_n _t_i_m_e _o_r_d_e_r. Under the same view direction and file + contents as above, + + :s/`ababc/fghjkl/ + + causes the following changes: + + -|fghjkldefghicde<NEWL> + |fghjkldefghicde | + |fghjkldefghicde | + + The underlined characters got changed. On the other hand, + + :s/`ababc/jklfgh/ + + causes the changes: + + -|jklfghdefghicde<NEWL> + |jklfghdefghicde | + |jklfghdefghicde | + + + While the pattern matching and substitution according to the + time-ordered characters in the file may be easy to describe + and, in fact, easy to implement, it may seem counter- + intuitive especially when the matched and changed portions + are not adjacent to each other on the screen. However, to + pattern match and thus substitute according to what appears + on the screen is fraught with a number of problems. + + + + +Sun Release 4.1 Last change: February, 1990 18 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + 1. Most of the time that one searches for a pattern it is + to find something that is _n_o_t currently visible on the + screen. In that case, searching according to appearance + is inappropriate and searching according to time- + ordered characters is really the only way that works. + Suppose that in a previous editing session the line, + + de` `nx "Hello there Uri and Dan. How are you today?" l`exi ecpi`l + + were entered into the file. Under a RL view direction, + assuming a screen width sufficiently large, it happens + appear as + + |de` `nx "Hello there Uri and Dan. How are you today?" l`exi ecpi`l | + + on the screen, with today? _a_d_j_a_c_e_n_t _t_o `_n_x ". Now + suppose that in this current session, it is desired to + bring this sentence into the window. Is not the user + more likely to remember that he or she typed something + beginning with + + de` `nx "Hello + + and thus the pattern should be typed + + /de` `nx "Hello/ + + than that after it was typed it looked like + + |de` `nx "Hello there Uri and Dan. How are you today?" l`exi ecpi`l | + + and thus the pattern should be something like + + /de` `nx "today?/ ? + + + 2. Searching by appearance contradicts the time-order + orientation of the entire rest of _v_i._i_v. Adopting + searching by appearance would just make the command + language of _v_i._i_v not self-consistent and thus more + complicated. + + 3. The search algorithm would have to construct the screen + appearance of each line in the file before it could + search in the line. This, of course, slows the search + down considerably and moreover requires significant + changes to the basic functional part of _v_i. Every + change to the functional part of _v_i increases the + danger that downward compatibility from _v_i._i_v to _v_i + will be lost. + + + + + +Sun Release 4.1 Last change: February, 1990 19 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + Thus searching according to time order is adopted. Indeed, + in all of the commands, some of the effects of adherence to + time order seem a bit surprising. However, in each case, a + similar argument for adopting pure time-order semantics can + be given. + + Deletion and Change Commands + + The apparent behavior of deletion is affected also. Suppose + the three versions of line of the file are + + -|`ab cde abc def ghi fgh<NEWL> + |`ab c_de abc def ghi fgh | + |`ab c_de abc def ghi fgh | + + and the cursor is positioned under the c. Now, suppose that + the command d2w is given with the intention of deleting two + words. Then the result is: + + -|`ab def ghi fgh<NEWL> + |`ab def ghi fgh | + |`ab def ghi fgh | + + Back up now to the situation before the deletion. Suppose + that the command + + c2wijkl jklm<ESC> + + is given. Then the portion that was deleted above is + actually changed. What is interesting is that this change is + happening in real time and progresses through the file in + time order. Below in four-line groups, are shown the file + state and screen appearance after each successive character + is typed replacing the two words by ijkl jklm. + + c2w + -|`ab cde abc def ghi fgh<NEWL> + |`ab c_de ab$ def ghi fgh | + |`ab c_de ab$ def ghi fgh | + + i + -|`ab ide abc def ghi fgh<NEWL> + |`ab id_e ab$ def ghi fgh | + |`ab id_e ab$ def ghi fgh | + + j + -|`ab ije abc def ghi fgh<NEWL> + |`ab ije_ ab$ def ghi fgh | + |`ab ije_ ab$ def ghi fgh | + + k + -|`ab ijk abc def ghi fgh<NEWL> + + + +Sun Release 4.1 Last change: February, 1990 20 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + |`ab ijk_ab$ def ghi fgh | + |`ab ijk_ab$ def ghi fgh | + + l + -|`ab ijklabc def ghi fgh<NEWL> + |`ab ijkla_b$ def ghi fgh | + |`ab ijkla_b$ def ghi fgh | + + [] + -|`ab ijkl bc def ghi fgh<NEWL> + |`ab ijkl b_$ def ghi fgh | + |`ab ijkl b_$ def ghi fgh | + + j + -|`ab ijkl jc def ghi fgh<NEWL> + |`ab ijkl j$_ def ghi fgh | + |`ab ijkl j$_ def ghi fgh | + + k + -|`ab ijkl jk def ghi fgh<NEWL> + |`ab ijkl jk_def ghi fgh | + |`ab ijkl jk_def ghi fgh | + + l + -|`ab ijkl jkl def ghi fgh<NEWL> + |`ab ijkl jkl_def ghi fgh | + |`ab ijkl jkl_def ghi fgh | + + m + -|`ab ijkl jklm def ghi fgh<NEWL> + |`ab ijkl jklm_def ghi fgh | + |`ab ijkl jklm_def ghi fgh | + + <ESC> + -|`ab ijkl jklm def ghi fgh<NEWL> + |`ab ijkl jklm_ def ghi fgh | + |`ab ijkl jklm_ def ghi fgh | + + + Space limitations prevent a more complete set of examples. + However, armed with the concepts of view direction, current + language, and time order, and the rules about cursor + position and the various modes, the reader should be able to + deduce the expected behavior of any _v_i._i_v command. + +OPTIONS & COMMANDS + Set Commands + + The following is a complete list of the :set commands + available in _v_i._i_v that are not available in _v_i. Note that + for every command + + + + +Sun Release 4.1 Last change: February, 1990 21 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + :set _X + + _o_f _t_y_p_e _t_o_g_g_l_e, _X _b_e_i_n_g _e_i_t_h_e_r _t_h_e _f_u_l_l _s_p_e_l_l_i_n_g _o_r _a_n + _a_b_b_r_e_v_i_a_t_i_o_n _n_o_t _b_e_g_i_n_n_i_n_g _w_i_t_h _n_o, _t_h_e_r_e _i_s _a _c_o_m_m_a_n_d + + :_s_e_t _n_o_X + + _t_o _s_e_t _t_h_e _t_o_g_g_l_e _t_h_e _o_t_h_e_r _w_a_y. + + _O_p_t_i_o_n _A_b_b_r_e_v. _T_y_p_e _D_e_f_a_u_l_t_M_e_a_n_i_n_g + _________________________________________________________________ +9 _r_i_g_h_t_l_e_f_t _r_l _t_o_g_g_l_e _n_o_r_l_c_h_a_n_g_e_s _t_h_e _v_i_e_w _o_f + _t_h_e _e_d_i_t_i_n_g _s_e_s_s_i_o_n _t_o + _R_L; _b_e_s_i_d_e_s _r_i_g_h_t + _j_u_s_t_i_f_y_i_n_g _a_l_l _l_i_n_e_s _a_n_d + _c_h_a_n_g_i_n_g _t_h_e _d_i_r_e_c_t_i_o_n _o_f + _c_u_r_s_o_r _m_o_v_e_m_e_n_t, _i_t _i_s + _a_r_r_a_n_g_e_d _t_h_a_t _t_h_e _n_e_x_t + _i_n_s_e_r_t _m_o_d_e _w_i_l_l _b_e _R_L; + _i_f _t_h_e _t_e_r_m_i_n_a_l _a_s + _d_e_s_c_r_i_b_e_d _b_y _t_h_e _t_e_r_m_c_a_p + _d_o_e_s _n_o_t _h_a_v_e _h_a_r_d_w_a_r_e + _s_u_p_p_o_r_t _f_o_r _R_L _v_i_e_w_s, + _p_r_o_c_e_s_s_i_n_g _i_s _s_l_o_w_e_d _d_o_w_n + _a_s _r_i_g_h_t-_t_o-_l_e_f_t + _o_p_e_r_a_t_i_o_n _i_s _s_i_m_u_l_a_t_e_d _b_y + _b_r_u_t_e _f_o_r_c_e _s_c_r_e_e_n + _r_e_d_r_a_w_i_n_g + + _l_e_f_t_r_i_g_h_t _l_r _t_o_g_g_l_e _l_r_r_l _m_e_a_n_s _n_o_l_r, _a_n_d _l_r + _m_e_a_n_s _n_o_r_l + + _s_h_e_f_o_r_m_a_t _s_f _t_o_g_g_l_e _s_f_u_s_e_d _t_o _i_n_d_i_c_a_t_e _t_h_e + _f_o_r_m_a_t _o_f _t_h_e _f_i_l_e _b_e_i_n_g + _e_d_i_t_e_d; _t_h_e _c_h_a_r_a_c_t_e_r_s _o_f + _a_n _s_f _f_i_l_e _a_r_e _s_t_o_r_e_d _i_n + _t_i_m_e _o_r_d_e_r; _t_h_e + _c_h_a_r_a_c_t_e_r_s _o_f _a _n_o_s_f _f_i_l_e + _a_r_e _s_t_o_r_e_d _i_n _v_i_s_u_a_l + _o_r_d_e_r; _n_o_s_f _f_i_l_e_s _a_r_e + _g_e_n_e_r_a_l_l_y _t_h_o_s_e _t_h_a_t _w_e_r_e + _c_r_e_a_t_e_d _o_r_i_g_i_n_a_l_l_y _w_i_t_h + _v_i_h(_1) + + _c_h_a_n_g_e_l_a_n_g _s_t_r_i_n_g ^_x_u_s_e_d _t_o _s_e_t _t_h_e + _c_h_a_r_a_c_t_e_r _t_h_a_t _i_n_d_i_c_a_t_e_s + _a _c_h_a_n_g_e _i_n _t_h_e _l_a_n_g_u_a_g_e + _a_n_d _d_i_r_e_c_t_i_o_n _o_f _i_n_s_e_r_t + _m_o_d_e_s + + _b_a_c_k_s_l_a_s_h_R_L _b_s_R_L _s_t_r_i_n_g !_u_s_e_d _t_o _s_e_t _t_h_e + _c_h_a_r_a_c_t_e_r _t_h_a_t _s_e_r_v_e_s _a_s + + + +Sun Release 4.1 Last change: February, 1990 22 + + +9 + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + _t_h_e _e_s_c_a_p_e _m_e_t_a_c_h_a_r_a_c_t_e_r + _i_n _p_a_t_t_e_r_n_s _a_n_d + _s_u_b_s_t_i_t_u_t_i_o_n_s + + _r_l_n_u_m_b_e_r_u_p_p_e_r_c_a_s_e _r_l_n_u _t_o_g_g_l_e _n_o_r_l_n_u_i_n_d_i_c_a_t_e_s _t_h_a_t + _d_u_r_i_n_g _R_L _i_n_s_e_r_t _m_o_d_e, + _e_n_t_r_y _o_f _a _d_i_g_i_t _o_r _u_p_p_e_r + _c_a_s_e _L_a_t_i_n _l_e_t_t_e_r _a_n_d _a_l_l + _c_h_a_r_a_c_t_e_r_s _u_p _t_o _b_u_t _n_o_t + _i_n_c_l_u_d_i_n_g _t_h_e _n_e_x_t _b_l_a_n_k + _o_r _t_a_b _i_s _d_o_n_e _i_n _L_R + _i_n_s_e_r_t _m_o_d_e; _t_h_i_s + _a_u_t_o_m_a_t_i_c _L_R _i_n_s_e_r_t _m_o_d_e + _i_s _a_l_s_o _e_x_i_t_e_d _b_y _e_n_t_r_y + _o_f _w_h_e_t_e_v_e_r _i_s _t_h_e + _l_a_n_g_u_a_g_e _c_h_a_n_g_e + _c_h_a_r_a_c_t_e_r, _e._g., ^_x + + _m_a_r_k_s_e_c_o_n_d_l_a_n_g _m_a_r_k_s_l _t_o_g_g_l_e _n_o_m_a_r_k_s_l_i_n_d_i_c_a_t_e_s _t_h_a_t + _a_l_l _t_e_x_t _i_n _t_h_e _c_u_r_r_e_n_t + _s_e_c_o_n_d_a_r_y _l_a_n_g_u_a_g_e _s_h_o_u_l_d + _b_e _m_a_r_k_e_d _b_y _w_h_a_t_e_v_e_r + _h_i_g_h_l_i_g_h_t_i_n_g _i_s _a_v_a_i_l_a_b_l_e + _a_c_c_o_r_d_i_n_g _t_o _t_h_e _t_e_r_m_c_a_p; + _t_h_e _s_e_c_o_n_d_a_r_y _l_a_n_g_u_a_g_e _i_s + _t_h_a_t _w_h_o_s_e _d_i_r_e_c_t_i_o_n _i_s + _o_p_p_o_s_i_t_e _t_h_a_t _o_f _t_h_e + _c_u_r_r_e_n_t _v_i_e_w + + _T_h_e_s_e :_s_e_t _c_o_m_m_a_n_d_s _c_a_n _b_e _g_i_v_e_n _a_l_s_o _i_n _t_h_e ._e_x_r_c (_o_r + ._e_x_r_c_i_v) _f_i_l_e _o_r _i_n _t_h_e _v_a_l_u_e _o_f _t_h_e _E_X_I_N_I_T (_o_r _E_X_I_N_I_T_I_V) + _s_h_e_l_l _v_a_r_i_a_b_l_e, _b_u_t _w_i_t_h_o_u_t _t_h_e _p_r_e_c_e_d_i_n_g _c_o_l_o_n, _t_o _c_a_u_s_e + _t_h_e_i_r _b_e_i_n_g _e_x_e_c_u_t_e_d _a_s _v_i._i_v _i_s _s_t_a_r_t_i_n_g _u_p. + + _O_t_h_e_r _C_o_m_m_a_n_d_s + + ^x _t_o_g_g_l_e_s _t_h_e _i_n_s_e_r_t_i_o_n _m_o_d_e _b_e_t_w_e_e_n _L_R & _R_L. _Y_o_u _c_a_n + _s_p_e_c_i_f_y _a_n_o_t_h_e_r _c_h_a_r_a_c_t_e_r _t_o _d_o _t_h_i_s _v_i_a _t_h_e :_s_e_t _c_h_a_n_g_e_l_a_n_g + command. + + v goes to the next character based on the order stored in + the file (as opposed to the order it is displayed on the + screen). V goes to the previous character. + + Command Line Options + + The _v_i._i_v command line options alluded to in the synopsis + are as follows. + + + + + + + +Sun Release 4.1 Last change: February, 1990 23 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + OptionMeaning + _________________________________________________________________ +9 -S _t_e_l_l_s _v_i._i_v _t_o _t_r_e_a_t _t_h_e _e_d_i_t_e_d _f_i_l_e _a_s _b_e_i_n_g _s_t_o_r_e_d _i_n + _v_i_s_u_a_l _o_r_d_e_r _i_n_s_t_e_a_d _o_f _t_i_m_e _o_r_d_e_r, _e._g., _a_s _h_a_v_i_n_g + _b_e_e_n _c_r_e_a_t_e_d _b_y _v_i_h(_1); _n_o_t_e _t_h_a_t _o_n_c_e _a _f_i_l_e _i_s _i_n _a_n_y + _p_a_r_t_i_c_u_l_a_r _o_r_d_e_r, _v_i._i_v _c_a_n_n_o_t _b_e _u_s_e_d _t_o _p_u_t _i_t _i_n _t_h_e + _o_t_h_e_r _o_r_d_e_r + + -_M_S _t_e_l_l_s _v_i._i_v _t_o _d_o :_s_e_t _m_a_r_k_s_l _a_s _i_t _s_t_a_r_t_s _u_p + + -_L_R _t_e_l_l_s _v_i._i_v _t_o _d_o :_s_e_t _l_r _a_s _i_t _s_t_a_r_t_s _u_p + + -_R_L _t_e_l_l_s _v_i._i_v _t_o _d_o :_s_e_t _r_l _a_s _i_t _s_t_a_r_t_s _u_p + + _C_l_e_a_r_l_y, -_L_R _a_n_d -_R_L _a_r_e _m_u_t_u_a_l_l_y _e_x_c_l_u_s_i_v_e, _a_n_d _t_h_e _l_a_s_t _o_f + _t_h_e_s_e _t_h_a_t _a_p_p_e_a_r_s _i_n _t_h_e _c_o_m_m_a_n_d _l_i_n_e _i_s _t_h_e _o_n_e _w_h_o_s_e + _e_f_f_e_c_t _i_s _f_i_n_a_l_l_y _f_e_l_t _a_s _t_h_e _e_d_i_t_i_n_g _s_e_s_s_i_o_n _b_e_g_i_n_s. + +THE TECHNION COMPUTER SCIENCE FACULTY INSTALLATION + This section deals with information specific to the + installation of _v_i._i_v at the Computer Science Faculty of the + Technion. + + Environment + + Currently, this installation of _v_i._i_v uses its own private + _t_e_r_m_c_a_p(5) file (see the FILES section below). Thus, it + does not matter what the TERMCAP environment variable is set + to, or even if it is set at all. This might change in future + versions. + + _V_i._i_v uses the TERMIV environment variable to determine + which entry to use; current possible values (as of 24/04/90) + are: + + _v_t_1_0_0_i_v DEC vt100-compatible terminal + _v_i_1_0_0_i_v Visual terminal + _s_u_n_i_v Sun terminal (via _v_t_h_t_o_o_l(l) or _h_v_t_1_0_0(l)) + + You should check the _t_e_r_m_c_a_p(5) file that _v_i._i_v uses for the + most up-to-date list of terminal types (see the FILES + section for which _t_e_r_m_c_a_p(5) file is used). + + If TERMIV is not set, _v_i._i_v will attempt to set it based on + the current value of TERM. However, this will not work on a + Sun screen, as explained below. This automatic setting of + TERMIV might change or be deleted in future versions. + + Running vi.iv on a Sun Terminal + + +9 + + +Sun Release 4.1 Last change: February, 1990 24 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + First, you start up a windowing system (e.g., _S_u_n_V_i_e_w or _X). + Then, you must run a terminal emulator that can display both + Hebrew (or whichever right-to-light language that you want) + & English. Under _S_u_n_V_i_e_w, you can run _v_t_h_t_o_o_l(l); under _X, + you can run _h_v_t_1_0_0(l). See the manuals for these commands + for more information. + + When you run _v_i._i_v via _v_t_h_t_o_o_l(l), the mouse-driven arrow + keys will work, but the keyboard arrow keys will not. You + can, however, make the keyboard arrow keys work with the + following map commands: + + map <ESC>[A k + map <ESC>[B j + map <ESC>[D h + map <ESC>[C l + + You enter the escape character (<ESC>) by typing ^V, then + <ESC>. It will be echoed as ^[. + + Startup Commands + + _V_i._i_v uses the file ._e_x_r_c and the environment variable + EXINIT in the same way & the same precedence as _v_i(1), + except: + + (1) If there is a file named ._e_x_r_c_i_v, it will take + precedence over ._e_x_r_c. + + (2) If there is an environment variable named + EXINITIV, it will take precedence over EXINIT. + This scheme allows one to have separate startup commands for + _s_h_e_f(5) files if desired, or to use the same startup + commands for both pure _a_s_c_i_i(5) and _s_h_e_f(5) files. + + Printing This Manual + + To print this manual, first copy the file + /_u_s_r/_m_a_n/_m_a_n_l/_v_i._i_v._l to your directory, then type the + command + + ditroff -FOF -P_p_r_i_n_t_e_r vi.iv.l + + However, please do so sparingly. This is a long manual + (more than 17 pages!). Also, please remember to delete your + local copy of the manual when done in order to save disk + space. + +TERMCAP FIELDS + In addition to the standard _t_e_r_m_c_a_p(5) fields used by _v_i(1), + _v_i._i_v uses new termcap fields for its Hebrew capabilities. + These are listed below. They all represent strings that are + + + +Sun Release 4.1 Last change: February, 1990 25 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + sent to the terminal to control actions. + Field Description +8 _____ ___________________________________________________ + _e_g Change to left-to-right cursor motion + _h_e Change to right-to-left cursor motion + _h_n Hebrew character set on + _h_f Hebrew character set off (i.e., English characters) + + Note that some of these field names are used by _v_i_h(l) for + different functions, so that you cannot use the same termcap + entry for both editors. + +FILES + /usr/local/lib/vi.iv/termcap private terminal capabilities database + +SEE ALSO + _e_x(1), _v_i(1), _e_d_i_t(1), Vi Quick Reference card, An + Introduction to Display Editing with Vi by William Joy. + + _v_i._i_v, a Bi-directional Version of the _v_i Full-Screen + Editor, by Uri Habusha and Daniel M. Berry. + + _e_s_c_i_i(7), _s_h_e_f(5), _s_h_e_f_f(l), _v_t_h_t_o_o_l(l), _h_v_t_1_0_0(l), + _t_e_r_m_c_a_p(5). + +AUTHOR + William Joy wrote _v_i + Mark Horton added macros to _v_i's _v_i_s_u_a_l _m_o_d_e. + _U_r_i _H_a_b_u_s_h_a _m_a_d_e _v_i bi-directional to become _v_i._i_v. + Yael Dubinsky & Haim Roman installed _v_i._i_v on the Computer + Science Department's Sun-4. + +BUGS + The following are bugs of _v_i._i_v: + + The 'c' & 's' commands reverse the order of secondary + language strings (e.g., if you are viewing in RL mode, it + reverses the LR strings). Worse, you might not see this + effect until you type ^L. It is suggested that first you + delete, then insert (or append). + + When you replace a line by the cc command, _v_i._i_v inserts + another line from somewhere else in the file after the + cursor. This extra text remains even after you type ^L. + _T_h_e _w_a_y _a_r_o_u_n_d _t_h_i_s _i_s _t_o _g_o _t_o _t_h_e _f_i_r_s_t _c_h_a_r_a_c_t_e_r _i_n _t_h_e + _l_i_n_e _a_n_d _d_o _c$. + + When you enter an RL string to search for, _v_i._i_v acts as if + _r_l_n_u is set, whether or not it really is. + + When you type :quit when you haven't saved your edits, _v_i._i_v + re-displays the screen contents. When in LR view, this is + OK. But when in RL view, it displays the contents in LR + + + +Sun Release 4.1 Last change: February, 1990 26 + + +9 + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + view, without erasing the current display, resulting in a + mess. However, ^L _t_a_k_e_s _c_a_r_e _o_f _t_h_i_s. + + When doing the I _v_i_s_u_a_l-_m_o_d_e _c_o_m_m_a_n_d, _m_a_k_e _s_u_r_e _t_h_a_t _t_h_e + _i_n_s_e_r_t _m_o_d_e _i_s _t_h_e _s_a_m_e _a_s _t_h_e _v_i_e_w. _I_f _n_o_t, _t_h_e _i_n_s_e_r_t _m_a_y + _s_t_a_r_t _a_t _t_h_e _s_e_c_o_n_d column of the line. + + Tabs at the beginning of the line are not always properly + handled during insert, especially if you delete them or type + ^D. However, typing <ESC> or ^L will restore the correct + display. + + You cannot use the same termcap entry for both _v_i_h(l) and + _v_i._i_v. + + When you switch to line-mode (Q command), the : prompt does + not appear. + + The text in the command line at the bottom of the screen + sometimes rolls up into the main text area of the screen. + ^L removes it. + + The delete to beginning of line command in insert mode (^U) + only deletes as far as where the text changes language (if + it does in the current line). + + + The following bugs are all inherited from _v_i and are kept + because they have become features already: + + Software tabs using ^T work only immediately after the + _a_u_t_o_i_n_d_e_n_t. + + Left and right shifts on intelligent terminals don't make + use of insert and delete character operations in the + terminal. + + The _w_r_a_p_m_a_r_g_i_n option can be fooled since it looks at output + columns when blanks are typed. If a long word passes + through the margin and onto the next line without a break, + then the line won't be broken. + + Insert/delete within a line can be slow if tabs are present + on intelligent terminals, since the terminals need help in + doing this correctly. + + Saving text on deletes in the named buffers is somewhat + inefficient. + + The _s_o_u_r_c_e command does not work when executed as :source; + there is no way to use the :append, :change, and :insert + commands, since it is not possible to give more than one + + + +Sun Release 4.1 Last change: February, 1990 27 + + + + + + +VI.IV(L) LOCAL COMMANDS VI.IV(L) + + + + line of input to a : escape. To use these on a :global you + must Q to _e_x _c_o_m_m_a_n_d _m_o_d_e, _e_x_e_c_u_t_e _t_h_e_m, _a_n_d _t_h_e_n _r_e_e_n_t_e_r + _t_h_e _s_c_r_e_e_n _e_d_i_t_o_r _w_i_t_h _v_i or _o_p_e_n. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Sun Release 4.1 Last change: February, 1990 28 + + diff --git a/language/hebrew/hebtex/editors/unix/vim/readme.vim b/language/hebrew/hebtex/editors/unix/vim/readme.vim new file mode 100644 index 0000000000..2a133bf58a --- /dev/null +++ b/language/hebrew/hebtex/editors/unix/vim/readme.vim @@ -0,0 +1,17 @@ +VIM + +For unix users there exists vim - VI IMproved, by Bram Moolenaar, +mool@oce.nl, which has Hebrew patches + +It is activated by vim filename -H +in an X-windows window with Hebrew fonts, and then it works +quite nicely. ctrl_ (control and underscore) is used as a toggle +between Hebrew and English. + +The following is from Bram Moolenaar: + +Have a look at ftp://ftp.oce.nl/pub/misc/vim +There is version 3.0 and the latest beta test version 3.23. The beta +includes a few patches for Hebrew. +You might also want to have a look at the Vim pages +URL: http://www.math.fu-berlin.de/~guckes/vim |