CompoundFont.st
author Michael Beyl <mb@exept.de>
Tue, 23 Jul 2002 19:22:33 +0200
changeset 3659 26bd2ef5f0ed
parent 2547 7d6695ce3833
child 3660 30c7ab561a68
permissions -rw-r--r--
on -> onDevice
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2547
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
     1
"
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
     2
 COPYRIGHT (c) 1999 by eXept Software AG
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
     3
              All Rights Reserved
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
     4
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
     5
 This software is furnished under a license and may be used
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
     6
 only in accordance with the terms of that license and with the
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
     8
 be provided or otherwise made available to, or used by, any
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
     9
 other person.  No title to or ownership of the software is
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    10
 hereby transferred.
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    11
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    12
 This is a demo example:
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    13
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    14
 THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTOR ``AS IS'' AND
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    15
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    16
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    17
 ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTOR BE LIABLE
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    18
 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    19
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    20
 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    21
 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    22
 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    23
 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    24
 SUCH DAMAGE.
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    25
"
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    26
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    27
3659
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
    28
"{ Package: 'stx:libview' }"
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
    29
2546
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
FontDescription subclass:#CompoundFont
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	instanceVariableNames:'baseFont characterToFontMapping maxAscent maxDescent'
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	classVariableNames:''
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	poolDictionaries:''
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	category:'Graphics-Support'
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!CompoundFont class methodsFor:'documentation'!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
2547
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    39
copyright
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    40
"
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    41
 COPYRIGHT (c) 1999 by eXept Software AG
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    42
              All Rights Reserved
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    43
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    44
 This software is furnished under a license and may be used
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    45
 only in accordance with the terms of that license and with the
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    46
 inclusion of the above copyright notice.   This software may not
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    47
 be provided or otherwise made available to, or used by, any
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    48
 other person.  No title to or ownership of the software is
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    49
 hereby transferred.
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    50
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    51
 This is a demo example:
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    52
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    53
 THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTOR ``AS IS'' AND
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    54
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    55
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    56
 ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTOR BE LIABLE
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    57
 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    58
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    59
 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    60
 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    61
 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    62
 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    63
 SUCH DAMAGE.
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    64
"
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    65
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    66
!
7d6695ce3833 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2546
diff changeset
    67
2546
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
documentation
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
"
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    a CompountFont is a font which consists of character glyphs from multiple
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    other (base-)fonts; for each character code, an individual font may be given.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    This has been mostly added to allow for non-EURO fonts to be used with ST/X,
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    by defining a mixedFont, which has an EURO-glyph at the desired character
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    position.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    Do not hardCode usage of MixedFonts into your application, since they
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    might disappear in the future (when Unicode support has been fully 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    implemented in ST/X, and Unicode fonts are generally available under X).
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    I.e. to use these fonts, add appropriate setup to the styleSheet,
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    or private.rc and use those fonts transparently.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    [Instance variables:]
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
      baseFont                  <Font>          fallback (default-) font
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
      characterToFontMapping    <Dictionary>    maps characters to a fonts
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    [class variables:]
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    [see also:]
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
        Font BitmapFont
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
        DeviceDrawable GraphicsContext
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    [author:]
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
        Claus Gittinger
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
"
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
examples
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
"
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    a mixed font; all vowels are displayed in times;
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    the rest in helvetica.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
                                                                        [exBegin]
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    |font top list|
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
3659
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
   107
    font := CompoundFont basedOn:(Font family:'courier' size:18).
2546
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    #($a $e $i $o $u) do:[:char |
3659
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
   109
        font glyphAt:char putFont:(Font family:'times' size:18).
2546
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    top := ScrollableView forView:(list := EditTextView new).
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    list font:font.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    list list:#('a' 'z' 'aaa' 'zzz' 'azaz' 'zaza' 'aa' 'az' 'za' 'hello' 'abcdef' 'xyz').
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    top extent:200@200.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    top open.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
                                                                        [exEnd]
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    a mixed font; the dollar character is replaced by the european
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    EURO symbol; the rest is helvetica
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    (this is a hack - we really need a resizable font for this):
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
                                                                        [exBegin]
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    |font baseFont euroGlyph glyphs euroFont top list|
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    baseFont := Font family:'helvetica' size:12.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
    baseFont := baseFont onDevice:Display.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    glyphs := Array new:256.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    euroGlyph := Form 
3659
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
   130
                    width:12 
2546
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
                    height:16 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
                    fromArray:#( 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
                                2r00000000 2r00000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
                                2r00000000 2r00000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
                                2r00000000 2r00000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
                                2r00000111 2r11000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
                                2r00001000 2r00100000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
                                2r00010000 2r00000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
                                2r01111111 2r10000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
                                2r00010000 2r00000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
                                2r01111111 2r10000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
                                2r00010000 2r00000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
                                2r00001000 2r00100000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
                                2r00000111 2r11000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
                                2r00000000 2r00000000
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
                                2r00000000 2r00000000
3659
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
   147
                                2r00000000 2r00000000
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
   148
                                2r00000000 2r00000000
2546
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
                               ).
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    glyphs at:($$ asciiValue+1) put:euroGlyph.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    euroFont := BitmapFont new glyphs:glyphs.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    euroFont setAscent:(baseFont ascent).
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    euroFont setDescent:(baseFont descent).
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    font := CompoundFont basedOn:baseFont.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    font glyphAt:$$ putFont:euroFont.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    top := ScrollableView forView:(list := EditTextView new).
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    list font:font.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    list list:#('100 $' '193 DM').
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    top extent:200@200.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    top open.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
                                                                        [exEnd]
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
"
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
! !
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
!CompoundFont class methodsFor:'instance creation'!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
basedOn:aRealFont
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    ^ self new baseFont:aRealFont
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
! !
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
!CompoundFont methodsFor:'accessing'!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
baseFont
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    "return the value of the instance variable 'baseFont' (automatically generated)"
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
3659
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
   179
    ^ baseFont
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
   180
!
2546
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
baseFont:something
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    "set the value of the instance variable 'baseFont' (automatically generated)"
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    baseFont := something.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
    maxAscent := maxDescent := nil.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
glyphAt:char putFont:aFont
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
    characterToFontMapping isNil ifTrue:[
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
        characterToFontMapping := Dictionary new.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    characterToFontMapping at:char put:aFont.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    maxAscent := maxDescent := nil.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
! !
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
!CompoundFont methodsFor:'displaying'!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
displayOpaqueString:aString from:index1 to:index2 x:x0 y:y0 in:aGC
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    "this is only called for fonts which have a nil fontId,
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
     and therefore use the replacementFont. Should never be called
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
     for non-replacement fonts."
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    |x y|
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    x := x0.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    y := y0.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    self 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
        substringPartsOf:aString from:index1 to:index2 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
        do:[:s :i1 :i2 :font |
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
            font displayOpaqueString:s from:i1 to:i2 x:x y:y in:aGC.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
            x := x + (font widthOf:aString from:i1 to:i2).
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
        ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
displayString:aString from:index1 to:index2 x:x0 y:y0 in:aGC
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
    "this is only called for fonts which have a nil fontId,
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
     and therefore use the replacementFont. Should never be called
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
     for non-replacement fonts."
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    |x y|
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    x := x0.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    y := y0.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
    self 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
        substringPartsOf:aString from:index1 to:index2 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
        do:[:s :i1 :i2 :font |
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
            font displayString:s from:i1 to:i2 x:x y:y in:aGC.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
            x := x + (font widthOf:aString from:i1 to:i2).
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
        ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
! !
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
!CompoundFont methodsFor:'private'!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
computeMaxBounds
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    maxAscent := baseFont ascent.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
    maxDescent := baseFont descent.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
    characterToFontMapping notNil ifTrue:[
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
        characterToFontMapping keysAndValuesDo:[:char :aFont |
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
            maxAscent := maxAscent max:aFont ascent.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
            maxDescent := maxDescent max:aFont descent.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
        ]
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
    ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
substringPartsOf:aString from:index1 to:index2 do:aBlock
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    "helper - evaluate aBlock for parts of a string, which use the same font.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
     aBlock is invoked for consecutive substrings, passing the string,
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
     the startIndex, endIndex and the font as arguments."
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
    |i1 i2 fn char currentFont|
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
    index2 < index1 ifTrue:[^ self].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
    i1 := index1.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    currentFont := characterToFontMapping at:(aString at:i1) ifAbsent:baseFont.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    i2 := i1 + 1.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
    [i2 <= index2] whileTrue:[
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
        char := aString at:i2.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
        fn := characterToFontMapping at:char ifAbsent:baseFont.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
        fn ~~ currentFont ifTrue:[
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
            aBlock value:aString value:i1 value:(i2-1) value:currentFont.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
            currentFont := fn.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
            i1 := i2.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
        ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
        i2 := i2 + 1.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
    ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
    i1 < i2 ifTrue:[
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
        aBlock value:aString value:i1 value:(i2-1) value:currentFont.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
    "
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
     |f|
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
     f := self new.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
     f baseFont:#baseFont.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
     f fontAt:$$ put:#font2.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
     f substringPartsOf:'ae$a' from:1 to:8 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
       do:[:s :i1 :i2 :f |
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
             Transcript 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
                     show:i1; space;
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
                     show:i2; space;
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
                     showCR:f
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
          ]
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
    "
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
! !
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
!CompoundFont methodsFor:'queries'!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
ascent
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
    maxAscent isNil ifTrue:[
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
        self computeMaxBounds
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
    ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
    ^ maxAscent
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
descent
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
    maxDescent isNil ifTrue:[
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
        self computeMaxBounds
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
    ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
    ^ maxDescent
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
isFixedWidth
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
    "return true, if this is a fixed pitch font (i.e. all characters
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
     are of the same width)"
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
    baseFont isFixedWidth ifFalse:[^ false].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
    characterToFontMapping keysAndValuesDo:[:char :font |
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
        font isFixedWidth ifFalse:[^ false].    
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
    ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
    ^ true
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
maxAscent
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
    ^ self ascent
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
maxDescent
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
    ^ self descent
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
3659
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
   336
onDevice:aDevice
2546
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
    "return a device representation of the receiver.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
     Since I am device independent, return the receiver."
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
    |newFonts|
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
    baseFont := baseFont onDevice:aDevice.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
    newFonts := Dictionary new.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
    characterToFontMapping keysAndValuesDo:[:char :font |
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
        newFonts at:char put:(font onDevice:aDevice)
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
    ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
    characterToFontMapping := newFonts
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
widthOf:aString from:index1 to:index2
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
    |w|
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
    w := 0.
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
    self 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
        substringPartsOf:aString from:index1 to:index2 
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
        do:[:s :i1 :i2 :f |
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
             w := w + (f widthOf:s from:i1 to:i2)
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
           ].
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
    ^ w
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
! !
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
!CompoundFont class methodsFor:'documentation'!
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
version
3659
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2547
diff changeset
   366
    ^ '$Header: /cvs/stx/stx/libview/CompoundFont.st,v 1.3 2002-07-23 17:22:33 mb Exp $'
2546
6443abc93415 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
! !