HersheyFont.st
author Claus Gittinger <cg@exept.de>
Tue, 03 Sep 2013 17:23:55 +0200
changeset 3228 187a4158a51a
parent 1580 84e53294af20
child 3500 256dfb6ac4df
permissions -rw-r--r--
class: FlyByHelp changed: #initiateHelpFor:at:now: #showHelp:for: changed the flyBy suppression slightly: if the same text is to be shown again, do not show it except if the help is for another widget. (used to check for the text only previously)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
     1
"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
     2
 COPYRIGHT (c) 1989 by Claus Gittinger
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
     3
              All Rights Reserved
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
     4
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
     5
 This software is furnished under a license and may be used
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
     6
 only in accordance with the terms of that license and with the
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
     8
 be provided or otherwise made available to, or used by, any
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
     9
 other person.  No title to or ownership of the software is
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    10
 hereby transferred.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    11
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    12
 This is a demo example:
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    13
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    14
 THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTOR ``AS IS'' AND
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    15
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    16
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    17
 ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTOR BE LIABLE
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    18
 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    19
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    20
 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    21
 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    22
 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    23
 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    24
 SUCH DAMAGE.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    25
"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    26
0
3f9277473954 Initial revision
claus
parents:
diff changeset
    27
1580
84e53294af20 on -> onDevice
Michael Beyl <mb@exept.de>
parents: 370
diff changeset
    28
"{ Package: 'stx:libview2' }"
84e53294af20 on -> onDevice
Michael Beyl <mb@exept.de>
parents: 370
diff changeset
    29
0
3f9277473954 Initial revision
claus
parents:
diff changeset
    30
Font subclass:#HersheyFont
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    31
	instanceVariableNames:'glyphs scale'
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    32
	classVariableNames:'GlyphData'
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    33
	poolDictionaries:''
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    34
	category:'Graphics-Support'
0
3f9277473954 Initial revision
claus
parents:
diff changeset
    35
!
3f9277473954 Initial revision
claus
parents:
diff changeset
    36
86
claus
parents: 0
diff changeset
    37
HersheyFont comment:'
claus
parents: 0
diff changeset
    38
Support for hershey fonts is based on a freeware cd-rom distribution 
0
3f9277473954 Initial revision
claus
parents:
diff changeset
    39
by DEC. This disk contains the hershey outlines and glyph maps of
3f9277473954 Initial revision
claus
parents:
diff changeset
    40
the following fonts:
3f9277473954 Initial revision
claus
parents:
diff changeset
    41
3f9277473954 Initial revision
claus
parents:
diff changeset
    42
Fonts:
86
claus
parents: 0
diff changeset
    43
	Roman:  Plain, Simplex, Duplex, Complex Small, Complex, Triplex
0
3f9277473954 Initial revision
claus
parents:
diff changeset
    44
       Italic:  Complex Small, Complex, Triplex
3f9277473954 Initial revision
claus
parents:
diff changeset
    45
       Script:  Simplex, Complex
3f9277473954 Initial revision
claus
parents:
diff changeset
    46
       Gothic:  German, English, Italian
86
claus
parents: 0
diff changeset
    47
	Greek:  Plain, Simplex, Complex Small, Complex
0
3f9277473954 Initial revision
claus
parents:
diff changeset
    48
     Cyrillic:  Complex
3f9277473954 Initial revision
claus
parents:
diff changeset
    49
3f9277473954 Initial revision
claus
parents:
diff changeset
    50
Symbols:
86
claus
parents: 0
diff changeset
    51
	Mathematical 
claus
parents: 0
diff changeset
    52
	Daggers 
claus
parents: 0
diff changeset
    53
	Astronomical 
claus
parents: 0
diff changeset
    54
	Astrological 
claus
parents: 0
diff changeset
    55
	Musical 
claus
parents: 0
diff changeset
    56
	Typesetting (ffl,fl,fi sorts of things) 
claus
parents: 0
diff changeset
    57
	Miscellaneous:
claus
parents: 0
diff changeset
    58
		- Playing card suits
claus
parents: 0
diff changeset
    59
		- Meteorology
claus
parents: 0
diff changeset
    60
		- Graphics (lines, curves)
claus
parents: 0
diff changeset
    61
		- Electrical
claus
parents: 0
diff changeset
    62
		- Geometric (shapes)
claus
parents: 0
diff changeset
    63
		- Cartographic
claus
parents: 0
diff changeset
    64
		- Naval
claus
parents: 0
diff changeset
    65
		- Agricultural
claus
parents: 0
diff changeset
    66
		- Highways
claus
parents: 0
diff changeset
    67
		- Etc...
0
3f9277473954 Initial revision
claus
parents:
diff changeset
    68
3f9277473954 Initial revision
claus
parents:
diff changeset
    69
Legal notice:
86
claus
parents: 0
diff changeset
    70
	This distribution of the Hershey Fonts may be used by anyone for
claus
parents: 0
diff changeset
    71
	any purpose, commercial or otherwise, providing that:
claus
parents: 0
diff changeset
    72
claus
parents: 0
diff changeset
    73
	1. The following acknowledgements must be distributed with
claus
parents: 0
diff changeset
    74
	the font data:
claus
parents: 0
diff changeset
    75
	    - The Hershey Fonts were originally created by Dr.
claus
parents: 0
diff changeset
    76
		    A. V. Hershey while working at the U. S.
claus
parents: 0
diff changeset
    77
		    National Bureau of Standards.
claus
parents: 0
diff changeset
    78
	    - The format of the Font data in this distribution
claus
parents: 0
diff changeset
    79
		    was originally created by
claus
parents: 0
diff changeset
    80
			    James Hurt
claus
parents: 0
diff changeset
    81
			    Cognition, Inc.
claus
parents: 0
diff changeset
    82
			    900 Technology Park Drive
claus
parents: 0
diff changeset
    83
			    Billerica, MA 01821
claus
parents: 0
diff changeset
    84
			    (mit-eddie!!ci-dandelion!!hurt)
claus
parents: 0
diff changeset
    85
claus
parents: 0
diff changeset
    86
	2. The font data in this distribution may be converted into
claus
parents: 0
diff changeset
    87
	any other format *EXCEPT* the format distributed by
claus
parents: 0
diff changeset
    88
	the U.S. NTIS (which organization holds the rights
claus
parents: 0
diff changeset
    89
	to the distribution and use of the font data in that
claus
parents: 0
diff changeset
    90
	particular format). Not that anybody would really
claus
parents: 0
diff changeset
    91
	*want* to use their format... each point is described
claus
parents: 0
diff changeset
    92
	in eight bytes as "xxx yyy:", where xxx and yyy are
claus
parents: 0
diff changeset
    93
	the coordinate values as ASCII numbers.
1580
84e53294af20 on -> onDevice
Michael Beyl <mb@exept.de>
parents: 370
diff changeset
    94
'
84e53294af20 on -> onDevice
Michael Beyl <mb@exept.de>
parents: 370
diff changeset
    95
!
0
3f9277473954 Initial revision
claus
parents:
diff changeset
    96
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    97
!HersheyFont class methodsFor:'documentation'!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    98
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
    99
copyright
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   100
"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   101
 COPYRIGHT (c) 1989 by Claus Gittinger
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   102
              All Rights Reserved
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   103
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   104
 This software is furnished under a license and may be used
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   105
 only in accordance with the terms of that license and with the
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   106
 inclusion of the above copyright notice.   This software may not
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   107
 be provided or otherwise made available to, or used by, any
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   108
 other person.  No title to or ownership of the software is
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   109
 hereby transferred.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   110
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   111
 This is a demo example:
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   112
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   113
 THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTOR ``AS IS'' AND
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   114
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   115
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   116
 ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTOR BE LIABLE
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   117
 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   118
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   119
 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   120
 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   121
 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   122
 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   123
 SUCH DAMAGE.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   124
"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   125
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   126
!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   127
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   128
documentation
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   129
"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   130
    HersheyFont provides (limited) support to draw characters
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   131
    from the hershey font data file 'hersh.oc'
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   132
    (which is available via ftp and must be aquired from elsewhere).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   133
        
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   134
    This is a demo class - not maintained or meant for productive use.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   135
    Notice: this is a very old demo - it should be rewritten to honor
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   136
    the FontDescription protocol (see BitmapFont as a better example).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   137
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   138
    [see also:]
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   139
        BitmapFont FontDescription Font
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   140
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   141
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   142
    Support for hershey fonts is based on a freeware cd-rom distribution 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   143
    by DEC. This disk contains the hershey outlines and glyph maps of
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   144
    the following fonts:
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   145
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   146
    Fonts:
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   147
        Roman:  Plain, Simplex, Duplex, Complex Small, Complex, Triplex
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   148
       Italic:  Complex Small, Complex, Triplex
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   149
       Script:  Simplex, Complex
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   150
       Gothic:  German, English, Italian
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   151
        Greek:  Plain, Simplex, Complex Small, Complex
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   152
     Cyrillic:  Complex
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   153
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   154
    Symbols:
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   155
        Mathematical 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   156
        Daggers 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   157
        Astronomical 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   158
        Astrological 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   159
        Musical 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   160
        Typesetting (ffl,fl,fi sorts of things) 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   161
        Miscellaneous:
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   162
                - Playing card suits
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   163
                - Meteorology
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   164
                - Graphics (lines, curves)
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   165
                - Electrical
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   166
                - Geometric (shapes)
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   167
                - Cartographic
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   168
                - Naval
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   169
                - Agricultural
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   170
                - Highways
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   171
                - Etc...
86
claus
parents: 0
diff changeset
   172
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   173
    Legal notice:
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   174
        This distribution of the Hershey Fonts may be used by anyone for
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   175
        any purpose, commercial or otherwise, providing that:
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   176
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   177
        1. The following acknowledgements must be distributed with
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   178
        the font data:
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   179
            - The Hershey Fonts were originally created by Dr.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   180
                    A. V. Hershey while working at the U. S.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   181
                    National Bureau of Standards.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   182
            - The format of the Font data in this distribution
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   183
                    was originally created by
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   184
                            James Hurt
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   185
                            Cognition, Inc.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   186
                            900 Technology Park Drive
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   187
                            Billerica, MA 01821
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   188
                            (mit-eddie!!ci-dandelion!!hurt)
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   189
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   190
        2. The font data in this distribution may be converted into
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   191
        any other format *EXCEPT* the format distributed by
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   192
        the U.S. NTIS (which organization holds the rights
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   193
        to the distribution and use of the font data in that
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   194
        particular format). Not that anybody would really
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   195
        *want* to use their format... each point is described
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   196
        in eight bytes as 'xxx yyy:', where xxx and yyy are
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   197
        the coordinate values as ASCII numbers.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   198
"
86
claus
parents: 0
diff changeset
   199
!
claus
parents: 0
diff changeset
   200
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   201
examples
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   202
"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   203
     |aView|
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   204
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   205
     aView := View new extent:500@200.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   206
     aView openAndWait.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   207
     aView backingStore:true.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   208
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   209
     HersheyFont showFont:(HersheyFont family:'hershey-astrology' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   210
                                         face:'bold' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   211
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   212
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   213
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   214
     HersheyFont showFont:(HersheyFont family:'hershey-music' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   215
                                         face:'bold' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   216
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   217
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   218
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   219
     HersheyFont showFont:(HersheyFont family:'hershey-meteorology' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   220
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   221
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   222
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   223
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   224
     HersheyFont showFont:(HersheyFont family:'hershey-cursive' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   225
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   226
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   227
                                         size:10) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   228
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   229
     HersheyFont showFont:(HersheyFont family:'hershey-cursive' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   230
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   231
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   232
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   233
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   234
     HersheyFont showFont:(HersheyFont family:'hershey-cursive' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   235
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   236
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   237
                                         size:48) in:aView
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   238
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   239
     HersheyFont showFont:(HersheyFont family:'hershey-script' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   240
                                         face:'bold' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   241
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   242
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   243
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   244
     HersheyFont showFont:(HersheyFont family:'hershey-times' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   245
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   246
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   247
                                         size:12) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   248
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   249
     HersheyFont showFont:(HersheyFont family:'hershey-times' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   250
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   251
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   252
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   253
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   254
     HersheyFont showFont:(HersheyFont family:'hershey-times' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   255
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   256
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   257
                                         size:48) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   258
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   259
     HersheyFont showFont:(HersheyFont family:'hershey-times' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   260
                                         face:'bold' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   261
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   262
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   263
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   264
     HersheyFont showFont:(HersheyFont family:'hershey-times' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   265
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   266
                                        style:'italic' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   267
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   268
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   269
     HersheyFont showFont:(HersheyFont family:'hershey-times' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   270
                                         face:'bold' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   271
                                        style:'italic' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   272
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   273
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   274
     HersheyFont showFont:(HersheyFont family:'hershey-futura' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   275
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   276
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   277
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   278
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   279
     HersheyFont showFont:(HersheyFont family:'hershey-futura' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   280
                                         face:'bold' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   281
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   282
                                         size:24) in:aView
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   283
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   284
     HersheyFont showFont:(HersheyFont family:'hershey-markers' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   285
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   286
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   287
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   288
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   289
     HersheyFont showFont:(HersheyFont family:'hershey-math1' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   290
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   291
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   292
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   293
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   294
     HersheyFont showFont:(HersheyFont family:'hershey-math2' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   295
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   296
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   297
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   298
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   299
     HersheyFont showFont:(HersheyFont family:'hershey-symbol' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   300
                                         face:'medium' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   301
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   302
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   303
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   304
     HersheyFont showFont:(HersheyFont family:'hershey-gothic-italian' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   305
                                         face:'bold' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   306
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   307
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   308
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   309
     HersheyFont showFont:(HersheyFont family:'hershey-gothic-german' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   310
                                         face:'bold' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   311
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   312
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   313
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   314
     HersheyFont showFont:(HersheyFont family:'hershey-gothic-english' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   315
                                         face:'bold' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   316
                                        style:'roman' 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   317
                                         size:24) in:aView
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   318
     ].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   319
"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   320
! !
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   321
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   322
!HersheyFont class methodsFor:'instance creation'!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   323
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   324
family:family face:face style:style size:sz
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   325
    "return a HersheyFont, given an ST/X-style fontName"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   326
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   327
    |fontNames|
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   328
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   329
    fontNames := #(
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   330
        ('hershey-times'                'bold'          'roman'         'romant')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   331
        ('hershey-times'                'medium'        'roman'         'romanc')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   332
        ('hershey-times'                'medium'        'italic'        'italicc')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   333
        ('hershey-times'                'bold'          'italic'        'italict')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   334
        ('hershey-times'                'bold'          'greek'         'greekc')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   335
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   336
        ('hershey-japan'                'bold'          'normal'        'japan')
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   337
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   338
        ('hershey-gothic-german'        'bold'          'roman'         'gothger')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   339
        ('hershey-gothic-english'       'bold'          'roman'         'gotheng')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   340
        ('hershey-gothic-italian'       'bold'          'roman'         'gothita')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   341
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   342
        ('hershey-cursive'              'medium'        'roman'         'scripts')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   343
        ('hershey-script'               'bold'          'roman'         'scriptc')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   344
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   345
        ('hershey-futura'               'medium'        'roman'         'romans')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   346
        ('hershey-futura'               'bold'          'roman'         'romand')
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   347
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   348
        ('hershey-markers'              'medium'        'roman'         'marker')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   349
        ('hershey-math1'                'medium'        'roman'         'lowmat')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   350
        ('hershey-math2'                'medium'        'roman'         'uppmat')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   351
        ('hershey-symbol'               'medium'        'roman'         'symbol')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   352
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   353
        ('hershey-astrology'            'bold'          'roman'         'astrol')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   354
        ('hershey-meteorology'          'medium'        'roman'         'meteo')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   355
        ('hershey-music'                'bold'          'roman'         'music')
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   356
    ).
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   357
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   358
    fontNames do:[:entry |
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   359
        (entry at:1) = family ifTrue:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   360
            (entry at:2) = face ifTrue:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   361
                (entry at:3) = style ifTrue:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   362
                    ^ self name:(entry at:4) family:family face:face style:style size:sz
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   363
                ]
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   364
            ]
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   365
        ]
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   366
    ].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   367
    ^ nil
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   368
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   369
    "
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   370
     HersheyFont family:'hershey-gothic-german' face:'medium' style:'roman' size:12
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   371
    "
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   372
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   373
    "Modified: 16.1.1997 / 18:19:47 / cg"
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   374
! !
3f9277473954 Initial revision
claus
parents:
diff changeset
   375
3f9277473954 Initial revision
claus
parents:
diff changeset
   376
!HersheyFont class methodsFor:'drawing'!
3f9277473954 Initial revision
claus
parents:
diff changeset
   377
3f9277473954 Initial revision
claus
parents:
diff changeset
   378
drawGlyph:glyphNo in:aGC x:x y:y scale:aScale
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   379
    "draw a single character"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   380
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   381
    |moves c1 c2 xPos yPos nX nY draw w h savedLW|
3f9277473954 Initial revision
claus
parents:
diff changeset
   382
86
claus
parents: 0
diff changeset
   383
    moves := GlyphData at:glyphNo.
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   384
    moves isNil ifTrue:[
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   385
        Transcript showCR:('no glyph for ' , glyphNo printString).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   386
        ^ self
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   387
    ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   388
    savedLW := aGC lineWidth.
3f9277473954 Initial revision
claus
parents:
diff changeset
   389
    aGC lineWidth:(aScale * 2) rounded.
3f9277473954 Initial revision
claus
parents:
diff changeset
   390
3f9277473954 Initial revision
claus
parents:
diff changeset
   391
    xPos := 0 "x".
3f9277473954 Initial revision
claus
parents:
diff changeset
   392
    yPos := 0 "y".
3f9277473954 Initial revision
claus
parents:
diff changeset
   393
    draw := false. "start with a skip"
3f9277473954 Initial revision
claus
parents:
diff changeset
   394
    w := ((moves at:1) asciiValue - $R asciiValue)" * aScale".
3f9277473954 Initial revision
claus
parents:
diff changeset
   395
    h := ($R asciiValue - (moves at:2) asciiValue)" negated * aScale".
3f9277473954 Initial revision
claus
parents:
diff changeset
   396
    w := w negated * aScale * 2.
3f9277473954 Initial revision
claus
parents:
diff changeset
   397
    h := h negated * aScale * 2.
3f9277473954 Initial revision
claus
parents:
diff changeset
   398
3f9277473954 Initial revision
claus
parents:
diff changeset
   399
    3 to:(moves size) by:2 do:[:index |
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   400
        c1 := moves at:index.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   401
        c2 := moves at:(index + 1).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   402
        c1 == Character space ifTrue:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   403
            draw := false
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   404
        ] ifFalse:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   405
            nX := "xPos +" ((c1 asciiValue - $R asciiValue) * aScale).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   406
            nY := "yPos +" (($R asciiValue - c2 asciiValue) negated * aScale).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   407
            draw ifTrue:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   408
                aGC displayLineFromX:((x + xPos) truncated "rounded") 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   409
                                   y:((y + yPos) truncated "rounded")
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   410
                                 toX:((x + nX) truncated "rounded") 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   411
                                   y:((y + nY) truncated "rounded").
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   412
            ].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   413
            xPos := nX.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   414
            yPos := nY.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   415
            draw := true
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   416
        ]
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   417
    ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   418
    aGC lineWidth:savedLW
3f9277473954 Initial revision
claus
parents:
diff changeset
   419
3f9277473954 Initial revision
claus
parents:
diff changeset
   420
    "Smalltalk at:#v put:nil.
3f9277473954 Initial revision
claus
parents:
diff changeset
   421
     Smalltalk at:#f put:nil.
3f9277473954 Initial revision
claus
parents:
diff changeset
   422
     v := View new realize.   
3f9277473954 Initial revision
claus
parents:
diff changeset
   423
3f9277473954 Initial revision
claus
parents:
diff changeset
   424
     v clear.
3f9277473954 Initial revision
claus
parents:
diff changeset
   425
     v font:(f := HersheyFont family:'hershey-times' face:'bold' style:'roman' size:12).
3f9277473954 Initial revision
claus
parents:
diff changeset
   426
     v displayString:'hello' x:50 y:50"
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   427
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   428
    "Modified: 16.1.1997 / 18:22:10 / cg"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   429
!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   430
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   431
heightOfGlyph:glyphNo scale:aScale
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   432
    "return the height of a single character"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   433
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   434
    |moves h|
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   435
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   436
    moves := GlyphData at:glyphNo.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   437
    moves isNil ifTrue:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   438
        Transcript showCR:('no glyph for ' , glyphNo printString).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   439
        ^ 0
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   440
    ].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   441
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   442
    h := ($R asciiValue - (moves at:2) asciiValue)" negated * aScale".
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   443
    h := h negated * aScale * 2.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   444
    ^ h
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   445
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   446
    "Modified: 16.1.1997 / 18:22:24 / cg"
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   447
!
3f9277473954 Initial revision
claus
parents:
diff changeset
   448
3f9277473954 Initial revision
claus
parents:
diff changeset
   449
widthOfGlyph:glyphNo scale:aScale
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   450
    "return the width of a single character"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   451
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   452
    |moves w|
3f9277473954 Initial revision
claus
parents:
diff changeset
   453
86
claus
parents: 0
diff changeset
   454
    moves := GlyphData at:glyphNo.
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   455
    moves isNil ifTrue:[
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   456
        Transcript showCR:('no glyph for ' , glyphNo printString).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   457
        ^ 0
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   458
    ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   459
3f9277473954 Initial revision
claus
parents:
diff changeset
   460
    w := ((moves at:1) asciiValue - $R asciiValue).
3f9277473954 Initial revision
claus
parents:
diff changeset
   461
    w := w negated * aScale * 2.
3f9277473954 Initial revision
claus
parents:
diff changeset
   462
    ^ w
3f9277473954 Initial revision
claus
parents:
diff changeset
   463
3f9277473954 Initial revision
claus
parents:
diff changeset
   464
    "HersheyFont widthOfGlyph:3401 scale:1"
3f9277473954 Initial revision
claus
parents:
diff changeset
   465
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   466
    "Modified: 16.1.1997 / 18:22:31 / cg"
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   467
! !
3f9277473954 Initial revision
claus
parents:
diff changeset
   468
3f9277473954 Initial revision
claus
parents:
diff changeset
   469
!HersheyFont class methodsFor:'examples'!
3f9277473954 Initial revision
claus
parents:
diff changeset
   470
3f9277473954 Initial revision
claus
parents:
diff changeset
   471
showFont:f in:aView
3f9277473954 Initial revision
claus
parents:
diff changeset
   472
     |x y dy|
3f9277473954 Initial revision
claus
parents:
diff changeset
   473
3f9277473954 Initial revision
claus
parents:
diff changeset
   474
     dy := f heightOn:aView device.
3f9277473954 Initial revision
claus
parents:
diff changeset
   475
     aView clear.
3f9277473954 Initial revision
claus
parents:
diff changeset
   476
     x := 100. y := dy.
3f9277473954 Initial revision
claus
parents:
diff changeset
   477
     32 to:47 do:[:i |
370
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   478
         f drawCharacter:i in:aView x:x y:y.
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   479
         x := x + 30
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   480
     ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   481
3f9277473954 Initial revision
claus
parents:
diff changeset
   482
     x := 100. y := y + dy.
3f9277473954 Initial revision
claus
parents:
diff changeset
   483
     48 to:57 do:[:i |
370
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   484
         f drawCharacter:i in:aView x:x y:y.
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   485
         x := x + 30
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   486
     ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   487
3f9277473954 Initial revision
claus
parents:
diff changeset
   488
     x := 100. y := y + dy.
3f9277473954 Initial revision
claus
parents:
diff changeset
   489
     58 to:64 do:[:i |
370
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   490
         f drawCharacter:i in:aView x:x y:y.
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   491
         x := x + 30
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   492
     ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   493
3f9277473954 Initial revision
claus
parents:
diff changeset
   494
     x := 100. y := y + dy.
3f9277473954 Initial revision
claus
parents:
diff changeset
   495
     65 to:90 do:[:i |
370
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   496
         f drawCharacter:i in:aView x:x y:y.
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   497
         x := x + 30
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   498
     ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   499
3f9277473954 Initial revision
claus
parents:
diff changeset
   500
     x := 100. y := y + dy.
3f9277473954 Initial revision
claus
parents:
diff changeset
   501
     91 to:96 do:[:i |
370
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   502
         f drawCharacter:i in:aView x:x y:y.
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   503
         x := x + 30
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   504
     ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   505
3f9277473954 Initial revision
claus
parents:
diff changeset
   506
     x := 100. y := y + dy.
3f9277473954 Initial revision
claus
parents:
diff changeset
   507
     97 to:122 do:[:i |
370
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   508
         f drawCharacter:i in:aView x:x y:y.
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   509
         x := x + 30
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   510
     ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   511
3f9277473954 Initial revision
claus
parents:
diff changeset
   512
     x := 100. y := y + dy.
3f9277473954 Initial revision
claus
parents:
diff changeset
   513
     123 to:127 do:[:i |
370
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   514
         f drawCharacter:i in:aView x:x y:y.
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   515
         x := x + 30
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   516
     ]
370
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   517
587c6dfc87d8 forced checkin / source container change from HersheyFont.st
Claus Gittinger <cg@exept.de>
parents: 369
diff changeset
   518
    "Modified: 16.1.1997 / 18:27:15 / cg"
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   519
! !
3f9277473954 Initial revision
claus
parents:
diff changeset
   520
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   521
!HersheyFont class methodsFor:'private'!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   522
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   523
hersheyFontPath
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   524
    "the directory, where the glyph data is found;
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   525
     you may have to modify this a bit ..."
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   526
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   527
    ^ '/usr/local/fonts/hershey/data/hersh.oc'
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   528
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   529
    "Modified: 16.1.1997 / 18:24:35 / cg"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   530
!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   531
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   532
name:aFileName family:family face:face style:style size:sz
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   533
    "return a font with glyph-data from aFileName"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   534
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   535
    |newFont|
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   536
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   537
    newFont := self basicNew readGlyphsFrom:aFileName.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   538
    newFont family:family face:face style:style size:sz.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   539
    ^ newFont
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   540
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   541
    "HersheyFont name:'gothger'"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   542
!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   543
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   544
readDataFile
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   545
    |inStream b5 b3 chars moves glyphNo nPairs char1 char2 index|
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   546
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   547
    inStream := FileStream readonlyFileNamed:(self hersheyFontPath).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   548
    inStream isNil ifTrue:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   549
        self error:'no glyph data file ''' , self hersheyFontPath , ''' found.'.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   550
        ^ self
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   551
    ].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   552
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   553
    GlyphData isNil ifTrue:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   554
        Transcript showCR:'reading hershey glyphs ...'.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   555
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   556
        GlyphData := OrderedCollection new:4000; grow:4000.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   557
        b5 := String new:5.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   558
        b3 := String new:3.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   559
        [inStream atEnd] whileFalse:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   560
            chars := inStream nextBytes:5 into:b5.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   561
            glyphNo := Number readFromString:b5.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   562
            chars := inStream nextBytes:3 into:b3.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   563
            nPairs := Number readFromString:b3.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   564
            moves := String new:(nPairs * 2).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   565
            index := 1.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   566
            1 to:nPairs do:[:i |
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   567
                char1 := inStream next.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   568
                char1 == Character nl ifTrue:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   569
                    char1 := inStream next
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   570
                ].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   571
                char2 := inStream next.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   572
                char2 == Character nl ifTrue:[
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   573
                    char2 := inStream next
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   574
                ].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   575
                moves at:index put:char1.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   576
                index := index + 1.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   577
                moves at:index put:char2.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   578
                index := index + 1
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   579
            ].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   580
            GlyphData at:glyphNo put:moves.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   581
            [inStream peek == Character nl] whileTrue:[inStream next]
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   582
        ].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   583
        inStream close
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   584
    ]
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   585
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   586
    "HersheyFont readDataFile"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   587
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   588
    "Modified: 16.1.1997 / 18:24:15 / cg"
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   589
! !
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   590
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   591
!HersheyFont methodsFor:'drawing'!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   592
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   593
displayString:aString from:index1 to:index2 x:x0 y:y in:aGC
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   594
    |x|
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   595
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   596
    x := x0.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   597
    index1 to:index2 do:[:index |
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   598
	self drawCharacter:(aString at:index) asciiValue in:aGC x:x y:y.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   599
	x := x + (self widthOfCharacter:(aString at:index) asciiValue)
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   600
    ]
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   601
!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   602
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   603
displayString:aString x:x0 y:y in:aGC
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   604
    |x|
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   605
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   606
    x := x0.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   607
    aString do:[:character |
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   608
	self drawCharacter:character asciiValue in:aGC x:x y:y.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   609
	x := x + (self widthOfCharacter:character asciiValue)
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   610
    ]
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   611
!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   612
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   613
drawCharacter:ascii in:aGC x:x y:y
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   614
    |glyphNo|
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   615
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   616
    (ascii between:32 and:127) ifFalse:[^ self].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   617
    glyphNo := glyphs at:(ascii - 32 + 1).
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   618
    glyphNo isNil ifTrue:[^ self].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   619
    self class drawGlyph:glyphNo in:aGC x:x y:y scale:scale
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   620
! !
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   621
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   622
!HersheyFont methodsFor:'private'!
3f9277473954 Initial revision
claus
parents:
diff changeset
   623
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   624
family:fam face:fac style:st size:sz
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   625
    family := fam.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   626
    face := fac.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   627
    style := st.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   628
    size := sz.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   629
    scale := sz / 24 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   630
!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   631
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   632
readGlyphsFrom:aFileName
3f9277473954 Initial revision
claus
parents:
diff changeset
   633
    "read glyph definitions from aFileName"
3f9277473954 Initial revision
claus
parents:
diff changeset
   634
3f9277473954 Initial revision
claus
parents:
diff changeset
   635
    |inStream ascii index1 index2|
3f9277473954 Initial revision
claus
parents:
diff changeset
   636
3f9277473954 Initial revision
claus
parents:
diff changeset
   637
    self class readDataFile.
3f9277473954 Initial revision
claus
parents:
diff changeset
   638
    glyphs := Array new:(256 - 32).
3f9277473954 Initial revision
claus
parents:
diff changeset
   639
    inStream := FileStream readonlyFileNamed:('/LocalLibrary/Fonts/hershey/fonts/',aFileName,'.hmp').
3f9277473954 Initial revision
claus
parents:
diff changeset
   640
    ascii := 32.
3f9277473954 Initial revision
claus
parents:
diff changeset
   641
    [inStream atEnd] whileFalse:[
86
claus
parents: 0
diff changeset
   642
	index1 := Number readFrom:inStream.
claus
parents: 0
diff changeset
   643
	index2 := Number readFrom:inStream.
claus
parents: 0
diff changeset
   644
	index2 == 0 ifTrue:[
claus
parents: 0
diff changeset
   645
	    index2 := index1
claus
parents: 0
diff changeset
   646
	].
claus
parents: 0
diff changeset
   647
	index1 to:index2 do:[:pos |
claus
parents: 0
diff changeset
   648
	    glyphs at:(ascii - 32 + 1) put:pos.
claus
parents: 0
diff changeset
   649
	    ascii := ascii + 1
claus
parents: 0
diff changeset
   650
	].
claus
parents: 0
diff changeset
   651
	inStream skipSeparators
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   652
    ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   653
    inStream close.
3f9277473954 Initial revision
claus
parents:
diff changeset
   654
    ^ self
3f9277473954 Initial revision
claus
parents:
diff changeset
   655
!
3f9277473954 Initial revision
claus
parents:
diff changeset
   656
3f9277473954 Initial revision
claus
parents:
diff changeset
   657
scale:aScale
3f9277473954 Initial revision
claus
parents:
diff changeset
   658
    scale := aScale
3f9277473954 Initial revision
claus
parents:
diff changeset
   659
! !
3f9277473954 Initial revision
claus
parents:
diff changeset
   660
3f9277473954 Initial revision
claus
parents:
diff changeset
   661
!HersheyFont methodsFor:'queries'!
3f9277473954 Initial revision
claus
parents:
diff changeset
   662
3f9277473954 Initial revision
claus
parents:
diff changeset
   663
ascentOn:aDevice
3f9277473954 Initial revision
claus
parents:
diff changeset
   664
    ^ 0
3f9277473954 Initial revision
claus
parents:
diff changeset
   665
!
3f9277473954 Initial revision
claus
parents:
diff changeset
   666
3f9277473954 Initial revision
claus
parents:
diff changeset
   667
descentOn:aDevice
3f9277473954 Initial revision
claus
parents:
diff changeset
   668
    ^ self heightOn:aDevice
3f9277473954 Initial revision
claus
parents:
diff changeset
   669
!
3f9277473954 Initial revision
claus
parents:
diff changeset
   670
3f9277473954 Initial revision
claus
parents:
diff changeset
   671
heightOfCharacter:ascii
3f9277473954 Initial revision
claus
parents:
diff changeset
   672
    |glyphNo|
3f9277473954 Initial revision
claus
parents:
diff changeset
   673
3f9277473954 Initial revision
claus
parents:
diff changeset
   674
    (ascii between:32 and:127) ifFalse:[^ 0].
3f9277473954 Initial revision
claus
parents:
diff changeset
   675
    glyphNo := glyphs at:(ascii - 32 + 1).
3f9277473954 Initial revision
claus
parents:
diff changeset
   676
    glyphNo isNil ifTrue:[^ 0].
3f9277473954 Initial revision
claus
parents:
diff changeset
   677
    ^ self class heightOfGlyph:glyphNo scale:scale
3f9277473954 Initial revision
claus
parents:
diff changeset
   678
!
3f9277473954 Initial revision
claus
parents:
diff changeset
   679
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   680
heightOn:aDevice
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   681
    ^ scale * (24 + 12)
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   682
!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   683
1580
84e53294af20 on -> onDevice
Michael Beyl <mb@exept.de>
parents: 370
diff changeset
   684
onDevice:aDevice
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   685
    ^ self
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   686
!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   687
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   688
widthOf:aString
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   689
    |sumW|
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   690
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   691
    sumW := 0.
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   692
    aString do:[:character |
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   693
	sumW := sumW + (self widthOfCharacter:character asciiValue) 
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   694
    ].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   695
    ^ sumW
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   696
!
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   697
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   698
widthOf:aString from:start to:stop
3f9277473954 Initial revision
claus
parents:
diff changeset
   699
    "return the width of a substring"
3f9277473954 Initial revision
claus
parents:
diff changeset
   700
3f9277473954 Initial revision
claus
parents:
diff changeset
   701
    |sumW|
3f9277473954 Initial revision
claus
parents:
diff changeset
   702
3f9277473954 Initial revision
claus
parents:
diff changeset
   703
    (stop < start) ifTrue:[^ 0].
3f9277473954 Initial revision
claus
parents:
diff changeset
   704
    sumW := 0.
3f9277473954 Initial revision
claus
parents:
diff changeset
   705
    start to:stop do:[:index |
86
claus
parents: 0
diff changeset
   706
	sumW := sumW + (self widthOfCharacter:(aString at:index)  asciiValue) 
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   707
    ].
3f9277473954 Initial revision
claus
parents:
diff changeset
   708
    ^ sumW
3f9277473954 Initial revision
claus
parents:
diff changeset
   709
!
3f9277473954 Initial revision
claus
parents:
diff changeset
   710
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   711
widthOfCharacter:ascii
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   712
    |glyphNo|
3f9277473954 Initial revision
claus
parents:
diff changeset
   713
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   714
    (ascii between:32 and:127) ifFalse:[^ 0].
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   715
    glyphNo := glyphs at:(ascii - 32 + 1).
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   716
    glyphNo isNil ifTrue:[^ 0].
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   717
    ^ self class widthOfGlyph:glyphNo scale:scale
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   718
! !
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   719
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   720
!HersheyFont class methodsFor:'documentation'!
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   721
369
115d797ebcef defined source container
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   722
version
1580
84e53294af20 on -> onDevice
Michael Beyl <mb@exept.de>
parents: 370
diff changeset
   723
    ^ '$Header: /cvs/stx/stx/libview2/HersheyFont.st,v 1.7 2002-07-23 17:22:44 mb Exp $'
0
3f9277473954 Initial revision
claus
parents:
diff changeset
   724
! !